Innehållsförteckning:

WIFI -display för produktionshantering: 6 steg
WIFI -display för produktionshantering: 6 steg

Video: WIFI -display för produktionshantering: 6 steg

Video: WIFI -display för produktionshantering: 6 steg
Video: SDK konferensen 2021 del 2 2024, Juli
Anonim
WIFI -display för produktionshantering
WIFI -display för produktionshantering

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:

Delar och verktyg som används
Delar och verktyg som används

Maskinvarudelar som används:

  1. ESP nodemcu
  2. TM1637 4 -siffrig klocka Display
  3. Tryck på strömbrytaren
  4. 10k motstånd
  5. några bygelkablar

Programvaruverktyg som används:

  1. Arduino IDE
  2. 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

Anpassa Wifi Manager
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

Anpassade funktioner för formuläråtgärd
Anpassade funktioner för formuläråtgärd
Anpassade funktioner för formuläråtgärd
Anpassade funktioner för formuläråtgärd
Anpassade funktioner för formuläråtgärd
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

Anslutningar och huvudprogram
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

Skapa webbserver
Skapa webbserver
Skapa webbserver
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 !!

Sista steget!!!
Sista steget!!!
Sista steget!!!
Sista steget!!!
Sista steget!!!
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: