Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Η παρακολούθηση της θερμοκρασίας και της υγρασίας είναι σημαντική εάν έχετε θερμοκήπιο ή έχετε μελλοντικά σχέδια για την αναβάθμιση του θερμοκηπίου σας σε ένα μίνι έξυπνο αγρόκτημα.
Για το πρώτο μου Instructable θα δείξω πώς να δημιουργήσω ένα πρωτότυπο:
- Συνδέστε έναν αισθητήρα θερμοκρασίας και υγρασίας DHT11 σε ένα Arduino Mega 2560
- Προγραμματίστε το Arduino σε C για να διαβάσετε τα δεδομένα του αισθητήρα
- Εμφάνιση δεδομένων θερμοκρασίας και υγρασίας σε οθόνη LCD συνδεδεμένη με το Arduino
- Δώστε οδηγίες στο Arduino να στείλει τα δεδομένα του αισθητήρα σε ένα Raspberry Pi 3 Model B+
- Γράψτε κώδικα στην Python για να εμφανίσετε τα δεδομένα του αισθητήρα
Γιατί να χρησιμοποιήσετε RPi και Arduino μαζί;
Η σύνδεση Arduino και RPi μπορεί να επιτρέψει μεγάλες δυνατότητες εάν χρειάζεστε I/O στην οποία υπερέχει το Arduino και επικοινωνία δικτύου/multithreading/visuals, στην οποία το RPi είναι πολύ καλύτερο.
Με άλλα λόγια, θα χρησιμοποιήσουμε το Arduino για τον έλεγχο εντατικών εργασιών και θα χρησιμοποιήσουμε το RPi για τον υπολογισμό εντατικών εργασιών.
Οι ανθεκτικές εκδόσεις του Arduinos είναι διαθέσιμες στο Rugged-Circuits
Βήμα 1: Λήψη υλικού Arduino & RPi
Τα κιτ εκκίνησης Arduino είναι άμεσα διαθέσιμα και σας επιτρέπουν να πειραματιστείτε με διαφορετικούς τύπους αισθητήρων και gadget. Η αγορά ενός κιτ εκκίνησης λειτουργεί φθηνότερα αντί να παραγγείλετε διάφορα εξαρτήματα ξεχωριστά. Έχω δώσει ορισμένους συνδέσμους συνεργατών παρακάτω που δείχνουν το Banggood και το Amazon των ΗΠΑ.
Arduino Starter Kit (Banggood)
Arduino Starter Kit (Amazon US)
Element14 RPi 3 B+ Motherboard (Amazon US)
Θήκη Raspberry Pi 3 B+ (Amazon US)
Κάρτα Micro SD 32 GB (Amazon US).
Βήμα 2: Συνδέστε το DHT11 & LCD στο Arduino
Βήμα 3: Προγραμματίστε το Arduino
#arduino-dht11-lcd2004
#Συγγραφέας: Vasoo Veerapen
#https://www.instructables.com/member/VasooV/ #Διαβάζει δεδομένα από DHT11 συνδεδεμένο σε Arduino, εμφανίζεται σε LCD2004 και στέλνει δεδομένα μέσω σειρών στο Raspberry Pi
#περιλαμβάνω
#περιλαμβάνω
// Η οθόνη LCD ορίζεται ως αριθμός συσκευής 0x27 στο δίαυλο I2C
LiquidCrystal_I2C LCD (0x27, 20, 4);
// Το DHT11 είναι συνδεδεμένο στο pin 8
dht DHT; #καθορίστε τον αισθητήραΠινέλο 8
// Το Raspberry Pi είναι συνδεδεμένο στο Serial 0
#define serialPi Serial
void setup () {
lcd.αρχή (20, 4); // Αρχικοποιεί τη διεπαφή στην οθόνη LCD και καθορίζει τις διαστάσεις (πλάτος και ύψος) της οθόνης lcd.init (). lcd. backlight (); serialPi.begin (9600); // Arduino σε σειριακή οθόνη}
void loop () {
// Διαβάστε δεδομένα αισθητήρα
int sensorData = DHT.read11 (sensorPin); θερμοκρασία πλωτήρα = DHT.temperature; υγρασία επίπλευσης = DHT. υγρασία;
// Θερμοκρασία εκτύπωσης
lcd.setCursor (0, 0); lcd.print ("Θερμοκρασία"); lcd.print (θερμοκρασία) lcd.print ("C");
// Υγρασία εκτύπωσης
lcd.setCursor (0, 1); lcd.print ("Υγρασία"); lcd.print (υγρασία) lcd.print (" %");
// Αποστολή δεδομένων θερμοκρασίας και υγρασίας στο Raspberry Pi
serialPi.print ("");
// Περιμένετε 10 δευτερόλεπτα
καθυστέρηση (10000)? }
Βήμα 4: Το Working Arduino, LCD & DHT11 Setup
Βήμα 5: Συνδέστε το Raspberry Pi με το Arduino
Βήμα 6: Κωδικός Python RPi για ανάγνωση σειριακών δεδομένων θύρας USB
#rpi-arduino-dht11
Το #Raspberry Pi διαβάζει δεδομένα αισθητήρα θερμοκρασίας και υγρασίας από το Arduino
σειριακή εισαγωγή, συμβολοσειρά, χρόνος
#Σε αυτό το παράδειγμα χρησιμοποιείται /dev /ttyUSB0
#Αυτό μπορεί να αλλάξει στην περίπτωσή σας σε/dev/ttyUSB1,/dev/ttyUSB2, κ.λπ. ser = serial. Σειρά ('/dev/ttyUSB0', 9600)
#Το ακόλουθο μπλοκ κώδικα λειτουργεί έτσι:
#Εάν υπάρχουν σειριακά δεδομένα, διαβάστε τη γραμμή, αποκωδικοποιήστε τα δεδομένα UTF8, #… αφαιρέστε το τέλος των χαρακτήρων γραμμής #… χωρίστε τα δεδομένα σε θερμοκρασία και υγρασία #… αφαιρέστε τους δείκτες έναρξης και λήξης () #… εκτυπώστε την έξοδο ενώ Αληθές: εάν ser.in_waiting> 0: rawserial = ser.readline () cookserial = rawserial.decode ('utf-8'). Strip ('\ r / n') datasplit = cookserial.split (',') temperature = datasplit [0].strip ('') εκτύπωση (θερμοκρασία) εκτύπωση (υγρασία)