Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Envoyer des données de capteur d'un Arduino à un autre à l'aide de Firebase

Composants et fournitures

Arduino UNO
× 2
Espressif ESP8266 ESP-01
× 2
Capteur de température et d'humidité DHT11 (3 broches)
× 1
Module d'affichage LCD Arduino DFRobot I2C 16x2
× 1
Planche à pain (générique)
× 2
Câbles de raccordement mâle/femelle
× 1

Applications et services en ligne

Arduino IDE
Google Firebase

À propos de ce projet

APERÇU :

Dans ce projet IoT sympa, vous lisez les données d'un capteur d'humidité et de température connecté à un Arduino UNO. Envoyez ces données à Firebase à l'aide d'un module esp8266, puis téléchargez les données dans un autre Arduino UNO à l'aide d'un esp8266, pour enfin les afficher sur un écran LCD.

ÉTAPE 1 : comprendre comment Arduino UNO et ESP8266 fonctionnent ensemble.

Notez qu'ils fonctionnent comme deux cartes différentes et ont des codes différents. Vous utilisez l'Arduino UNO pour communiquer avec l'ESP8266. Comprenez que vous ne connectez pas l'Arduino à Internet, vous connectez l'ESP8266 à Internet. Vous pourrez ensuite envoyer des données entre les deux cartes via le terminal série.

ÉTAPE 2 : Connectez un Arduino à l'écran LCD

Pour cette partie, vous pouvez utiliser soit la communication I2C comme nous l'avons fait, soit la communication normale. I2C est toujours mieux. Essayez l'exemple de code qu'ils présentent.

REMARQUE QUE NOUS AVONS UTILISÉ UN ACL 20x4. MODIFIER LE CODE SI NÉCESSAIRE.

ÉTAPE 3 :Connectez l'autre Arduino au capteur DHT11

Vous pouvez suivre ce tutoriel pour le faire fonctionner. N'oubliez pas d'essayer le code du modèle.

ÉTAPE 4 :Connectez ESP8266 à Firebase pour envoyer et recevoir des données

Dans ce tutoriel, ils expliquent très bien comment le configurer.

Suivez cette vidéo étape par étape. Ils connectent un NodeMCU à l'ESP8266 mais vous pouvez utiliser les mêmes connexions à l'Arduino UNO.

En ce qui concerne les conseils, je vous suggère de créer une feuille google ou excel avec les couleurs que vous utilisez pour l'ESP8266 afin de ne pas vous tromper.

ALLEZ À LA PARTIE ERREUR À LA FIN SI ÇA NE FONCTIONNE PAS. AUSSI , VÉRIFIEZ LES COMMENTAIRES SUR LE TUTORIEL.

ÉTAPE 5 : comprendre le fonctionnement de la communication série.

Dans ce tutoriel, ils envoient d'autres données de capteurs à firebase, vous pouvez les lire pour avoir une idée de son fonctionnement ou même l'essayer.

VOUS DEVRIEZ IMPRIMER UNIQUEMENT LA CHAINE SOUHAITEE SUR LE MONITEUR SERIE, TOUTE AUTRE LIGNE D'IMPRESSION INTERROMPRA LA COMMUNICATION.

ÉTAPE 6 :Téléchargez le code.

Maintenant que vous savez comment télécharger et recevoir des données, vous pouvez télécharger le code réel sur les esp8266 connectés aux Arduinos et aux Arduinos. Reportez-vous à l'étape 4 pour savoir comment télécharger le code.

LIRE LE CODE AVANT DE TÉLÉCHARGER ET APPORTER LES MODIFICATIONS NÉCESSAIRES.

ERREURS COURANTES ET CONSEILS :

TOUJOURS DÉBRANCHER LE CÂBLE ARDUINO AVANT DE DÉBRANCHER TOUT FIL.

Le code ne se télécharge pas sur ESP8266 :

  • Sélectionnez la carte générique esp8266.
  • Si le code ne se télécharge toujours pas et vous donne une erreur, faites-le.
  • Si cela ne fonctionne toujours pas, débranchez, reconnectez, essayez de télécharger, puis réessayez la solution précédente.

Le code ne se télécharge pas sur Arduino UNO :

  • Lisez attentivement comment télécharger du code sur Arduino UNO dans cette documentation, étape 7.
  • Sortez le GPIO-0 (IO0) de GND et la broche de réinitialisation d'Arduino Uno de la broche de masse/GND d'Uno.
  • Retirez la broche RX ESP8266 de la broche RX de UNO et la broche TX ESP8266 de la broche TX de UNO.
  • Vérifiez à nouveau vos broches, sélectionnez la carte Arduino UNO.

Ne fonctionne pas après l'importation des deux codes :

  • Connectez la broche RX ESP8266 à la broche TX d'Uno et la broche TX ESP8266 à la broche RX d'Uno. Oui, vous devez les connecter en sens inverse. Ne me demandez pas pourquoi. Faites-le.
  • Déconnectez l'ESP8266 GPIO-0 (IO0) de GND.
  • Vérifiez à nouveau vos épingles
  • Assurez-vous que vous imprimez uniquement les valeurs que vous souhaitez partager entre l'Arduino et l'ESP8266 dans le moniteur série. Si vous imprimez des choses comme "connecté" ou toute autre chose, le code ne fonctionnera pas.

REMARQUE : Si vous le faites fonctionner et que l'écran LCD imprime quelque chose d'étrange, cela devrait le réparer après quelques secondes avec le initialiser fonction. Cela peut se produire en raison de retards de communication série.

Code

  • lcd_arduino.ino
  • lcd_esp8266.ino
  • sensor_arduino.ino
  • sensor_esp8266.ino
lcd_arduino.inoArduino
Arduino_LCD_Code
#include #include // initialise la bibliothèque en associant toute broche d'interface LCD nécessaire// avec le numéro de broche arduino auquel elle est connectéeLiquidCrystal_I2C lcd (0x3F, 20, 4); Valeurs de chaîne, sensor_data;void setup() { Serial.begin(9600); retard (2000); // configure le nombre de colonnes et de lignes de l'écran LCD :lcd.begin(20, 4); // Imprime un message sur l'écran LCD. lcd.init(); // initialise l'écran lcd.backlight(); retard (2000); lcd.setCursor(0, 0); lcd.print("Température : " ); retard(10) ; lcd.setCursor(18, 0); lcd.print("C"); retard(10) ; lcd.setCursor(0, 1); lcd.print("Humidité :"); retard(10) ; lcd.setCursor(15, 1); lcd.print("%"); delay(2000);}boucle vide() { bool Sr =false; while (Serial.available()) { // obtenir les données du capteur de la série dans sensor_data sensor_data =Serial.readString(); Sr =vrai ; } délai(1000); if (Sr ==true) { values ​​=sensor_data; // obtenir les données des capteurs à partir de valeurs variables en les séparant par des virgules et en les mettant dans les variables String temperature =values.substring(0, 5); Humidité de la chaîne =values.substring(6, 11); initialiser(); lcd.setCursor(13, 0); retard(10) ; lcd.print(temperature);//définir le curseur pour imprimer le délai de température (10) ; lcd.setCursor (10, 1); retard(10) ; lcd.print(humidité); } delay(2000);}void initialize() { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Température : " ); retard(10) ; lcd.setCursor(18, 0); lcd.print("C"); retard(10) ; lcd.setCursor(0, 1); lcd.print("Humidité :"); retard(10) ; lcd.setCursor(15, 1); lcd.print("%");}
lcd_esp8266.inoArduino
ESP8266_LCD_Code
#include #include #define FIREBASE_HOST "YOUR_FIREBASE_LINK"#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_PASSSSID "YOUR_WIFI_VOI_SSID"#define WIFI_PASSSSID "YOUR_WIFI_SSID"()define Serial.begin(9600); // se connecte au wifi. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() !=WL_CONNECTED) { delay(500); } Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}void loop() { String temperature =Firebase.getString("temperature"); String humidity =Firebase.getString("humidité"); temperature =temperature.substring(0, 5); humidité =humidité.substring(0, 5); valeurs =(température + humidité); retard(10) ; // toujours rincer avant d'imprimer Serial.flush(); retard(1000); Serial.print(valeurs); retard(1000);}
sensor_arduino.inoArduino
Arduino_Sensor_Code
#include #include #define dht_apin A0dht DHT;Valeurs de chaîne;void setup() { Serial.begin(9600); retard (5000); //Délai pour laisser le système démarrer}void loop() { DHT.read11(dht_apin); valeurs =(String(DHT.temperature) + ',' + String(DHT.humidity)); retard(10) ; Serial.flush(); retard(1000); // envoyer les données des capteurs à la série (envoyer les données des capteurs à l'ESP8266) Serial.print(values); retard (2000);}
sensor_esp8266.inoArduino
Sensor_ESP8266_Code
#include #include #define FIREBASE_HOST "YOUR_FIREBASE_LINK"#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_PASSSSID "YOUR_WIFI_SSID_values,String ) { délai(1000); // se connecte au wifi. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() !=WL_CONNECTED) { delay(500); } Serial.begin(9600); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}boucle vide() { bool Sr =false; while (Serial.available()) { // obtenir les données du capteur de la série dans sensor_data sensor_data =Serial.readString(); Sr =vrai ; } délai(1000); if (Sr ==true) { values ​​=sensor_data; // obtenir des index de virgule à partir de la variable de valeurs int fristCommaIndex =values.indexOf(','); int secondCommaIndex =values.indexOf(',', fristCommaIndex + 1); // obtenir les données des capteurs à partir de valeurs variables en les séparant par des virgules et en les mettant dans les variables String temperature =values.substring(0, fristCommaIndex); Humidité de la chaîne =values.substring(fristCommaIndex + 1, secondCommaIndex); //stocker les données du capteur à ultrasons sous forme de chaîne dans firebase Firebase.setString("temperature", temperature); retard(10) ; //stocker les données du capteur IR 1 sous forme de chaîne dans firebase Firebase.setString("humidité", humidité); retard(10) ; //stocker les données des capteurs précédents sous forme de chaîne dans firebase delay(1000); if (Firebase.failed()) { return; } }}

Processus de fabrication

  1. Transfert de données de capteur à partir d'une plaque Pi ppDAQC à l'aide de InitialState
  2. Acquisition de données en temps réel d'un panneau solaire à l'aide d'Arduino
  3. Système robotique de détection humaine utilisant Arduino Uno
  4. Capteur de rythme cardiaque infrarouge DIY utilisant Arduino
  5. Sonar utilisant arduino et affichage lors du traitement de l'IDE
  6. Contrôle de la luminosité des LED à l'aide de Bolt et Arduino
  7. Utilisation du capteur cardiaque portable MAX30100 avec Arduino
  8. Utilisation du capteur d'humidité du sol YL-39 + YL-69 avec Arduino
  9. D'une GMAO à une autre :directives pour la migration des données logicielles