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

Envía los datos del sensor de un Arduino a otro usando Firebase

Componentes y suministros

Arduino UNO
× 2
Espressif ESP8266 ESP-01
× 2
Sensor de temperatura y humedad DHT11 (3 pines)
× 1
Módulo de pantalla LCD Arduino DFRobot I2C 16x2
× 1
Breadboard (genérico)
× 2
Cables de puente macho / hembra
× 1

Aplicaciones y servicios en línea

Arduino IDE
Google Firebase

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

  1. Transmisión de datos del sensor desde una placa ppDAQC Pi utilizando InitialState
  2. Adquisición de datos en tiempo real del panel solar usando Arduino
  3. Sistema de robótica de detección humana con Arduino Uno
  4. DIY Sensor infrarrojo de latidos del corazón con Arduino
  5. Sonda usando arduino y visualización en procesamiento IDE
  6. Control del brillo del LED usando Bolt y Arduino
  7. Uso del sensor de pulso portátil MAX30100 con Arduino
  8. Uso del sensor de humedad del suelo YL-39 + YL-69 con Arduino
  9. Cómo crear un sitio web comunicando Arduino usando PHP
  10. Convertir la aceleración en ángulo desde el sensor MPU6050 I2C
  11. De un CMMS a otro:Directrices para la migración de datos de software