Բովանդակություն:

Տեսել եք IoTea LoRa լուծումը (թարմացում 1811) ՝ 5 քայլ
Տեսել եք IoTea LoRa լուծումը (թարմացում 1811) ՝ 5 քայլ

Video: Տեսել եք IoTea LoRa լուծումը (թարմացում 1811) ՝ 5 քայլ

Video: Տեսել եք IoTea LoRa լուծումը (թարմացում 1811) ՝ 5 քայլ
Video: How Use Stable Diffusion, SDXL, ControlNet, LoRAs For FREE Without A GPU On Kaggle Like Google Colab 2024, Նոյեմբեր
Anonim
Տեսել եք IoTea LoRa լուծումը (թարմացում 1811)
Տեսել եք IoTea LoRa լուծումը (թարմացում 1811)

Ինտերնետ+ -ն այժմ տարածված հասկացություն է: Այս անգամ մենք փորձեցինք ինտերնետը և գյուղատնտեսությունը, որպեսզի թեյի այգին վերածվի ինտերնետի թեյի:

Քայլ 1: Այս նախագծում օգտագործվող բաները

Սարքավորման բաղադրիչներ

  • Grove - ածխածնի երկօքսիդի սենսոր (MH -Z16)
  • Grove - թվային լույսի ցուցիչ
  • Grove - Փոշու տվիչ (PPD42NS)
  • Grove-թթվածնի տվիչ (ME2-O2-Ф20)
  • Հողի խոնավության և ջերմաստիճանի տվիչ
  • LoRa LoRaWAN Gateway - 868 ՄՀց հավաքածու Raspberry Pi 3 -ով
  • Grove - Temp & Humi & Barometer Sensor (BME280)

Softwareրագրային ապահովման ծրագրեր և առցանց ծառայություններ

Microsoft Visual Studio 2015

Քայլ 2: Պատմություն

Մենգդինգ լեռան վրա ՝ Յաան քաղաքից ՝ Սիչուան, լեռնաշղթան անցնում է արևմուտք -արևելք կանաչ ծովով: 36-ամյա Դենի համար, որն իր սերնդի Mengding թեյ պատրաստողներից շատ քիչ է, սա ամենահայտնին է ՝ ծովի մակարդակից 1100 մ բարձրության վրա գտնվող 50 մու (= 3.3 հա) պլանտացիայով: Դենգը թեյագործների ընտանիքից է, բայց ընտանիքի ժառանգությունը կրելը հեշտ գործ չէ: «Մեր թեյերը աճեցվում են բարձր բարձրության վրա` օրգանական միջավայրում `դրա գերազանց որակը ապահովելու համար: Բայց միևնույն ժամանակ, աճի խտությունը ցածր է, արժեքը `բարձր, և ծիլերը անհարթ են, ինչը դժվարացնում է թեյի բերքը: Ահա թե ինչու բարձր լեռնային թեյերը սովորաբար փոքր բերք են և դրանց արժեքները շուկայում չեն արտացոլվում »: Վերջին երկու տարիների ընթացքում Դենը փորձում էր բարձրացնել սպառողների տեղեկացվածությունը բարձր լեռնային թեյի վերաբերյալ` դրանց արժեքը բարձրացնելու համար: Եվ երբ նա հանդիպեց Ֆանին, ով պլանտացիա էր փնտրում ՝ Seeed’s IoTea տեխնոլոգիան ներդնելու համար, լուծման համար կատարյալ համընկնում ստեղծվեց:

Քայլ 3: Սարքաշարի միացում

Այս ծրագրի սարքավորումները կարելի է բաժանել 4 մասի ՝ Power, տվիչներ, Node և Gateway: Հետևյալ հոդվածը ցույց կտա ձեզ, թե ինչպես այն լրացնել քայլ առ քայլ:

Հզորության մաս

Power Part- ը հիմնականում պարունակում է Արևային վահանակ և լիթիումի մարտկոց, եթե պարզապես ցուցադրման համար կառուցեք այս նախագիծը, կարող եք անտեսել դրանք: Կամ կարող եք հետևել Նախորդ ձեռնարկին ՝ հանգույցի հզորությունը տեղադրելու համար:

Սենսորների մաս

Սենսորների մասում, բազմաթիվ սենսորների պատճառով, մենք օգտագործեցինք եղանակային կայան, ինչպես նաև պատրաստեցինք ակրիլային բրա ՝ դրանք տեղադրելու համար:

Պատկեր
Պատկեր

Ինչպես տեսնում եք վերևի նկարում, Digital Light Sensor- ը միշտ վերևում է, որպեսզի այն կարողանա հավաքել լուսավորության մասին տեղեկատվություն: Senերմություն առաջացնող տվիչները տեղադրված են ակրիլային փակագծի մեջտեղում, ինչպիսիք են O2 սենսորը, փոշու սենսորը և CO2 սենսորը: Վերջապես, ջերմաստիճանի և խոնավության տվիչ ակրիլային փակագծի ներքևում:

Բացի այդ, հողի ջերմաստիճանի և խոնավության սենսորը տեղադրված է միայնակ հողում: Հանգույցի մաս

Պատկեր
Պատկեր

Node Part- ը Seeeduino LoRaWan- ն է, որը տեղադրված է Անջրանցիկ տուփի մեջ, այն միանում է հոսանքին և տվիչներին Jրային հոդերի միջոցով: Դրանց թվում ՝ փոշու տվիչը միանում է LoRaWan- ի թվային կապին D3- ին, CO2 սենսորը `կապում D4 և D5, հողային տվիչը` կապում D6 և D7, O2 ցուցիչին `անալոգային P1- ին և Light Sensor & Barometer Sensor- ին` I2C պորտին:

ՈEՇԱԴՐՈԹՅՈՆ. 10k Resistor- ը պետք է ավելացվի Soil Sensor- ի Blue (Data) մալուխի և Red (Vcc) մալուխի միջև:

Seeeduino LoRaWan- ը մեկ -մեկ հավաքում է տվիչների արժեքը և դրանք LoRa- ով ուղարկում Gateway: Տվյալների ձևաչափը, ինչպես ստորև.

{

[0], /* Օդի ջերմաստիճան (℃)* /[1], /* Օդի խոնավություն (%)* /[2], /* Բարձրություն (մ) բարձր բայթ* /[3], /* Բարձրություն (մ) ցածր բայթ */[4],/ * CO2 կոնցենտրացիա (PPM) բարձր բայթ */[5],/ * CO2 կոնցենտրացիա (PPM) ցածր բայթ */[6],/ * Փոշու կոնցենտրացիա (հատ/0.01cf) բարձր բայթ */[7],/ *Փոշու կոնցենտրացիան (հատ/0.01cf) ցածր բայթ */[8],/ *Լույսի ինտենսիվությունը (լյուքս) բարձր բայթ */[9],/ *Լույսի ինտենսիվությունը (լյուքս) ցածր բայթ */ [10], /* O2 կոնցենտրացիան (%)* /[11], /* Հողի ջերմաստիճանը (℃)* /[12], /* Հողի խոնավությունը (%)* /[13], /* Մարտկոցի լարումը (V) */ [14]/ *Սենսորային սխալի կոդ */}

Սենսորային սխալի կոդի բայթում յուրաքանչյուր բիթ ունի տարբեր նշանակություն, ինչպես ստորև.

{

բիթ 0: 1; / * Բարոմետրերի ցուցիչի սխալ */ բիթ 1: 1; / * CO2 ցուցիչի սխալ */ բիթ 2: 1; / * Փոշու տվիչի սխալ */ bit3: 1; / * Լույսի ցուցիչի սխալ */ բիթ 4: 1; / * O2 ցուցիչի սխալ */ bit5: 1; / * Հողի ցուցիչի սխալ */ վերապահված է ՝ 2; / * Վերապահված է */}

Դարպասի մաս

Պատկեր
Պատկեր

Gateway Part- ը ազնվամորի Pi է, որը միացրել է Gateway մոդուլը RHF0M301–868 և PRI 2 Bridge RHF4T002 մոդուլները, այն տեղադրվել է Անջրանցիկ տուփի մեջ և միացվել հոսանքի և USB տեսախցիկին Waterրային հոդերի միջոցով: Քանի որ այն օգտագործում է մասնագիտացված որոնվածը, այն կազմաձևելու համար հետևեք Seeed Wiki- ին:

Քայլ 4: Softwareրագրային ապահովման ծրագրավորում

Որպես ապարատային կապ, ծրագրային ծրագրավորումը նույնպես կարող է պառակտվել, այն կարելի է բաժանել 3 մասի ՝ հանգույց, դարպաս և կայք:

Հանգույցի մաս

Node Part- ի պահանջվող վարորդների մեծ մասն արդեն պարունակվում է orig_driver պանակում: Հետևյալ գրադարանները պետք է տեղադրվեն ձեռքով.

Adafruit_ASFcore

Քանի որ նախագիծը բարդ է, խորհուրդ ենք տալիս Arduino IDE- ի փոխարեն օգտագործել Microsoft Visual Studio- ն: Visual Micro կոչվող հավելումը կարող է օգնել ձեզ համատեղել Arduino նախագիծը ՝ օգտագործելով Visual Studio- ն: Լրացուցիչ տեղեկությունների համար կտտացրեք այստեղ:

Ավելի լավ ընթեռնելիության և պահպանելիության համար այս անգամ մենք օգտագործում ենք Օբյեկտ-կողմնորոշված ծրագրավորում: Այս նախագծի դասային դիագրամը հետևյալն է.

Պատկեր
Պատկեր

Այդ սենսորների համար, որոնք արդեն ունեն OOP վարորդ, մենք փաթեթավորեցինք այն ՝ այս նախագիծը հարմարեցնելու համար, մյուսների համար մենք վերաշարադրեցինք նրանց վարորդներին ՝ օգտագործելով OOP: Միջին ծրագրերի շերտի սենսորային դասը օգտագործվում է իրական սենսորների միջերեսները միավորելու համար, օրինակ ՝ բարոմետրերի տվիչը կարող է միաժամանակ հավաքել ջերմաստիճանը, խոնավությունը և բարձրությունը, ուստի այն ունի 3 միջերես `ջերմաստիճանը, խոնավությունը և բարձրությունը ձեռք բերելու համար: Բայց նրանք ունեն տարբերության մեթոդի անվանում, ինչը սենսորների արժեք ձեռք բերելու ծրագիրը կդարձնի ավելի բարդ, ինչպես սա.

բարոմետր-> getTemperature ();

բարոմետր-> getHumidity (); բարոմետր-> getAltitude (); //… other_sensor-> getSomeValue (); //…

Բայց օգտագործելով OOP- ը, այն այսպիսին է թվում.

համար (auto i = 0; i getValue ();

}

Մենք նաև փաթեթավորեցինք Application դաս, այն իրականացնում է IApplication ինտերֆեյս, IoTea.ino- ում setup () և loop () մեթոդը կարող է զանգահարել setup () և loop () մեթոդը Application object- ում:

Նշում. USB սերիան օգտագործվում է ՄԻԱՅՆ վրիպազերծման համար: Վրիպազերծումից հետո, խնդրում ենք մեկնաբանել, որ այն սկզբնավորման կոդ է setup () եղանակով:

Դարպասի մաս

Gateway Part- ի Python ծրագիրը տնային թղթապանակում օգտագործվում է լուսանկարներ վերցնելու և դրանք ամեն ժամ Amazon 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 մուտքի բանալու ID- ն, AWS գաղտնի մուտքի ID- ն և լռելյայն տարածաշրջանի անունը:

Եթե չեք սիրում ձեր լուսանկարները վերբեռնել, կարող եք բաց թողնել AWS- ի կազմաձևման քայլերը և մեկնաբանել ծածկագրերը photo.py- ում վերբեռնման վերաբերյալ: Ամեն անգամ Raspberry Pi- ն գործարկելուց հետո այս ծրագիրը գործարկելու համար կարող եք /etc/init.d ֆայլում ստեղծել ֆայլի անվան լուսանկար և դրան գրել հետևյալ կոդը.

#!/bin/bash

# /etc/init.d/photo ### ՍԿՍԵԼ INIT INFO # Ապահովում է ՝ seeed_photo # Պահանջվում է-Սկիզբ.: 0 1 6 # Կարճ նկարագրություն. Լուսանկարում initscript # նկարագրություն. Այս ծառայությունն օգտագործվում է լուսանկարներ կառավարելու համար ### END INIT INFO սկզբում «$ 1» գործ) արձագանք «Սկսեք լուսանկարել» /home/rxhf/photo.py &;; դադար) արձագանք «Դադարեցրեք լուսանկարվելը» սպանել $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{տպել $ 2}');; *) արձագանք «Օգտագործում. ծառայության լուսանկարի մեկնարկ | դադար» ելք 1;; esac ելք 0

սահմանել կատարման թույլտվություն

sudo chmod 777 /etc/init.d/ լուսանկար

sudo chmod 777 /home/rxhf/photo.py

և փորձարկիր այն

sudo /etc/init.d/ լուսանկար սկսել

Եթե խնդիր չկա, դադարեցրեք այն և ավելացրեք այն գործարկման ծրագրին

sudo /etc/init.d/ լուսանկար կանգառ

sudo update-rc.d լուսանկարների կանխադրված

ՈEՇԱԴՐՈԹՅՈՆ. Եթե ցանկանում եք գործարկել դարպասը Raspberry Pi- ի գործարկումից հետո, Seeed Wiki- ում դարպասի մեկնարկային կոդերը ավելացրեք /etc/rc.local հասցեին, թող այն նման լինի.

#!/bin/sh -e

# # rc.local # # Այս սցենարը կատարվում է յուրաքանչյուր բազմակի օգտագործողի մակարդակի վերջում: # Համոզվեք, որ հաջողության դեպքում սցենարը «դուրս կգա 0» -ից կամ սխալի դեպքում ցանկացած այլ # արժեքից: # # Այս սցենարը միացնելու կամ անջատելու համար պարզապես փոխեք կատարման # բիթերը: # # Լռելյայն այս սցենարը ոչինչ չի անում: # Տպեք IP հասցեն _IP = $ (hostname -I) || ճիշտ է, եթե ["$ _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 pip և վիրտուալ միջավայր

wget

sudo python36 get-pip.py sudo pip տեղադրել virtualenv

Քայլ 3. Կլոնավորեք մեր կայքը GitHub- ից

sudo yum -y տեղադրել git

git կլոն

Քայլ 4. Ստեղծեք և ակտիվացրեք վիրտուալ միջավայրը

virtualenv -p python36 iotea -hb

cd iotea-hb աղբյուր bin/ակտիվացնել

Քայլ 5. Տեղադրեք կախյալ գրադարաններ

pip տեղադրել pymysql

pip install dbutils pip install flask pip install websocket-client pip install cofigparser

Քայլ 6. Ստեղծեք տվյալների բազա

sudo yum -y տեղադրել mariadb mariabd -server

sudo systemctl միացնել mariadb sudo systemctl սկսել mariadb mysql -uroot -p

և այնուհետև օգտագործեք iotea_hb.sql ՝ աղյուսակ ստեղծելու համար:

Քայլ 7. Ստեղծեք db.ini և գրեք այս կոդերը դրան

[դբ]

db_port = 3306 db_user = արմատ 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 (կարգաբերում = Trueշմարիտ, նավահանգիստ = 6000) app.run (կարգաբերում = Trueշմարիտ, նավահանգիստ = 8080)

# տերմինալում

pip տեղադրել gunicorn gunicorn -w 5 -b 0.0.0.0:8080 հավելված ՝ հավելված

այժմ այցելեք 127.0.0.1:8080 ձեր վեբ դիտարկիչում, կարող եք տեսնել կայքը, բայց իրական ժամանակի տվյալները չեն ցուցադրվում:

Քայլ 9. Ստացեք loriot տվյալներ

Բացեք մեկ այլ տերմինալ, կրկին մուտք գործեք վիրտուալ միջավայր և գործարկեք loriot հավելվածը.

cd iotea-hb

աղբյուր աղբարկղ/ակտիվացնել gunicorn loriot: հավելվածը

Մի քիչ սպասեք, կտեսնեք վեբ կայքում ցուցադրվող տվյալները կամ կարող եք փոխել wss- ը loriot.py- ում ՝

# loriot.py- ում

#ws = ստեղծել_կապ ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = ստեղծել_կապ ()

Քայլ 5: Գործողություն

Դուք կարող եք այցելել մեր կայքերը ՝ իրական ժամանակի տվյալները դիտելու համար.

  • Յաանում
  • Ույցի համար

Խորհուրդ ենք տալիս: