Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Spåra temperatur och luftfuktighet är viktigt om du har ett växthus, eller har framtida planer på att uppgradera ditt växthus till en mini smart-farm.
För min första Instructable kommer jag att visa hur man skapar en prototyp:
- Anslut en DHT11 temperatur- och fuktsensor till en Arduino Mega 2560
- Programmera Arduino i C för att läsa sensordata
- Visa temperatur- och luftfuktighetsdata på en LCD -skärm ansluten till Arduino
- Instruera Arduino att skicka sensordata till en Raspberry Pi 3 Model B+
- Skriv kod i Python för att visa sensordata
Varför använda en RPi och Arduino tillsammans?
Arduino- och RPi -anslutningen kan ge stora möjligheter om du behöver I/O som Arduino utmärker sig och nätverkskommunikation/multithreading/visuals som RPi är mycket bättre på.
Med andra ord kommer vi att använda Arduino för kontrollintensiva uppgifter och använda RPi för beräkningsintensiva uppgifter.
Ruggedized versioner av Arduinos är tillgängliga på Rugged-Circuits
Steg 1: Skaffa Arduino & RPi -hårdvara
Arduino startpaket är lätt tillgängliga och låter dig experimentera med olika typer av sensorer och prylar. Att köpa ett startpaket fungerar billigare istället för att beställa olika delar separat. Jag har levererat några anslutningslänkar nedan som pekar på Banggood och Amazon USA.
Arduino Starter Kit (Banggood)
Arduino startpaket (Amazon USA)
Element14 RPi 3 B+ moderkort (Amazon USA)
Raspberry Pi 3 B+ fodral (Amazon USA)
32 GB Micro SD -kort (Amazon USA).
Steg 2: Anslut DHT11 & LCD till Arduino
Steg 3: Programmera Arduino
#arduino-dht11-lcd2004
#Författare: Vasoo Veerapen
#https://www.instructables.com/member/VasooV/ #Läser data från en DHT11 ansluten till en Arduino, visas på en LCD2004 och skickar data över serie till Raspberry Pi
#omfatta
#omfatta
// LCD -skärm definieras som enhetsnummer 0x27 på I2C -bussen
LiquidCrystal_I2C lcd (0x27, 20, 4);
// DHT11 är ansluten till stift 8
dht DHT; #define sensorPin 8
// Raspberry Pi är ansluten till Serial 0
#define serialPi Serial
void setup () {
lcd.begin (20, 4); // Initierar gränssnittet till LCD -skärmen och specificerar måtten (bredd och höjd) på displayen lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino till seriell bildskärm}
void loop () {
// Läs sensordata
int sensorData = DHT.read11 (sensorPin); flottörtemperatur = DHT. temperatur; flottörfuktighet = DHT. luftfuktighet;
// Utskriftstemperatur
lcd.setCursor (0, 0); lcd.print ("Temperatur"); lcd.print (temperatur); lcd.print ("C");
// Skriv ut luftfuktighet
lcd.setCursor (0, 1); lcd.print ("Fuktighet"); lcd.print (fuktighet); lcd.print (" %");
// Skicka temperatur- och luftfuktighetsdata till Raspberry Pi
serialPi.print ("");
// Vänta i 10 sekunder
fördröjning (10000); }
Steg 4: Arbetande Arduino, LCD & DHT11 -inställningar
Steg 5: Anslut Raspberry Pi till Arduino
Steg 6: RPi Python -kod för att läsa USB -portens seriella data
#rpi-arduino-dht11
#Raspberry Pi läser temperatur- och fuktighetssensordata från Arduino
importera serie, sträng, tid
#I det här exemplet används /dev /ttyUSB0
#Detta kan ändras i ditt fall till/dev/ttyUSB1,/dev/ttyUSB2, etc. ser = serial. Serial ('/dev/ttyUSB0', 9600)
#Följande kodblock fungerar så här:
#Om seriell data finns, läs raden, avkoda UTF8 -data, #… ta bort den bakre änden av radtecken #… dela upp data i temperatur och luftfuktighet #… ta bort start- och slutpekarna () #… skriv ut utskriften medan Sant: om ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperatur = datasplit [0].strip ('') tryck (temperatur) tryck (fuktighet)