Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Sporing av temperatur og fuktighet er viktig hvis du har et drivhus, eller har planer om å oppgradere drivhuset ditt til en mini smart-farm.
For min første Instructable vil jeg demonstrere hvordan jeg lager en prototype:
- Koble en DHT11 temperatur- og fuktighetssensor til en Arduino Mega 2560
- Programmer Arduino i C for å lese sensordata
- Vis temperatur- og fuktighetsdata på en LCD som er koblet til Arduino
- Instruer Arduino om å sende sensordata til en Raspberry Pi 3 Model B+
- Skriv kode i Python for å vise sensordata
Hvorfor bruke en RPi og Arduino sammen?
Arduino- og RPi -tilkoblingen kan gi store muligheter hvis du trenger I/O som Arduino utmerker seg med og nettverkskommunikasjon/multithreading/visuals som RPi er mye bedre på.
Med andre ord, vi kommer til å bruke Arduino for kontrollintensive oppgaver og bruke RPi for beregningsintensive oppgaver.
Robuste versjoner av Arduinos er tilgjengelig på Rugged-Circuits
Trinn 1: Skaff deg Arduino & RPi -maskinvare
Arduino startpakker er lett tilgjengelige og lar deg eksperimentere med forskjellige typer sensorer og gadgets. Å kjøpe et startsett fungerer billigere i stedet for å bestille forskjellige deler separat. Jeg har levert noen tilknyttede lenker nedenfor som peker på Banggood og Amazon USA.
Arduino Starter Kit (Banggood)
Arduino Starter Kit (Amazon USA)
Element14 RPi 3 B+ Hovedkort (Amazon USA)
Raspberry Pi 3 B+ etui (Amazon USA)
32 GB Micro SD -kort (Amazon USA).
Trinn 2: Koble DHT11 og LCD til Arduino
Trinn 3: Programmer Arduino
#arduino-dht11-lcd2004
#Forfatter: Vasoo Veerapen
#https://www.instructables.com/member/VasooV/ #Leser data fra en DHT11 koblet til en Arduino, vises på en LCD2004 og sender data over seriell til Raspberry Pi
#inkludere
#inkludere
// LCD -skjerm er definert som enhetsnummer 0x27 på I2C -bussen
LiquidCrystal_I2C lcd (0x27, 20, 4);
// DHT11 er koblet til pin 8
dht DHT; #define sensorPin 8
// Raspberry Pi er koblet til Serial 0
#define serialPi Serial
ugyldig oppsett () {
lcd.begin (20, 4); // Initialiserer grensesnittet til LCD -skjermen, og spesifiserer dimensjonene (bredden og høyden) på skjermen lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino til seriell skjerm}
void loop () {
// Les sensordata
int sensorData = DHT.read11 (sensorPin); flyte temperatur = DHT. temperatur; flyte fuktighet = DHT. fuktighet;
// Utskriftstemperatur
lcd.setCursor (0, 0); lcd.print ("Temperatur"); lcd.print (temperatur); lcd.print ("C");
// Skriv ut fuktighet
lcd.setCursor (0, 1); lcd.print ("Fuktighet"); lcd.print (fuktighet); lcd.print (" %");
// Send temperatur- og fuktighetsdata til Raspberry Pi
serialPi.print ("");
// Vent i 10 sekunder
forsinkelse (10000); }
Trinn 4: Working Arduino, LCD og DHT11 -oppsettet
Trinn 5: Koble Raspberry Pi til Arduino
Trinn 6: RPi Python -kode for å lese USB -portens serielle data
#rpi-arduino-dht11
#Raspberry Pi leser temperatur- og fuktighetssensordata fra Arduino
importer serie, streng, tid
#I dette eksemplet /dev /ttyUSB0 brukes
#Dette kan endres i ditt tilfelle til/dev/ttyUSB1,/dev/ttyUSB2, etc. ser = serial. Serial ('/dev/ttyUSB0', 9600)
#Følgende kodeblokk fungerer slik:
#Hvis serielle data er tilstede, les linjen, dekod UTF8 -dataene, #… fjern bakenden av linjetegn #… del dataene i temperatur og fuktighet #… fjern start- og sluttpekene () #… skriv ut utskriften mens Sant: hvis ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperatur = datasplitt [0].strip ('') utskrift (temperatur) utskrift (fuktighet)