Kazalo:
- 1. korak: Uporabljeni deli in orodja:
- 2. korak: prilagajanje upravitelja Wifi
- 3. korak: Funkcije po meri za dejanje obrazca
- 4. korak: Povezave in glavni program
- 5. korak: Ustvarjanje spletnega strežnika
- 6. korak: Zadnji korak !!
Video: Zaslon WIFI za upravljanje proizvodnje: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Sem majhna serija o računalnikih IOT in enosmernih računalnikih.
Vedno ga želim uporabiti poleg Hobby & Fun Projects (prava proizvodnja in proizvodnja).
Ta Instructable bo kmalu ustvaril 4-mestni 7-segmentni zaslon WIFI z nodemcu ESP za prikaz urnih produkcijskih vnosov. Delam v predelovalni industriji elektronike, kjer uporabljamo sistem za izvedbo proizvodnje (MES) za spremljanje in nadzor vhodov, izhodov in procesov proizvodnih tal. V tem projektu Ustvarjam majhno prikazno enoto, ki bo prikazala vhodno količino proizvodnje glede na vrstico, izmeno in uro.
Tehnično je ta projekt podoben prikazovalniku števila naročnikov Youtube, kjer uporabljamo odziv API/HTTP iz spleta, toda tukaj bomo ustvarili lasten API za interakcijo z našim lokalnim sistemom MES za pridobivanje količine vnosa.
1. korak: Uporabljeni deli in orodja:
Uporabljeni deli strojne opreme:
- ESP nodemcu
- TM1637 4 -mestna ura Ura
- Potisno stikalo
- 10k upor
- nekaj mostičnih žic
Uporabljena programska orodja:
- Arduino IDE
- Xampp za spletni strežnik PHP/Apache
Uporabljena knjižnica Arduino:
1. Wifi manager by tzapu & i Prilagojeno za moje vloge po meri (wifimanager)
2. ESP_EEPROM za shranjevanje mojih vrednosti po meri v pomnilnik Flash
3. SevenSegmentTM1637 Za prikaz
2. korak: prilagajanje upravitelja Wifi
Na tem mestu sem najprej namestil upravitelja wifi, nato sem kopiral mapo upravitelja Wifi in ga znova poslal v isto v mapi knjižnice Arduino, nato preimenoval v WiFiManager_custom.
Mapa Korenski imenik Večinoma všeč
C: / Users / ime vašega računalnika / Documents / Arduino / libraries
Nato sem odprl mapo wifimanager_custom in preimenoval datoteko header.cpp, enako kot wifimanager_custom, isto dodal tudi v datoteko header &.cpp.
In v glavo sem dodal svoj obrazec in gumb po meri.
v HTTP_PORTAL_OPTIONS PROGMEM sem dodal obrazec gumba za Meni.
in dodan nov obrazec za vnos vrstice in premika. Ta obrazec sem ustvaril kot preprosto besedilno obliko.
Po tem bomo ustvarili akcijske funkcije za te obrazce v datoteki.cpp, za to pa moramo v datoteki z glavo narediti deklaracijo funkcije.
/ * moje funkcije po meri */
void handleCustomForm (); void handleCustomSave ();
svoje datoteke po meri sem prijavil v datoteki glave. da je to, naše delo v glavi končano, moramo ustvariti našo funkcijo in dejanja z datoteko.cpp.
3. korak: Funkcije po meri za dejanje obrazca
Zdaj odpremo datoteko wifimanager_custom.cpp.
in moramo dodati naš vodnik odziva http, da pokliče naše funkcije, ko je naš obrazec objavljen.
server-> on (String (F ("/custom_config")), std:: bind (& WiFiManager:: handleCustomForm, to)); // MOJ ročaj po meri
server-> on (String (F ("/custom_save")), std:: bind (& WiFiManager:: handleCustomSave, to)); // MOJ ročaj po meri
te bodo po objavi obrazca klicale naše funkcije po meri.
1.handleCustomForm ()-> bo ustvaril stran z našim obrazcem po meri za vnos vrstice in premika ter gumb za shranjevanje.
2.handleCustomSave ()-> ta funkcija bo prejela vrednosti obrazcev in jih shranila v pomnilnik Flash 0 (vrstica) & 50 (premik).
4. korak: Povezave in glavni program
Povezave so zelo preproste..
Priključki in ožičenje:
nodemcu TM1637 Zaslon
3,3 V ---- Vcc
G ---- Gnd
D2 ---- CLK
D3 ----- DIO
nodemcu- potisno stikalo
- tipka pritrjena na pin D8 iz +5V - 10K upor pritrjen na pin D8 od tal
dokončali smo prilagajanje našega wifimanagerja. zdaj moramo ustvariti naš glavni program.
1. naš upravitelj wifi se bo povezal z omrežjem wifi z zadnjimi uporabljenimi poverilnicami za vzpostavitev povezave.
2. potem bo vstopil v glavno zanko.
Naša glavna zanka bo vsebovala dva dela. ena je podprogram confi, ko moramo spremeniti vrstico, premakniti ali dodati katero koli poverilnico wifi za klicni način načina povpraševanja za konfiguracijo. to se pokliče, ko pritisnete gumb, povezan z zatičem D8.
void loop () {
config_loop ();
}
void config_loop () {Serial.println ("");
Serial.println ("Čakanje na stanje gumba za konfiguracijo …");
//display.print(" Počakaj ");
če (digitalRead (TRIGGER_PIN) == VISOKO)
{
display.print ("Conf"); // WiFiManager
// Lokalna intializacija. Ko je posel končan, ga ni treba hraniti v bližini WiFiManager wifiManager;
// ponastavitev nastavitev - za testiranje
//wifiManager.resetSettings ();
// nastavi časovno omejitev, dokler se konfiguracijski portal ne izklopi // koristno, da se vse znova poskusi ali zaspi // v nekaj sekundah
//wifiManager.setTimeout(120);
// zažene dostopno točko z določenim imenom
// tukaj "AutoConnectAP" // in gre v blokirno zanko, ki čaka na konfiguracijo
// BREZ TEGA AP NE Zgleda, da deluje pravilno s SDK 1.5, posodobite na vsaj 1.5.1 //WiFi.mode(WIFI_STA);
if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("povezava ni uspela in časovna omejitev ni uspela"); zamuda (3000); // ponastavite in poskusite znova ali pa ga postavite v stanje globokega spanja ESP.reset (); zamuda (5000); }}
//Serial.println(" Status gumba False. Back to Main loop "); //display.print("Glavna zanka "); //display.clear ();
}
Drugi bo naš glavni program za odziv HTTP od določenega strežnika in prikaz vhodne količine na zaslonu.
Za to moramo najprej dobiti podatke o vrstici in premiku iz pomnilnika Flash ESP (naslov 0-> vrstica, 50-> premik)
EEPROM.začetek (100); // eeprom storageEEPROM.get (0, vrstica); // dobimo vrednost z naslova 0
EEPROM.get (50, izmena); // Pridobite vrednost z naslova 50
potem moramo to vrstico in podatke pomakniti na naš http strežnik po metodi get, da dobimo vrednost vnosa in izhoda.
Niz Base_url = "odstranjeno"; // moj osnovni urlHTTPClient http; // Objekt razreda
Niz URL = Base_url+"?"+"Vrstica ="+vrstica+"& shift ="+shift;
Serial.println (URL);
http.begin (URL);
int httpCode = http. GET ();
Serial.println (http.getString ()); // to natisne ves niz odziva
če želite, kako je vse besedilo, potem je vaše delo tukaj končano, ga lahko neposredno prikažemo na zaslonu tm1637.
display.print (http.getString ());
Ne želim pa prikazati vsega besedila, ker vsebuje vnos, izhod v obliki json in nekaj drugega splošnega besedila o svoji bazi podatkov itd.
zato sem najprej odstranil to splošno besedilo iz odzivnega niza s funkcijo Substring ().
preštela sem dolžino splošnega besedila in ga obrezala.
if (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); Koren DynamicJsonDocument (bufferSize);
// JsonObject & root = doc.parseObject (http.getString ());
Niz json_string = http.getString (). Podniz (121); /* to je moj odmik splošnega besedila, če vaš odgovor nima nič takega, lahko odstranite to kodo; */
//Serial.println(json_string);
Napaka DeserializationError = deserializeJson (root, json_string);
// JsonObject & root = jsonBuffer.parseObject (http.getString ());
če (napaka)
{Serial.print (F ("deserializeJson () ni uspelo:"));
Serial.println (napaka.c_str ());
vrnitev;
}
drugače {
const char* vnos = root ["vnos"];
const char* output = root ["output"];
Serial.print ("Vnos:");
Serial.println (vnos);
Serial.print ("Izhod:");
Serial.println (izhod);
display.print (".. v..");
display.clear (); // počistite zaslon
display.print (input); // natisnite ŠTEVANJE NEKAJ ŠTEVIL
}
s tem je naš glavni program končan.
5. korak: Ustvarjanje spletnega strežnika
i m Uporabljam xampp kot svojo spletno storitev in kodo PHP za pridobivanje podatkov iz moje baze podatkov SQL za natančno količino.
Ne morem pa deliti vseh izvirnih kod. ker je zaupnost mojega podjetja. vendar bom pokazal, kako ustvariti en spletni strežnik, pokazal lažne statične vhodne in izhodne količine.
Za to potrebujete katerega koli spletnega gostitelja, tukaj uporabljam xampp kot svojega gostitelja.
xampp lahko prenesete tukaj.
namestite xampp … če potrebujete jasna navodila, lahko uporabite to povezavo.
Po namestitvi xampp morate iti v svoj korenski imenik.
C: / xampp / htdocs
vsi vaši programi php morajo biti znotraj tega korena.
svojo stran sem ustvaril z imenom esp_api.php
to je moja php koda. tukaj samo prikazujem statične vrednosti vhoda in izhoda;
$ line = $ _ GET ['line']; $ shift = $ _ GET ['shift'];
echo ("myString"); // splošno besedilo
if ($ line == 'a0401' in $ shift = 'dd') {$ result ['input'] = 100; $ result ['output'] = 99; }
else {$ result ['input'] = 200; $ result ['output'] = 199; }
$ myObj-> input = ''. $ result ['input']. '';
$ myObj-> output = ''. $ result ['output']. '';
$ myJSON = json_encode ($ myObj);
echo $ myJSON;
Zdaj je naš odzivni API HTTP končan.
Naš osnovni bazni naslov http bo podoben
you_ip_address/esp_api.php
odzivno besedilo API -ja lahko preverite z
localhost/esp_api.php? line = a0401 & shift = dd
tukaj sem omenil vrstico kot a0401 in premik kot dd.
6. korak: Zadnji korak !!
IP naslov računalnika vnesite v osnovni URL
Niz Base_url = "odstranjeno"; // vaš osnovni URL
in naložite v svoj ESP nodemcu. Ko v mobilnem ali prenosnem računalniku samo vklopite wifi, boste dobili omrežje z imenom AutoConnectAP. povežite se z njim in vnesite poverilnice in konfiguracijo vrstice.
Nato ponastavite napravo in preverite, ali je omrežje povezano, ko je povezano, potem je vse opravljeno.
Vidite lahko, da je vnos prikazan na zaslonu.
če želite spremeniti katero koli vrstico ali poverilnico za wifi, lahko za nekaj sekund pritisnete potisno stikalo, na zaslonu se prikaže confi.
ste vstopili v način demandAP. lahko spremenite in ponastavite napravo.
Glavni moto njegovega poučevanja je pokazati, kako lahko svoje hobi in zabavne projekte uporabimo na resničnem proizvodnem in proizvodnem področju ter pokažemo
Priporočena:
Shelly EM samodejni preklop na osnovi proizvodnje sončnih plošč: 6 korakov
Shelly EM Auto Toggle, ki temelji na proizvodnji sončnih plošč: P1: poraba v hiši (npr. "P1 = 1 kW" ⇒ porabimo 1 kW) P2: proizvodnja sončnih celic (npr. "P2 = - 4 kW" ⇒ proizvajamo 4 kW) grelnik ob vklopu porabi 2kW. Vklopiti ga želimo, če sončna plošča proizvaja
TTGO (barvni) zaslon z mikropythonom (T-zaslon TTGO): 6 korakov
TTGO (barvni) zaslon z Micropythonom (TTGO T-zaslon): TTGO T-zaslon je plošča, ki temelji na ESP32 in vključuje 1,14-palčni barvni zaslon. Ploščo lahko kupite za nagrado manj kot 7 $ (vključno z ladijskim prometom, nagrado na banggoodu). To je neverjetna nagrada za ESP32, vključno z zaslonom
I2C / IIC LCD zaslon - Uporabite SPI LCD za LCD zaslon I2C z uporabo modula SPI do IIC z Arduinom: 5 korakov
I2C / IIC LCD zaslon | Uporabite SPI LCD za LCD zaslon I2C z uporabo modula SPI do IIC z Arduinom: Pozdravljeni, saj ima navaden SPI LCD 1602 preveč žic za povezavo, zato ga je zelo težko povezati z arduinom, vendar je na trgu na voljo en modul, ki lahko pretvorite zaslon SPI v zaslon IIC, tako da morate priključiti samo 4 žice
I2C / IIC LCD zaslon - Pretvorite SPI LCD v LCD zaslon I2C: 5 korakov
I2C / IIC LCD zaslon | Pretvorite SPI LCD v LCD zaslon I2C: uporaba spi lcd zaslona zahteva preveč povezav, kar je res težko narediti, zato sem našel modul, ki lahko i2c lcd pretvori v spi lcd, zato začnimo
ESP8266 Vremenski zaslon in informacijski zaslon KVG: 5 korakov
ESP8266 Vremenski in informacijski zaslon KVG: To je preprost informacijski zaslon za vremensko napoved prek darksky.net in zaslonov v živo za avtobuse v Kielu prek " KVG Echtzeitabfahrten ". Zaslon temelji na NodeMCU (ESP8266) in LCD zaslonu ILI9341