Turinys:

WIFI ekranas gamybos valdymui: 6 žingsniai
WIFI ekranas gamybos valdymui: 6 žingsniai

Video: WIFI ekranas gamybos valdymui: 6 žingsniai

Video: WIFI ekranas gamybos valdymui: 6 žingsniai
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Liepa
Anonim
WIFI ekranas gamybos valdymui
WIFI ekranas gamybos valdymui

Aš esu šiek tiek serija apie IOT ir vienos plokštės kompiuterius.

Aš visada noriu jį naudoti ne tik hobio ir pramogų projektuose (tikroji gamyba ir gamyba).

Ši instrukcija ketina sukurti 4 skaitmenų 7 segmentų WIFI ekraną su ESP nodemcu, kad būtų rodoma valandinė gamybos įvestis. Aš dirbu elektronikos gamybos pramonėje, kur mes naudojame gamybos vykdymo sistemą (MES), kad galėtume stebėti ir kontroliuoti gamybos grindų įvestį, išvestį ir procesą. Šiame projekte aš kuriu mažą ekraną, kuris parodys gamybos įvesties kiekį pagal eilutę, pamainą ir valandą.

Techniniu požiūriu šis projektas yra panašus į „Youtube“abonentų skaičiaus ekraną, kuriame mes naudojame API/HTTP atsaką iš interneto. Tačiau čia mes sukursime savo API, kad galėtume sąveikauti su vietine MES sistema, kad gautume įvesties kiekį.

1 žingsnis: Naudotos dalys ir įrankiai:

Naudotos dalys ir įrankiai
Naudotos dalys ir įrankiai

Naudojamos aparatūros dalys:

  1. ESP nodemcu
  2. TM1637 4 skaitmenų laikrodžio ekranas
  3. Stumti jungiklį
  4. 10k rezistorius
  5. keletas trumpiklių

Naudojami programinės įrangos įrankiai:

  1. „Arduino IDE“
  2. „Xampp“PHP/„Apache“žiniatinklio serveriui

Naudojama „Arduino“biblioteka:

1. „Tzapu & i“„Wi -Fi“tvarkyklė, pritaikyta mano pasirinktiniams failams („wifimanager“)

2. ESP_EEPROM mano pasirinktinėms vertėms išsaugoti „Flash“atmintyje

3. „SevenSegmentTM1637“ekranui

2 veiksmas: „Wifi Manager“tinkinimas

„Wifi Manager“tinkinimas
„Wifi Manager“tinkinimas

Pirmiausia aš pirmiausia įdiegiau „wifi“tvarkyklę, o tada nukopijavau „Wifi“tvarkyklės aplanką ir vėl perėjau į tą patį „Arduino“bibliotekos aplanke, tada pervadintas į „WiFiManager_custom“.

Aplanko šaknies katalogas Dažniausiai patinka

C: / Vartotojai / jūsų kompiuterio pavadinimas / Dokumentai / Arduino / bibliotekos

Tada atidariau aplanką „wifimanager_custom“ir pervadinau antraštės.cpp failą taip pat, kaip ir „wifimanager_custom“, taip pat pridėjau antraštės ir.cpp failus.

Ir antraštėje pridėjau savo pasirinktinę formą ir mygtuką.

HTTP_PORTAL_OPTIONS PROGMEM pridėjau meniu mygtuką.

ir pridėjo naują formą, skirtą įvesti eilutę ir pamainą. Aš sukūriau šią formą kaip paprastą teksto formą.

Po to mes sukursime veiksmų formas šioms formoms.cpp faile, tam mes turime atlikti funkcijų deklaraciją antraštės faile.

/ * mano pasirinktinės funkcijos */

tuščia rankenaCustomForm (); void rankenaCustomSave ();

Aš paskelbiau savo pasirinktines funkcijas antraštės faile. kad tai, mūsų darbas antraštėje baigtas, turime sukurti.cpp failą, kad sukurtume savo funkciją ir veiksmus.

3 veiksmas: pasirinktinės formos veiksmo funkcijos

Pasirinktinės formos veiksmo funkcijos
Pasirinktinės formos veiksmo funkcijos
Pasirinktinės formos veiksmo funkcijos
Pasirinktinės formos veiksmo funkcijos
Pasirinktinės formos veiksmo funkcijos
Pasirinktinės formos veiksmo funkcijos

Dabar atidarome failą wifimanager_custom.cpp.

ir mes turime pridėti savo http atsakymo tvarkyklę, kad iškviestume savo funkcijas, kai mūsų forma yra paskelbta.

serveris-> į (String (F ("/custom_config")), std:: bind (& WiFiManager:: handleCustomForm, this)); // MANO pasirinktinė rankena

serveris-> į (String (F ("/custom_save")), std:: bind (& WiFiManager:: handleCustomSave, this)); // MANO pasirinktinė rankena

paskelbus formą, jie iškvies mūsų pasirinktines funkcijas.

1.handleCustomForm ()-> sukurs puslapį su mūsų pasirinktine eilutės ir poslinkio įvesties ir išsaugojimo mygtuko forma.

2.handleCustomSave ()-> ši funkcija gaus formos reikšmes ir išsaugos „Flash“atminties vietose 0 (eilutė) ir 50 (pamaina).

4 žingsnis: Ryšiai ir pagrindinė programa

Ryšiai ir pagrindinė programa
Ryšiai ir pagrindinė programa

Sujungimai labai paprasti..

Sujungimai ir laidai:

nodemcu TM1637 ekranas

3.3v ---- Vcc

G ---- Gnd

D2 ---- CLK

D3 ----- DIO

nodemcu- stumti jungiklį

- mygtukas, pritvirtintas prie kaiščio D8, nuo +5V - 10K rezistorius, pritvirtintas prie žemės kaiščio D8

baigėme pritaikyti savo žmonos valdytoją. dabar turime sukurti savo pagrindinę programą.

1. mūsų „Wi -Fi“valdytojas prisijungs prie „Wi -Fi“tinklo naudodami paskutinius naudotus prisijungimo duomenis, jei nepavyks, atidarys „AutoConnectAP“„wifi“serverį. Prisijungę prie šio „wifi“serverio galime sukonfigūruoti naujus „wifi“nusikaltimus, liniją ir perjungimą.

2. tada jis pateks į pagrindinę kilpą.

Mūsų pagrindinę kilpą sudarys dvi dalys. vienas iš jų yra „confi“paprogramė, kai reikia pakeisti liniją, perkelti arba pridėti bet kokius „Wi -Fi“prisijungimo duomenis, kad būtų galima sukonfigūruoti paklausos režimo AP. tai bus iškviesta, kai bus paspaustas mygtukas, prijungtas prie D8 kaiščio.

void loop () {

config_loop ();

}

void config_loop () {Serial.println ("");

Serial.println ("Laukiama konfigūracijos mygtuko būsenos …");

//display.print("Laukti ");

if (digitalRead (TRIGGER_PIN) == HIGH)

{

display.print („Conf“); // „WiFiManager“

// Vietinė intializacija. Baigus verslą, nereikia jo laikyti aplink „WiFiManager wifiManager“;

// iš naujo nustatyti nustatymus - bandymams

//wifiManager.resetSettings ();

// nustato laiką, kol konfigūracijos portalas bus išjungtas // naudinga, kad visa tai būtų bandoma iš naujo arba užmigti // per kelias sekundes

//wifiManager.setTimeout(120);

// jis pradeda prieigos tašką nurodytu pavadinimu

// čia "AutoConnectAP" // ir eina į blokavimo ciklą, laukiantį konfigūracijos

// BE ŠIO APTARBAS NEMATYTI DIRBTI SU SDK 1.5, atnaujinkite bent į 1.5.1 //WiFi.mode(WIFI_STA);

if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("nepavyko prisijungti ir patekti į skirtąjį laiką"); vėlavimas (3000); // atstatyti ir bandyti dar kartą, o gal užmigdyti ESP.reset (); vėlavimas (5000); }}

//Serial.println("Button status False. Back to Main loop "); //display.print("Pagrindinė kilpa "); //display.clear ();

}

Antroji bus mūsų pagrindinė programa, skirta gauti HTTP atsakymą iš konkretaus serverio ir rodyti įvesties kiekį ekrane.

Norėdami tai padaryti, pirmiausia turime gauti išsamią linijos ir poslinkio informaciją iš ESP „Flash“saugyklos (adresas 0-> eilutė, 50-> pamaina)

EEPROM.pradis (100); // eeprom storageEEPROM.get (0, eilutė); // gauti vertę iš 0 adreso

EEPROM.get (50, pamaina); // Gaukite vertę iš 50 adreso

tada mes turime perduoti šią eilutę ir perkelti informaciją į mūsų http serverį gavimo metodu, kad gautume įvesties ir išvesties vertę.

Eilutė Base_url = "pašalinta"; // mano bazinis urlHTTPClient http; // HTTPClient klasės objektas

Eilutės URL = Base_url+"?"+"Line ="+line+"& shift ="+shift;

Serial.println (URL);

http.begin (URL);

int httpCode = http. GET ();

Serial.println (http.getString ()); // tai bus atspausdinta visa http atsakymo eilutė;

jei norite, kaip visas tekstas, tada jūsų darbas bus baigtas čia, mes galime tiesiogiai jį parodyti tm1637 ekrane.

display.print (http.getString ());

Bet aš nenoriu rodyti viso teksto, nes jame yra įvestis, išvestis json pavidalu ir kitas bendras tekstas apie jo duomenų bazę ir kt.

todėl pirmiausia pašalinau tą bendrą tekstą iš atsakymo eilutės, naudodamas funkciją Substring ().

suskaičiavau bendro teksto ilgį ir jį sutrumpinau.

if (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); DynamicJsonDocument root (bufferSize);

// JsonObject & root = doc.parseObject (http.getString ());

Styga json_string = http.getString (). Antrinė eilutė (121); /* tai yra mano bendro teksto poslinkis, jei jūsų atsakymas neturi tokio dalyko, kaip galite pašalinti šį kodą; */

//Serial.println(json_string);

DeserializationError klaida = deserializeJson (šaknis, json_string);

// JsonObject & root = jsonBuffer.parseObject (http.getString ());

jei (klaida)

{Serial.print (F ("deserializeJson () nepavyko:"));

Serial.println (error.c_str ());

grįžti;

}

Kitas{

const char* įvestis = šaknis ["input"];

const char* output = root ["output"];

Serial.print („Įvestis:“);

Serial.println (įvestis);

Serial.print ("Išvestis:");

Serial.println (išvestis);

display.print (".. in..");

display.clear (); // išvalyti ekraną

display.print (įvestis); // spausdinti KAS KEIČIŲ SKAIČIUS

}

tai mūsų pagrindinė programa baigta.

5 veiksmas: žiniatinklio serverio kūrimas

Interneto serverio kūrimas
Interneto serverio kūrimas
Interneto serverio kūrimas
Interneto serverio kūrimas

Aš naudoju „xampp“kaip žiniatinklio tarnybą ir PHP kodą, kad gaučiau duomenis iš savo SQL duomenų bazės, kad gaučiau tikslų kiekį.

Bet negaliu pasidalinti visais originaliais jo kodais. nes tai mano įmonės konfidencialumas. bet aš parodysiu, kaip sukurti vieną žiniatinklio serverį, parodysiu netikrą statinį įvesties ir išvesties kiekį.

Tam jums reikia bet kurio žiniatinklio prieglobos, aš čia naudoju xampp kaip savo pagrindinį kompiuterį.

xampp galite atsisiųsti čia.

įdiegti xampp … jei jums reikia aiškios instrukcijos, galite naudoti šią nuorodą.

Įdiegę „xampp“turite eiti į savo šakninį katalogą.

C: / xampp / htdocs

visos jūsų php programos turėtų būti šios šaknies viduje.

sukūriau savo puslapį pavadinimu esp_api.php

tai mano php kodas. čia aš tik rodau statines įvesties ir išvesties reikšmes;

$ line = $ _ GET ['line']; $ shift = $ _ GET ['shift'];

echo („myString“); // bendras tekstas

if ($ line == 'a0401' ir $ 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;

Dabar mūsų HTTP atsako API baigta.

Mūsų http bazės URL bus panašus

you_ip_address/esp_api.php

galite patikrinti savo API atsakymo tekstą

localhost/esp_api.php? line = a0401 & shift = dd

čia aš minėjau eilutę kaip a0401 ir pamainą kaip dd.

6 žingsnis: paskutinis žingsnis !

Paskutinis žingsnis !!!
Paskutinis žingsnis !!!
Paskutinis žingsnis !!!
Paskutinis žingsnis !!!
Paskutinis žingsnis !!!
Paskutinis žingsnis !!!

Įveskite savo kompiuterio IP adresą į bazinį URL

Eilutė Base_url = "pašalinta"; // jūsų bazinis URL

ir įkelkite į savo ESP nodemcu. Baigę tiesiog įjunkite „Wi -Fi“iš savo mobiliojo ar nešiojamojo kompiuterio, gausite tinklą, vadinamą „AutoConnectAP“. prisijunkite prie jo ir įveskite savo kredencialus ir eilutės konfigūracijas.

Tada iš naujo nustatykite įrenginį ir patikrinkite, ar jūsų tinklas prijungtas, kai jis bus prijungtas, tada viskas bus padaryta.

Galite matyti, kad įvestis rodoma ekrane.

jei norite pakeisti bet kurią eilutę ar „Wi -Fi“prisijungimo duomenis, galite keletą sekundžių paspausti jungiklį, ekrane rodoma konf.

įjungėte „demandAP“režimą. galite pakeisti ir iš naujo nustatyti įrenginį.

Pagrindinis jo pamokomas moto parodys jums, kaip galime panaudoti savo pomėgių ir pramogų projektus realioje gamybos ir gamybos srityje bei parodyti

Rekomenduojamas: