Мазмуну:

See LoRa IoTea Solution: 5 кадам
See LoRa IoTea Solution: 5 кадам

Video: See LoRa IoTea Solution: 5 кадам

Video: See LoRa IoTea Solution: 5 кадам
Video: Destination LoRaWAN: How LoRaWAN Advances Business in Australia with IoT Solutions 2024, Июль
Anonim
LoRa IoTea чечимин көрдүңүз
LoRa IoTea чечимин көрдүңүз

Автоматтык маалымат чогултуу системасы чай плантациясына колдонулат. Бул акылдуу айыл чарба маалыматын чогултуунун бир бөлүгү.

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 технологиясын ишке ашыруу үчүн плантация издеп жүргөн Фан менен жолукканда, чечимге эң сонун дал келген. The Seeed IoTea Solution чай фермерлерине чай өстүрүүнүн салттуу практикасын өзгөртпөстөн плантацияларды башкарууну жакшыртууга жана плантациялардан экологиялык маалыматтарды ачык аянтчада көрсөтүүгө багытталган.

Сенсорлордон, түйүндөрдөн жана шлюздардан турган IoTea өстүрүү жана өндүрүш процесстеринде чайдын сапатына, анын ичинде температура жана нымдуулукка, CO2, O2, PM жана жарыкка таасир этүүчү факторлордун реалдуу убакыт маалыматтарын чогултат. Маалыматтар сенсорлор тарабынан чогултулат, түйүндөр аркылуу шлюзга жана акыры булутка жөнөтүлөт жана веб -баракчанын акыркы кардарларына жеткиликтүү болот.

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

Step1: Gateway Connection

Шлюз коробкага өзүнчө орнотулат. Жылуулук таралуу көйгөйүн эске алып, биз 2 күйөрманы коштук. Бири Raspberry Pi жылуулук таркатуу үчүн, экинчиси ички жана тышкы аба айлануусу үчүн. Шлюз кутусу дыйкандын үйүнө жайгаштырылган, андыктан анын электр көйгөйүн эске алуунун кажети жок.

Сүрөт
Сүрөт

Step2: Node Connection

Түйүн маалыматтын терминалы болуп саналат жана бардык баштапкы маалыматтар ушул жерден алынган. Түйүнгө туташкан 6 сенсор бар. Топурактын нымдуулугу жана температура сенсорунан тышкары, биз башка сенсорлорду лювер кутусунун ичине коёбуз.

Сүрөт
Сүрөт
Сүрөт
Сүрөт

Түйүн суу өткөрбөй турган кутуга жайгаштырылган. Түйүнгө жакшы туташуу үчүн адаптер тактасын жасайбыз. Акырында, биз бул тактанын схемасын жүктөө шилтемесин беребиз. Төмөндө көрсөтүлгөндөй, сенсорлордун кабели терминалдык блоктор аркылуу адаптер тактасына туташтырылган. Биз 3 MOS түтүкчөлөрүн (SI2301) колдонуп, сенсорлорду жана күйөрмандарды күйгүзүүнү жана өчүрүүнү контролдоо үчүн схемаларды курабыз. Желдеткич муздатуу үчүн колдонулат. Бизде тактага орнотулган температура сенсору (DS18B20) бар. Бул бизге кутунун ички температурасын айта алат, андан кийин микроконтроллер желдеткичти күйгүзүүнү чечет. Коргошун-кислота батареясынын чыңалуусун өлчөө үчүн чыңалуу бөлүштүргүч схемасын түзүү үчүн бир нече резисторлорду колдонобуз. Акыр -аягы, биз кийинчерээк кеңейтүү жана мүчүлүштүктөрдү оңдоо үчүн тактада 3 IIC интерфейстерин жана сериялык портту сактайбыз.

Сүрөт
Сүрөт

Келгиле, түйүндүн электр менен камсыздоо көйгөйү жөнүндө сүйлөшөлү. Түйүн чай плантациясына туш келди жайгаштырылган, андыктан электр менен жабдуунун салттуу ыкмасы колдонулбай калды. Күн энергиясын колдонуу - жакшы идея. Учурда рынокто көптөгөн чечимдер бар. Биз алардын муктаждыктарына жооп берген бирин тандай алабыз. Биз тандаган чечимде 3 бөлүк бар: күн панели, күн зарядынын контролери жана коргошун кислотасы батареясы. Күндүн энергиясын жакшыраак түшүрүү үчүн, кронштейндин үстүнө күн панелин коюп, анын күнгө караганын камсыз кылуу үчүн анын бурчун жөнгө салабыз. Биз күн зарядынын контроллерин түйүнү бар ошол кутуга жайгаштырдык. Кутунун ичинде ашыкча боштук болбогондуктан, коргошун кислотасы бар батарейканы коюу үчүн жаңы суу өткөрбөй турган кутуну табууга туура келди.

Сүрөт
Сүрөт
Сүрөт
Сүрөт
Сүрөт
Сүрөт

4 -кадам: Программаны конфигурациялоо

Түйүн

Бул бөлүмдө биз негизинен түйүндүн программалык конфигурациясын тааныштырабыз.

DataFormat

Түйүн тарабынан шлюзга жүктөлгөн маалыматтар:

белгисиз char 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 концентрациясы жогорку сегиз, ppm

Lora_data [5]: СО2 концентрациясы төмөн сегиз

Lora_data [6]: Чаңдын концентрациясы жогорку сегиз, даана/0.01cf

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] = [бит7, бит6, бит5, бит4, бит3, бит2, бит1, бит0]

Ар бир биттин мааниси:

бит 0: 1 ---- Temp & Humi & Barometer Sensor (BME280) катасы

бит 1: 1 ---- Көмүр кычкыл газынын сенсору (MH-Z16) катасы

бит 2: 1 ---- Чаң сенсору, PPD42NS, ката

бит 3: 1 ---- Digital Light Sensor катасы

бит 4: 1 ---- Кычкылтек сенсорунун (ME2-O2-Ф20) катасы

бит 5: 1 ---- Топурактын нымдуулугу жана температура сенсорунун катасы

бит 6: Корголгон

бит 7: Корголгон

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

Параметрлерди тууралоо: а) Маалыматтарды берүү цикли

// seeedtea.ino

#defineinterval_time 600 // секунд

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

б) Чаң сенсорунун жылуу убактысы

//seeedtea.ino

#DefinePreheat_time 30000 // DustSensor ысытуу убактысы, миллисонд //Dust_other.cpp #definesampletime_ms 30000 // sampleling3030s

в) Чыңалуу коэффициенти

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 // ADC мааниси × Battery_coefficient = батарея_чыңалуусу

Бул эки параметр чыңалуу бөлүштүргүч схемасынын негизинде эсептелет.

г) Желдеткичтин ачылыш температурасынын босогосу

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperaturethreshold #defineFan_start_light 500 // жарык интенсивдүүлүгү

Чыныгы температура чектен ашканда, желдеткич муздай баштайт.

д) O2 сенсорун инициализациялоочу параметр

//Oxygen.cpp

#defineO2_пайыз 208.00 //20.8%

е) Макро которуу

//seeedtea.ino

#defineLORA_RUN // Комментарийден кийин Лораны инициализациялоо жана маалыматтарды берүү токтотулат #defineSENSOR_RUN // Комментарийден кийин externalsensors иштебей калат //POWER_Ctrl.cpp #defineFAN_ON // Форестинг гана, Практикалык колдонмо комментарийлениши керек /**** *** DS18B20 башкаруу режими **********************/ #defineSlower_Mode // Жай режим температураны бириктирет. Комментарий тез режимде

ж) пин картасын түзүү

D2: LED көрсөткүчү жана тышкы баштапкы микроконтроллерIIC: SCL жана SDA

//Dust_other.h

#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 // Fan #defineAir_CtrlPin 10 // louverboxко жайгаштырылган сенсорлорду көзөмөлдөөчү пин #defineSoil_CtrlPin 11 // Топурактын Нымдуулугу жана Температура Сенсорунун которгуч кадапчасы #Аккумулятордук_пин А3 / /Күн панелинин чыңалуусун өлчөө // Оксиген.h #аныктооO2_pin A1 // O2 сенсор

з) Watchdog таймери

Күзөтчү таймери системанын иштөө абалын көзөмөлдөө үчүн колдонулат. Тутум анормалдуу иштеп жатканда, түйүн узак убакыт бою үзгүлтүксүз иштей алгыдай абалга келтирилет.

Шилтеме кылынуучу китепкана:

  • Adafruit_SleepyDog.h долбоорго кошулду
  • Adafruit_ASFcore-master.zip долбоордун папкасында пакеттелген жана Arduino IDEге кол менен кошулушу керек.

Тиешелүү функциялар:

Күзөтчүнү иштетүү

int WatchdogSAMD:: иштетүү (int maxPeriodMS, bool isForSleep)

Киргизүү параметрлери:

Int maxPeriodMS: күтүү убактысы миллисекундтарда. Максималдуу уруксат берилген 16000 миллисекунд.

кайтаруу мааниси:

Int түрү, чыныгы күтүү убактысын кайтарыңыз

Күзөтчүнү баштапкы абалга келтирүү

void WatchdogSAMD:: reset ()

Бул функцияны "итке тамак берүү" деп аталган кайтаруучу таймерди баштапкы абалга келтирүү үчүн чакырыңыз. Баштапкы абалга келбестен күтүү убактысынан ашып кетүү түйүндү кайра баштоого алып келет.

Күзөтчүнү токтот

void WatchdogSAMD:: disable ()

Шлюз

Бул бөлүмдө биз Loriot серверине кантип туташууну тааныштырабыз.

Step1: Loriot Server Gateway каттоо

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

б) ийгиликтүү активдештирилгенден кийин, кирүү үчүн бул жерди басыңыз. Демейки деңгээл "Community Network", ал 1 Gateway (RHF2S001) жана 10 түйүндү колдойт.

в) Куралдар тактасына кирүү -> Gateway, Gateway кошуу үчүн Gateway баштоону басыңыз.

г) Raspberry Pi 3 тандаңыз

e) Төмөндө көрсөтүлгөндөй:

  • Радио фронту -> RHF2S001 868/915 МГц (SX1257)
  • АВТОБУС -> SPI

f) Сиздин RHF2S001дин MAC дарегин толтуруңуз, b8: 27: eb: xx: xx: xx форматында болушу керек. Жана ошондой эле шлюздун жайгашкан жери жөнүндө маалыматты киргизиңиз.

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.

Сүрөт
Сүрөт

Step2: Loriot Server Connect Node түзмөгү

а) жеткиликтүү шлюз каналдарын алуу

Учурдагы шлюз каналдарын Dashboard -> Gateway -> Your Gatewayден алса болот, сиз колдогу каналдарды төмөнкү сүрөттө көрө аласыз.

Сүрөт
Сүрөт

б) Seeeduino LoRAWAN GPS (RHF3M076) конфигурациясы

ArduinoIDE сериялык мониторун ачыңыз, төмөнкү буйрукту басыңыз.

Seeeduino_LoRAWAN GPSтин демейки каналын ырастоо үчүн, сиз 3 каналды аласыз. Эгерде жеткиликтүү канал жок болсо, Seeeduino_LoRAWAN каналдарын төмөнкү буйрук менен өзгөртө аласыз.

учурда+ch = 0, 868.1

учурда+ch = 1, 868,3 at+ch = 2, 868,5

Андан кийин кайра текшерүү үчүн+ch баскычын колдонсоңуз болот.

c) Seeeduino_LoRAWAN GPSти ABP NodeLog катары Loriot серверине кошуңуз, Dash Board -> Applications -> SimpleApp басыңыз. Элементтердин астына ABP импортун киргизиңиз

  • DevAddr: Seeeduino_LoRAWAN GPS "AT+ID" буйругунан өтөт (Эскертүү: Loriot жоон туташтыргычты колдобойт, кол менен алып салуу керек)
  • FCntUp: Setto 1
  • FCntDn: Setto 1
  • NWKSKEY: Defaultvalue 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY: Defaultvalue 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI: DEVEUI, Seeeduino_LoRAWAN GPS "AT+ID" буйругунан өтөт
Сүрөт
Сүрөт

Түзмөктү импорттоону бүтүрүү үчүн Аппаратты импорттоо баскычын басыңыз. Эми Dashboard-> Applications -> SampleApp тандаңыз, сиз жаңы кошкон жаңы ABP түйүнүн көрөсүз.

Сүрөт
Сүрөт

г) Seeeduino_LoRAWANдан маалыматтарды жөнөтүү

ДИККАТ! Бул жөн эле сыноо.

ArduinoIDE сериялык мониторуна кайтып, буйрукту жөнөтүңүз:

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

Андан кийин Панельге өтүңүз -> Колдонмолор -> SampleApp -> Түзмөк, EUI же DevAddr түйүн баскычын чыкылдатыңыз, сиз бул жерден жөн эле жөнөткөн маалыматтарды таба аласыз.

Сүрөт
Сүрөт

Чоо -жайын билүү үчүн бул викиге кайрылыңыз.

5 -кадам: Сайттын курулушу

Окшош куралдар

  • virtualenv
  • Python3
  • Gunicorn
  • Жетекчи
  • Nginx
  • MySQL

Биз CentOS7ди тестирлөө чөйрөсү катары колдонобуз

virtualenv

Өз алдынча python3 өндүрүш чөйрөсүн түзүү үчүн virtualenv колдонуңуз

а) орнотуу

pip virtualenv орнотуу

б) python3 виртуалдык чөйрөсүн түзүү

virtualenv -p python3 iotea

в) виртуалдык чөйрөнү баштоо жана iotea каталогун киргизүү

булак бин/жандандыруу

г) бар чөйрө

өчүрүү

Python3

а) орнотуу

yum epel-release орнотуу

python36 орнотуу

б) PyMySQL, DBUtils, Flask, websocket-client, configparser көз каранды китепканасын орнотуу

pymysql орнотуу

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

Gunicorn

а) орнотуу (Python3 чөйрөсүндө)

gunicorn орнотуу

б) колбанын долбоорун иштетүү (iotea проектинин каталогунда)

gunicorn -w 5 -b 0.0.0.0:5000 колдонмо: колдонмо

в) лориот маалыматын алуу үчүн websocket-clintти иштетүү

gunicorn loriot: колдонмо

г) Gunicorn процессинин дарагын көрүү

pstree -ap | grep gunicorn

Жетекчи

а) орнотуу (түп колдонуучу)

pip орнотуу көзөмөлдөөчүсү

б) конфигурация файлдарын түзүү

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/

д) ачык йотеа кызмат кылуу

superviosrctl reload #конфигурация файлын кайра жүктөө

superviosrctl loriot баштоо #ачык лориот маалыматын кабыл алуу

е) башка жалпы операциялар

supervisorctl reload # конфигурация файлын кайра жүктөө

supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl жардам # дагы команданы көрүү

Nginx

а) орнотуу

yum install -y nginx

б) конфигурация

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

с) Nginxти баштоо

systemctl nginx.service баштайт

MySQL

а) байланышкан параметрлер

user = 'root'

passwd = '1234' db = 'iotea' порт = 3306

б) файл

iotea_iotea.sql

в) конфигурация файлы

db.ini

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