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

ראה פתרון IoTea LoRa (עדכון 1811): 5 שלבים
ראה פתרון IoTea LoRa (עדכון 1811): 5 שלבים

וִידֵאוֹ: ראה פתרון IoTea LoRa (עדכון 1811): 5 שלבים

וִידֵאוֹ: ראה פתרון IoTea LoRa (עדכון 1811): 5 שלבים
וִידֵאוֹ: Privacy, Security, Society - Computer Science for Business Leaders 2016 2024, יולי
Anonim
ראה פתרון IoTea LoRa (עדכון 1811)
ראה פתרון IoTea LoRa (עדכון 1811)

אינטרנט+ הוא מושג פופולרי כיום. הפעם ניסינו את האינטרנט פלוס חקלאות כדי להפוך את גינת התה לצמחת תה האינטרנט.

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

רכיבי חומרה

  • גרוב - חיישן פחמן דו חמצני (MH -Z16)
  • גרוב - חיישן אור דיגיטלי
  • גרוב - חיישן אבק (PPD42NS)
  • גרוב-חיישן חמצן (ME2-O2-Ф20)
  • חיישן לחות וטמפרטורה בקרקע
  • LoRa LoRaWAN Gateway - ערכת 868MHz עם Raspberry Pi 3
  • גרוב - חיישן טמפ & הומי וברומטר (BME280)

אפליקציות תוכנה ושירותים מקוונים

Microsoft Visual Studio 2015

שלב 2: סיפור

על הר מנגדינג צפונית מזרחית ליאן, סצ'ואן, רכס ההרים עובר ממערב למזרח בים ירוק. זהו מראה מוכר ביותר לדנג בן ה -36, אחד ממעטרי התה המעטים בני דורו, עם מטע של 50 מי (= 3.3 דונם) הממוקם בגובה 1100 מ 'מעל פני הים. דנג מגיע ממשפחה של מכשירי תה, אבל המשך המורשת המשפחתית היא משימה לא פשוטה. "התה שלנו גדל בגובה רב בסביבה אורגנית כדי להבטיח את איכותו המעולה. אך יחד עם זאת, צפיפות הגידול נמוכה, העלות גבוהה והנביטה לא אחידה, מה שהופך את התה לקשה לקציר. לכן תה הררי הוא בדרך כלל קציר קטן וערכיהם אינם באים לידי ביטוי בשוק. "בשנתיים האחרונות ניסה דנג להעלות את המודעות של הצרכנים לתה גבוה כדי לקדם את ערכם. וכשהוא פגש את פאן, שחיפש מטע ליישום טכנולוגיית ה- IoTea של Seeed, נעשתה התאמה מושלמת לפתרון.

שלב 3: חיבור חומרה

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

חלק כוח

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

חיישנים חלק

בחלק חיישנים, בגלל ריבוי החיישנים, השתמשנו בתחנת מזג אוויר, וגם יצרנו סוגר אקרילי להתקנתם.

תמונה
תמונה

כפי שאתה רואה בתמונה למעלה, חיישן אור דיגיטלי תמיד למעלה, כך שהוא יכול לאסוף מידע על תאורה. החיישנים שיפיקו חום מותקנים באמצע סוגר האקריליק, כגון חיישן O2, חיישן אבק וחיישן CO2. סוף סוף, חיישן טמפרטורה ולחות בתחתית סוגר האקריליק.

חוץ מזה, חיישן טמפרטורת ולחות הקרקע מותקן לבד באדמה. חלק הצומת

תמונה
תמונה

Node Part הוא Seeeduino LoRaWan המותקן בקופסה עמידה למים, הוא מתחבר לחשמל ולחיישנים באמצעות מפרקי מים. ביניהם, חיישן אבק מתחבר לסיכה הדיגיטלית של LoRaWan D3, חיישן CO2 מתחבר לפין D4 & D5, חיישן קרקע מתחבר לסיכה D6 & D7, חיישן O2 מתחבר לפין אנלוגי A1 וחיישן אור וחיישן ברומטר מתחברים ליציאת I2C.

הערה: יש להוסיף נגד 10k בין הכבל הכחול (נתונים) הכחול של חיישן הקרקע לכבל האדום (Vcc).

Seeeduino LoRaWan אוספת ערך חיישנים מדי פעם ושולחת אותם ל- Gateway באמצעות LoRa. פורמט הנתונים כמו להלן:

{

[0], /* טמפרטורת האוויר (℃)* /[1], /* לחות האוויר (%)* /[2], /* גובה (מ) בייט גבוה* /[3], /* גובה (מ) בתים נמוכים */[4],/ * ריכוז CO2 (PPM) בתים גבוהים */[5],/ * ריכוז CO2 (PPM) בתים נמוכים */[6],/ * ריכוז אבק (יח/0.01cf) בתים גבוהים *** [10], /* ריכוז O2 (%)* /[11], /* טמפרטורת הקרקע (℃)* /[12], /* לחות הקרקע (%)* /[13], /* מתח הסוללה (V) */ [14]/ *קוד שגיאת חיישן */}

לכל ביט בתא קוד שגיאה בחיישן יש משמעות שונה, ממש כמו להלן:

{

bit0: 1; / * שגיאת חיישן ברומטר */ bit1: 1; / * שגיאת חיישן CO2 */ bit2: 1; / * שגיאת חיישן אבק */ bit3: 1; / * שגיאת חיישן אור */ bit4: 1; / * שגיאת חיישן O2 */ bit5: 1; / * שגיאת חיישן קרקע */ שמורה: 2; /* שמורות */ }

חלק שער

תמונה
תמונה

Gateway Part הוא פטל פטל שחיבר את מודול Gateway RHF0M301–868 ו- PRI 2 Bridge RHF4T002, הוא מותקן בקופסה עמידה למים ומתחבר למצלמת חשמל & USB באמצעות חיבורי מים. מכיוון שהיא משתמשת בקושחה מיוחדת, עקוב אחר Seeed Wiki כדי להגדיר אותה.

שלב 4: תכנות תוכנה

כמו חיבור חומרה, ניתן גם לפצל את תכנות התוכנה, ניתן לפצל אותו לשלושה חלקים: צומת, שער ואתר.

חלק הצומת

רוב מנהלי ההתקן שחלק הצומת דורש כבר נמצאים בתיקיית origin_driver. יש להתקין את הספריות להלן באופן ידני:

Adafruit_ASFcore

מכיוון שהפרויקט מסובך, אנו ממליצים להשתמש ב- Microsoft Visual Studio במקום ב- Arduino IDE. תוסף בשם Visual Micro יכול לעזור לך לבנות פרויקט Arduino באמצעות Visual Studio, לחץ כאן למידע נוסף.

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

תמונה
תמונה

מכיוון שלחיישנים אלה כבר יש מנהל התקן OOP, ארזנו אותו מחדש כדי להתאים את הפרויקט הזה, עבור אחרים, כתבנו מחדש את מנהלי ההתקן שלהם באמצעות OOP. מחלקת חיישן בשכבת תוכנת הביניים משמשת לאיחוד ממשקים של חיישנים אמיתיים, למשל, חיישן ברומטר יכול לאסוף טמפרטורה, לחות וגובה בו זמנית, כך שיש לו 3 ממשקים לרכישת טמפרטורה, לחות וגובה. אבל יש להם שם שיטת הבדל, מה שיהפוך את תוכנית רכישת ערך החיישנים למסובכת יותר, בדיוק כך:

ברומטר-> getTemperature ();

ברומטר-> getHumidity (); ברומטר-> getAltitude (); //… another_sensor-> getSomeValue (); //…

אבל באמצעות OOP, זה נראה כך:

עבור (auto i = 0; i getValue ();

}

ארזנו גם מחלקת יישומים, היא מיישמת ממשק IApplication, שיטת ההתקנה () והלולאה () ב- IoTea.ino יכולה לקרוא לשיטת setup () ו- loop () באובייקט Application.

הערה: USB Serial משמש לניפוי באגים בלבד. לאחר איתור באגים, אנא הערה שזה אתחול הקוד בשיטת ההתקנה ().

חלק שער

תוכנית ה- Python של Gateway Part בתיקיית הבית משמשת לצילום תמונות והעלאה לשרת S3 של אמזון כל שעה. לפני שתשתמש בו, ודא fswebcam כבר מותקן ב- Raspberry Pi שלך:

sudo apt-get update && sudo apt-get להתקין fswebcam

אם ברצונך להעלות תמונות, הגדר את AWS שלך על ידי ביצוע השלבים הבאים. ראשית, התקן את AWS SDK ו- AWS CLI ל- Raspberry Pi שלך באמצעות הפקודות הבאות:

sudo pip התקן את boto3

sudo pip התקן awscli

ולאחר מכן, הפעל את AWS CLI:

sudo aws להגדיר

הגדר את מזהה מפתח הגישה שלך ל- AWS, מזהה הגישה הסודית של AWS ושם אזור ברירת המחדל.

אם אינך אוהב להעלות את התמונות שלך, תוכל לדלג על שלבי תצורת AWS ולקודי הערות לגבי העלאה ל- photo.py. להפעלת תוכנית זו לאחר אתחול Raspberry Pi בכל פעם, תוכל ליצור תמונת שם קובץ ב- /etc/init.d ולכתוב לה את הקוד הבא.

#!/bin/bash

# /etc/init.d/photo ### BEGIN INIT INFO # מספק: seeed_photo # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # תיאור קצר: צילום initscript # תיאור: שירות זה משמש לניהול צילום ### END INIT INFO מקרה "$ 1" בהתחלה) הד "התחל לצלם" /home/rxhf/photo.py &;; עצור) הד "הפסק לצלם" להרוג $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) הד "שימוש: התחלת צילום שירות | עצור" יציאה 1;; יציאת esac 0

להגדיר הרשאת ביצוע

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

ולבדוק את זה

sudo /etc/init.d/photo start

אם אין בעיה, עצור אותה והוסף אותה ליישום ההפעלה

sudo /etc/init.d/photo stop

sudo update-rc.d ברירת מחדל של תמונות

הערה: אם ברצונך להפעיל את שער ההפעלה לאחר אתחול Raspberry Pi, הוסף את קודי ההתחלה של השער ב- Seeed Wiki ל- /etc/rc.local, תן לזה להיראות כך:

#!/bin/sh -e

# # rc.local # # סקריפט זה מבוצע בסוף כל רמה ריצה מרובת משתמשים. # וודא שהתסריט "ייצא 0" בהצלחה או כל ערך # אחר על שגיאה. # # על מנת להפעיל או להשבית תסריט זה פשוט שנה את סיביות הביצוע #. # # כברירת מחדל תסריט זה אינו עושה דבר. # הדפס את כתובת ה- IP _IP = $ (שם מארח -אני) || נכון אם ["$ _IP"]; ואז printf "כתובת ה- IP שלי היא %s / n" "$ _IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io יציאה 0

אתר אינטרנט

פרסנו את האתר ב- CentOS 7. השלבים הבאים יראו לך כיצד לפרוס.

שלב 1. התקן את Python3

sudo yum -y התקן epel -release

sudo yum -y התקן python36

שלב 2. התקן את פיפט Python ואת הסביבה הווירטואלית

wget

sudo python36 get-pip.py sudo pip התקן virtualenv

Setp 3. שיבוט את האתר שלנו מ- GitHub

sudo yum -y התקן git

שיבוט git

שלב 4. צור והפעל סביבה וירטואלית

virtualenv -p python36 iotea -hb

cd iotea-hb source bin/active

שלב 5. התקן ספריות תלויות

pip התקן pymysql

pip להתקין dbutils pip להתקן בקבוק pip להתקין websocket-client pip להתקין cofigparser

שלב 6. צור מסד נתונים

sudo yum -y התקן את mariadb mariabd -server

sudo systemctl אפשר mariadb sudo systemctl התחל mariadb mysql -uroot -p

ולאחר מכן השתמש ב- iotea_hb.sql ליצירת טבלה.

שלב 7. צור db.ini, וכתוב לו את הקודים האלה

[db]

db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea

שנה את הנתיב של db.ini ב- db.py

# ב- db.py

#cf.read ("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read ("/home // iotea-hb/db.ini")

שלב 8. שנה יציאה ב- app.py והפעל את האתר:

# ב- app.py

#app.run (debug = True, port = 6000) app.run (debug = True, יציאה = 8080)

# במסוף

pip להתקין gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app

עכשיו בקר ב 127.0.0.1:8080 בדפדפן האינטרנט שלך, אתה יכול לראות את האתר, אך נתונים בזמן אמת אינם מוצגים.

שלב 9. קבל נתוני לוריוט

פתח מסוף אחר, הכנס מחדש את הסביבה הווירטואלית והפעל את אפליקציית לוריוט:

cd iotea-hb

פח המקור/הפעל את האקדח לוריוט: אפליקציה

המתן זמן מה, תראה נתונים המוצגים באתר, או תוכל לשנות את wss ב- loriot.py:

# ב- loriot.py

#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

שלב 5: פעולה

אתה יכול לבקר באתרים שלנו כדי לצפות בנתונים בזמן אמת:

  • אצל יאן
  • להדגמה

מוּמלָץ: