Turinys:
- 1 žingsnis: Gaukite „Arduino“ir „RPi“aparatinę įrangą
- 2 veiksmas: prijunkite DHT11 ir LCD prie „Arduino“
- 3 žingsnis: užprogramuokite „Arduino“
- 4 veiksmas: veikiantis „Arduino“, LCD ir DHT11 sąranka
- 5 veiksmas: prijunkite „Raspberry Pi“prie „Arduino“
- 6 veiksmas: „RPi Python“kodas USB prievado serijiniams duomenims skaityti
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Temperatūros ir drėgmės stebėjimas yra svarbus, jei turite šiltnamį arba planuojate ateityje atnaujinti savo šiltnamį į mini išmanųjį ūkį.
Savo pirmajame „Instructable“parodysiu, kaip sukurti prototipą:
- Prijunkite DHT11 temperatūros ir drėgmės jutiklį prie „Arduino Mega 2560“
- Užprogramuokite „Arduino“C, kad nuskaitytų jutiklio duomenis
- Rodyti temperatūros ir drėgmės duomenis skystųjų kristalų ekrane, prijungtame prie „Arduino“
- Nurodykite „Arduino“nusiųsti jutiklio duomenis į „Raspberry Pi 3 Model B+“
- Įveskite kodą „Python“, kad būtų rodomi jutiklio duomenys
Kodėl verta naudoti RPi ir Arduino kartu?
„Arduino“ir „RPi“ryšys gali suteikti puikių galimybių, jei jums reikia įvesties/išvesties, kuria pasižymi „Arduino“, ir tinklo komunikacijos/daugialypės informacijos/vaizdų, kuriuos RPi išmano daug geriau.
Kitaip tariant, mes naudosime „Arduino“intensyvioms užduotims valdyti, o RPi - intensyvioms užduotims skaičiuoti.
Patvarias „Arduinos“versijas galima rasti „Rugged-Circuits“
1 žingsnis: Gaukite „Arduino“ir „RPi“aparatinę įrangą
„Arduino“pradiniai rinkiniai yra lengvai prieinami ir leidžia eksperimentuoti su įvairių tipų jutikliais ir programėlėmis. Įsigijus pradinį rinkinį, pigiau, užuot užsakius įvairias dalis atskirai. Žemiau pateikiau keletą filialų nuorodų, nurodančių „Banggood“ir „Amazon“JAV.
„Arduino“pradinis rinkinys („Banggood“)
„Arduino“pradinis rinkinys („Amazon“JAV)
„Element14 RPi 3 B+“pagrindinė plokštė („Amazon“JAV)
„Raspberry Pi 3 B+“dėklas („Amazon“JAV)
32 GB „Micro SD“kortelė („Amazon“JAV).
2 veiksmas: prijunkite DHT11 ir LCD prie „Arduino“
3 žingsnis: užprogramuokite „Arduino“
#arduino-dht11-lcd2004
#Autorius: Vasoo Veerapen
#https://www.instructables.com/member/VasooV/ #Skaito duomenis iš DHT11, prijungto prie „Arduino“, rodomas LCD2004 ir siunčia duomenis serijiniu būdu į „Raspberry Pi“
#įtraukti
#įtraukti
// LCD ekranas yra apibrėžtas kaip įrenginio numeris 0x27 I2C magistralėje
LiquidCrystal_I2C LCD (0x27, 20, 4);
// DHT11 prijungtas prie 8 kaiščio
dht DHT; #define sensorPin 8
// Raspberry Pi yra prijungtas prie 0 serijos
#define serialPi Serial
void setup () {
LCD. pradžia (20, 4); // Inicijuoja LCD ekrano sąsają ir nurodo ekrano matmenis (plotį ir aukštį) lcd.init (); lcd.backlight (); serialPi.begin (9600); // „Arduino“į serijinį monitorių}
void loop () {
// Skaityti jutiklio duomenis
int sensorData = DHT.read11 (sensorPin); plūdės temperatūra = DHT.temperatūra; plūdės drėgmė = DHT.drėgmė;
// Spausdinimo temperatūra
lcd.setCursor (0, 0); lcd.print ("Temperatūra"); lcd.print (temperatūra); lcd.print ("C");
// Spausdinimo drėgmė
lcd.setCursor (0, 1); lcd.print („Drėgmė“); lcd.print (drėgmė); lcd.print (" %");
// Siųsti temperatūros ir drėgmės duomenis į Raspberry Pi
serialPi.print ("");
// Palaukite 10 sekundžių
vėlavimas (10000); }
4 veiksmas: veikiantis „Arduino“, LCD ir DHT11 sąranka
5 veiksmas: prijunkite „Raspberry Pi“prie „Arduino“
6 veiksmas: „RPi Python“kodas USB prievado serijiniams duomenims skaityti
#rpi-arduino-dht11
#Raspberry Pi skaito temperatūros ir drėgmės jutiklių duomenis iš „Arduino“
importuoti seriją, eilutę, laiką
#Šiame pavyzdyje naudojamas /dev /ttyUSB0
#Jūsų atveju tai gali pasikeisti į/dev/ttyUSB1,/dev/ttyUSB2 ir tt ser = serial. Serial ('/dev/ttyUSB0', 9600)
#Šis kodo blokas veikia taip:
#Jei yra serijinių duomenų, perskaitykite eilutę, iššifruokite UTF8 duomenis, #… pašalinkite paskutinius eilutės simbolių galus #… padalinkite duomenis į temperatūrą ir drėgmę #… pašalinkite pradžios ir pabaigos rodykles () #… spausdinkite išvestį, kol Tiesa: jei ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperatūra = datasplit [0]. juostelė ('') spauda (temperatūra) spauda (drėgmė)