Paso 8: Comunicación Serial entre Arduino y ESP-12
Ya tenemos la Aruino y ESP-12 comunicación (los datos que ves en el terminal están la retransmisión de la Arduino). Ahora queremos el Arduino para realizar alguna acción después de recibir instrucciones predefinidas de la ESP-12.
Transferencia de datos de la ESP8266 para el Arduino
Lo primero que queremos es pasar algunos enteros de 2 bytes de la ESP-12 a Arduino. Demuestro con enteros de 2 bytes, pero puede ser enteros largos de 4 bytes o incluso flotadores de 4 bytes, el procedimiento es el mismo.
Inicio Byte, | Byte 0, | ..., | N-1 bytes |
---|
Primero enviamos un byte de inicio, entonces enviamos N bytes de datos. N está previamente definido. Cuando Arduino recibe el byte de inicio deja de imprimir los datos al puerto serie y en su lugar pone el byte recibido dentro de un búfer. Después de eso, agrupa los datos: cada 2 bytes son un número entero. Tenga en cuenta que el byte de inicio no debe ser un byte para imprimir, porque entonces el modo de recepción puede ser invocado accidentalmente. Para que sea mejor para datos confiables, puede Agregar un campo de suma de comprobación sobre los datos. Definí los siguientes comandos:
Nombre de comando | Código |
---|---|
FETCH_DATA_COMMAND | 0 x 80 |
PRINT_DATA_COMMAND | 0x81 |
PRINT_DATA_LCD | 0x82 |
Cuando se recibe el código 0 x 80, el ESP8266 envía los siguientes datos:
UART.Write(0,bit.arshift(bit.Band(x,0xFF00),8), bit.band(x,0x00ff))
El Arduino pone los dos octetos juntos otra vez:
get_x = (data_arr [0] << 8) + data_arr [1];
Imprimir los datos de la ESP8266 para el Arduino
Definí el otro comando que imprime directamente los datos de la ESP8266 a la pantalla LCD. Puedo añadir más opciones como seleccionar una fuente o líneas etc. de la impresión. Pero pienso que el Arduino va a hacer la mayor parte del trabajo de impresión y el ESP8266 se llenará solamente en números y el texto de internet.