Πίνακας περιεχομένων:

Θερμοκρασία & υγρασία από το Arduino στο Raspberry Pi: 6 βήματα
Θερμοκρασία & υγρασία από το Arduino στο Raspberry Pi: 6 βήματα

Βίντεο: Θερμοκρασία & υγρασία από το Arduino στο Raspberry Pi: 6 βήματα

Βίντεο: Θερμοκρασία & υγρασία από το Arduino στο Raspberry Pi: 6 βήματα
Βίντεο: Φτιάξε ενα μικρό μετεωρολογικό σταθμό 2024, Νοέμβριος
Anonim
Θερμοκρασία & υγρασία από το Arduino στο Raspberry Pi
Θερμοκρασία & υγρασία από το Arduino στο Raspberry Pi

Η παρακολούθηση της θερμοκρασίας και της υγρασίας είναι σημαντική εάν έχετε θερμοκήπιο ή έχετε μελλοντικά σχέδια για την αναβάθμιση του θερμοκηπίου σας σε ένα μίνι έξυπνο αγρόκτημα.

Για το πρώτο μου 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

Συνδέστε το DHT11 & LCD στο Arduino
Συνδέστε το 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

Το Working Arduino, LCD & DHT11 Setup
Το Working Arduino, LCD & DHT11 Setup

Βήμα 5: Συνδέστε το Raspberry Pi με το Arduino

Συνδέστε το Raspberry Pi με το Arduino
Συνδέστε το 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 ('') εκτύπωση (θερμοκρασία) εκτύπωση (υγρασία)

Συνιστάται: