- התקנת ה- SDK של מכשיר AWS IOT עבור Python ב- Raspberry Pi:
- תרשים מעגל:
- תכנות פטל פי שלך:
- בדיקת תוכנית הפיתון דרך מעטפת חלון:
- עובד:
Raspberry Pi תמיד הייתה הבחירה הראשונה לפיתוח יישומים מבוססי IoT אם מדובר בחישוב כלשהו. עם הגמישות של פיתון וקהילת מפתחים חזקה קל מאוד לאסוף, להיכנס, לנתח או לדווח על סט נתונים באמצעות ה- Pi. במדריך זה נלמד כיצד לשלב את כוחו של Raspberry Pi עם שירות AWS של אמזון כדי לפרסם נתונים באינטרנט.
במדריך זה נשתמש בחיישן DHT11 לקריאת הערך של טמפרטורה ולחות, ואז נתחבר לשירות AWS IOT ונעדכן את ערכי החיישן באמצעות AWS IOT SDK. ניתן לדמיין נתונים אלה במסוף IOT של אמזון כדי לוודא שאנחנו מפרסמים את הנתונים לאינטרנט.
אתה יכול גם להשתמש בשירות החיפוש האלסטי של AWS כדי להביא את ערכי החיישנים האלה ולאחסן אותם במסד נתונים ואז להשתמש בשירות לוח המחוונים של Kibana כדי לדמיין את נתוני החיישן כגרף מסודר. מעניין מספיק? !!! אז, בואו מתחיל…
דרישות קדם:
הדרכה זו מניחה שכבר יצרת את חשבון AWS החינמי שלך ואתה יודע את היסודות לגבי שירות AWS IoT כמו יצירת דבר, תעודה, מדיניות ולפרסם ערכים באמצעותו. אם אחרת קרא את המדריך הבא.
- תחילת העבודה עם Amazon AWS IOT עם MQTT.fx
זה גם מניח שאתה יודע כיצד לממשק חיישן LCD ו- DHT11 ל- Raspberry Pi והספריות שעושות זאת כבר מותקנות על ה- Pi שלך. אם לא, המשך במדריך הבא.
- ממשק DHT11 עם פטל פטל
בסוף ההדרכה לעיל היית יוצר דבר ב- AWS-IOT וכדאי שיהיה לך את כתובת המתווך עבור הדבר שלך יחד עם האישורים הדרושים לגישה לדבר שלך. אנו מניחים גם כי ה- Raspberry pi שלך כבר מוגדר עם מערכת הפעלה ומחובר לאינטרנט. עם אלה במקום בואו נמשיך בהדרכה. אם אתה חדש ב- Raspberry Pi, עבור תחילה תחילת העבודה עם Raspberry pi.
התקנת ה- SDK של מכשיר AWS IOT עבור Python ב- Raspberry Pi:
כדי להשתמש בשירות ה- AWS ב- Pi, אנו יכולים להתקין את אחד משני ה- SDKs. האחד הוא ה- JavaScript SDK המשתמש ב- JavaScript כשפת תכנות והשני הוא ה- Python SDK המשתמש ללא ספק בפייתון כשפת תכנות. כאן אנו בוחרים את ה- Python כ- SDK שלנו מכיוון שנוח לנו יותר בנוח עם Python מאשר JavaScript.
המידע המלא על AWS IOT SDK זמין בדף GitHub שלו.
שלב 1: כדי להתקין את ה- SDK ב- Pi שלך, פתח את המסוף והקלד את הפקודה הבאה
שיבוט git
שלב 2: זה היה צריך להתקין את ספריית aws ב- Pi שלך, עכשיו נווט לתוכה באמצעות הפקודה הבאה.
CD AWS - IOT -device- SDK -python
שלב 3: התקן את קובץ ההתקנה בתוך הספרייה באמצעות השורה למטה
התקנת פיתון
תרשים מעגל:
בצד החומרה יש לנו פטל פי מחובר לחיישן DHT11 ומסך LCD. ה- DHT11 משמש לקבלת הערך של טמפרטורה ולחות ו- LCD משמש להצגת הערכים ומידע ביטול הבאג. תרשים המעגל עבור אותו מוצג להלן.
גם חיישן ה- LCD וגם ה- DHT11 עובדים עם אספקת + 5V ולכן אנו משתמשים בסיכות 5V ב- Raspberry Pi להפעלת שניהם. נגד משיכה בערך 1k משמש על סיכת הפלט של חיישן DHT11, אם אתה משתמש במודול אתה יכול להימנע מנגד זה.
סיר גוזם של 10k מתווסף סיכת Vee של LCD כדי לשלוט ברמת הניגודיות של מסך ה- LCD. מלבד זאת כל הקשרים די ישרים. אבל רשום אילו סיכות GPIO אתה משתמש כדי לחבר את הפינים מכיוון שנצטרך בתוכנית שלנו. התרשים שלהלן אמור לאפשר לך להבין את מספרי הסיכה של GPIO.
השתמש בתרשים וצור את החיבורים על פי תרשים המעגל. השתמשתי בקרש לחם וחוטי מגשר כדי ליצור את החיבורים שלי. מכיוון שהשתמשתי במודול חיברתי אותו ישירות ל- Raspberry Pi. החומרה שלי נראתה כך למטה
תכנות פטל פי שלך:
בתוכנית הפיתון שלנו עלינו לקרוא את ערך הטמפרטורה והלחות, להציג אותו על גבי מסך ה- LCD וגם לפרסם את שני הערכים לדבר ה- Amazon IOT שיצרנו כבר במדריך הקודם. אז וודא שיצרת את הדבר ויש לך את כל שלושת קבצי המפתח וכתובת המתווך של הדבר שיצרת.
בתוכנית הפיתון שלנו עלינו לקשר את שלושת קבצי המפתח כדי ש- Raspberry Pi יוכל לקבל גישה לפרסום ערכים על הדבר שלנו. אז העתק את כל שלושת קבצי המפתח והדבק אותו על שולחן העבודה של ה- Raspberry pi שלך, שכן נצטרך את כתובת הנתיב שלהם בתוכנית שלנו.
את תוכנית הפיתון המלאה תוכלו למצוא בתחתית העמוד הזה, תוכלו להשתמש בתכנית לאחר עריכת כתובת המתווך וספריות הנתיבים על פי הדבר שיצרתם. בהמשך לשאלה הסברתי את הקוד בקטעים קטנים.
אנו מתחילים בייבוא הספריות הנדרשות לפרויקט שלנו. שלוש הספריות העיקריות הן AWS SDK, ספריית LCD וספריית DHT, וודאו שהתקנתם את כל שלושתם את ה- Pi שלכם. ספריית זמן וזמן תאריך יותקנה כברירת מחדל.
מן AWSIoTPythonSDK.MQTTLib יבוא AWSIoTMQTTClient #import מספריית AWS-IOT # בעת הייבוא כדי ליצור עיכוב מן datetime תאריך ייבוא, datetime #To לקבל התאריך והשעה Adafruit_CharLCD יבוא כמו הספרייה LCD LCD #import הספרייה DHT יבוא Adafruit_DHT #import עבור חיישן
בשורה הבאה עלינו לספק את פרטי הדבר כמו כתובת הברוקר, שם הלקוח והנתיב לאישור ולקבצי המפתח. הנה השתמשתי בשם הלקוח כ- new_Client, אתה יכול להשתמש באותו שם או בכל שם לפי בחירתך. יש לשנות את כתובת המתווך לכתובת הדבר שיצרת ולשנות את ספריית הנתיבים בהתאם לדבר שלך. מלבד 2 הדברים האלה אתה לא צריך לשנות שום דבר בשורות הבאות.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / pi / Desktop / ESP32. CA "/ home / pi / Desktop / ESP32_Thing אישורים / private.pem.key", "/ home / pi / Desktop / ESP32_Thing אישורים / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Infinite offline פרסם תור myMQTTClient. configureDrainingFrequency (2) # ניקוז: 2 הרץ myMQTTClient.configureConnectDisconnectTimeout (10) # 10 שניות myMQTTClient.configureMQTTOperationTimeout (5) # 5 שניות
בשלב הבא עלינו לציין את פרטי הסיכה של החיבור שלנו. מספר הסיכה של GPIO של כל סיכה מוקצה לשמו בהתאמה. כאן השתמשנו בחיישן DHT בפין 17 וב- LCD במצב 4 סיביות. הקוד עבור אותו מוצג להלן
sensor_name = Adafruit_DHT.DHT11 # אנו משתמשים בחיישן DHT11 sensor_pin = 17 # החיישן מחובר ל- GPIO17 ב- Pi lcd_rs = 7 #RS של LCD מחובר ל- GPIO 7 ב- PI lcd_en = 8 # EN של LCD מחובר ל- GPIO 8 ב- PI lcd_d4 = 25 # D4 של LCD מחובר ל- GPIO 25 ב- PI lcd_d5 = 24 # D5 של LCD מחובר ל- GPIO 24 ב- PI lcd_d6 = 23 # D6 של LCD מחובר ל- GPIO 23 ב- PI lcd_d7 = 18 # D7 של LCD מחובר ל- GPIO 18 ב- PI lcd_backlight = 0 # LED אינו מחובר ולכן אנו מקצים ל 0
לאחר מכן אנו מאתחלים את ה- LCD ומציגים הודעת מבוא קטנה על גבי מסך ה- LCD. לאחר מכן ננסה להתחבר לדבר ה- AWS באמצעות כתובת המתווך וקבצי המפתח שהוזנו לעיל. אם החיבור הצליח LCD יציג " מחובר לדבר AWS " או שהוא ינסה למשך 10 שניות ואם הוא נכשל, הוא יציג הודעת שגיאה. אם אתה מקבל הודעת שגיאה וודא שיצרת את הדבר בהצלחה וקישרת אותו כראוי לקוד. אתה תמיד יכול לחזור להדרכה הקודמת כדי לראות אם יצרת את הדבר כמו שצריך ב- AWS.
אם time.time () <connection_time: #try מתחבר ל- AWS למשך 10 שניות myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "מחובר", 0) הדפס "הצלחה חיבור לקוח MQTT!" lcd.message ('מחובר ל- \ n דבר AWS') # אם מחובר אחר: הדפס "שגיאה: בדוק את פרטי ה- AWS שלך בתוכנית" lcd.message ('שגיאה: \ n פרטים לא חוקיים') # אם לא מחובר
ברגע שהחיבור נוצר בהצלחה, אנו נכנסים לולאה בזמן האינסופי כדי לפרסם את ערך הזמן, הטמפרטורה והלחות כמטען. המטען כאן צריך להיות תמיד מחרוזת בפורמט JSON. אז ראשית אנו קוראים את התאריך והשעה הנוכחיים ושומרים אותו במשתנה באמצעות השורות הבאות
now = datetime.utcnow () #get תאריך ושעה current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') # קבל את הזמן הנוכחי בפורמט מחרוזת
לאחר מכן אנו קוראים את ערכי הלחות והטמפרטורה יוצרים את חיישן DHT11 ומציגים אותו על גבי מסך LCD. הלחות והטמפרטורה המשתנים יחזיקו את ערך הלחות והטמפרטורה בהתאמה
לחות, טמפרטורה = Adafruit_DHT.read_retry (שם חיישן, חיישן_סיכה) # קרא מהחיישן
ולשמור ערכים בהתאמה במגוון טמפרטורות ולחות
lcd.clear () # נקה את מסך ה- LCD lcd.message ('Temp =%.1f C'% temperature) # הצג את ערך הטמפרטורה lcd.message ('\ nHum =%.1f %%'% לחות) # תצוגה הערך של זמן הלחות. שינה (2) # המתן 2 שניות ואז עדכן את הערכים
כפי שנאמר קודם, המטען צריך להיות בצורה של מחרוזת עם סוגריים מסולסלים סביבו, אנו מוסיפים את ערך התאריך, השעה, הטמפרטורה והלחות לאחר המרת המשתנה לחוטים כמוצג להלן.
# הכן את המטען בתבנית מחרוזת מטען מטען = '{"חותמת זמן": "' + זמן_זמן + '", "טמפרטורה":' + str (טמפרטורה) + ', "לחות":' + str (לחות) + '}'
לבסוף לאחר שהמטען מוכן עלינו לפרסם אותו ללקוח MQTT. ניתן לעשות זאת באמצעות הפקודה myMQTTclient.publish . תוך כדי פרסום לדבר אנו צריכים לתת לו גם שם, כאן קראתי לו DHT11 / data אבל אתה יכול לתת לו שם כל דבר שתרצה. אך וודא שאתה זוכר את השם מכיוון שנצטרך להירשם מהדבר שלנו כדי להציג את הנתונים.
בדיקת תוכנית הפיתון דרך מעטפת חלון:
לאחר שהתוכנית מוכנה, הפעל אותה על פי בחירתך. השתמשתי ב- Python IDE להפעלת התוכנית בחלון הפגז. אם הכל בסדר, אתה אמור לקבל חיבור הודעה בהצלחה וכל מטען המטען צריך להיות מוצג על החלון. אתה יכול לבדוק אם ערכי הטמפרטורה והלחות נקראים נכון. המטען יעודכן כל 5 שניות. חלון המעטפת ייראה בערך כך למטה
אם יש לך בעיה וודא שמסרת את פרטי המפתח הנכונים ואת כתובת המתווך, בדוק גם אם ניתן לחבר את הדבר באמצעות תוכנת MQTT.fx. אם הקליפה מציגה הצלחה בחיבור לקוח MQTT ותולה שם, המשמעות היא שחיישן DHT11 אינו מגיב בדוק אם התחברת לסיכה הנכונה והחיישן פועל.
עובד:
לאחר שתפעיל את התוכנית ותקבל את הפרטים לעיל על חלון הפגז זה אומר שהתוכנית מגיבה כראוי והערכים מועלים לשרת AWS של Amazon. אתה יכול גם להבחין בתצוגת LCD כדי לבדוק אם כתוב שם פורסם ל- AWS-IoT כל 5 שניות כמוצג להלן.
אנו יכולים להיכנס ליישום MQTT.fx ולהירשם לנושא DHT11 / data . אז נוכל לקבל את כל הנתונים שמתפרסמים על ידי ה- Raspberry Pi. נתונים אלה יעודכנו גם כל 5 שניות; מסך MQTT שלך ייראה בערך כך למטה
כפי שניתן לראות המטען מתקבל על תוכנת MQTT כמודגשת בכחול. תוכלו גם לצפות בסרטון למטה בכדי לדעת כיצד פועל הפרויקט. מאז יש לנו את הנתונים שלנו באינטרנט אנחנו יכולים להשתמש בהם עם כלים אחרים המסופקים על ידי אמזון כמו חיפוש אלסטי ולמבדה כדי לשמור את הנתונים במסד נתונים או להמחיש אותם בגרף. יש הרבה יותר יישומים, בהתבסס על האופן שבו עלינו ליהנות מהנתונים.
מקווה שהבנת את ההדרכה ונהנית לבנות משהו דומה, אם יש לך בעיה לבצע את זה, פרסם אותה בסעיף ההערות למטה או השתמש בפורומים לעזרה טכנית.