Taula de continguts:

Pantalla WIFI per a la gestió de producció: 6 passos
Pantalla WIFI per a la gestió de producció: 6 passos

Vídeo: Pantalla WIFI per a la gestió de producció: 6 passos

Vídeo: Pantalla WIFI per a la gestió de producció: 6 passos
Vídeo: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, Desembre
Anonim
Pantalla WIFI per a la gestió de producció
Pantalla WIFI per a la gestió de producció

Sóc una mica sèrie d'ordinadors IOT i de placa única.

Sempre desitjo fer-lo servir més enllà de Hobby & Fun Projects (producció i fabricació reals).

Aquest instructiu està a punt de crear una pantalla WIFI de 4 dígits de 7 segments amb ESP nodemcu per mostrar l'entrada de producció per hora. Estic treballant en la indústria de la fabricació d’electrònica, on fem servir el sistema d’execució de fabricació (MES) per supervisar i controlar l’entrada, la sortida i el procés del sòl de producció. En aquest projecte estic creant una unitat de visualització petita que mostrarà la quantitat d’entrada de producció segons la línia, el torn i l’hora.

En termes tècnics, aquest projecte és similar a una pantalla de recompte de subscriptors de Youtube, en què utilitzem la resposta API / HTTP des de la línia, però aquí crearem la nostra pròpia API per interactuar amb el nostre sistema MES local per obtenir la quantitat d’entrada.

Pas 1: peces i eines utilitzades:

Peces i eines utilitzades
Peces i eines utilitzades

Peces de maquinari utilitzades:

  1. ESP nodemcu
  2. Pantalla de rellotge TM1637 de 4 dígits
  3. Polsador
  4. 10k resistència
  5. pocs cables de pont

Eines de programari utilitzades:

  1. IDE Arduino
  2. Xampp per al servidor web PHP / Apache

La biblioteca Arduino s'utilitza:

1. Gestor de wifi de tzapu & i Personalitzat per als meus fitxers personalitzats (wifimanager)

2. ESP_EEPROM per emmagatzemar els meus valors personalitzats a la memòria Flash

3. SevenSegmentTM1637 per a la visualització

Pas 2: personalització del gestor de Wifi

Personalització de Wifi Manager
Personalització de Wifi Manager

Primer, he instal·lat primer el gestor de wifi i després he copiat la carpeta del gestor de wifi i he passat de nou a la mateixa carpeta de la biblioteca Arduino, i després he canviat el nom de WiFiManager_custom.

Directori arrel de la carpeta Sobretot

C: / Users / nom del vostre equip / Documents / Arduino / libraries

Després he obert la carpeta wifimanager_custom i he canviat el nom del fitxer.cpp de capçalera igual que wifimanager_custom, i he afegit el mateix als fitxers de capçalera i.cpp.

I he afegit el formulari i el botó personalitzats a la capçalera.

a HTTP_PORTAL_OPTIONS PROGMEM he afegit el formulari del meu botó per a Menú.

i es va afegir un nou formulari per introduir línia i desplaçament. He creat aquest formulari com a senzill formulari de text.

Després d'això, crearem funcions d'acció per a aquest formulari al fitxer.cpp, per això hem de fer la declaració de funcions al fitxer de capçalera.

/ * les meves funcions personalitzades * /

void handleCustomForm (); void handleCustomSave ();

He declarat les meves funcions personalitzades al fitxer de capçalera. que, el nostre treball a la capçalera s'ha acabat, hem d'anar amb el fitxer.cpp per crear la nostra funció i accions.

Pas 3: Funcions personalitzades per a l'acció del formulari

Funcions personalitzades per a l'acció del formulari
Funcions personalitzades per a l'acció del formulari
Funcions personalitzades per a l'acció del formulari
Funcions personalitzades per a l'acció del formulari
Funcions personalitzades per a l'acció del formulari
Funcions personalitzades per a l'acció del formulari

Ara obrim el nostre fitxer wifimanager_custom.cpp.

i hem d'afegir el nostre gestor de respostes http per trucar a les nostres funcions quan el formulari sigui publicat.

server-> on (String (F ("/ custom_config")), std:: bind (& WiFiManager:: handleCustomForm, this)); // EL MEU mànec personalitzat

server-> on (String (F ("/ custom_save")), std:: bind (& WiFiManager:: handleCustomSave, this)); // EL MEU mànec personalitzat

aquestes trucaran a les nostres funcions personalitzades quan es publiqui el formulari.

1.handleCustomForm () -> crearà una pàgina amb el nostre formulari personalitzat per al botó d’entrada i desa de línia i de desplaçament.

2.handleCustomSave () -> aquesta funció obtindrà els valors del formulari i s’emmagatzemarà a les ubicacions de memòria Flash 0 (línia) i 50 (shift).

Pas 4: connexions i programa principal

Connexions i programa principal
Connexions i programa principal

Les connexions són molt senzilles..

Connexions i cablejat:

nodemcu TM1637 Display

3,3 v ---- Vcc

G ---- Gnd

D2 ---- CLK

D3 ----- DIO

nodemcu- polsador

- Polsador connectat al pin D8 de + 5V - Resistència 10K connectat al pin D8 des de terra

hem acabat de personalitzar el nostre wifimanager. ara hem de crear el nostre programa principal.

1. el nostre gestor de connexions wifi es connectarà amb la xarxa wifi amb les últimes credencials utilitzades per connectar-se, si falla obre un servidor wifi AutoConnectAP. Podem configurar nous cridencials, línies i desplaçaments wifi connectant-vos a aquest servidor wifi.

2. llavors entrarà al bucle principal.

El nostre bucle principal contindrà dues parts. un és la subrutina confi quan hem de canviar de línia, canviar o afegir qualsevol credencial wifi al mode de demanda de trucades AP per configurar. es trucarà quan es prem un botó de connexió connectat al pin D8.

bucle buit () {

config_loop ();

}

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

Serial.println ("Esperant l'estat del botó de configuració …");

//display.print("Wait ");

if (digitalRead (TRIGGER_PIN) == HIGH)

{

display.print ("Conf"); // WiFiManager

// Intialització local. Un cop realitzat el seu negoci, no cal mantenir-lo al voltant de WiFiManager wifiManager;

// restableix la configuració: per provar-les

//wifiManager.resetSettings ();

// defineix el temps d'espera fins que el portal de configuració es desactiva // útil per fer que tot es torni a provar o per dormir // en segons

//wifiManager.setTimeout(120);

// inicia un punt d'accés amb el nom especificat

// aquí "AutoConnectAP" // i entra en un bucle de bloqueig esperant la configuració

// SENSE AIX THE AP NO SEMBLA FUNCIONAR CORRECTAMENT AMB SDK 1.5, actualitzeu-lo com a mínim a 1.5.1 //WiFi.mode(WIFI_STA);

if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("no s'ha pogut connectar i ha passat el temps d'espera"); retard (3000); // restableix i torna-ho a provar, o potser posa-ho a dormir profundament ESP.reset (); retard (5000); }}

//Serial.println("Button status False. Back to Main loop "); //display.print("Bucle principal "); //display.clear ();

}

El segon serà el nostre programa principal per obtenir resposta HTTP d'un servidor concret i mostrar la quantitat d'entrada a la pantalla.

Per a això primer hem d'obtenir els nostres detalls de línia i canvi des de l'emmagatzematge Flash d'ESP (adreça 0-> línia, 50-> canvi)

EEPROM.begin (100); // eeprom storageEEPROM.get (0, line); // obtenir valor de l'adreça 0

EEPROM.get (50, torn); // Obtingueu valor de l'adreça 50

llavors hem de passar aquesta línia i canviar els detalls al nostre servidor http mitjançant el mètode get per obtenir el valor d'entrada i sortida.

String Base_url = "eliminat"; // my urlHTTPClient base http; // Objecte de la classe

URL de cadena = Base_url + "?" + "Line =" + line + "& shift =" + shift;

Serial.println (URL);

http.begin (URL);

int httpCode = http. GET ();

Serial.println (http.getString ()); // això imprimirà tota la cadena de resposta

si voleu saber com es completa tot el text, aquí el vostre treball ja el podem mostrar directament a la pantalla tm1637.

display.print (http.getString ());

Però no vull mostrar tot el text, perquè conté entrada, sortida en format json i algun altre text general sobre la seva base de dades i etc.

primer he eliminat aquest text general de la cadena de resposta mitjançant la funció Substring ().

Vaig comptar la longitud del text general i el vaig retallar.

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

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

String json_string = http.getString (). Substring (121); / * aquest és el meu desplaçament de text general si la vostra resposta no té cap cosa semblant que pugueu eliminar aquest codi; * /

//Serial.println(json_string);

DeserializationError error = deserializeJson (root, json_string);

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

si (error)

{Serial.print (F ("deserializeJson () ha fallat:"));

Serial.println (error.c_str ());

tornar;

}

més {

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

const char * sortida = arrel ["sortida"];

Serial.print ("Entrada:");

Serial.println (entrada);

Serial.print ("Sortida:");

Serial.println (sortida);

display.print (".. a..");

display.clear (); // neteja la pantalla

display.print (entrada); // imprimir COMPTANT ALGUNS DIGITS

}

això és el nostre programa principal està acabat.

Pas 5: creació del servidor web

Creació de servidor web
Creació de servidor web
Creació de servidor web
Creació de servidor web

Estic fent servir xampp com a servei web i codi PHP per obtenir dades de la meva base de dades SQL per obtenir la quantitat exacta.

Però no puc compartir-ne tots els codis originals. perquè és confidencialitat de la meva empresa. però mostraré la manera de crear un servidor web, mostraré la quantitat d’entrada i sortida estàtica estàtica.

Per a això, haureu de necessitar qualsevol allotjament web, aquí estic fent servir xampp com a amfitrió.

podeu descarregar xampp aquí.

instal·leu xampp … si necessiteu instruccions clares, podeu utilitzar aquest enllaç.

Després d’instal·lar xampp, heu d’anar al directori arrel.

C: / xampp / htdocs

tots els vostres programes php haurien d'estar dins d'aquesta arrel.

Vaig crear la meva pàgina amb el nom anomenat esp_api.php

aquest és el meu codi PHP. aquí només mostro valors estàtics d'entrada i sortida;

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

echo ("la meva cadena"); // Text general

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

eco $ myJSON;

Ara la nostra API de resposta HTTP ha finalitzat.

La nostra URL base http serà com

you_ip_address / esp_api.php

podeu consultar el text de resposta de l'API abans

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

aquí he esmentat la línia com a0401 i canvia com a dd.

Pas 6: Pas final !

Pas Final !!!
Pas Final !!!
Pas Final !!!
Pas Final !!!
Pas final !!!
Pas final !!!

Introduïu l'adreça IP de l'ordinador a l'URL base

String Base_url = "eliminat"; // la vostra URL base

i Carrega al teu nodemcu ESP. Un cop hàgiu acabat d'activar el wifi des del mòbil o l'ordinador portàtil, obtindreu la xarxa anomenada AutoConnectAP. connecteu-hi i introduïu les vostres credencials i configuracions de línia.

A continuació, reinicieu el dispositiu i comproveu que la vostra xarxa estigui connectada un cop s'hagi connectat i que tot estigui fet.

Podeu veure que l'entrada es mostra a la pantalla.

si voleu canviar qualsevol credencial de línia o wifi, podeu prémer l'interruptor durant uns segons, la pantalla mostra confi.

heu entrat al mode demandAP. Podeu canviar i restablir el dispositiu.

La seva moto principal és instructiva per mostrar-vos com podem utilitzar els nostres projectes de passatemps i diversió a l'àrea de producció i fabricació reals i mostrar

Recomanat: