Innehållsförteckning:
- Steg 1: Delar och verktyg som används:
- Steg 2: Anpassa Wifi Manager
- Steg 3: Anpassade funktioner för formuläråtgärd
- Steg 4: Anslutningar och huvudprogram
- Steg 5: Skapa webbserver
- Steg 6: Sista steget !!
Video: WIFI -display för produktionshantering: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Jag är en liten serie om IOT och Single board -datorer.
Jag vill alltid använda den utöver Hobby & Fun Projects (verklig produktion och tillverkning).
Denna instruktion är på väg att skapa en fyrsiffrig 7-segmentig WIFI-skärm med ESP-nodemcu för att visa produktion per timme. Jag arbetar inom elektronikindustrin, där vi använder Manufacturing Execution System (MES) för att övervaka och kontrollera produktionsgolvets inmatning, utdata och process. I det här projektet skapar jag en liten displayenhet som visar produktionsinmatningsmängden per rad, skift och timme.
Tekniskt sett liknar detta projekt en Youtube -prenumerationsvisning där vi använder API/HTTP -svar från online. Men här ska vi skapa vår egen API för att interagera med vårt lokala MES -system för att få in kvantitet.
Steg 1: Delar och verktyg som används:
Maskinvarudelar som används:
- ESP nodemcu
- TM1637 4 -siffrig klocka Display
- Tryck på strömbrytaren
- 10k motstånd
- några bygelkablar
Programvaruverktyg som används:
- Arduino IDE
- Xampp för PHP/Apache webbserver
Arduino -biblioteket används:
1. Wifi manager från tzapu & i Anpassad för mina anpassade fils (wifimanager)
2. ESP_EEPROM för att lagra mina anpassade värden i Flash -minne
3. SevenSegmentTM1637 för display
Steg 2: Anpassa Wifi Manager
I den här först installerade jag wifi manager först och sedan kopierade jag Wifi manager mappen och skickade igen i samma i Arduino biblioteksmapp, sedan bytt namn till WiFiManager_custom.
Folder Root katalog Mest gillar
C: / Users / ditt datornamn / Documents / Arduino / libraries
Sedan öppnade jag wifimanager_custom -mappen och bytte namn på header.cpp -fil som samma som wifimanager_custom, läggs till samma i header- och.cpp -filerna också.
Och lade till min anpassade form och knapp i rubriken.
i HTTP_PORTAL_OPTIONS PROGMEM lade jag till min knappformulär för Meny.
och lagt till ett nytt formulär för att ange rad & skift. Jag skapade det här formuläret som en enkel textform.
Efter detta kommer vi att skapa åtgärdsfunktioner för dessa formulär i.cpp -fil, för det måste vi göra funktionsdeklaration i huvudfil.
/ * mina anpassade funktioner */
void handleCustomForm (); void handleCustomSave ();
jag deklarerade mina anpassade funktioner i rubrikfilen. att det, vårt arbete i rubriken är klart måste vi gå med.cpp -fil för att skapa vår funktion och handlingar.
Steg 3: Anpassade funktioner för formuläråtgärd
Nu öppnar vi vår wifimanager_custom.cpp -fil.
och vi måste lägga till vår http -svarshanterare för att ringa till våra funktioner när vårt formulär är postat.
server-> on (String (F ("/custom_config")), std:: bind (& WiFiManager:: handleCustomForm, detta)); // MITT anpassat handtag
server-> on (String (F ("/custom_save")), std:: bind (& WiFiManager:: handleCustomSave, this)); // MITT anpassat handtag
dessa kommer att kalla våra anpassade funktioner när formuläret läggs ut.
1.handleCustomForm ()-> kommer att skapa en sida med vårt anpassade formulär för rad- och skiftinmatning och spara-knapp.
2.handleCustomSave ()-> denna funktion kommer att hämta formulärvärdena och lagra i Flash-minnesplatserna 0 (rad) & 50 (skift).
Steg 4: Anslutningar och huvudprogram
Anslutningarna är väldigt enkla..
Anslutningar och ledningar:
nodemcu TM1637 Display
3.3v ---- Vcc
G ---- Gnd
D2 ---- CLK
D3 ----- DIO
nodemcu- tryckknapp
- tryckknapp fäst på stift D8 från +5V - 10K motstånd fäst på stift D8 från marken
vi har anpassat vår wifimanager. nu måste vi skapa vårt huvudprogram.
1. vår wifi -chef kommer att ansluta till wifi -nätverket med senast använda autentiseringsuppgifter för att ansluta, om det misslyckas öppnar det en AutoConnectAP wifi -server. Vi kan konfigurera nya wifi -uppgifter, linje och skift genom att ansluta till denna wifi -server.
2. då kommer den in i huvudslingan.
Vår huvudslinga kommer att innehålla två delar. en är konfisubrutin när vi behöver byta linje, skifta eller lägga till någon wifi -referens för att ringa efterfrågeläge AP för att konfigurera. detta kommer att kallas när en tryckknapp som är ansluten till D8 -stiftet trycks in.
void loop () {
config_loop ();
}
void config_loop () {Serial.println ("");
Serial.println ("Waiting For Config button Status …");
//display.print("Vänta ");
if (digitalRead (TRIGGER_PIN) == HIGH)
{
display.print ("Conf"); // WiFiManager
// Lokal intialisering. När det väl är gjort behöver du inte ha det kvar i WiFiManager wifiManager;
// Återställ inställningar - för testning
//wifiManager.resetSettings ();
// ställer in timeout tills konfigurationsportalen stängs av // användbar för att göra det hela igen eller somna // på några sekunder
//wifiManager.setTimeout(120);
// den startar en åtkomstpunkt med det angivna namnet
// här "AutoConnectAP" // och går in i en blockeringsslinga i väntan på konfiguration
// UTAN DET INTE AP verkar fungera korrekt med SDK 1.5, uppdatera till minst 1.5.1 //WiFi.mode(WIFI_STA);
if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("gick inte att ansluta och slå timeout"); fördröjning (3000); // återställ och försök igen, eller kanske lägga den i djup sömn ESP.reset (); fördröjning (5000); }}
//Serial.println("Button status False. Back to Main loop "); //display.print("Main loop "); //display.clear ();
}
Det andra kommer att vara vårt huvudprogram för att få HTTP -svar från en viss server och visa inmatningsmängden i displayen.
För det här först måste vi få vår linje- och skiftdetalj från Flash-lagringen för ESP (adress 0-> rad, 50-> skift)
EEPROM.begin (100); // eeprom storageEEPROM.get (0, rad); // få värde från adress 0
EEPROM.get (50, skift); // Få värde från adress 50
då måste vi skicka den här raden och flytta detaljer till vår http -server med get -metoden för att få värdet på input & output.
String Base_url = "borttagen"; // min bas 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 ()); // detta kommer att skriva ut alla http -svarsträngar;
om du vill hur all text är slutfört är ditt arbete här själv, vi kan direkt visa det i tm1637 display.
display.print (http.getString ());
Men jag vill inte visa all text, eftersom den innehåller input, output i json -form och någon annan allmän text om dess databas osv.
så först tog jag bort den allmänna texten från svarssträngen med hjälp av funktionen Substring ().
Jag räknade längden på den allmänna texten och trimmade den.
om (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); DynamicJsonDocument root (bufferSize);
// JsonObject & root = doc.parseObject (http.getString ());
String json_string = http.getString (). Delsträng (121); /* detta är min förskjutning av allmän text om ditt svar inte har något liknande att du kan ta bort den här koden; */
//Serial.println(json_string);
DeserializationError -fel = deserializeJson (root, json_string);
// JsonObject & root = jsonBuffer.parseObject (http.getString ());
om (fel)
{Serial.print (F ("deserializeJson () misslyckades:"));
Serial.println (error.c_str ());
lämna tillbaka;
}
annan{
const char* input = root ["input"];
const char* output = root ["output"];
Serial.print ("Inmatning:");
Serial.println (input);
Serial.print ("Output:");
Serial.println (output);
display.print (".. i..");
display.clear (); // rensa displayen
display.print (input); // print RÄKTA VISSA SIFFER
}
det är det vårt huvudprogram är klart.
Steg 5: Skapa webbserver
Jag använder xampp som min webbserver och PHP -kod för att få data från min SQL -databas för att få exakt mängd.
Men jag kan inte dela alla originalkoder. eftersom det är konfidentiellt för mitt företag. men jag kommer att visa hur man skapar en webbserver, visar dummy statisk inmatning och utmatningsmängd.
För detta bör du behöva något webbhotell, jag använder här xampp som min värd.
du kan ladda ner xampp här.
installera xampp … om du behöver tydlig instruktion kan du använda den här länken.
Efter installationen av xampp måste du gå till din rotkatalog.
C: / xampp / htdocs
alla dina php -program bör vara inne i denna rot.
Jag skapade min sida med namnet kallad esp_api.php
det här är min php -kod. här visar jag bara statiska värden för input & output;
$ line = $ _ GET ['line']; $ shift = $ _ GET ['shift'];
echo ("myString"); // allmän text
if ($ line == 'a0401' och $ shift = 'dd') {$ result ['input'] = 100; $ result ['output'] = 99; }
annars {$ result ['input'] = 200; $ result ['output'] = 199; }
$ myObj-> input = ''. $ result ['input']. '';
$ myObj-> output = ''. $ result ['output']. '';
$ myJSON = json_encode ($ myObj);
echo $ myJSON;
Nu är vårt HTTP -svar -API klart.
Vår http -basadress kommer att vara som
you_ip_address/esp_api.php
kan du kontrollera din API -svarstext med
localhost/esp_api.php? line = a0401 & shift = dd
här nämnde jag rad som a0401 och skift som dd.
Steg 6: Sista steget !!
Ange din dators IP -adress i basadressen
String Base_url = "borttagen"; // din webbadress
och ladda upp till din ESP nodemcu. När du bara har slagit på din wifi från din mobil eller bärbara dator får du ett nätverk som heter AutoConnectAP. ansluta till den och ange dina referenser och radkonfigurationer.
Återställ sedan din enhet och kontrollera att ditt nätverk är anslutet när den är ansluten, sedan är allt gjort.
Du kan se att ingången visas på displayen.
Om du vill ändra någon linje eller wifi -referens kan du trycka på tryckknappen i några sekunder, displayen visar konfi.
du gick in i demandAP -läge. du kan ändra och återställa enhet.
Huvudmotorn i hans instruerbara för att visa dig hur vi kan använda våra hobby- och roliga projekt inom det verkliga produktions- och tillverkningsområdet och visa
Rekommenderad:
Inställning för extern Bluetooth GPS -leverantör för Android -enheter: 8 steg
Inställning för extern Bluetooth GPS-leverantör för Android-enheter: Den här instruktionsboken kommer att förklara hur du skapar din egen externa Bluetooth-aktiverade GPS för din telefon, tänd vad som helst för ungefär $ 10. Materialräkning: NEO 6M U-blox GPSHC-05 bluetooth-modul Kunskap om gränssnitt Blutooth LavenergimodulerArdui
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva