Inhaltsverzeichnis:
- Schritt 1: Arduino & RPi Hardware bekommen
- Schritt 2: Verbinden Sie das DHT11 & LCD mit dem Arduino
- Schritt 3: Programmieren Sie das Arduino
- Schritt 4: Das funktionierende Arduino-, LCD- und DHT11-Setup
- Schritt 5: Verbinden Sie den Raspberry Pi mit dem Arduino
- Schritt 6: RPi Python-Code zum Lesen der seriellen Daten des USB-Ports
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Die Überwachung von Temperatur und Luftfeuchtigkeit ist wichtig, wenn Sie ein Gewächshaus haben oder in Zukunft planen, Ihr Gewächshaus in eine Mini-Smart-Farm aufzurüsten.
Für mein erstes Instructable werde ich zeigen, wie man einen Prototyp erstellt:
- Verbinden Sie einen DHT11 Temperatur- und Feuchtigkeitssensor mit einem Arduino Mega 2560
- Programmieren Sie den Arduino in C, um die Sensordaten zu lesen
- Anzeige von Temperatur- und Feuchtigkeitsdaten auf einem LCD, das mit dem Arduino verbunden ist
- Weisen Sie den Arduino an, die Sensordaten an einen Raspberry Pi 3 Model B+ zu senden
- Code in Python schreiben, um die Sensordaten anzuzeigen
Warum ein RPi und Arduino zusammen verwenden?
Die Arduino- und RPi-Verbindung kann großartige Funktionen ermöglichen, wenn Sie E / A benötigen, in denen sich das Arduino auszeichnet, und Netzwerkkommunikation / Multithreading / Visuals, in denen das RPi viel besser ist.
Mit anderen Worten, wir verwenden den Arduino für steuerungsintensive Aufgaben und den RPi für rechenintensive Aufgaben.
Ruggedized-Versionen von Arduinos sind bei Rugged-Circuits erhältlich
Schritt 1: Arduino & RPi Hardware bekommen
Arduino-Starterkits sind leicht erhältlich und ermöglichen es Ihnen, mit verschiedenen Arten von Sensoren und Geräten zu experimentieren. Der Kauf eines Starter-Kits ist günstiger, als verschiedene Teile separat zu bestellen. Ich habe unten einige Affiliate-Links angegeben, die auf Banggood und Amazon US verweisen.
Arduino-Starter-Kit (Banggood)
Arduino-Starter-Kit (Amazon USA)
Element14 RPi 3 B+ Mainboard (Amazon USA)
Raspberry Pi 3 B+ Gehäuse (Amazon US)
32 GB Micro-SD-Karte (Amazon USA).
Schritt 2: Verbinden Sie das DHT11 & LCD mit dem Arduino
Schritt 3: Programmieren Sie das Arduino
#arduino-dht11-lcd2004
#Autor: Vasoo Veerapen
#https://www.instructables.com/member/VasooV/ # Liest Daten von einem DHT11, der mit einem Arduino verbunden ist, zeigt auf einem LCD2004 an und sendet Daten über seriell an Raspberry Pi
#enthalten
#enthalten
//LCD-Anzeige ist als Gerätenummer 0x27 auf dem I2C-Bus definiert
LiquidCrystal_I2C lcd(0x27, 20, 4);
// DHT11 ist mit Pin 8 verbunden
dht-DHT; #define sensorPin 8
// Himbeer-Pi ist mit Serial 0 verbunden
#define serialPi Serial
Leere Einrichtung () {
lcd.begin(20, 4); // Initialisiert die Schnittstelle zum LCD-Bildschirm und gibt die Abmessungen (Breite und Höhe) des Displays an lcd.init(); LCD-Rücklicht(); serialPi.begin(9600); // Arduino zum seriellen Monitor}
Leere Schleife () {
// Sensordaten lesen
int sensorData = DHT.read11(sensorPin); Schwimmertemperatur = DHT. Temperatur; Schwebefeuchte = DHT. Feuchte;
//Drucktemperatur
lcd.setCursor(0, 0); lcd.print("Temperatur"); lcd.print (Temperatur); lcd.print("C");
//Druckfeuchtigkeit
lcd.setCursor(0, 1); lcd.print("Luftfeuchtigkeit"); lcd.print (Luftfeuchtigkeit); lcd.print(" %");
// Temperatur- und Luftfeuchtigkeitsdaten an Raspberry Pi senden
serialPi.print("");
// 10 Sekunden warten
Verzögerung (10000); }
Schritt 4: Das funktionierende Arduino-, LCD- und DHT11-Setup
Schritt 5: Verbinden Sie den Raspberry Pi mit dem Arduino
Schritt 6: RPi Python-Code zum Lesen der seriellen Daten des USB-Ports
#rpi-arduino-dht11
#Raspberry Pi liest Temperatur- und Feuchtigkeitssensordaten von Arduino
Importieren Sie Seriennummer, Zeichenfolge, Zeit
#In diesem Beispiel wird /dev/ttyUSB0 verwendet
#Dies kann sich in Ihrem Fall in /dev/ttyUSB1, /dev/ttyUSB2 usw. ändern. ser = serial. Serial('/dev/ttyUSB0', 9600)
#Der folgende Codeblock funktioniert wie folgt:
#Wenn serielle Daten vorhanden sind, lesen Sie die Zeile, decodieren Sie die UTF8-Daten, #…entfernen Sie die nachgestellten Zeilenendezeichen #…unterteilen Sie die Daten in Temperatur und Feuchtigkeit #…entfernen Sie die Start- und Endzeiger () #…drucken Sie die Ausgabe während True: if ser.in_waiting > 0: rawserial = ser.readline() cookserial = rawserial.decode('utf-8').strip('\r\n') datasplit = gekochtserial.split(', ') temperature = datasplit[0].strip('') print(temperatur) print(Luftfeuchtigkeit)