Tabla de contenido:
- Paso 1: Piezas y herramientas utilizadas:
- Paso 2: Personalización de Wifi Manager
- Paso 3: funciones personalizadas para la acción del formulario
- Paso 4: Conexiones y programa principal
- Paso 5: creación del servidor web
- Paso 6: Paso final !
Video: Pantalla WIFI para la gestión de la producción: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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 de hardware utilizadas:
- ESP nodemcu
- Pantalla de reloj de 4 dígitos TM1637
- Pulsador
- Resistencia de 10k
- pocos cables de puente
Herramientas de software utilizadas:
- IDE de Arduino
- 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
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
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
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
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 !
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:
Cambio automático de Shelly EM basado en la producción de paneles solares: 6 pasos
Cambio automático Shelly EM basado en la producción de paneles solares: P1: consumo de la casa (por ejemplo, "P1 = 1kW" ⇒ estamos consumiendo 1kW) P2: producción de paneles solares (por ejemplo, "P2 = - 4kW" ⇒ estamos produciendo 4kW) calentador consume 2kW cuando se enciende. Queremos encenderlo si el panel solar producti
Producción de Light Cube: 7 pasos
Producción de cubo de luz: 1.El principio básico del cubo de luz ¡Utilizando el efecto de persistencia del ojo humano y usando una computadora de un solo chip para controlar la lámpara LED para que parpadee rápidamente, se muestra un patrón completo
Cómo hacer una pista electrónica Bumpin ': Introducción a la producción musical para FL Studio: 6 pasos
Cómo hacer una pista electrónica Bumpin ': Introducción a la producción musical para FL Studio: ¡Bienvenido! Esta guía Instructable ayudará a los productores de música principiantes a intermedios en el uso de FL Studio para crear varios géneros de música electrónica de baile. Repasará los elementos básicos de la creación de una canción, con el objetivo de detallar consejos básicos
Pantalla LCD I2C / IIC - Use una pantalla LCD SPI para la pantalla LCD I2C usando el módulo SPI a IIC con Arduino: 5 pasos
Pantalla LCD I2C / IIC | Use una pantalla LCD SPI para la pantalla LCD I2C usando el módulo SPI a IIC con Arduino: Hola a todos, ya que una pantalla LCD SPI 1602 normal tiene demasiados cables para conectar, por lo que es muy difícil conectarlo con arduino, pero hay un módulo disponible en el mercado que puede Convierta la pantalla SPI en la pantalla IIC, por lo que solo necesita conectar 4 cables
Pantalla LCD I2C / IIC - Convierta una pantalla LCD SPI en una pantalla LCD I2C: 5 pasos
Pantalla LCD I2C / IIC | Convierta una pantalla LCD SPI en la pantalla LCD I2C: el uso de la pantalla lcd spi necesita demasiadas conexiones, lo cual es realmente difícil de hacer, así que encontré un módulo que puede convertir la pantalla lcd i2c en la pantalla lcd spi, así que comencemos