Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Transferir datos de temperatura y humedad entre dos Arduinos usando Firebase

Componentes y suministros

Arduino UNO×2
ESP8266 ESP-01×2
Sensor DHT11 Temperatura y Humedad (3 pines)×1
Pantalla LCD I2C 16x2 DFRobot×1
Protoboard (genérica)×2
Cables jumper Macho/Hembra×1

Aplicaciones y servicios online

Descripción del proyecto

En este tutorial IoT, leerás temperatura y humedad de un sensor DHT11 en un Arduino UNO, enviarás los valores a Firebase mediante un ESP8266, y luego recuperarás esas lecturas en un segundo Arduino UNO para mostrarlas en una pantalla LCD I2C. Este ejemplo práctico demuestra comunicación serie, redes Wi-Fi y almacenamiento de datos en la nube —habilidades esenciales para desarrolladores embebidos modernos.

Paso 1 – Entender el rol de cada placa

El UNO actúa como interfaz del sensor mientras el ESP8266 funciona como pasarela Wi-Fi. Se comunican por puerto serie; el ESP8266 nunca se conecta directamente a internet, solo el módulo Wi-Fi lo hace. Mantén el código separado para cada placa para evitar confusiones.

Paso 2 – Conectar el LCD al UNO

Usa I2C por simplicidad y menor uso de pines. El ejemplo de LCD 20x4 del módulo DFRobot funciona directamente. Si usas un display 20x4, actualiza el constructor a LiquidCrystal_I2C lcd(0x3F, 20, 4);.

Paso 3 – Cablear el DHT11 al segundo UNO

Sigue el tutorial oficial DHT11 de Arduino para cableado e instalación de librería. El sensor requiere solo un pin de datos (A0 en nuestro ejemplo).

Paso 4 – Configurar el ESP8266 con Firebase

Configura credenciales Wi-Fi y detalles del proyecto Firebase en el sketch. La Firebase Realtime Database proporciona un árbol JSON simple donde el ESP8266 escribe nodos temperature y humidity. Para principiantes, el video tutorial cubre cada paso en detalle.

Paso 5 – Dominar la comunicación serie

Al transmitir datos por serie, envía solo la cadena requerida. Cualquier impresión de depuración adicional puede romper el protocolo. En nuestra implementación, el UNO sensor envía una cadena separada por comas (ej. 25.3,60.1) al ESP8266, que la analiza y reenvía cada valor a Firebase.

Paso 6 – Subir y probar

Sube el sketch del sensor al primer UNO, el sketch sensor-ESP8266 al primer ESP8266, y el sketch LCD-ESP8266 al segundo ESP8266. Verifica que el LCD se actualice con lecturas frescas cada pocos segundos. Desconecta siempre el cable USB del Arduino antes de desconectar cables jumper para evitar cortocircuitos accidentales.

Problemas comunes y soluciones

Fragmentos de código

lcd_arduino.ino (Arduino)

#include <LiquidCrystal_I2C.h> 
#include <Wire.h> 
LiquidCrystal_I2C lcd(0x3F, 20, 4); 
String sensorData; 

void setup() { 
  Serial.begin(9600); 
  lcd.begin(20, 4); 
  lcd.init(); 
  lcd.backlight(); 
  lcd.setCursor(0, 0); 
  lcd.print("Temperature: "); 
  lcd.setCursor(18, 0); 
  lcd.print("C"); 
  lcd.setCursor(0, 1); 
  lcd.print("Humidity: "); 
  lcd.setCursor(15, 1); 
  lcd.print("%"); 
} 

void loop() { 
  if (Serial.available()) { 
    sensorData = Serial.readString(); 
    String temp = sensorData.substring(0, sensorData.indexOf(',')); 
    String hum = sensorData.substring(sensorData.indexOf(',') + 1); 
    lcd.clear(); 
    lcd.setCursor(13, 0); 
    lcd.print(temp); 
    lcd.setCursor(10, 1); 
    lcd.print(hum); 
  } 
  delay(2000); 
}

lcd_esp8266.ino (ESP8266)

#include <ESP8266WiFi.h> 
#include <FirebaseArduino.h> 
#define FIREBASE_HOST "TU_ENLACE_FIREBASE" 
#define FIREBASE_AUTH "TU_TOKEN_FIREBASE" 
#define WIFI_SSID "TU_WIFI_SSID" 
#define WIFI_PASSWORD "TU_WIFI_PASSWORD" 

void setup() { 
  Serial.begin(9600); 
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD); 
  while (WiFi.status() != WL_CONNECTED) delay(500); 
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); 
} 

void loop() { 
  String temp = Firebase.getString("temperature"); 
  String hum = Firebase.getString("humidity"); 
  Serial.flush(); 
  Serial.print(temp + "," + hum); 
  delay(2000); 
}

sensor_arduino.ino (Arduino)

#include <SoftwareSerial.h> 
#include <dht.h> 
#define DHT_PIN A0 
DHT dht; 

void setup() { 
  Serial.begin(9600); 
} 

void loop() { 
  dht.read11(DHT_PIN); 
  String data = String(dht.temperature) + "," + String(dht.humidity); 
  Serial.flush(); 
  Serial.print(data); 
  delay(2000); 
}

sensor_esp8266.ino (ESP8266)

#include <ESP8266WiFi.h> 
#include <FirebaseArduino.h> 
#define FIREBASE_HOST "TU_ENLACE_FIREBASE" 
#define FIREBASE_AUTH "TU_TOKEN_FIREBASE" 
#define WIFI_SSID "TU_WIFI_SSID" 
#define WIFI_PASSWORD "TU_WIFI_PASSWORD" 

void setup() { 
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD); 
  while (WiFi.status() != WL_CONNECTED) delay(500); 
  Serial.begin(9600); 
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); 
} 

void loop() { 
  if (Serial.available()) { 
    String payload = Serial.readString(); 
    int comma = payload.indexOf(','); 
    String temp = payload.substring(0, comma); 
    String hum = payload.substring(comma + 1); 
    Firebase.setString("temperature", temp); 
    Firebase.setString("humidity", hum); 
    if (Firebase.failed()) { 
      Serial.println("Failed to write to Firebase"); 
    } 
  } 
  delay(2000); 
}

Proceso de manufactura

  1. Transmisión de Datos de Temperatura en Tiempo Real desde ppDAQC Pi‑Plate a InitialState con Raspberry Pi Headless
  2. Monitorización en Tiempo Real de Panel Solar con Arduino: Sistema de Adquisición de Datos de Bajo Coste
  3. Robot de Detección Humana con Arduino Uno: Integración de Sensores Paso a Paso
  4. Construye un Sensor de Ritmo Cardíaco por Infrarrojos Fiable con Arduino: Guía Paso a Paso
  5. Medición de Distancia en Tiempo Real con Sonar Arduino y Visualización en Processing
  6. Control de brillo LED sin interrupciones con Bolt IoT y Arduino UNO
  7. Integración del Sensor de Pulso MAX30100 con Arduino: Guía Paso a Paso
  8. Guía Paso a Paso: Conectar Sensor de Humedad de Suelo YL-39/YL-69 a Arduino UNO
  9. Crea una Interfaz Web en PHP para Controlar tu Arduino Uno
  10. Cálculo de ángulos de inclinación con MPU6050 y Arduino Nano usando Visuino
  11. Migración CMMS Sin Problemas: Guías Expertas para Transferencia de Datos