Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Urmărirea temperaturii și a umidității este importantă dacă aveți o seră sau aveți planuri viitoare de a vă moderniza sera într-o mini-fermă inteligentă.
Pentru primul meu instructabil voi demonstra cum să creez un prototip:
- Conectați un senzor de temperatură și umiditate DHT11 la un Arduino Mega 2560
- Programați Arduino în C pentru a citi datele senzorului
- Afișați datele de temperatură și umiditate pe un ecran LCD conectat la Arduino
- Instruiți Arduino să trimită datele senzorului către un Raspberry Pi 3 Model B +
- Scrieți cod în Python pentru a afișa datele senzorului
De ce să folosim împreună un RPi și un Arduino?
Conexiunea Arduino și RPi vă poate oferi capabilități excelente dacă aveți nevoie de I / O la care excelează Arduino și de comunicații de rețea / multithreading / vizuale la care RPi este mult mai bun.
Cu alte cuvinte, vom folosi Arduino pentru controlul sarcinilor intensive și vom folosi RPi pentru sarcinile intensive de calcul.
Versiunile Ruggedized ale Arduinos sunt disponibile la Rugged-Circuits
Pasul 1: Obținerea hardware-ului Arduino și RPi
Kituri de pornire Arduino sunt ușor disponibile și vă permit să experimentați cu diferite tipuri de senzori și gadgeturi. Achiziționarea unui kit de pornire funcționează mai ieftin în loc să comandați diferite piese separat. Am furnizat mai jos câteva linkuri afiliate care arată către Banggood și Amazon SUA.
Kit de pornire Arduino (Banggood)
Kit de pornire Arduino (Amazon SUA)
Element14 RPi 3 B + Placă de bază (Amazon SUA)
Raspberry Pi 3 B + Case (Amazon SUA)
Card Micro SD de 32 GB (Amazon SUA).
Pasul 2: Conectați DHT11 și LCD la Arduino
Pasul 3: Programați Arduino
# arduino-dht11-lcd2004
#Autor: Vasoo Veerapen
#https://www.instructables.com/member/VasooV/ #Citește date de pe un DHT11 conectat la un Arduino, se afișează pe un LCD2004 și trimite date prin serial către Raspberry Pi
#include
#include
// Afișajul LCD este definit ca numărul dispozitivului 0x27 pe magistrala I2C
LiquidCrystal_I2C lcd (0x27, 20, 4);
// DHT11 este conectat la pinul 8
dht DHT; #define sensorPin 8
// Raspberry Pi este conectat la seria 0
#define serialPi Serial
configurare nulă () {
lcd.inceput (20, 4); // Inițializează interfața cu ecranul LCD și specifică dimensiunile (lățimea și înălțimea) afișajului lcd.init (); lcd.backlight (); serialPi.begin (9600); // Arduino la monitorul serial}
bucla nulă () {
// Citiți datele senzorului
int sensorData = DHT.read11 (sensorPin); temperatura plutitorului = temperatura DHT; umiditate plutitoare = DHT.umiditate;
// Temperatura de imprimare
lcd.setCursor (0, 0); lcd.print ("Temperatura"); lcd.print (temperatura); lcd.print ("C");
// Imprimarea umidității
lcd.setCursor (0, 1); lcd.print ("Umiditate"); lcd.print (umiditate); lcd.print ("%");
// Trimiteți date despre temperatură și umiditate către Raspberry Pi
serialPi.print ("");
// Așteptați 10 secunde
întârziere (10000); }
Pasul 4: Configurarea de lucru Arduino, LCD și DHT11
Pasul 5: Conectați Raspberry Pi la Arduino
Pasul 6: Codul RPi Python pentru a citi datele seriale ale portului USB
# rpi-arduino-dht11
#Raspberry Pi citește datele senzorului de temperatură și umiditate de la Arduino
import serial, șir, timp
# În acest exemplu este utilizat / dev / ttyUSB0
# Acest lucru se poate schimba în cazul dvs. la / dev / ttyUSB1, / dev / ttyUSB2, etc. ser = serial. Serial ('/ dev / ttyUSB0', 9600)
# Următorul bloc de cod funcționează astfel:
#Dacă există date seriale, citiți linia, decodificați datele UTF8, # … eliminați capătul final al caracterelor de linie # … împărțiți datele în temperatură și umiditate # … eliminați indicii de început și de sfârșit () # … imprimați ieșirea în timp ce Adevărat: dacă ser.in_waiting> 0: rawserial = ser.readline () cookedserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookedserial.split (',') temperature = datasplit [0].strip ('') print (temperatura) print (umiditate)