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

Σχεδιάστε δεδομένα DHT11 χρησιμοποιώντας Raspberry Pi και Arduino UNO: 7 βήματα
Σχεδιάστε δεδομένα DHT11 χρησιμοποιώντας Raspberry Pi και Arduino UNO: 7 βήματα

Βίντεο: Σχεδιάστε δεδομένα DHT11 χρησιμοποιώντας Raspberry Pi και Arduino UNO: 7 βήματα

Βίντεο: Σχεδιάστε δεδομένα DHT11 χρησιμοποιώντας Raspberry Pi και Arduino UNO: 7 βήματα
Βίντεο: Lesson 22: using SSD1306 OLED display | Arduino Step By Step Course 2024, Ενδέχεται
Anonim
Σχεδιάστε δεδομένα DHT11 χρησιμοποιώντας Raspberry Pi και Arduino UNO
Σχεδιάστε δεδομένα DHT11 χρησιμοποιώντας Raspberry Pi και Arduino UNO

Αυτό το οδηγό εξηγεί πώς σχεδιάζω δεδομένα 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 στο Raspberry Pi
Κατεβάστε και εγκαταστήστε το Arduino IDE στο Raspberry Pi
Κατεβάστε και εγκαταστήστε το Arduino IDE στο Raspberry Pi
Κατεβάστε και εγκαταστήστε το Arduino IDE στο Raspberry Pi
Κατεβάστε και εγκαταστήστε το Arduino IDE στο Raspberry Pi
Κατεβάστε και εγκαταστήστε το 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

Κωδικός για το Arduino
Κωδικός για το 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

Ρύθμιση Raspberry Pi
Ρύθμιση 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 Scipt
Python Scipt
Python Scipt
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 ==> ΕΞΩ

Συνιστάται: