Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Het bijhouden van temperatuur en vochtigheid is belangrijk als u een kas heeft, of toekomstige plannen heeft om uw kas te upgraden naar een mini-smart-farm.
Voor mijn eerste Instructable zal ik laten zien hoe je een prototype kunt maken:
- Sluit een DHT11 temperatuur- en vochtigheidssensor aan op een Arduino Mega 2560
- Programmeer de Arduino in C om de sensorgegevens te lezen
- Toon temperatuur- en vochtigheidsgegevens op een LCD die is aangesloten op de Arduino
- Instrueer de Arduino om de sensorgegevens naar een Raspberry Pi 3 Model B+ te sturen
- Schrijf code in Python om de sensorgegevens weer te geven
Waarom een RPi en Arduino samen gebruiken?
De Arduino- en RPi-verbinding kunnen geweldige mogelijkheden bieden als je I/O nodig hebt waar de Arduino in uitblinkt en netwerkcommunicatie/multithreading/visuals waar de RPi veel beter in is.
Met andere woorden, we gaan de Arduino gebruiken voor controle-intensieve taken en de RPi gebruiken voor rekenintensieve taken.
Robuuste versies van Arduino's zijn verkrijgbaar bij Rugged-Circuits
Stap 1: Arduino & RPi-hardware verkrijgen
Arduino-starterkits zijn direct beschikbaar en stellen u in staat om te experimenteren met verschillende soorten sensoren en gadgets. Een starterskit aanschaffen is voordeliger in plaats van verschillende onderdelen los te bestellen. Ik heb hieronder enkele gelieerde links geleverd die verwijzen naar Banggood en Amazon US.
Arduino Starter Kit (Banggood)
Arduino Starter Kit (Amazon VS)
Element14 RPi 3 B+ moederbord (Amazon VS)
Raspberry Pi 3 B+-behuizing (Amazon VS)
32 GB Micro SD-kaart (Amazon VS).
Stap 2: Verbind de DHT11 & LCD met de Arduino
Stap 3: Programmeer de Arduino
#arduino-dht11-lcd2004
#Auteur: Vasoo Veerapen
#https://www.instructables.com/member/VasooV/ #Leest gegevens van een DHT11 die is aangesloten op een Arduino, wordt weergegeven op een LCD2004 en verzendt gegevens serieel naar Raspberry Pi
#erbij betrekken
#erbij betrekken
// LCD-scherm wordt gedefinieerd als apparaatnummer 0x27 op de I2C-bus
LiquidCrystal_I2C lcd (0x27, 20, 4);
// DHT11 is verbonden met pin 8
dht-DHT; #define sensorPin 8
// Raspberry Pi is verbonden met Serial 0
#define serialPi Serial
ongeldige setup() {
lcd.begin(20, 4); // Initialiseert de interface naar het LCD-scherm en specificeert de afmetingen (breedte en hoogte) van het scherm lcd.init(); lcd.achtergrondverlichting(); serialPi.begin (9600); //Arduino naar seriële monitor}
lege lus() {
//Lees sensorgegevens
int sensorData = DHT.read11 (sensorPin); vlottertemperatuur = DHT.temperatuur; vlottervochtigheid = DHT.vochtigheid;
// Afdruktemperatuur
lcd.setCursor(0, 0); lcd.print("Temperatuur"); lcd.afdruk(temperatuur); lcd.print(" C");
//Afdrukvochtigheid
lcd.setCursor(0, 1); lcd.print("Vochtigheid "); lcd.print(vochtigheid); lcd.print(" %");
//Stuur temperatuur- en vochtigheidsgegevens naar Raspberry Pi
serialPi.print("");
//Wacht 10 seconden
vertraging (10000); }
Stap 4: De werkende Arduino, LCD & DHT11 Setup
Stap 5: Verbind de Raspberry Pi met de Arduino
Stap 6: RPi Python-code om de seriële gegevens van de USB-poort te lezen
#rpi-arduino-dht11
#Raspberry Pi leest temperatuur- en vochtigheidssensorgegevens van Arduino
serienummer, tekenreeks, tijd importeren
#In dit voorbeeld wordt /dev/ttyUSB0 gebruikt
#Dit kan in jouw geval veranderen in /dev/ttyUSB1, /dev/ttyUSB2, etc. ser = serial. Serial('/dev/ttyUSB0', 9600)
#Het volgende codeblok werkt als volgt:
#Als er seriële gegevens aanwezig zijn, lees dan de regel, decodeer de UTF8-gegevens, #…verwijder de tekens aan het einde van de regel #…splits de gegevens in temperatuur en vochtigheid #…verwijder de begin- en eindwijzers () #…druk de uitvoer af terwijl True: if ser.in_waiting > 0: rawserial = ser.readline() cookserial = rawserial.decode('utf-8').strip('\r\n') datasplit = cookserial.split(', ') temperatuur = datasplit[0].strip('') print(temperatuur) print(vochtigheid)