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

ראה פתרון LoRa IoTea: 5 שלבים
ראה פתרון LoRa IoTea: 5 שלבים

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

וִידֵאוֹ: ראה פתרון LoRa IoTea: 5 שלבים
וִידֵאוֹ: 🎶 ДИМАШ "ОПЕРА 2". История выступления и анализ успеха | Dimash "Opera 2" 2024, יולי
Anonim
ראה פתרון LoRa IoTea
ראה פתרון LoRa IoTea

מערכת איסוף מידע אוטומטית המיושמת על מטע התה. הוא חלק מאוסף המידע החקלאי החכם.

שלב 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, נעשתה התאמה מושלמת לפתרון. פתרון Seeed IoTea נועד לסייע לחקלאי התה לנהל טוב יותר מטעים מבלי לשנות את השיטות המסורתיות של גידול תה ולהציג נתונים סביבתיים בזמן אמת מהמטעים בפלטפורמה פתוחה.

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

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

שלב 1: חיבור שער

השער מותקן בנפרד בקופסה. בהתחשב בבעיית פיזור החום, הוספנו 2 מאווררים. האחד מיועד לפיזור החום של Raspberry Pi, השני מיועד לזרימת אוויר פנימית וחיצונית. תיבת השער ממוקמת בבית איכר, כך שאיננו צריכים לשקול את בעיית החשמל שלה.

תמונה
תמונה

שלב 2: חיבור צומת

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

תמונה
תמונה
תמונה
תמונה

הצומת ממוקם בקופסה עמידה למים. על מנת לקבל חיבור טוב יותר לצומת, אנו מייצרים לוח מתאם. לבסוף, אנו נספק את הקישור להורדת סכמטי של לוח זה. כפי שמוצג להלן, כבלי החיישנים מחוברים ללוח המתאם באמצעות בלוקים מסופים. אנו משתמשים ב -3 צינורות MOS (SI2301) לבניית מעגלי מתג לשליטה והדלקה של חיישנים ומאוורר. מאוורר משמש לצינון. יש לנו חיישן טמפרטורה (DS18B20) המותקן על הלוח. זה יכול להגיד לנו את הטמפרטורה הפנימית של הקופסה, ואז המיקרו -בקר מחליט אם להפעיל מאוורר. אנו משתמשים במספר נגדים כדי ליצור מעגל מחלק מתח למדידת מתח סוללת חומצה עופרת. לבסוף, אנו שומרים 3 ממשקי IIC ויציאה טורית על הלוח להרחבה וניפוי באגים מאוחר יותר.

תמונה
תמונה

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

תמונה
תמונה
תמונה
תמונה
תמונה
תמונה

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

צוֹמֶת

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

פורמט נתונים

נתונים שהועלו על ידי הצומת לשער:

char undata Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

המשמעות של כל ביט נתונים:

Lora_data [0]: טמפרטורת אוויר, ℃

Lora_data [1]: לחות אוויר, %

Lora_data [2]: גובה שמונה גבוה, מ '

Lora_data [3]: שמונה גובה נמוך

Lora_data [4]: ריכוז CO2 גבוה שמונה, עמודים לדקה

Lora_data [5]: ריכוז CO2 נמוך שמונה

Lora_data [6]: ריכוז אבק גבוה בשמונה, יח '/0.01 ק"ג

Lora_data [7]: ריכוז האבק נמוך שמונה

Lora_data [8]: עוצמת אור גבוהה שמונה, לוקס

Lora_data [9]: עוצמת אור נמוכה שמונה

Lora_data [10]: ריכוז O2, % (נתוני גלם חלקי 1000)

Lora_data [11]: טמפרטורת הקרקע, ℃

Lora_data [12]: לחות הקרקע, %

Lora_data [13]: מתח סוללה, v

Lora_data [14]: קוד שגיאה של חיישנים

קוד שגיאה:

Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]

המשמעות של כל ביט:

ביט 0: 1 ---- שגיאת חיישן טמפ & הומי & ברומטר (BME280)

ביט 1: 1 ---- שגיאה בחיישן פחמן דו חמצני (MH-Z16)

ביט 2: 1 ---- חיישן אבק (PPD42NS) שגיאה

ביט 3: 1 ---- שגיאה בחיישן אור דיגיטלי

ביט 4: 1 ---- שגיאה בחיישן חמצן (ME2-O2-Ф20)

ביט 5: 1 ---- שגיאת חיישן לחות וטמפרטורה בקרקע

ביט 6: שמורה

ביט 7: שמורה

יצרנו Error_code_transform.exe, פתח אותו והזן קוד שגיאה בהקסדצימלי, תוכל לדעת במהירות איזה חיישן הוא שגיאה. קישור ההורדה נמצא בסוף מאמר זה.

התאמת פרמטר: א) מחזור העברת נתונים

// seeedtea.ino

#defineinterval_time 600 // second

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

ב) זמן חימום חיישן האבק

//seeedtea.ino

#definePreheat_time 30000 // זמן חימום DensSensor, אלפיות השנייה //Dust_other.cpp #definesampletime_ms 30000 // זמן הדגימה

ג) מקדם מתח

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 // value ADC × Battery_coefficient = battery_voltage #defineSolar_coefficient 0.22559 // value ADC × Solar_coefficient = solar_voltage

שני פרמטרים אלה מחושבים על בסיס מעגל מחלק המתח.

ד) סף טמפרטורת פתיחת מאוורר

//POWER_Ctrl.cpp

#הגדרת מאוורר_התחלה 45 // טמפרטורת סף #הגדרת מאוורר_התחלה_ אור 500 // עוצמת אור

כאשר הטמפרטורה בפועל חורגת מהסף, המאוורר יתחיל להתקרר.

ה) פרמטר אתחול חיישן O2

//Oxygen.cpp

#defineO2_ אחוז 208.00 //20.8%

ו) מתג מאקרו

//seeedtea.ino

#defineLORA_RUN // לאחר ההערה, האתחול של לורה והעברת הנתונים יפסיקו #defineSENSOR_RUN // לאחר ההערה, חיישנים חיצוניים יפסיקו לעבוד //POWER_Ctrl.cpp #defineFAN_ON // מבצעים בלבד, יש להגיב על יישום מעשי /**** *** מצב שליטה DS18B20 *********************/ #defineSlower_Mode // מצב איטי יחד עם הטמפרטורה. הערה החוצה היא מצב מהיר

ז) מיפוי סיכות

D2: מחוון LED ומייקרו איפוס חיצוני IIC: SCL ו- SDA

// אבק_אחרים.ה

#defineDust_pin 3 // חיישן אבק //CO2.cpp #defineCO2_serial Serial1 // השתמש ביציאת hardwareserial (D0 & D1) //seeedtea.ino #definedataPin 6 // סיכת נתוני קרקע #defineclockPin 7 // סיכת שעון אדמה // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // מאוורר #defineAir_CtrlPin 10 // סיכת בקרה לחיישנים המוצבים בלוברבוקס #defineSoil_CtrlPin 11 // סיכת מתג לחות קרקע וטמפרטורה #defineBattery_pin A2 // מדידת מתח הסוללה #defin /מדוד מתח פאנלים סולאריים //Oxygen.h #defineO2_pin A1 // חיישן O2

ח) טיימר כלב השמירה

טיימר כלב השמירה משמש לניטור מצב הפעלת המערכת. כאשר המערכת פועלת באופן חריג, הצומת יתאפס, כך שתוכל לפעול ברציפות במשך זמן רב.

הספרייה שאליה יש להתייחס:

  • Adafruit_SleepyDog.h נוספה לפרויקט
  • Adafruit_ASFcore-master.zip ארוז בתיקיית הפרויקט וצריך להוסיף אותו ידנית ל- IDE של Arduino.

פונקציות קשורות:

אפשר כלב שמירה

int WatchdogSAMD:: enable (int maxPeriodMS, bool isForSleep)

פרמטרי קלט:

Int maxPeriodMS: זמן המתנה באלפיות השנייה. המקסימום המותר הוא 16000 אלפיות השנייה.

ערך החזרה:

סוג Int, החזר את זמן ההמתנה בפועל

אפס כלב שמירה

כלב השמירה SAMD:: אפס ()

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

עצור כלב שמירה

כלב השמירה SAMD:: השבת ()

כְּנִיסָה

בחלק זה נציג כיצד להתחבר לשרת Loriot.

שלב 1: רישום שער שרת Loriot

א) משתמש חדש צריך קודם כל לרשום חשבון, לחץ על כתובת רישום. מלא את שם המשתמש, הסיסמה וכתובת הדוא"ל להרשמה, לאחר ההרשמה יישלח אליך דוא"ל, אנא עקוב אחר ההוראות המופיעות בדוא"ל להפעלה.

ב) לאחר הפעלה מוצלחת, לחץ כאן כדי להיכנס. שכבת ברירת המחדל היא "רשת קהילתית", היא תומכת בשער אחד (RHF2S001) ובעשרה צמתים.

ג) היכנס למרכז השליטה -> שער, לחץ על הוסף שער התחל כדי להוסיף שער.

ד) בחר Raspberry Pi 3

ה) הגדר כדלקמן:

  • רדיו קדמי -> RHF2S001 868/915 MHz (SX1257)
  • אוטובוס -> SPI

ו) מלא את כתובת ה- MAC של RHF2S001 שלך, צריכה להיות בפורמט b8: 27: eb: xx: xx: xx. וגם הזן מידע על מיקום Gateway.

g) לחץ על "הרשמת שער Raspberry Pi" כדי לסיים את הרישום.

תמונה
תמונה

h) לחץ על השער הרשום כדי להיכנס לדף התצורה, החלף "תכנית תדרים" באופן ידני, התוכנית שלך כאן נקבעת על פי סוג סוג RHF2S001 שלך, התוכנית הזמינה היא CN470 , CN473 , CN434 , CN780 , EU868, לאחר הבחירה רענן את הדף כדי לקבל את הערוץ המדויק. בויקי זה אנו בוחרים EU868.

i) הפעל את הפקודה במסוף המרק:

cd /home/rxhf/loriot/1.0.2

sudo systemctl stop pktfwd sudo gwrst wget > -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io

j) Finish gateway registration. You will see the gateway is Connected now. Next is to register node.

תמונה
תמונה

שלב 2: התקן Node Connect של שרת Loriot Server

א) קבל את ערוצי השער הזמינים

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

תמונה
תמונה

ב) תצורת Seeeduino LoRAWAN GPS (RHF3M076)

פתח את הצג הטורי של ArduinoIDE, הקש על הפקודה למטה.

ב-+ch

כדי לאשר את ערוץ ברירת המחדל של ה- Seeeduino_LoRAWAN ה- GPS שלך, תקבל 3 ערוצים. אם אין ערוץ זמין, תוכל לשנות את הערוצים של Seeeduino_LoRAWAN על ידי הפקודה שלהלן.

ב-+ch = 0, 868.1

ב-+ch = 1, 868.3 ב-+ch = 2, 868.5

לאחר מכן תוכל להשתמש ב-+ch שוב כדי לבדוק.

ג) הוסף Seeeduino_LoRAWAN GPS כ- ABP NodeLog בשרת Loriot, לחץ על לוח Dash -> יישומים -> SimpleApp. לחץ על ייבוא קלט ABP below מתחת לפריטים

  • DevAddr: Seeeduino_LoRAWAN GPS עובר את הפקודה "AT+ID" (הערה: לוריוט אינו תומך במחבר נקודתיים, צריך להסיר אותו ידנית)
  • FCntUp: Setto 1
  • FCntDn: ססטו 1
  • NWKSKEY : ערך ברירת מחדל 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY: ערך ברירת מחדל 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI: DEVEUI, Seeeduino_LoRAWAN GPS לעבור את הפקודה "AT+ID"
תמונה
תמונה

לחץ על לחצן ייבוא התקן כדי לסיים את ייבוא המכשיר. כעת בחר Dashboard-> יישומים -> SampleApp, תראה את הצומת ABP החדש שהוספת זה עתה.

תמונה
תמונה

ד) שלח נתונים מ- Seeeduino_LoRAWAN

תשומת הלב! זה רק מבחן.

בחזרה לצג הטורי של ArduinoIDE, שלח פקודה:

AT+CMSGHEX = "0a 0b 0c 0d 0e"

לאחר מכן עבור ללוח המחוונים -> יישומים -> SampleApp -> התקן, לחץ על ה- EUI Device Node או DevAddr, תמצא את הנתונים ששלחת כאן.

תמונה
תמונה

לפרטים, עיין בויקי זה.

שלב 5: בניית אתרים

כלים קשורים

  • וירטואלי
  • Python3
  • קרן -קרן
  • מְפַקֵחַ
  • Nginx
  • MySQL

אנו משתמשים ב- CentOS7 כסביבת פריסת ניסויים

וירטואלי

השתמש ב virtualenv כדי לבנות סביבת ייצור עצמאית של python3

א) להתקין

pip להתקין virtualenv

ב) צור סביבה וירטואלית של python3

virtualenv -p python3 iotea

ג) הפעל את הסביבה הווירטואלית והיכנס לספריית iotea

סל המקור/הפעל

ד) קיימת סביבה

לבטל

Python3

א) להתקין

יאם התקן epel-release

יאם התקנת python36

ב) התקן ספריית תלויות PyMySQL, DBUtils, Flask, websocket-client, configparser

pip התקן pymysql

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

קרן -קרן

א) התקן (תחת סביבת Python3)

pip להתקין קרן קרן

ב) הפעל את פרויקט הבקבוק (תחת מדריך הפרויקטים של iotea)

gunicorn -w 5 -b 0.0.0.0:5000 app: יישום

ג) הפעל websocket-clint כדי לקבל נתוני לוריוט

קרן לוריוט: אפליקציה

ד) צפה בעץ התהליך של Gunicorn

pstree -ap | grep gunicorn

מְפַקֵחַ

א) התקן (משתמש שורש)

מפקד התקנת pip

ב) ליצור קבצי config

echo_supervisord_conf> /etc/supervisord.conf

ג) צור ספרייה והצג תצורה של ספרייה

mkdir -p /etc/supervisor/conf.d

ערוך /etc/supervisord.conf ושנה את שדה הקבצים תחת [כלול] בסוף הקובץ.

שים לב שעליך להסיר את ';' מול שתי השורות הללו, שהיא דמות ההערה.

[לִכלוֹל]

קבצים = /etc/supervisor/conf.d/*.conf

אמצעי להציג /etc/supervisor/conf.d/. קובץ התצורה הבא משמש כקובץ תצורת התהליך (בפיקוח על ידי המפקח).

ד) תצורה נכנסת (תחת מדריך iotea)

cp iotea.conf /etc/supervisor/conf.d/

cp loriot.conf /etc/supervisor/conf.d/

ה) מגישים iotea פתוחים

superviosrctl טען מחדש #טען מחדש את קובץ התצורה

superviosrctl start loriot #open loriot קליטת נתונים superviosrctl start iotea #פתח את יישום בקבוק iotea

ו) פעולות נפוצות אחרות

supervisorctl טען מחדש # טען מחדש את קובץ התצורה

supervisorctl עדכון supervisorctl התחל xxx supervisorctl עצור xxx מפקח מעמד xxx supervisorctl עזרה # הצג פקודה נוספת

Nginx

א) להתקין

yum להתקין -y nginx

ב) תצורה

cp NginxIotea.conf /etc/nginx/conf.d/

ג) הפעל את Nginx

systemctl הפעל את nginx.service

MySQL

א) פרמטרים קשורים

משתמש = 'שורש'

passwd = '1234' db = יציאת 'יוטה' = 3306

ב) קובץ

iotea_iotea.sql

ג) קובץ תצורה

db.ini

מוּמלָץ: