Tabla de contenido:

Pantalla WIFI para la gestión de la producción: 6 pasos
Pantalla WIFI para la gestión de la producción: 6 pasos

Video: Pantalla WIFI para la gestión de la producción: 6 pasos

Video: Pantalla WIFI para la gestión de la producción: 6 pasos
Video: Sobre aviso NO hay ENGAÑ0!!! #shorts 2024, Diciembre
Anonim
Pantalla WIFI para la gestión de la producción
Pantalla WIFI para la gestión de la producción

Soy un poco de serie sobre IOT y computadoras de placa única.

Siempre deseo usarlo más allá de Hobby & Fun Projects (Producción y Fabricación reales).

Este Instructable está a punto de crear una pantalla WIFI de 7 segmentos de 4 dígitos con ESP nodemcu para mostrar la entrada de producción por hora. Trabajo en la industria de fabricación de productos electrónicos, donde utilizamos el sistema de ejecución de fabricación (MES) para supervisar y controlar la entrada, la salida y el proceso del piso de producción. En este proyecto, estoy creando una pequeña unidad de visualización que mostrará la cantidad de entrada de producción por línea, turno y hora.

Técnicamente, este proyecto es similar a una pantalla de conteo de suscriptores de Youtube, donde usamos la respuesta API / HTTP en línea, pero aquí vamos a crear nuestra propia API para interactuar con nuestro sistema MES local para obtener la cantidad de entrada.

Paso 1: Piezas y herramientas utilizadas:

Piezas y herramientas utilizadas
Piezas y herramientas utilizadas

Piezas de hardware utilizadas:

  1. ESP nodemcu
  2. Pantalla de reloj de 4 dígitos TM1637
  3. Pulsador
  4. Resistencia de 10k
  5. pocos cables de puente

Herramientas de software utilizadas:

  1. IDE de Arduino
  2. Xampp para servidor web PHP / Apache

Usado de la biblioteca Arduino:

1. Administrador de wifi de tzapu & i Personalizado para mis archivos personalizados (wifimanager)

2. ESP_EEPROM para almacenar mis valores personalizados en la memoria Flash

3. SevenSegmentTM1637 para pantalla

Paso 2: Personalización de Wifi Manager

Personalización de Wifi Manager
Personalización de Wifi Manager

En este Primero, instalé el administrador de wifi primero y luego copié la carpeta del administrador de Wifi y la pasé de nuevo a la misma en la carpeta de la biblioteca de Arduino, luego lo renombré como WiFiManager_custom.

Carpeta Directorio raíz Más como

C: / Usuarios / el nombre de su computadora / Documentos / Arduino / bibliotecas

Luego abrí la carpeta wifimanager_custom y renombré el archivo.cpp del encabezado como el mismo que el de wifimanager_custom, agregué lo mismo en los archivos del encabezado y.cpp también.

Y agregué mi formulario y botón personalizados en el encabezado.

en HTTP_PORTAL_OPTIONS PROGMEM agregué mi formulario de botón para Menú.

y se agregó un nuevo formulario para ingresar línea y turno. Creé este formulario como un formulario de texto simple.

Luego de esto vamos a crear funciones de acción para estos formularios en el archivo.cpp, para eso tenemos que hacer la declaración de la función en el archivo de encabezado.

/ * mis funciones personalizadas * /

void handleCustomForm (); void handleCustomSave ();

Declaro mis funciones personalizadas en el archivo de encabezado. que, nuestro trabajo en el encabezado está terminado, tenemos que ir con el archivo.cpp para crear nuestra función y acciones.

Paso 3: funciones personalizadas para la acción del formulario

Funciones personalizadas para acciones de formulario
Funciones personalizadas para acciones de formulario
Funciones personalizadas para acciones de formulario
Funciones personalizadas para acciones de formulario
Funciones personalizadas para acciones de formulario
Funciones personalizadas para acciones de formulario

Ahora abrimos nuestro archivo wifimanager_custom.cpp.

y tenemos que agregar nuestro controlador de respuesta http para llamar a nuestras funciones cuando se publique nuestro formulario.

servidor-> en (String (F ("/ custom_config")), std:: bind (& WiFiManager:: handleCustomForm, this)); // MI mango personalizado

servidor-> en (String (F ("/ custom_save")), std:: bind (& WiFiManager:: handleCustomSave, this)); // MI mango personalizado

estos llamarán a nuestras funciones personalizadas cuando se publique el formulario.

1.handleCustomForm () -> creará una página con nuestro formulario personalizado para la entrada de línea y desplazamiento y el botón de guardar.

2.handleCustomSave () -> esta función obtendrá los valores del formulario y los almacenará en las ubicaciones de memoria Flash 0 (línea) y 50 (desplazamiento).

Paso 4: Conexiones y programa principal

Conexiones y programa principal
Conexiones y programa principal

Las conexiones son muy sencillas.

Conexiones y cableado:

Pantalla nodemcu TM1637

3,3 V ---- Vcc

G ---- Tierra

D2 ---- CLK

D3 ----- DIO

nodemcu- interruptor de empuje

- pulsador conectado al pin D8 desde + 5V - Resistencia de 10K conectado al pin D8 desde tierra

Terminamos de personalizar nuestro wifimanager. ahora tenemos que crear nuestro programa principal.

1. nuestro administrador wifi se conectará con la red wifi con las últimas credenciales utilizadas para conectarse, si falla, abre un servidor wifi AutoConnectAP. Podemos configurar nuevos cridentials wifi, line & shift conectándonos a este servidor wifi.

2. luego entrará en el bucle principal.

Nuestro bucle principal contendrá dos partes. uno es confi subrutina cuando necesitamos cambiar de línea, cambiar o agregar cualquier credencial wifi para llamar al modo de demanda AP para configurar. esto se llamará cuando se presione un botón conectado al pin D8.

bucle vacío () {

config_loop ();

}

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

Serial.println ("Esperando el estado del botón de configuración …");

//display.print("Wait ");

if (digitalRead (TRIGGER_PIN) == HIGH)

{

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

// Inicialización local. Una vez que su negocio está hecho, no hay necesidad de mantenerlo cerca de WiFiManager wifiManager;

// restablecer la configuración - para probar

//wifiManager.resetSettings ();

// establece el tiempo de espera hasta que el portal de configuración se apaga // útil para que todo vuelva a intentarlo o se vaya a dormir // en segundos

//wifiManager.setTimeout(120);

// inicia un punto de acceso con el nombre especificado

// aquí "AutoConnectAP" // y entra en un bucle de bloqueo en espera de configuración

// SIN ESTO, EL AP NO PARECE FUNCIONAR CORRECTAMENTE CON SDK 1.5, actualice a al menos 1.5.1 //WiFi.mode(WIFI_STA);

if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("no se pudo conectar y se agotó el tiempo de espera"); retraso (3000); // reiniciar y volver a intentarlo, o quizás ponerlo en reposo ESP.reset (); retraso (5000); }}

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

}

El segundo será nuestro programa principal para obtener la respuesta HTTP de un servidor en particular y mostrar la cantidad de entrada en la pantalla.

Para esto, primero tenemos que obtener nuestra línea y detalles de cambio del almacenamiento Flash de ESP (dirección 0-> línea, 50-> cambio)

EEPROM.begin (100); // almacenamiento eepromEEPROM.get (0, línea); // obtener valor de la dirección 0

EEPROM.get (50, turno); // Obtener valor de la dirección 50

luego tenemos que pasar esta línea y cambiar los detalles a nuestro servidor http mediante el método get para obtener el valor de entrada y salida.

String Base_url = "eliminado"; // mi URL baseHTTPClient http; // Objeto de clase

Cadena URL = Base_url + "?" + "Línea =" + línea + "& shift =" + shift;

Serial.println (URL);

http.begin (URL);

int httpCode = http. GET ();

Serial.println (http.getString ()); // esto imprimirá toda la cadena de respuesta

Si desea ver cómo está todo el texto, entonces su trabajo está terminado aquí, podemos mostrarlo directamente en la pantalla tm1637.

display.print (http.getString ());

Pero no quiero mostrar todo el texto, porque contiene entrada, salida en forma json y algún otro texto general sobre su base de datos y etcs.

así que primero eliminé ese texto general de la cadena de respuesta usando la función Substring ().

Conté la longitud del texto general y lo recorté.

if (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); Raíz de DynamicJsonDocument (bufferSize);

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

Cadena json_string = http.getString (). Substring (121); / * este es mi desplazamiento de texto general si su respuesta no tiene nada como eso, puede eliminar este código; * /

//Serial.println(json_string);

DeserializationError error = deserializeJson (root, json_string);

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

si (error)

{Serial.print (F ("deserializeJson () falló:"));

Serial.println (error.c_str ());

regreso;

}

demás{

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

const char * salida = raíz ["salida"];

Serial.print ("Entrada:");

Serial.println (entrada);

Serial.print ("Salida:");

Serial.println (salida);

display.print (".. en..");

display.clear (); // limpiar la pantalla

display.print (input); // print CONTANDO ALGUNOS DIGITOS

}

eso es lo que nuestro programa principal está terminado.

Paso 5: creación del servidor web

Creando servidor web
Creando servidor web
Creando servidor web
Creando servidor web

Estoy usando xampp como mi servidor web y código PHP para obtener datos de mi base de datos SQL para obtener la cantidad exacta.

Pero no puedo compartir todos los códigos originales. porque es la confidencialidad de mi empresa. pero mostraré cómo crear un servidor web, mostraré la cantidad de entrada y salida estática ficticia.

Para esto, debe necesitar cualquier servidor web, estoy usando aquí xampp como mi servidor.

puede descargar xampp aquí.

instale xampp … si necesita instrucciones claras, puede usar este enlace.

Después de instalar xampp, debe ir a su directorio raíz.

C: / xampp / htdocs

todos sus programas php deben estar dentro de esta raíz.

Creé mi página con el nombre llamado esp_api.php

este es mi código php. aquí solo estoy mostrando valores estáticos de entrada y salida;

$ línea = $ _ GET ['línea']; $ turno = $ _ GET ['turno'];

echo ("myString"); // texto general

if ($ línea == 'a0401' y $ shift = 'dd') {$ resultado ['entrada'] = 100; $ resultado ['salida'] = 99; }

else {$ resultado ['entrada'] = 200; $ resultado ['salida'] = 199; }

$ myObj-> input = ''. $ result ['input']. '';

$ myObj-> salida = ''. $ resultado ['salida']. '';

$ myJSON = json_encode ($ myObj);

echo $ myJSON;

Ahora nuestra API de respuesta HTTP está terminada.

Nuestra URL base http será como

tu_ip_address / esp_api.php

puede consultar el texto de respuesta de su API por

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

aquí mencioné la línea como a0401 y el cambio como dd.

Paso 6: Paso final !

¡¡¡Último paso!!!
¡¡¡Último paso!!!
¡¡¡Último paso!!!
¡¡¡Último paso!!!
¡¡¡Último paso!!!
¡¡¡Último paso!!!

Ingrese la dirección IP de su computadora en la URL base

String Base_url = "eliminado"; // tu URL base

y cárguelo en su ESP nodemcu. Una vez que haya terminado, simplemente encienda su wifi desde su teléfono móvil o computadora portátil, obtendrá una red llamada AutoConnectAP. conéctese con él e ingrese su credencial y configuraciones de línea.

Luego reinicie su dispositivo y verifique que su red esté conectada una vez que esté conectada, luego todo está hecho.

Puede ver que la entrada se muestra en la pantalla.

Si desea cambiar cualquier credencial de línea o wifi, puede presionar el interruptor durante unos segundos, la pantalla muestra confi.

ingresó al modo demandAP. Puede cambiar y restablecer el dispositivo.

El lema principal de este instructivo para mostrarle cómo podemos usar nuestros proyectos de pasatiempos y diversión en el área real de producción y fabricación y mostrar

Recomendado: