Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Stuur sensorgegevens van de ene Arduino naar de andere met Firebase

Componenten en benodigdheden

Arduino UNO
× 2
Espressief ESP8266 ESP-01
× 2
DHT11 temperatuur- en vochtigheidssensor (3 pinnen)
× 1
DFRobot I2C 16x2 Arduino LCD-displaymodule
× 1
Broodplank (algemeen)
× 2
Mannelijke/Vrouwelijke doorverbindingsdraden
× 1

Apps en online services

Arduino IDE
Google Firebase

Over dit project

OVERZICHT:

In dit coole IoT-project lees je data uit van een vochtigheids- en temperatuursensor die is aangesloten op één Arduino UNO. Stuur deze gegevens naar Firebase met behulp van een esp8266-module en download de gegevens vervolgens in een andere Arduino UNO met behulp van een esp8266, om ze uiteindelijk op een LCD-scherm weer te geven.

STAP 1:Begrijp hoe Arduino UNO en ESP8266 samenwerken.

Merk op dat ze als twee verschillende borden werken en verschillende codes hebben. Je gebruikt de Arduino UNO om te communiceren met de ESP8266. Begrijp dat u de Arduino niet met internet verbindt, u verbindt de ESP8266 met internet. U kunt later gegevens tussen de twee kaarten verzenden via de seriële terminal.

STAP 2:Sluit een Arduino aan op het LCD-scherm

Voor dit onderdeel kunt u I2C-communicatie gebruiken zoals wij deden of normale communicatie. I2C is altijd beter. Probeer de voorbeeldcode die ze daar presenteren.

LET OP DAT WE EEN 20x4 LCD HEBBEN GEBRUIKT. WIJZIG DE CODE INDIEN NODIG.

STAP 3:Sluit de andere Arduino aan op de DHT11-sensor

U kunt deze tutorial volgen om het werkend te krijgen. Vergeet niet om de sjablooncode te proberen.

STAP 4:Sluit ESP8266 aan op Firebase om gegevens te verzenden en te ontvangen

In deze tutorial leggen ze heel goed uit hoe je het instelt.

Volg deze stap-voor-stap video. Ze verbinden een NodeMCU met de ESP8266, maar je kunt dezelfde verbindingen gebruiken met de Arduino UNO.

Wat betreft advies, raad ik je aan een Google-blad te maken of uit te blinken met de kleuren die je gebruikt voor de ESP8266, zodat je niet in de war raakt.

GA NAAR HET ERROR DEEL AAN HET EINDE ALS HET NIET WERKT. OOK , CONTROLEER DE OPMERKINGEN IN DE TUTORIAL.

STAP 5:Begrijp hoe seriële communicatie werkt.

In deze tutorial sturen ze andere sensorgegevens naar firebase, je kunt het lezen om een ​​idee te krijgen hoe het werkt of het zelfs uit te proberen.

JE MAG ALLEEN DE GEWENSTE STRING OP DE SERILE MONITOR AFDRUKKEN, ELKE ANDERE AFDRUKLIJN ONDERBREKT DE COMMUNICATIE.

STAP 6:Upload de code.

Nu u weet hoe u gegevens moet uploaden en ontvangen, kunt u de eigenlijke code uploaden naar de esp8266's die zijn aangesloten op de Arduino's en de Arduino's. Raadpleeg stap 4 voor het uploaden van code.

LEES DE CODE VOORDAT U UPLOADT EN VOER DE NOODZAKELIJKE WIJZIGINGEN AAN.

ALGEMENE FOUTEN EN ADVIES:

ONTKOPPEL DE ARDUINO-KABEL ALTIJD ALVORENS EEN DRAAD LOS TE MAKEN.

Code wordt niet geüpload naar ESP8266:

  • Selecteer het algemene bord esp8266.
  • Als de code nog steeds niet wordt geüpload en je een foutmelding krijgt, doe dit dan.
  • Als het nog steeds niet werkt, koppelt u het los, sluit u het opnieuw aan, probeert u te uploaden en probeert u de vorige oplossing opnieuw.

Code wordt niet geüpload naar Arduino UNO:

  • Lees aandachtig hoe u code uploadt naar Arduino UNO in deze documentatie, stap 7.
  • Haal GPIO-0 (IO0) van GND en Arduino Uno RESET Pin van Uno's Ground/GND Pin.
  • Verwijder ESP8266 RX-pin van UNO's RX-pin en ESP8266 TX-pin van UNO's TX-pin.
  • Controleer uw pinnen opnieuw, selecteer Arduino UNO-bord.

Werkt niet na het uploaden van beide codes:

  • Sluit de ESP8266 RX-pin aan op Uno's TX-pin en ESP8266 TX-pin op Uno's RX-pin. Ja, je moet ze tegenover elkaar aansluiten. Vraag me niet waarom. Doe het gewoon.
  • Ontkoppel de ESP8266 GPIO-0 (IO0) van GND.
  • Controleer uw pinnen opnieuw
  • Zorg ervoor dat u alleen de waarden afdrukt die u wilt delen tussen de Arduino en de ESP8266 in de seriële monitor. Als u dingen als "verbonden" of iets anders afdrukt, werkt de code niet.

OPMERKING: Als je het werkend krijgt en het LCD-scherm drukt iets raars af, dan zou het dit na een paar seconden moeten oplossen met de initialiseren functie. Dit kan gebeuren als gevolg van vertragingen in de seriële communicatie.

Code

  • lcd_arduino.ino
  • lcd_esp8266.ino
  • sensor_arduino.ino
  • sensor_esp8266.ino
lcd_arduino.inoArduino
Arduino_LCD_Code
#include #include // initialiseer de bibliotheek door de benodigde LCD-interface-pin// te koppelen aan het Arduino-pinnummer waarmee deze is verbonden LiquidCrystal_I2C lcd (0x3F, 20, 4); Tekenreekswaarden, sensor_data; ongeldige setup () { Serial.begin (9600); vertraging (2000); // stel het aantal kolommen en rijen van het LCD-scherm in:lcd.begin (20, 4); // Druk een bericht af op het LCD-scherm. lcd.init(); // initialiseer de lcd lcd.backlight(); vertraging (2000); lcd.setCursor(0, 0); lcd.print("Temperatuur:"); vertraging(10); lcd.setCursor (18, 0); lcd.print("C"); vertraging(10); lcd.setCursor(0, 1); lcd.print("Vochtigheid:"); vertraging(10); lcd.setCursor (15, 1); lcd.print("%"); delay(2000);}void loop() { bool Sr =false; while (Serial.available ()) {// haal sensorgegevens van serieel in sensor_data sensor_data =Serial.readString (); Sr =waar; } vertraging (1000); if (Sr ==waar) {waarden =sensor_data; // krijg sensorgegevens van waardenvariabele door te splitsen door komma's en in variabelen in te voeren Stringtemperatuur =waarden.substring (0, 5); String vochtigheid =waarden.substring (6, 11); initialiseren(); lcd.setCursor(13, 0); vertraging(10); lcd.print(temperatuur);// zet de cursor om de temperatuurvertraging af te drukken (10); lcd.setCursor(10, 1); vertraging(10); lcd.print(vochtigheid); } delay(2000);}void initialize() { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temperatuur:"); vertraging(10); lcd.setCursor (18, 0); lcd.print("C"); vertraging(10); lcd.setCursor(0, 1); lcd.print("Vochtigheid:"); vertraging(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_FIREBASE_LINK"#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_SSID "YOUR_FIIRE_HOST" Serieel.begin(9600); // verbinding maken met wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() !=WL_CONNECTED) { delay(500); } Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}void loop() { Stringtemperatuur =Firebase.getString("temperatuur"); String vochtigheid =Firebase.getString ("vochtigheid"); temperatuur =temperatuur.substring (0, 5); vochtigheid =vochtigheid.substring (0, 5); waarden =(temperatuur + vochtigheid); vertraging(10); // spoel altijd voordat u Serial.flush(); vertraging (1000); Serial.print(waarden); vertraging(1000);}
sensor_arduino.inoArduino
Arduino_Sensor_Code
#include #include #define dht_apin A0dht DHT;String values;void setup() { Serial.begin(9600); vertraging (5000); // Vertraging om het systeem te laten opstarten} ongeldige lus () { DHT.read11 (dht_apin); waarden =(String(DHT.temperatuur) + ',' + String(DHT.vochtigheid)); vertraging(10); Serieel.flush(); vertraging (1000); // verzonden sensorgegevens naar serieel (verzonden sensorgegevens naar ESP8266) Serial.print (waarden); vertraging (2000);}
sensor_esp8266.inoArduino
Sensor_ESP8266_Code
#include #include #define FIREBASE_HOST "YOUR_FIREBASE_LINK"#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_SSvoiSSID"WORD_WIFI_HOST "YOUR_FIREBASE_LINK"#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_SSvoiSSID"WORD_WIFI_HOST ) { vertraging (1000); // verbinding maken met wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() !=WL_CONNECTED) { delay(500); } Serieel.begin(9600); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}void loop() { bool Sr =false; while (Serial.available ()) {// haal sensorgegevens van serieel in sensor_data sensor_data =Serial.readString (); Sr =waar; } vertraging (1000); if (Sr ==waar) {waarden =sensor_data; // haal komma-indexen van waardenvariabele int fristCommaIndex =values.indexOf(','); int secondCommaIndex =waarden.indexOf(',', fristCommaIndex + 1); // krijg sensorgegevens van waardenvariabele door te splitsen door komma's en in variabelen te plaatsen String temperatuur =values.substring (0, fristCommaIndex); String vochtigheid =waarden.substring(fristCommaIndex + 1, secondCommaIndex); // sla ultrasone sensorgegevens op als string in firebase Firebase.setString ("temperatuur", temperatuur); vertraging(10); // bewaar IR-sensor 1-gegevens als string in firebase Firebase.setString ("vochtigheid", vochtigheid); vertraging(10); // sla eerdere sensorgegevens op als string in firebase delay (1000); if (Firebase.failed()) { return; } }}

Productieproces

  1. Sensorgegevens streamen van een ppDAQC Pi-plaat met InitialState
  2. Real-time data-acquisitie van zonnepaneel met behulp van Arduino
  3. Human Detection Robotics System met Arduino Uno
  4. DIY infrarood hartslagsensor met Arduino
  5. Sonar met arduino en weergave op verwerkings-IDE
  6. LED-helderheid regelen met Bolt en Arduino
  7. De draagbare MAX30100-polssensor gebruiken met Arduino
  8. De YL-39 + YL-69 bodemvochtigheidssensor gebruiken met Arduino
  9. Een website maken die Arduino communiceert met PHP
  10. Versnelling omzetten naar hoek van MPU6050 I2C-sensor
  11. Van het ene CMMS naar het andere:richtlijnen voor softwaregegevensmigratie