Envía los datos del sensor de un Arduino a otro usando Firebase
Componentes y suministros
![]() |
| × | 2 | |||
![]() |
| × | 2 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 2 | |||
![]() |
| × | 1 |
Aplicaciones y servicios en línea
![]() |
| |||
![]() |
|
Acerca de este proyecto
RESUMEN:
En este genial proyecto de IoT, lee datos de un sensor de humedad y temperatura conectado a un Arduino UNO. Envíe estos datos a Firebase usando un módulo esp8266 y luego descargue los datos en otro Arduino UNO usando un esp8266, para finalmente mostrarlos en una pantalla LCD.
PASO 1:Comprenda cómo funcionan juntos Arduino UNO y ESP8266.
Tenga en cuenta que funcionan como dos placas diferentes y tienen códigos diferentes. Utiliza el Arduino UNO para comunicarse con el ESP8266. Comprenda que no está conectando el Arduino a Internet, sino que está conectando el ESP8266 a Internet. Posteriormente, puede enviar datos entre las dos placas a través del terminal en serie.
PASO 2:Conecte un Arduino a la pantalla LCD
Para esta parte, puede usar la comunicación I2C como lo hicimos nosotros o la comunicación normal. I2C siempre es mejor. Pruebe el código de ejemplo que presentan allí.
TENGA EN CUENTA QUE USAMOS UNA LCD 20x4. CAMBIE EL CÓDIGO SI ES NECESARIO.
PASO 3:Conecte el otro Arduino al sensor DHT11
Puede seguir este tutorial para que funcione. Recuerde probar el código de la plantilla.
PASO 4:Conecte ESP8266 a Firebase para enviar y recibir datos
En este tutorial, explican muy bien cómo configurarlo.
Siga este video paso a paso. Conectan un NodeMCU al ESP8266 pero puedes usar las mismas conexiones al Arduino UNO.
En cuanto al consejo, le sugiero que cree una hoja de Google o sobresalga con los colores que está usando para el ESP8266 para que no se confunda.
VAYA A LA PARTE DE ERRORES AL FINAL SI NO FUNCIONA. TAMBIÉN , CONSULTA LOS COMENTARIOS DEL TUTORIAL.
PASO 5:Comprenda cómo funciona la comunicación en serie.
En este tutorial envían otros datos de sensores a firebase, puedes leerlo para tener una idea de cómo funciona o incluso probarlo.
SÓLO DEBE IMPRIMIR LA CADENA DESEADA EN EL MONITOR SERIE, CUALQUIER OTRA LÍNEA DE IMPRESIÓN INTERRUMPIRÁ LA COMUNICACIÓN.
PASO 6:Cargue el código.
Ahora que sabe cómo cargar y recibir datos, puede cargar el código real en los esp8266 conectados a los Arduinos y los Arduinos. Consulte el paso 4 sobre cómo cargar el código.
LEA EL CÓDIGO ANTES DE SUBIR Y HAGA LOS CAMBIOS NECESARIOS.
ERRORES COMUNES Y CONSEJOS:
SIEMPRE DESCONECTE EL CABLE ARDUINO ANTES DE DESCONECTAR CUALQUIER CABLE.
El código no se carga en ESP8266:
- Seleccione la placa genérica esp8266.
- Si el código aún no se carga y le da un error, haga esto.
- Si aún no funciona, desconéctelo, vuelva a conectarse, intente cargar y luego pruebe la solución anterior nuevamente.
El código no se carga en Arduino UNO:
- Lea atentamente cómo cargar código en Arduino UNO en esta documentación, paso 7.
- Saque GPIO-0 (IO0) de GND y el pin RESET de Arduino Uno del pin de tierra / GND de Uno.
- Quite el pin ESP8266 RX del pin RX de UNO y el pin ESP8266 TX del pin TX de UNO.
- Vuelva a verificar sus pines, seleccione la placa Arduino UNO.
No funciona después de cargar ambos códigos:
- Conecte el pin ESP8266 RX al pin TX de Uno y el pin ESP8266 TX al pin RX de Uno. Sí, tienes que conectarlos de forma opuesta. No me preguntes por qué. Solo hazlo.
- Desconecte el ESP8266 GPIO-0 (IO0) de GND.
- Vuelva a revisar sus pines
- Asegúrese de estar imprimiendo únicamente los valores que desea compartir entre Arduino y ESP8266 en el Monitor serial. Si imprime cosas como "conectado" o cualquier otra cosa, el código no funcionará.
NOTA: Si consigue que funcione y la pantalla LCD imprime algo extraño, debería solucionarlo después de unos segundos con el inicializar función. Esto puede ocurrir debido a retrasos en la comunicación serial.
Código
- lcd_arduino.ino
- lcd_esp8266.ino
- sensor_arduino.ino
- sensor_esp8266.ino
lcd_arduino.ino Arduino
Arduino_LCD_Code#include#include // inicializa la biblioteca asociando cualquier pin de interfaz LCD necesario // con el número de pin de arduino al que está conectado LiquidCrystal_I2C lcd (0x3F, 20, 4); Valores de cadena, sensor_data; void setup () {Serial.begin (9600); retraso (2000); // configura el número de columnas y filas de la pantalla LCD:lcd.begin (20, 4); // Imprime un mensaje en la pantalla LCD. lcd.init (); // inicializa el lcd lcd.backlight (); retraso (2000); lcd.setCursor (0, 0); lcd.print ("Temperatura:"); retraso (10); lcd.setCursor (18, 0); lcd.print ("C"); retraso (10); lcd.setCursor (0, 1); lcd.print ("Humedad:"); retraso (10); lcd.setCursor (15, 1); lcd.print ("%"); delay (2000);} bucle vacío () {bool Sr =falso; while (Serial.available ()) {// obtener los datos del sensor de la puesta en serie en sensor_data sensor_data =Serial.readString (); Sr =verdadero; } retraso (1000); si (Sr ==verdadero) {valores =sensor_data; // obtener los datos de los sensores de la variable de valores dividiéndolos por comas y colocándolos en variables String temperature =values.substring (0, 5); Humedad de cadena =valores.subscadena (6, 11); inicializar(); lcd.setCursor (13, 0); retraso (10); lcd.print (temperatura); // establece el cursor para imprimir el retardo de temperatura (10); lcd.setCursor (10, 1); retraso (10); lcd.print (humedad); } delay (2000);} void initialize () {lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Temperatura:"); retraso (10); lcd.setCursor (18, 0); lcd.print ("C"); retraso (10); lcd.setCursor (0, 1); lcd.print ("Humedad:"); retraso (10); lcd.setCursor (15, 1); lcd.print ("%");}
lcd_esp8266.ino Arduino
ESP8266_LCD_Code#include#include #define FIREBASE_HOST "YOUR_FIREBASE_LINK" #define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN" #defineSORD "WIFI_WIFI" Serial.begin (9600); // conectarse a wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! =WL_CONNECTED) {retraso (500); } Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);} void loop () {String temperature =Firebase.getString ("temperatura"); Cadena de humedad =Firebase.getString ("humedad"); temperatura =temperatura. subcadena (0, 5); humedad =humedad. subcadena (0, 5); valores =(temperatura + humedad); retraso (10); // siempre vaciar antes de imprimir Serial.flush (); retraso (1000); Serial.print (valores); retraso (1000);}
sensor_arduino.ino Arduino
Arduino_Sensor_Code#include#include #define dht_apin A0dht DHT; Valores de cadena; void setup () {Serial.begin (9600); retraso (5000); // Retraso para permitir que el sistema arranque} void loop () {DHT.read11 (dht_apin); valores =(Cadena (DHT.temperatura) + ',' + Cadena (DHT.humedad)); retraso (10); Serial.flush (); retraso (1000); // envió los datos de los sensores a serie (envió los datos de los sensores a ESP8266) Serial.print (valores); retraso (2000);}
sensor_esp8266.ino Arduino
Sensor_ESP8266_Code#include#include #define FIREBASE_HOST "YOUR_FIREBASE_LINK" #define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN" #define_WORD_WIFI_configuración ) {retraso (1000); // conectarse a wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! =WL_CONNECTED) {retraso (500); } Serial.begin (9600); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);} void loop () {bool Sr =false; while (Serial.available ()) {// obtener los datos del sensor de la puesta en serie en sensor_data sensor_data =Serial.readString (); Sr =verdadero; } retraso (1000); si (Sr ==verdadero) {valores =sensor_data; // obtener índices de coma de valores variable int fristCommaIndex =values.indexOf (','); int secondCommaIndex =values.indexOf (',', fristCommaIndex + 1); // obtener los datos de los sensores de la variable de valores dividiéndolos por comas y ponerlos en las variables String temperature =values.substring (0, fristCommaIndex); Humedad de cadena =valores.substring (fristCommaIndex + 1, secondCommaIndex); // almacena los datos del sensor ultrasónico como una cadena en firebase Firebase.setString ("temperatura", temperatura); retraso (10); // almacena los datos del sensor IR 1 como una cadena en firebase Firebase.setString ("humedad", humedad); retraso (10); // almacena los datos de los sensores anteriores como una cadena en firebase delay (1000); if (Firebase.failed ()) {return; }}}
Proceso de manufactura
- Transmisión de datos del sensor desde una placa ppDAQC Pi utilizando InitialState
- Adquisición de datos en tiempo real del panel solar usando Arduino
- Sistema de robótica de detección humana con Arduino Uno
- DIY Sensor infrarrojo de latidos del corazón con Arduino
- Sonda usando arduino y visualización en procesamiento IDE
- Control del brillo del LED usando Bolt y Arduino
- Uso del sensor de pulso portátil MAX30100 con Arduino
- Uso del sensor de humedad del suelo YL-39 + YL-69 con Arduino
- Cómo crear un sitio web comunicando Arduino usando PHP
- Convertir la aceleración en ángulo desde el sensor MPU6050 I2C
- De un CMMS a otro:Directrices para la migración de datos de software