תוכן עניינים:

עלילת נתוני DHT11 באמצעות פטל פי וארדואינו UNO: 7 שלבים
עלילת נתוני DHT11 באמצעות פטל פי וארדואינו UNO: 7 שלבים

וִידֵאוֹ: עלילת נתוני DHT11 באמצעות פטל פי וארדואינו UNO: 7 שלבים

וִידֵאוֹ: עלילת נתוני DHT11 באמצעות פטל פי וארדואינו UNO: 7 שלבים
וִידֵאוֹ: אלימות מתנחלים עלילת דם: נעמי קאהן, רגבים 2024, נוֹבֶמבֶּר
Anonim
עלילת נתוני DHT11 באמצעות פטל פי וארדואינו UNO
עלילת נתוני DHT11 באמצעות פטל פי וארדואינו UNO

מדריך זה מסביר כיצד אני משרטט נתוני חיישן טמפרטורה של DHT11 באמצעות Arduino Uno ו- Raspberry Pi. בחיישן טמפרטורה זה מחובר עם Arduino Uno ו- Arduino Uno מחובר באופן סדרתי עם Raspberry Pi. ב- Raspberry Pi Side משתמשים בספריות matplotlib, numpy ו- drawow לשרטוט גרפים.

שלב 1: הדברים הדרושים לפרויקט

הדברים הדרושים לפרויקט
הדברים הדרושים לפרויקט
הדברים הדרושים לפרויקט
הדברים הדרושים לפרויקט
הדברים הדרושים לפרויקט
הדברים הדרושים לפרויקט

1. פטל פטל

2. ארדואינו אונו

3. חיישן טמפרטורה DHT11

4. חוטי מגשר

5. לוח לחם

שלב 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 1.8.2 ==> ספריות.

הערה:-ודא שאין (-) בתיקיית הספרייה לשעבר (חיישן DHT). אם יש (-), שנה את שמו.

נשתמש בשתי ספריות במדריך זה, DHT_Sensor ו- Adafruit_Sensor

שלב 3: קוד עבור Arduino

קוד עבור Arduino
קוד עבור Arduino

עכשיו, בואו נדבר על פייתון וארדואינו ביחד. ראשית אנו זקוקים לתוכנית פשוטה להעביר נתוני שליחת Arduino מעל היציאה הטורית. התוכנית הבאה היא תכנית פשוטה שתספור את ה- Arduino ותשלח את הנתונים ליציאה הטורית.

קוד ארדואינו

#כלול טמפ 'צף "DHT.h"; // משתנה או החזקת טמפרטורה ב- C צף tempF; // משתנה להחזקת טמפ 'בלחות צף F; // משתנה לקריאת לחץ

#define DHTPIN 7 // לאיזה סיכה דיגיטלית אנחנו מחוברים

#define DHTTYPE DHT11 // DHT 11

//#הגדר DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#הגדר DHTTYPE DHT21 // DHT 21 (AM2301)

// אתחל חיישן DHT.

DHT dht (DHTPIN, DHTTYPE);

הגדרת void () {Serial.begin (115200); // הפעל צג סדרתי

dht.begin (); // לאתחל dht}

לולאת חלל () {tempC = dht.readTemperature (); // הקפד להצהיר על המשתנים שלך

לחות = dht.readHumidity (); // קרא לחות

Serial.print (tempC);

Serial.print (",");

Serial.print (לחות);

Serial.print ("\ n"); // עבור linedelay חדש (2000); // השהה בין הקריאות. }

לאחר רישום הסקיצה, בחר לוח ויציאה והעלה אותו.

שלב 4: הגדרת פטל פטל

הגדרת פטל פטל
הגדרת פטל פטל

לאחר העלאת הקוד, התקן כמה ספריות על מנת שנוכל לתוות גרף נתונים המגיע באופן סדרתי מ- Arduino Uno.

1. PySerial היא ספרייה המספקת תמיכה בחיבורים סדרתיים במגוון מכשירים שונים. כדי להתקין אותו השתמש בפקודה.

סודו apt-get להתקין python-serial

2. Numpy היא חבילה המגדירה אובייקט מערך רב ממדי ופונקציות מתמטיות מהירות המשויכות הפועלות עליו. הוא מספק גם שגרות פשוטות לאלגברה לינארית ו- FFT (Fast Fourier Transform) ולייצור מספר אקראי מתוחכם. אתה יכול להתקין אותו בדרכים רבות או להשתמש בחבילה מתאימה או בפיפ. כאן אני מתקין באמצעות pip לשם כך ראשית עלינו להתקין פיפ

sudo apt-get להתקין python-pip python-dev build-essential

sudo pip התקן numpy

או אם אתה רוצה להשתמש בחבילה apt

sudo apt להתקין python-numpy

3. Matplotlib היא ספריית מזימות דו-ממדית המספקת ממשק API מונחה עצמים להטמעת עלילות ביישומים באמצעות ערכות כלי GUI למטרות כלליות כמו Tkinter, wxPython, Qt או GTK+. כדי להתקין אותו השתמש בפקודה

sudo pip התקן matplotlib

אוֹ

sudo apt להתקין python-matplotlib

4. בדרך כלל משתמשים ב- Drawnow כדי לראות את התוצאות לאחר כל איטרציה כאשר אנו משתמשים ב- "imshow" ב- MATLAB. כדי להתקין אותו השתמש בפקודה

sudo pip התקן drawow

שלב 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

השלב הבא הוא לכתוב סקריפט פייתון לשם כך תוכל להשתמש בכל עורך כדי לכתוב אותו.

1. משרטט נתונים בגרף אחד

יבוא ספריית סידורי # יבוא סידורי

יבוא numpy # ייבוא numpy

ייבא matplotlib.pyplot כ plt #import matplotlib ספרייה

מיבוא משיכה *

tempC = #מערך ריק לחות =

arduino = serial. Serial ("/dev/ttyACM0", 115200)

plt.ion () # מצב אינטראקטיבי להתוויית נתוני נתונים חיים = 0

def makeFig (): #צור פונקציה שעושה את העלילה הרצויה שלנו

plt.ylim (20, 30) #הגדר ערכי min ו- max

plt.title ('נתוני DHT11 בזמן אמת') #הצג את הכותרת

plt.grid (נכון) #הפעל את הרשת

plt.ylabel ('טמפ' C ') #הגדר את התיוג

plt.plot (tempC, 'b^-', label = 'Degree C') #זמם את הטמפרטורה

plt.legend (loc = 'ימין עליון') #זממו את האגדה

plt2 = plt.twinx () #צור ציר y שני

plt.ylim (50, 70) #הגדר גבולות של ציר y השני

plt2.plot (לחות, 'g*-', תווית = 'לחות') נתוני לחץ #עלילה

plt2.set_ylabel ('לחות') #label ציר y השני

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'שמאל למעלה')

בעוד שזה נכון: # בעוד לולאה שלולאת לנצח

while (arduino.inWaiting () == 0): #המתן כאן עד שיהיו נתונים

תעבור #אל תעשה כלום

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #לפצל אותו למערך

temp = float (dataArray [0])

זמזום = צף (dataArray [1])

tempC. append (temp)

לחות. להוסיף (לזמזם)

צייר (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) #יציאה טורית שאליה מחובר הארדואינו ו- Baudrate

plt.ion () #תגיד matplotlib שאתה רוצה מצב אינטראקטיבי לשרטט נתונים חיים

def CreatePlot (): #צור פונקציה שעושה את העלילה הרצויה שלנו

חלקת משנה (2, 1, 1) #גובה, רוחב, חלקה ראשונה

plt.ylim (22, 34) #הגדר ערכי min ו- max

plt.title ('נתוני DHT11 בזמן אמת') #הצג את הכותרת

plt.grid (נכון) #הפעל את הרשת

plt.ylabel ('טמפ' C ') #קבע תוויות

plt.plot (tempC, 'b^-', label = 'Degree C') #זמם את הטמפרטורה

plt.legend (loc = 'מרכז עליון') #זממו את האגדה

חלקת משנה (2, 1, 2) # גובה, רוחב, חלקה שנייה

plt.grid (נכון)

plt.ylim (45, 70) #הגדר גבולות של ציר y השני

plt.plot (לחות, 'g*-', תווית = 'לחות (g/m^3)') #נתוני לחות #עלילה

plt.ylabel ('לחות (g/m^3)') #ציר y השני #תווית

plt.ticklabel_format (useOffset = False) #לעצירת ציר y בקנה מידה אוטומטי

plt.legend (loc = 'מרכז עליון')

בעוד שזה נכון: # בעוד לולאה שלולאת לנצח

while (arduino.inWaiting () == 0): #המתן כאן עד שיהיו נתונים תעבור #אל תעשה כלום

arduinoString = arduino.readline () #קרא את הנתונים מיציאה טורית

dataArray = arduinoString.split (',') #לפצל אותו למערך

temp = float (dataArray [0]) #המרת רכיב ראשון למספר צף והכנס זמני

hum = float (dataArray [1]) #הפוך את האלמנט השני למספר צף והכניס לזמזום

tempC.append (temp) #בנה את מערך ה- tempC שלנו על ידי הוספת קריאה זמנית

moist.append (hum) #בניית מערך הלחות שלנו על ידי הוספת קריאת זמזום

drawow (CreatePlot)

plt.pause (.000001)

ספירה = ספירה+1

if (count> 20): #קח רק את 20 הנתונים האחרונים אם הנתונים יותר הם יצוצו קודם

tempC.pop (0) אלמנט ראשון קופץ החוצה

לחות.פופ (0)

שלב 6: תרשים מעגלים

תרשים מעגלים
תרשים מעגלים
תרשים מעגלים
תרשים מעגלים
תרשים מעגלים
תרשים מעגלים

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> החוצה

מוּמלָץ: