Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Senden Sie Sensordaten von einem Arduino zu einem anderen mit Firebase

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 2
Espressif ESP8266 ESP-01
× 2
DHT11 Temperatur- und Feuchtigkeitssensor (3 Pins)
× 1
DFRobot I2C 16x2 Arduino LCD-Anzeigemodul
× 1
Breadboard (generisch)
× 2
Überbrückungsdrähte männlich/weiblich
× 1

Apps und Onlinedienste

Arduino-IDE
Google Firebase

Über dieses Projekt

ÜBERSICHT:

In diesem coolen IoT-Projekt lesen Sie Daten von einem Feuchtigkeits- und Temperatursensor, der mit einem Arduino UNO verbunden ist. Senden Sie diese Daten mit einem esp8266-Modul an Firebase und laden Sie die Daten dann mit einem esp8266 in ein anderes Arduino UNO herunter, um sie schließlich auf einem LCD anzuzeigen.

SCHRITT 1:Verstehen Sie, wie Arduino UNO und ESP8266 zusammenarbeiten.

Beachten Sie, dass sie als zwei verschiedene Boards funktionieren und unterschiedliche Codes haben. Sie verwenden das Arduino UNO, um mit dem ESP8266 zu kommunizieren. Verstehen Sie, dass Sie den Arduino nicht mit dem Internet verbinden, sondern den ESP8266 mit dem Internet. Sie können später über den seriellen Anschluss Daten zwischen den beiden Boards senden.

SCHRITT 2:Verbinden Sie einen Arduino mit dem LCD

Für diesen Teil können Sie entweder die I2C-Kommunikation wie wir es getan haben oder die normale Kommunikation verwenden. I2C ist immer besser. Probieren Sie den dort gezeigten Beispielcode aus.

HINWEIS, DASS WIR EIN 20x4 LCD verwendet haben. ÄNDERN SIE DEN CODE, WENN ERFORDERLICH.

SCHRITT 3:Verbinden Sie den anderen Arduino mit dem DHT11-Sensor

Sie können diesem Tutorial folgen, um es zum Laufen zu bringen. Denken Sie daran, den Vorlagencode auszuprobieren.

SCHRITT 4:ESP8266 mit Firebase verbinden, um Daten zu senden und zu empfangen

In diesem Tutorial erklären sie sehr gut, wie man es einrichtet.

Folgen Sie diesem Schritt-für-Schritt-Video. Sie verbinden eine NodeMCU mit dem ESP8266, aber Sie können die gleichen Verbindungen mit dem Arduino UNO verwenden.

Als Ratschlag würde ich vorschlagen, dass Sie ein Google-Sheet erstellen oder sich mit den Farben auszeichnen, die Sie für den ESP8266 verwenden, damit Sie nicht verwirrt werden.

GEHEN SIE ZUM FEHLERTEIL AM ENDE, WENN ES NICHT FUNKTIONIERT. AUCH , ÜBERPRÜFEN SIE DIE KOMMENTARE ZUM TUTORIAL.

SCHRITT 5:Verstehen Sie, wie die serielle Kommunikation funktioniert.

In diesem Tutorial senden sie andere Sensordaten an Firebase, Sie können es lesen, um sich ein Bild von der Funktionsweise zu machen oder es sogar auszuprobieren.

SOLLTEN SIE NUR DEN GEWÜNSCHTEN STRING AUF DEM SERIELLEN MONITOR DRUCKEN, JEDE ANDERE DRUCKLINIE UNTERBREITET DIE KOMMUNIKATION.

SCHRITT 6:Laden Sie den Code hoch.

Nachdem Sie nun wissen, wie Sie Daten hochladen und empfangen, können Sie den tatsächlichen Code auf die esp8266s hochladen, die mit den Arduinos und den Arduinos verbunden sind. Siehe Schritt 4 zum Hochladen von Code.

LESEN SIE DEN CODE VOR DEM HOCHLADEN UND VORNEHMEN ERFORDERLICHE ÄNDERUNGEN VOR.

HÄUFIGE FEHLER UND HINWEISE:

TRENNEN SIE IMMER DAS ARDUINO-KABEL, BEVOR SIE EIN DRAHT TRENNEN.

Code wird nicht auf ESP8266 hochgeladen:

  • Wählen Sie die generische esp8266-Karte aus.
  • Wenn der Code immer noch nicht hochgeladen wird und Ihnen eine Fehlermeldung angezeigt wird, tun Sie dies.
  • Wenn es immer noch nicht funktioniert, trennen Sie es vom Stromnetz, verbinden Sie es erneut, versuchen Sie es hochzuladen und versuchen Sie es dann erneut mit der vorherigen Lösung.

Code wird nicht auf Arduino UNO hochgeladen:

  • Lesen Sie in dieser Dokumentation sorgfältig, wie Sie Code auf Arduino UNO hochladen, Schritt 7.
  • Entfernen Sie GPIO-0 (IO0) von GND und Arduino Uno RESET Pin von Unos Ground/GND Pin.
  • Entfernen Sie den ESP8266 RX-Pin vom RX-Pin von UNO und den ESP8266 TX-Pin vom TX-Pin von UNO.
  • Überprüfen Sie Ihre Pins erneut, wählen Sie das Arduino UNO-Board aus.

Funktioniert nicht, nachdem beide Codes hochgeladen wurden:

  • Verbinden Sie den ESP8266 RX-Pin mit dem TX-Pin von Uno und den ESP8266 TX-Pin mit dem RX-Pin von Uno. Ja, Sie müssen sie entgegengesetzt anschließen. Frag mich nicht warum. Mach es einfach.
  • Trennen Sie den ESP8266 GPIO-0 (IO0) von GND.
  • Überprüfe deine Pins noch einmal
  • Stellen Sie sicher, dass Sie nur die Werte drucken, die Sie zwischen dem Arduino und dem ESP8266 im Serial Monitor teilen möchten. Wenn Sie Dinge wie "verbunden" oder etwas anderes drucken, funktioniert der Code nicht.

HINWEIS: Wenn Sie es zum Laufen bringen und das LCD etwas Seltsames druckt, sollte es nach ein paar Sekunden behoben sein mit die initialisieren Funktion. Dies kann aufgrund von Verzögerungen bei der seriellen Kommunikation auftreten.

Code

  • lcd_arduino.ino
  • lcd_esp8266.ino
  • sensor_arduino.ino
  • sensor_esp8266.ino
lcd_arduino.inoArduino
Arduino_LCD_Code
#include #include // Initialisieren Sie die Bibliothek, indem Sie alle benötigten LCD-Schnittstellenpins// mit der Arduino-Pinnummer verknüpfen, mit der sie verbunden istLiquidCrystal_I2C lcd (0x3F, 20, 4); Zeichenfolgenwerte, sensor_data;void setup () { Serial.begin (9600); Verzögerung (2000); // die Anzahl der Spalten und Zeilen des LCD einrichten:lcd.begin (20, 4); // Eine Nachricht auf dem LCD ausgeben. lcd.init(); // lcd initialisieren lcd.backlight (); Verzögerung (2000); lcd.setCursor(0, 0); lcd.print("Temperatur:"); Verzögerung(10); lcd.setCursor(18, 0); lcd.print("C"); Verzögerung(10); lcd.setCursor(0, 1); lcd.print("Luftfeuchtigkeit:"); Verzögerung(10); lcd.setCursor(15, 1); lcd.print("%"); delay(2000);}void loop() { bool Sr =false; while (Serial.available ()) {// Sensordaten von seriell abrufen set in sensor_data sensor_data =Serial.readString (); Sr =wahr; } Verzögerung (1000); if (Sr ==true) {values ​​=sensor_data; // Sensordaten aus Wertevariablen durch Aufteilen durch Kommas abrufen und in Variablen eingeben String temperature =values.substring (0, 5); String-Feuchtigkeit =values.substring(6, 11); initialisieren(); lcd.setCursor(13, 0); Verzögerung(10); lcd.print (temperature); // Cursor setzen, um Temperaturverzögerung zu drucken (10); lcd.setCursor(10, 1); Verzögerung(10); lcd.print (Luftfeuchtigkeit); } delay(2000);}void initialize() {lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temperatur:"); Verzögerung(10); lcd.setCursor(18, 0); lcd.print("C"); Verzögerung(10); lcd.setCursor(0, 1); lcd.print("Luftfeuchtigkeit:"); Verzögerung(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_SSID "YOUR_StrWIFI_SSID()" Serial.begin (9600); // mit WLAN verbinden. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Während (WiFi.status () !=WL_CONNECTED) { Verzögerung (500); } Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}void loop() { String temperature =Firebase.getString("temperature"); String-Feuchtigkeit =Firebase.getString("Luftfeuchtigkeit"); Temperatur =Temperatur.substring(0, 5); Feuchtigkeit =Feuchtigkeit.substring(0, 5); Werte =(Temperatur + Feuchtigkeit); Verzögerung(10); // immer vor dem Drucken von Serial.flush () spülen; Verzögerung (1000); Serial.print (Werte); Verzögerung(1000);}
sensor_arduino.inoArduino
Arduino_Sensor_Code
#include #include #define dht_apin A0dht DHT;String-Werte;void setup() { Serial.begin(9600); Verzögerung (5000); // Verzögerung, um das System booten zu lassen}void loop () { DHT.read11 (dht_apin); Werte =(String(DHT.temperature) + ',' + String(DHT.humidity)); Verzögerung(10); Serial.flush(); Verzögerung (1000); // Sensordaten an seriell gesendet (Sensordaten an ESP8266 gesendet) Serial.print (Werte); Verzögerung(2000);}
sensor_esp8266.inoArduino
Sensor_ESP8266_Code
#include #include #define FIREBASE_HOST "YOUR_FIREBASE_LINK"#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_SSID "YOUR_define WIFI_SSID_" ) { Verzögerung (1000); // mit WLAN verbinden. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Während (WiFi.status () !=WL_CONNECTED) { Verzögerung (500); } Serial.begin (9600); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}void loop() { bool Sr =false; while (Serial.available ()) {// Sensordaten von seriell abrufen set in sensor_data sensor_data =Serial.readString (); Sr =wahr; } Verzögerung (1000); if (Sr ==true) {values ​​=sensor_data; // Komma-Indizes von der Wertevariable holen int fristCommaIndex =values.indexOf(','); int secondCommaIndex =values.indexOf(',', fristCommaIndex + 1); // Sensordaten aus Wertevariablen durch Aufteilen durch Kommas abrufen und in Variablen eingeben String temperature =values.substring (0, fristCommaIndex); String Feuchtigkeit =values.substring(fristCommaIndex + 1, secondCommaIndex); // Ultraschallsensordaten als String in Firebase speichern Firebase.setString("temperature", temperature); Verzögerung(10); // Daten des IR-Sensors 1 als String in Firebase speichern Firebase.setString ("Luftfeuchtigkeit", Feuchtigkeit); Verzögerung(10); // Vorherige Sensordaten als String in Firebase Delay (1000) speichern; if (Firebase.failed()) { zurück; } }}

Herstellungsprozess

  1. Streamen von Sensordaten von einer ppDAQC-Pi-Platte mit InitialState
  2. Echtzeit-Datenerfassung von Solarmodulen mit Arduino
  3. Robotersystem zur Erkennung von Menschen mit Arduino Uno
  4. DIY Infrarot-Herzschlagsensor mit Arduino
  5. Sonar mit Arduino und Anzeige bei der Verarbeitung von IDE
  6. Steuerung der LED-Helligkeit mit Bolt und Arduino
  7. Verwenden des tragbaren Pulssensors MAX30100 mit Arduino
  8. Verwenden des Bodenfeuchtesensors YL-39 + YL-69 mit Arduino
  9. So erstellen Sie eine Website, die Arduino mithilfe von PHP kommuniziert
  10. Von einem CMMS zum anderen:Richtlinien für die Migration von Softwaredaten