Мазмуну:

Seeed IoTea LoRa Solution (Update 1811): 5 кадам
Seeed IoTea LoRa Solution (Update 1811): 5 кадам

Video: Seeed IoTea LoRa Solution (Update 1811): 5 кадам

Video: Seeed IoTea LoRa Solution (Update 1811): 5 кадам
Video: Seeed IoTea Lora Solution 2024, Июль
Anonim
Seeed IoTea LoRa Solution (Жаңыртуу 1811)
Seeed IoTea LoRa Solution (Жаңыртуу 1811)

Интернет+ азыр популярдуу түшүнүк. Бул жолу биз Интернетти жана айыл чарбасын чай бакчасы Интернет чайынан өстүрүүгө аракет кылдык.

1 -кадам: Бул долбоордо колдонулган нерселер

Аппараттык компоненттер

  • Grove - Көмүр кычкыл газы сенсору (MH -Z16)
  • Grove - Санариптик Жарык сенсору
  • Grove - Чаң сенсору (PPD42NS)
  • Grove-кычкылтек сенсору (ME2-O2-Ф20)
  • Топурактын нымдуулугу жана температура сенсору
  • LoRa LoRaWAN Gateway - Raspberry Pi 3 менен 868MHz комплект
  • Grove - Temp & Humi & Barometer Sensor (BME280)

Программалык камсыздоо жана онлайн кызматтары

Microsoft Visual Studio 2015

2 -кадам: Окуя

Сичуань Яандын түндүк -чыгышындагы Мендинг тоосунда, тоо кыркасы батыштан чыгышка карай жашыл деңизде өтөт. Бул деңиз деңгээлинен 1100м бийиктикте жайгашкан 50му (= 3,3 гектар) плантациясы бар 36 жаштагы Дэнг, өзүнүн муунунун чанда аз сандагы чай кайнатуучуларынын бири үчүн эң тааныш көрүнүш. Дэн чай кайнатуучулардын үй -бүлөсүнөн чыккан, бирок үй -бүлөлүк мурасты улантуу оңой иш эмес. «Биздин чайлар мыкты сапатын камсыз кылуу үчүн органикалык чөйрөдө бийик тоолуу жерде өстүрүлөт. Бирок, ошол эле учурда, өсүмдүктүн тыгыздыгы төмөн, баасы жогору жана бүчүрлөрү бирдей эмес, чайды оруп -жыюу кыйын. Ошондуктан бийик тоолуу чайлар адатта кичинекей түшүм болуп саналат жана алардын баалуулуктары рынокто чагылдырылбайт.”Акыркы эки жылдан бери Дэн керектөөчүлөрдүн бийик тоолуу чай тууралуу маалыматын жогорулатуу үчүн аракет кылып келет. Жана ал Seeedдин IoTea технологиясын ишке ашыруу үчүн плантация издеп жүргөн Фан менен жолукканда, чечимге эң сонун дал келген.

3 -кадам: Аппараттык туташуу

Бул долбоордун аппараттык жабдууларын 4 бөлүккө бөлүүгө болот: Power, Sensors, Node жана Gateway. Кийинки макалада аны этап -этабы менен кантип бүтүрүү керектиги көрсөтүлөт.

Power Part

Power Part негизинен күн панелин жана литий батареясын камтыйт, эгерде сиз бул долбоорду жөн эле демонстрация үчүн курсаңыз, аларды этибарга албай койсоңуз болот. Же түйүндүн кубатын орнотуу үчүн Мурунку окуу куралын ээрчип алсаңыз болот.

Sensors Part

Сенсорлор бөлүгүндө, сенсорлордун көптүгүнөн, биз метеорологиялык станцияны колдонуп, ошондой эле аларды орнотуу үчүн акрил кронштейн жасадык.

Сүрөт
Сүрөт

Жогорудагы сүрөттө көрүнүп тургандай, Digital Light Sensor дайыма жарыктын маалыматын чогулта алат. Жылуулукту чыгаруучу сенсорлор акрил кронштейнинин ортосуна орнотулат, мисалы O2 сенсор, чаң сенсор жана CO2 сенсор. Акыры, температура жана нымдуулук сенсору акрил кронштейндин түбүндө.

Мындан тышкары, Топурактын температурасы жана нымдуулугу сенсору топуракка жалгыз орнотулган. Node Part

Сүрөт
Сүрөт

Түйүндүн бөлүгү - бул суу өткөрбөй турган кутуга орнотулган Seeeduino LoRaWan, ал суу муундары аркылуу күчкө жана сенсорлорго туташат. Алардын арасында Чаң сенсору LoRaWan санариптик D3 туташуусуна, CO2 сенсор D4 жана D5 түйүнүнө, D6 & D7 топурагына туташуу үчүн, O2 сенсору аналог пин A1ге жана Light Sensor & Barometer Sensor I2C портуна туташат.

ЭСКЕРТҮҮ: Топурак сенсорунун Көк (Маалымат) кабели менен Кызыл (Vcc) кабелинин ортосуна 10k резистор кошулушу керек.

Seeeduino LoRaWan сенсорлордун маал -маалы менен чогултуп, LoRa аркылуу шлюзга жөнөтөт. Маалымат форматы төмөндөгүдөй:

{

[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]/ *Сенсор катасынын коду */}

Sensor Error Code байтындагы ар бир бит төмөндөгүдөй айырмачылыкка ээ:

{

bit0: 1; / * Барометрдин сенсорунун катасы */ bit1: 1; / * CO2 Sensor Error */ bit2: 1; / * Чаң сенсорунун катасы */ bit3: 1; / * Жарык сенсорунун катасы */ bit4: 1; / * O2 Sensor Error */ bit5: 1; / * Топурак сенсорунун катасы */ корголгон: 2; / * Корголгон */}

Gateway бөлүгү

Сүрөт
Сүрөт

Gateway Part - бул RHF0M301–868 Gateway модулун жана PRI 2 Bridge RHF4T002 туташтырылган Raspberry Pi, ал суу өткөрбөй турган кутуга орнотулган жана суу түйүндөрү аркылуу электр жана USB камерасына туташат. Ал адистештирилген программалык камсыздоону колдонгондуктан, аны конфигурациялоо үчүн Seeed Wiki'ди ээрчиңиз.

4 -кадам: Программалык камсыздоо

Аппараттык туташуу катары Программалык камсыздоону да бөлүүгө болот, аны 3 бөлүккө бөлүүгө болот: түйүн, шлюз жана вебсайт.

Node Part

Түйүн бөлүгүнө талап кылынган драйверлердин көбү orig_driver папкасында камтылган. Төмөнкү китепканалар кол менен орнотулушу керек:

Adafruit_ASFcore

Долбоор татаал болгондуктан, Arduino IDE ордуна Microsoft Visual Studio колдонууну сунуштайбыз. Visual Micro деп аталган плагин Visual Studioну колдонуу менен Arduino долбоорун түзүүгө жардам берет, көбүрөөк маалымат алуу үчүн бул жерди басыңыз.

Жакшыраак окуу жана тейлөө үчүн, биз бул жолу Объектке багытталган программалоону колдонобуз. Бул долбоордун класс диаграммасы төмөндөгүдөй көрүнөт:

Сүрөт
Сүрөт

Бул сенсорлордо OOP драйвери бар болгондуктан, биз бул долбоорду ыңгайлаштыруу үчүн аны кайра таңгактадык, башкалары үчүн драйверлерин OOP аркылуу кайра жаздык. Орто программалык катмардагы Sensor классы чыныгы сенсорлордун интерфейстерин бириктирүү үчүн колдонулат, мисалы, барометрдин сенсору бир эле убакта температураны, нымдуулукту жана бийиктикти чогулта алат, андыктан температураны, нымдуулукту жана бийиктикти алуу үчүн 3 интерфейси бар. Бирок алардын айырмачылык методунун аталышы бар, ал сенсорлордун баалуулугун алуу программасын ушул сыяктуу татаалдаштырат:

барометр-> getTemperature ();

барометр-> getHumidity (); барометр-> getAltitude (); //… another_sensor-> getSomeValue (); //…

Бирок OOPту колдонуп, мындай көрүнөт:

үчүн (авто i = 0; i getValue ();

}

Биз ошондой эле Application классын толтурдук, ал IApplication интерфейсин, IoTea.inoдогу setup () жана loop () методун ишке ашырат, Application объектисинде setup () жана loop () ыкмаларын чакыра алат.

ЭСКЕРТҮҮ: USB Serial гана мүчүлүштүктөрдү оңдоо үчүн колдонулат. Мүчүлүштүктөрдү оңдогондон кийин, setup () методунда кодду баштоо боюнча комментарий бериңиз.

Gateway бөлүгү

Gateway Part's Python программасы үй папкасында сүрөткө тартып, аларды Amazon S3 Serverге саат сайын жүктөө үчүн колдонулат. Аны колдонуудан мурун, 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 # Милдеттүү-Баштоо: $ remote_fs $ syslog # Милдеттүү-Токтоо: $ remote_fs $ syslog # Демейки-Баштоо: 2 3 4 5 # Default-Stop: 0 1 6 # Кыскача сүрөттөмө: сүрөт тартуу initscript # Description: Бул кызмат сүрөт тартууну башкаруу үчүн колдонулат ### END INIT INFO case "$ 1" башталганда) echo "Сүрөт тартууну баштаңыз" /home/rxhf/photo.py &;; stop) echo "Сүрөткө тартууну токтот" өлтүрүү $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{$ 2 басып чыгаруу');; *) echo "Use: service photo start | stop" чыгуу 1;; esac чыгуу 0

аткарууга уруксат берүү

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

жана сынап көрүңүз

sudo /etc/init.d/photo баштоо

Эгер эч кандай көйгөй жок болсо, аны токтотуп, баштоо колдонмосуна кошуңуз

sudo /etc/init.d/photo stop

sudo update-rc.d фото демейки

ЭСКЕРТҮҮ: Эгерде сиз Raspberry Pi жүктөлгөндөн кийин шлюзду иштеткиңиз келсе, Seeet Wikiдеги шлюздун баштапкы коддорун /etc/rc.local'ге кошуңуз, ал окшош болсун:

#!/bin/sh -e

# # rc.local # # Бул скрипт ар бир көп колдонуучунун деңгээлинин аягында аткарылат. # Скрипт ийгиликке же ката боюнча башка # мааниге "0 чыгарын" текшериңиз. # # Бул сценарийди иштетүү же өчүрүү үчүн аткарууну # битти өзгөртүү керек. # # Демейки боюнча бул скрипт эч нерсе кылбайт. # IP адресин басып чыгарыңыз _IP = $ (хосттун аты -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 пипин жана виртуалдык чөйрөнү орнотуңуз

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 булагы бин/активдештирүү

Кадам 5. Көз каранды китепканаларды орнотуу

pymysql орнотуу

pip install dbutils pip орнотуу колбасы пип орнотуу websocket-client pip cofigparser орнотуу

Кадам 6. Маалыматтар базасын түзүү

sudo yum -y mariadb mariabd -серверин орнотуңуз

sudo systemctl иштетүү mariadb sudo systemctl баштоо mariadb mysql -uroot -p

анан стол түзүү үчүн iotea_hb.sql колдонуңуз.

Step 7. db.ini түзүңүз жана ага бул коддорду жазыңыз

[db]

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

db.iniдеги db.ini жолун өзгөртүү

# db.py ичинде

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

Кадам 8. app.pyдеги портту өзгөртүп, вебсайтты баштаңыз:

# in app.py

#app.run (мүчүлүштүктөрдү чыгаруу = Туура, порт = 6000) app.run (мүчүлүштүктөрдү чыгаруу = Чын, порт = 8080)

# терминалда

пип орнотуу gunicorn gunicorn -w 5 -b 0.0.0.0:8080 колдонмо: колдонмо

азыр веб-браузериңизде 127.0.0.1:8080 зыярат кылыңыз, сиз вебсайтты көрө аласыз, бирок реалдуу убакыт маалыматтары көрсөтүлбөйт.

Кадам 9. loriot маалыматтарды алуу

Башка терминалды ачыңыз, виртуалдык чөйрөнү кайра киргизиңиз жана loriot колдонмосун баштаңыз:

cd iotea-hb

булак бин/жандандыруу gunicorn loriot: колдонмо

Бир аз күтө туруңуз, сиз веб -сайтта көрсөтүлгөн маалыматтарды көрөсүз, же loriot.pyдеги wssти өзгөртө аласыз:

# in loriot.py

#ws = create_connection ("wss: //cn1.loriot.io/app? токен = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

5 -кадам: операция

Сиз реалдуу убакыт маалыматтарды көрүү үчүн биздин веб-сайттарга кире аласыз:

  • Яанда
  • Демонстрация үчүн

Сунушталууда: