Innholdsfortegnelse:
Video: WIFI -skjerm for produksjonsstyring: 6 trinn
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Jeg er en liten serie om IOT og enkeltkort datamaskiner.
Jeg ønsker alltid å bruke det utover Hobby & Fun Projects (ekte produksjon og produksjon).
Denne instruksen er i ferd med å lage et 4-sifret 7-segmenters WIFI-display med ESP-nodemcu for å vise timeproduksjonsinngang. Jeg jobber i elektronikkindustrien, hvor vi bruker Manufacturing Execution System (MES) til å overvåke og kontrollere produksjonsgulv, input og output. I dette prosjektet oppretter jeg Small display -enhet som viser mengden produksjonsinngang per linje, skift og time.
Teknisk sett ligner dette prosjektet på en visning av YouTube -abonnenter, hvor vi bruker API/HTTP -respons fra online. Men her skal vi lage vår egen API for å samhandle med vårt lokale MES -system for å få inndata.
Trinn 1: Deler og verktøy som brukes:
Maskinvaredeler som brukes:
- ESP nodemcu
- TM1637 4 -sifret klokke Display
- Trykk på bryteren
- 10k motstand
- noen hoppetråder
Brukt programvareverktøy:
- Arduino IDE
- Xampp for PHP/Apache webserver
Arduino bibliotek er brukt:
1. Wifi manager av tzapu & i Tilpasset for mine egendefinerte arkiver (wifimanager)
2. ESP_EEPROM for lagring av egendefinerte verdier i Flash -minne
3. SevenSegmentTM1637 For Display
Trinn 2: Tilpasse Wifi Manager
I denne først installerte jeg wifi manager først og deretter kopierte jeg Wifi manager mappen og sendte igjen i den samme i Arduino bibliotekmappen, deretter omdøpt til WiFiManager_custom.
Mappe rotkatalog Liker mest
C: / Users / datamaskinnavnet / Documents / Arduino / biblioteker
Deretter åpnet jeg wifimanager_custom -mappen og omdøpte header.cpp -filen som den samme som wifimanager_custom, og ble også lagt til i header- og.cpp -filene.
Og la til min egendefinerte skjema og knapp i topptekst.
i HTTP_PORTAL_OPTIONS PROGMEM la jeg til knappeskjemaet mitt for Meny.
og lagt til nytt skjema for å skrive inn linje og skift. Jeg opprettet dette skjemaet som et enkelt tekstskjema.
Etter dette skal vi lage handlingsfunksjoner for disse skjemaene i.cpp -fil, for det må vi gjøre funksjonserklæring i topptekstfil.
/ * mine egendefinerte funksjoner */
void handleCustomForm (); void handleCustomSave ();
Jeg erklærte mine egendefinerte funksjoner i topptekstfil. at det, vårt arbeid i topptekst er ferdig, vi må gå med.cpp -fil for å lage vår funksjon og handlinger.
Trinn 3: Tilpassede funksjoner for skjemahandling
Nå åpner vi filen wifimanager_custom.cpp.
og vi må legge til vår http -svarbehandler for å ringe funksjonene våre når skjemaet vårt er lagt ut.
server-> on (String (F ("/custom_config")), std:: bind (& WiFiManager:: handleCustomForm, dette)); // MITT tilpassede håndtak
server-> on (String (F ("/custom_save")), std:: bind (& WiFiManager:: handleCustomSave, dette)); // MITT tilpassede håndtak
disse vil kalle våre egendefinerte funksjoner når skjemaet legges ut.
1.handleCustomForm ()-> vil opprette en side med vårt egendefinerte skjema for linje- og skiftinngang og lagringsknapp.
2.handleCustomSave ()-> denne funksjonen vil få skjemaverdiene og lagre i Flash-minnesteder 0 (linje) og 50 (skift).
Trinn 4: Tilkoblinger og hovedprogram
Tilkoblinger er veldig enkle..
Tilkoblinger og ledninger:
nodemcu TM1637 Display
3.3v ---- Vcc
G ---- Gnd
D2 ---- CLK
D3 ----- DIO
nodemcu- trykkbryter
- trykknapp festet til pinne D8 fra +5V - 10K motstand festet til pinne D8 fra bakken
vi er ferdige med å tilpasse vår wifimanager. nå må vi lage vårt hovedprogram.
1. vår wifi -manager vil koble til wifi -nettverket med sist brukte legitimasjon for å koble til, hvis det mislykkes, åpner det en AutoConnectAP wifi -server. Vi kan konfigurere nye wifi -krimineller, linje og skift ved å koble til denne wifi -serveren.
2. så kommer den inn i hovedsløyfen.
Vår hovedsløyfe vil inneholde to deler. den ene er konfisubrutine når vi trenger å endre linje, skifte eller legge til wifi -legitimasjon for å ringe etterspørselsmodus AP for å konfigurere. dette vil bli kalt når en trykknapp som er koblet til D8 -pinnen trykkes.
void loop () {
config_loop ();
}
void config_loop () {Serial.println ("");
Serial.println ("Venter på konfigureringsknappstatus …");
//display.print("Wait ");
hvis (digitalRead (TRIGGER_PIN) == HIGH)
{
display.print ("Conf"); // WiFiManager
// Lokal intialisering. Når virksomheten er ferdig, er det ikke nødvendig å beholde den rundt WiFiManager wifiManager;
// tilbakestill innstillinger - for testing
//wifiManager.resetSettings ();
// angir timeout til konfigurasjonsportalen blir slått av // nyttig for å få det hele til å prøve på nytt eller gå i dvale // på sekunder
//wifiManager.setTimeout(120);
// det starter et tilgangspunkt med det angitte navnet
// her "AutoConnectAP" // og går inn i en blokkeringssløyfe som venter på konfigurasjon
// UTEN DET SER APPEN IKKE Å FUNGERE RIKTIG MED SDK 1.5, oppdater til minst 1.5.1 //WiFi.mode(WIFI_STA);
if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("mislyktes i å koble til og treffe timeout"); forsinkelse (3000); // tilbakestill og prøv igjen, eller kanskje sette den i dyp søvn ESP.reset (); forsinkelse (5000); }}
//Serial.println("Button status False. Back to Main loop "); //display.print("Main loop "); //display.clear ();
}
Den andre vil være vårt hovedprogram for å få HTTP -respons fra en bestemt server og vise inngangsmengden i displayet.
For dette Først må vi få vår linje- og skiftdetalj fra Flash-lagringen til ESP (adresse 0-> linje, 50-> skift)
EEPROM.begynner (100); // eeprom storageEEPROM.get (0, linje); // få verdi fra adresse 0
EEPROM.get (50, skift); // Få verdi fra adresse 50
så må vi sende denne linjen og flytte detaljer til vår http -server ved å få metoden for å få verdien av input og output.
String Base_url = "fjernet"; // min base urlHTTPClient http; // Objekt i klassen
String URL = Base_url+"?"+"Line ="+line+"& shift ="+shift;
Serial.println (URL);
http.begin (URL);
int httpCode = http. GET ();
Serial.println (http.getString ()); // dette vil skrive ut all http -responsstreng;
Hvis du vil hvordan all teksten, så er arbeidet ditt ferdig her selv, kan vi direkte vise det i tm1637 -skjerm.
display.print (http.getString ());
Men jeg vil ikke vise all teksten, fordi den inneholder input, output i json -form og annen generell tekst om databasen osv.
så først fjernet jeg den generelle teksten fra svarstrengen ved å bruke funksjonen Substring ().
Jeg regnet lengden på den generelle teksten og trimmet den.
hvis (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); DynamicJsonDocument root (bufferSize);
// JsonObject & root = doc.parseObject (http.getString ());
String json_string = http.getString (). Delstreng (121); /* dette er min forskyvning av generell tekst hvis svareren din ikke har noe slikt som at du kan fjerne denne koden; */
//Serial.println(json_string);
DeserializationError error = deserializeJson (root, json_string);
// JsonObject & root = jsonBuffer.parseObject (http.getString ());
hvis (feil)
{Serial.print (F ("deserializeJson () mislyktes:"));
Serial.println (error.c_str ());
komme tilbake;
}
ellers{
const char* input = root ["input"];
const char* output = root ["output"];
Serial.print ("Inngang:");
Serial.println (input);
Serial.print ("Output:");
Serial.println (utgang);
display.print (".. i..");
display.clear (); // tøm skjermen
display.print (input); // print TELLING NOEN SIGLER
}
det er det som er hovedprogrammet vårt ferdig.
Trinn 5: Opprette webserver
Jeg bruker xampp som webserver og PHP -kode for å hente data fra SQL -databasen min for å få nøyaktig mengde.
Men jeg kan ikke dele alle de originale kodene. fordi det er konfidensialitet for selskapet mitt. men jeg vil vise hvordan du oppretter en webserver, viser dummy statisk inngang og utgangsmengde.
For dette trenger du en hvilken som helst webvert, jeg bruker her xampp som verten min.
du kan laste ned xampp her.
installer xampp … hvis du trenger klar instruksjon kan du bruke denne lenken.
Etter å ha installert xampp må du gå til rotkatalogen.
C: / xampp / htdocs
alle php -programmene dine bør være inne i denne roten.
Jeg opprettet siden min under navnet kalt esp_api.php
dette er min php -kode. her viser jeg bare statiske verdier for input & output;
$ line = $ _ GET ['line']; $ shift = $ _ GET ['shift'];
ekko ("myString"); // generell tekst
if ($ line == 'a0401' og $ shift = 'dd') {$ result ['input'] = 100; $ result ['output'] = 99; }
ellers {$ result ['input'] = 200; $ result ['output'] = 199; }
$ myObj-> input = ''. $ result ['input']. '';
$ myObj-> output = ''. $ result ['output']. '';
$ myJSON = json_encode ($ myObj);
ekko $ myJSON;
Nå er vårt HTTP -svar -API ferdig.
Vår http base url vil være som
you_ip_address/esp_api.php
du kan sjekke API -svarteksten din ved
localhost/esp_api.php? line = a0401 & shift = dd
her nevnte jeg linjen som a0401 og skift som dd.
Trinn 6: Siste trinn !
Skriv inn datamaskinens ip -adresse i Base URL
String Base_url = "fjernet"; // hovedadressen din
og last opp til ESP nodemcu. Når du er ferdig, bare slå på wifi fra mobilen eller den bærbare datamaskinen, får du et nettverk kalt AutoConnectAP. koble til den og skriv inn legitimasjon og linjekonfigurasjoner.
Tilbakestill deretter enheten og sjekk at nettverket er tilkoblet når den er tilkoblet, så er alt gjort.
Du kan se at inngangen vises på displayet.
Hvis du vil endre en linje eller wifi -legitimasjon, kan du trykke på trykknappen i noen sekunder, displayet viser konfi.
du gikk inn i demandAP -modus. du kan endre og tilbakestille enheten.
Hovedmotoren til hans instruerbare for å vise deg hvordan vi kan bruke våre hobby- og morsomme prosjekter i det virkelige produksjons- og produksjonsområdet og vise