Πίνακας περιεχομένων:
- Βήμα 1: Τα πράγματα που απαιτούνται για το έργο
- Βήμα 2: Λήψη και εγκατάσταση του Arduino IDE στο Raspberry Pi
- Βήμα 3: Κωδικός για το Arduino
- Βήμα 4: Ρύθμιση Raspberry Pi
- Βήμα 5: Python Scipt
- Βήμα 6: Διάγραμμα κυκλώματος
- Βήμα 7: Αποτέλεσμα
Βίντεο: Σχεδιάστε δεδομένα DHT11 χρησιμοποιώντας Raspberry Pi και Arduino UNO: 7 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Αυτό το οδηγό εξηγεί πώς σχεδιάζω δεδομένα DHT11 του αισθητήρα θερμοκρασίας χρησιμοποιώντας Arduino Uno και Raspberry Pi. Σε αυτόν τον αισθητήρα θερμοκρασίας συνδέεται με το Arduino Uno και το Arduino Uno συνδέεται σειριακά με το Raspberry Pi. Στο Raspberry Pi Side, οι βιβλιοθήκες matplotlib, numpy και drawnow χρησιμοποιούνται για την απεικόνιση γραφημάτων.
Βήμα 1: Τα πράγματα που απαιτούνται για το έργο
1. Raspberry Pi
2. Arduino Uno
3. Αισθητήρας θερμοκρασίας DHT11
4. Jumper Wires
5. Breadboard
Βήμα 2: Λήψη και εγκατάσταση του Arduino IDE στο Raspberry Pi
Σημείωση:- Μπορείτε να χρησιμοποιήσετε το Arduino IDE των Windows, Linux ή Mac για να ανεβάσετε το σκίτσο στο Arduino UNO.
Το πρώτο βήμα είναι να εγκαταστήσετε το Arduino IDE για αυτό το ανοιχτό πρόγραμμα περιήγησης στο Raspberry Pi και να ανοίξετε τον παρακάτω σύνδεσμο
Arduino Προηγούμενο IDE
Στη συνέχεια, κατεβάστε την έκδοση Linux ARM και εξαγάγετε την χρησιμοποιώντας την εντολή
tar -xf όνομα αρχείου
Μετά την εξαγωγή θα δείτε έναν νέο κατάλογο. Εδώ χρησιμοποιώ το arduino-1.8.2 IDE. Στη συνέχεια, μεταβείτε στον κατάλογο χρησιμοποιώντας την εντολή.
cd arduino-1.8.1
Για να εκτελέσετε το Arduino IDE, χρησιμοποιήστε αυτήν την εντολή στον κατάλογο arduino-1.8.2
./arduino
Πώς να χρησιμοποιήσετε τις βιβλιοθήκες
Για να εγκαταστήσετε τυχόν βιβλιοθήκες στο Arduino, απλώς κατεβάστε τη βιβλιοθήκη και επικολλήστε το στο φάκελο arduino 1.8.2 ==> βιβλιοθήκες.
ΣΗΜΕΙΩΣΗ:-Βεβαιωθείτε ότι δεν υπάρχει (-) στο φάκελο βιβλιοθήκης για ex (DHT-sensor). Εάν υπάρχει (-), μετονομάστε το.
θα χρησιμοποιήσουμε δύο βιβλιοθήκες σε αυτό το διδακτικό, DHT_Sensor και Adafruit_Sensor
Βήμα 3: Κωδικός για το Arduino
Τώρα, ας πάρουμε τον python και τον Arduino να μιλήσουν μαζί. Πρώτον, χρειαζόμαστε ένα απλό πρόγραμμα για την αποστολή δεδομένων από το Arduino μέσω της σειριακής θύρας. Το ακόλουθο πρόγραμμα είναι ένα απλό πρόγραμμα που θα έχει τον αριθμό Arduino και θα στέλνει τα δεδομένα στη σειριακή θύρα.
Κωδικός Arduino
#include "DHT.h" float tempC; // Μεταβλητή ή θερμοκρασία συγκράτησης σε C float tempF; // Μεταβλητή για συγκράτηση θερμοκρασίας σε υγρασία F float. // Μεταβλητή για συγκράτηση της ένδειξης πίεσης
#define DHTPIN 7 // σε ποιο ψηφιακό pin είμαστε συνδεδεμένοι
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Αρχικοποίηση αισθητήρα DHT.
DHT dht (DHTPIN, DHTTYPE);
void setup () {Serial.begin (115200); // ενεργοποιήστε τη σειριακή οθόνη
dht.begin (); // αρχικοποίηση dht}
void loop () {tempC = dht.readTemperature (); // Φροντίστε να δηλώσετε τις μεταβλητές σας
υγρασία = dht.readHumidity (); // Διαβάστε Υγρασία
Serial.print (tempC);
Serial.print (",");
Serial.print (υγρασία)?
Serial.print ("\ n"); // για νέο linedelay (2000). // Παύση μεταξύ των ενδείξεων. }
Μόλις καταρτιστεί το σκίτσο, επιλέξτε πίνακα και θύρα και ανεβάστε το.
Βήμα 4: Ρύθμιση Raspberry Pi
Μόλις φορτωθεί ο κώδικας, εγκαταστήστε μερικές βιβλιοθήκες, ώστε να μπορέσουμε να σχεδιάσουμε το γράφημα δεδομένων που προέρχεται σειριακά από το Arduino Uno.
1. Το PySerial είναι μια βιβλιοθήκη που παρέχει υποστήριξη για σειριακές συνδέσεις σε μια ποικιλία διαφορετικών συσκευών. Για να το εγκαταστήσετε χρησιμοποιήστε την εντολή.
Sudo apt-get install python-serial
2. Το Numpy είναι ένα πακέτο που ορίζει ένα πολυδιάστατο αντικείμενο πίνακα και συναφείς γρήγορες μαθηματικές συναρτήσεις που λειτουργούν σε αυτό. Παρέχει επίσης απλές ρουτίνες για γραμμική άλγεβρα και FFT (Fast Fourier Transform) και εξελιγμένη παραγωγή τυχαίων αριθμών. Μπορείτε να το εγκαταστήσετε με πολλούς τρόπους είτε χρησιμοποιώντας το apt πακέτο είτε το pip. Εδώ εγκαθιστώ χρησιμοποιώντας pip για αυτό πρέπει πρώτα να εγκαταστήσουμε το pip
sudo apt-get install python-pip python-dev build-essential
sudo pip install numpy
ή αν θέλετε να χρησιμοποιήσετε ένα κατάλληλο πακέτο
sudo apt install python-numpy
3. Το Matplotlib είναι μια βιβλιοθήκη σχεδίασης 2D που παρέχει ένα αντικειμενοστραφές API για την ενσωμάτωση γραφημάτων σε εφαρμογές χρησιμοποιώντας εργαλεία GUI γενικής χρήσης όπως Tkinter, wxPython, Qt ή GTK+. Για να το εγκαταστήσετε χρησιμοποιήστε την εντολή
sudo pip install matplotlib
ή
sudo apt εγκατάσταση python-matplotlib
4. Το Drawnow χρησιμοποιείται γενικά για να δείτε τα αποτελέσματα μετά από κάθε επανάληψη καθώς χρησιμοποιούμε το "imshow" στο MATLAB. Για να το εγκαταστήσετε χρησιμοποιήστε την εντολή
sudo pip εγκατάσταση drawnow
Βήμα 5: Python Scipt
Το επόμενο βήμα είναι να γράψετε ένα σενάριο python για το οποίο μπορείτε να χρησιμοποιήσετε οποιοδήποτε πρόγραμμα επεξεργασίας για να το γράψετε.
1. Σχεδιάστε δεδομένα σε ένα γράφημα
εισαγωγή σειριακής σειράς # εισαγωγή σειριακής βιβλιοθήκης
εισαγωγή numpy # Εισαγωγή numpy
εισαγωγή matplotlib.pyplot ως plt #import βιβλιοθήκη matplotlib
από εισαγωγή έλξης *
tempC = #Eempty arrayhumidity =
arduino = serial. Serial ("/dev/ttyACM0", 115200)
plt.ion () # διαδραστική λειτουργία για να σχεδιάσετε ζωντανό datacount = 0
def makeFig (): #Δημιουργήστε μια συνάρτηση που κάνει την επιθυμητή γραφική παράσταση
plt.ylim (20, 30) #Ορίστε τιμές min min και max
plt.title ('Δεδομένα πραγματικού χρόνου DHT11') #Δημιουργήστε τον τίτλο
plt.grid (True) #Ενεργοποιήστε το πλέγμα
plt.ylabel ('Temp C') #Ορίστε το ylabel
plt.plot (tempC, 'b^-', label = 'Degree C') #plot the temperature
plt.legend (loc = 'επάνω δεξιά') #plot the legend
plt2 = plt.twinx () #Δημιουργία δεύτερου άξονα y
plt.ylim (50, 70) #Ορίστε όρια δεύτερου άξονα y
plt2.plot (υγρασία, 'g*-', label = 'Υγρασία') #plot δεδομένα πίεσης
plt2.set_ylabel ("Υγρασία") #ετικέτα δεύτερος άξονας y
plt2.ticklabel_format (useOffset = False)
plt2.legend (loc = 'επάνω αριστερά')
ενώ True: # Ενώ βρόχος που βγαίνει για πάντα
while (arduino.inWaiting () == 0): #Περιμένετε εδώ μέχρι να υπάρχουν δεδομένα
περάστε #μην κάνετε τίποτα
arduinoString = arduino.readline ()
dataArray = arduinoString.split (',') #Διαχωρίστε το σε έναν πίνακα
temp = float (dataArray [0])
hum = float (dataArray [1])
tempC.append (temp)
υγρασία. προσάρτηση (βουητό)
drawnow (makeFig)
plt.pause (.000001)
count = count+1 if (count> 20): #μόνο πάρτε τα τελευταία 20 δεδομένα αν τα δεδομένα είναι περισσότερα θα εμφανιστούν πρώτα
tempC.pop (0)
υγρασία. ποπ (0)
2. Να σχεδιάσετε χωριστά την υγρασία και τη θερμοκρασία
εισαγωγή σειριακής σειράς # εισαγωγή σειριακής βιβλιοθήκης
εισαγωγή numpy # Εισαγωγή numpy
εισαγωγή matplotlib.pyplot ως plt #import βιβλιοθήκη matplotlib
από εισαγωγή έλξης *
tempC = #Κενός πίνακας
υγρασία =
arduino = serial. Serial ("/dev/ttyACM0", 115200) #Σειριακή θύρα στην οποία είναι συνδεδεμένο το arduino και Baudrate
plt.ion () #Πείτε στο matplotlib ότι θέλετε η διαδραστική λειτουργία να σχεδιάζει ζωντανά δεδομένα
def CreatePlot (): #Δημιουργήστε μια συνάρτηση που κάνει την επιθυμητή γραφική παράσταση
plt.subplot (2, 1, 1) #eψος, Πλάτος, Πρώτο οικόπεδο
plt.ylim (22, 34) #Ορίστε τιμές min min και max
plt.title ('Δεδομένα πραγματικού χρόνου DHT11') #Δημιουργήστε τον τίτλο
plt.grid (True) #Ενεργοποιήστε το πλέγμα
plt.ylabel ("Temp C") #Ορίστε ylabels
plt.plot (tempC, 'b^-', label = 'Degree C') #plot the temperature
plt.legend (loc = 'άνω κέντρο') #σχεδιάστε τον μύθο
plt.subplot (2, 1, 2) # ightψος, Πλάτος, Δεύτερο οικόπεδο
plt.grid (True)
plt.ylim (45, 70) #Ορίστε όρια δεύτερου άξονα y
plt.plot (υγρασία, 'g*-', label = 'Υγρασία (g/m^3)') #plot δεδομένα υγρασίας
plt.ylabel ("Υγρασία (g/m^3)") #σήμα δεύτερου άξονα y
plt.ticklabel_format (useOffset = False) #για διακοπή του άξονα y σε αυτόματη κλίμακα
plt.legend (loc = 'άνω κέντρο')
ενώ True: # Ενώ βρόχος που βγαίνει για πάντα
while (arduino.inWaiting () == 0): #Περιμένετε εδώ έως ότου υπάρξει διέλευση δεδομένων #μην κάνετε τίποτα
arduinoString = arduino.readline () #διαβάστε τα δεδομένα από σειριακή θύρα
dataArray = arduinoString.split (',') #Διαχωρίστε το σε έναν πίνακα
temp = float (dataArray [0]) #Μετατρέψτε το πρώτο στοιχείο σε κυμαινόμενο αριθμό και τοποθετήστε το temp
hum = float (dataArray [1]) #Μετατρέψτε το δεύτερο στοιχείο σε κυμαινόμενο αριθμό και τοποθετήστε το βουητό
tempC.append (temp) #Δημιουργήστε τον πίνακα tempC μας προσθέτοντας ανάγνωση temp
υγρασία.προσθέστε (βουητό) #Χτίσιμο του πίνακα υγρασίας μας με την προσθήκη ανάγνωσης βουητού
drawnow (CreatePlot)
plt.pause (.000001)
μέτρηση = μέτρηση+1
if (count> 20): #πάρτε μόνο τα τελευταία 20 δεδομένα, εάν τα δεδομένα είναι περισσότερα, θα εμφανιστούν πρώτα
tempC.pop (0) # σκάει το πρώτο στοιχείο
υγρασία. ποπ (0)
Βήμα 6: Διάγραμμα κυκλώματος
Arduino ==> DHT11
3.3V ==> VCC
GND ==> GND
D7 ==> ΕΞΩ
Συνιστάται:
(Έργο IOT) Λάβετε δεδομένα καιρού χρησιμοποιώντας το ESP8266 και το Openweather API: 5 βήματα
(Έργο IOT) Λάβετε δεδομένα καιρού χρησιμοποιώντας το ESP8266 και το Openweather API: Σε αυτό το διδακτικό θα δημιουργήσουμε ένα απλό έργο IOT στο οποίο θα λαμβάνουμε τα δεδομένα καιρού της πόλης μας από το openweather.com/api και θα τα εμφανίζουμε χρησιμοποιώντας λογισμικό επεξεργασίας
Δημιουργήστε όμορφα σχέδια από ζωντανά δεδομένα Arduino (και αποθηκεύστε τα δεδομένα στο Excel): 3 βήματα
Δημιουργήστε όμορφα σχέδια από ζωντανά δεδομένα Arduino (και αποθηκεύστε τα δεδομένα στο Excel): Σε όλους μας αρέσει να παίζουμε με τη λειτουργία P … lotter στο Arduino IDE. Ωστόσο, ενώ μπορεί να είναι χρήσιμο για βασικές εφαρμογές, τα δεδομένα διαγράφονται όσο περισσότερο προστίθενται σημεία και δεν είναι ιδιαίτερα ευχάριστο στα μάτια. Ο σχεδιαστής Arduino IDE δεν
Σχεδιάζοντας ζωντανά δεδομένα αισθητήρα θερμοκρασίας (TMP006) χρησιμοποιώντας το MSP432 LaunchPad και Python: 9 βήματα
Σχεδιάζοντας ζωντανά δεδομένα αισθητήρα θερμοκρασίας (TMP006) χρησιμοποιώντας MSP432 LaunchPad και Python: Το TMP006 είναι ένας αισθητήρας θερμοκρασίας που μετρά τη θερμοκρασία ενός αντικειμένου χωρίς να χρειάζεται να έρθει σε επαφή με το αντικείμενο. Σε αυτό το σεμινάριο θα σχεδιάσουμε ζωντανά δεδομένα θερμοκρασίας από το BoosterPack (TI BOOSTXL-EDUMKII) χρησιμοποιώντας Python
Το Arduino στέλνει δεδομένα Dht11 στον MySQL Server (PHPMYADMIN) χρησιμοποιώντας Python: 5 βήματα
Το Arduino στέλνει δεδομένα Dht11 στον MySQL Server (PHPMYADMIN) χρησιμοποιώντας Python: Σε αυτό το έργο έχω διασυνδέσει το DHT11 με το arduino και στη συνέχεια στέλνω δεδομένα της dht11 που είναι υγρασία και θερμοκρασία στη βάση δεδομένων phpmyadmin. Σε αντίθεση με το προηγούμενο έργο μας, δεν χρησιμοποιούμε ασπίδα Ethernet σε αυτή την περίπτωση, εδώ διαβάζουμε απλώς
Καταγράψτε δεδομένα και σχεδιάστε ένα γράφημα στο διαδίκτυο χρησιμοποιώντας NodeMCU, MySQL, PHP και Chartjs.org: 4 βήματα
Καταγράψτε δεδομένα και σχεδιάστε ένα γράφημα στο διαδίκτυο χρησιμοποιώντας NodeMCU, MySQL, PHP και Chartjs.org: Αυτό το εγχειρίδιο περιγράφει πώς μπορούμε να χρησιμοποιήσουμε τον πίνακα Node MCU για τη συλλογή δεδομένων από πολλούς αισθητήρες, την αποστολή αυτών των δεδομένων σε ένα φιλοξενούμενο αρχείο PHP το οποίο στη συνέχεια προσθέτει τα δεδομένα σε μια βάση δεδομένων MySQL. Στη συνέχεια, τα δεδομένα μπορούν να προβληθούν στο διαδίκτυο ως γράφημα, χρησιμοποιώντας το chart.js.A ba