Talaan ng mga Nilalaman:

Nakitang LoRa IoTea Solution: 5 Hakbang
Nakitang LoRa IoTea Solution: 5 Hakbang

Video: Nakitang LoRa IoTea Solution: 5 Hakbang

Video: Nakitang LoRa IoTea Solution: 5 Hakbang
Video: ТОП-5 случаев крушения НЛО 2024, Hulyo
Anonim
Nakita ang Solusyong LoRa IoTea
Nakita ang Solusyong LoRa IoTea

Isang awtomatikong sistema ng pagkolekta ng impormasyon na inilapat sa plantasyon ng tsaa. Bahagi ito ng kolektibong impormasyon sa pang-agrikultura.

Hakbang 1: Mga Bagay na Ginamit sa Project na Ito

Mga bahagi ng hardware

  • Grove - Carbon Dioxide Sensor (MH-Z16)
  • Grove - Digital Light Sensor
  • Grove - Dust Sensor (PPD42NS)
  • Grove - Oxygen Sensor (ME2-O2-Ф20)
  • Soil Moisture & Temperature Sensor
  • LoRa LoRaWAN Gateway - 868MHz Kit na may Raspberry Pi 3
  • Grove - Temp & Humi & Barometer Sensor (BME280)

Mga software app at serbisyong online

Microsoft Visual Studio 2015

Hakbang 2: Kwento

Ang Smart agrikultura ay upang ilapat ang teknolohiya ng Internet of Things sa tradisyunal na agrikultura, gamit ang mga sensor at software upang makontrol ang paggawa ng agrikultura sa pamamagitan ng mga platform sa mobile o computer, na ginagawang mas matalino ang tradisyunal na agrikultura.

Sa Mengding Mountain hilagang-silangan ng Ya’an, Sichuan, ang bundok ng bundok ay tumatakbo sa kanluran hanggang silangan sa isang dagat na berde. Ito ay isang pamilyar na paningin para sa 36-taong-gulang na Deng, isa sa napakakaunting mga gumagawa ng tsaa ng Mengding ng kanyang henerasyon, na may isang plantasyon ng 50mu (= 3.3 hectares) na matatagpuan sa 1100m sa itaas na antas ng dagat. Ang Deng ay nagmula sa isang pamilya ng mga gumagawa ng tsaa, ngunit ang pagdala ng pamana ng pamilya ay hindi isang madaling gawain. "Ang aming mga tsaa ay lumaki sa mataas na altitude sa isang organikong kapaligiran upang matiyak ang mahusay na kalidad nito. Ngunit sa parehong oras, ang density ng paglago ay mababa, mataas ang gastos at hindi pantay ang pamumulaklak, na ginagawang mahirap anihin ang tsaa. Iyon ang dahilan kung bakit ang mga mataas na bundok na tsaa ay maliit na pag-aani at ang kanilang mga halaga ay hindi makikita sa merkado. " Sa nagdaang dalawang taon, sinusubukan ni Deng na itaas ang kamalayan ng mga mamimili sa mataas na bundok na tsaa upang maitaguyod ang kanilang halaga. At nang makilala niya si Fan, na naghahanap ng isang plantasyon upang maipatupad ang teknolohiya ng IoTea ng Seeed, isang perpektong tugma para sa isang solusyon ang nagawa. Nilalayon ng Seeed IoTea Solution na tulungan ang mga magsasaka ng tsaa na mas mahusay na pamahalaan ang mga plantasyon nang hindi binabago ang tradisyunal na kasanayan sa paglilinang ng tsaa, at upang ipakita ang real-time na data sa kapaligiran mula sa mga plantasyon sa isang bukas na platform.

Na binubuo ng mga sensor, node, at gateway, kinokolekta ng IoTea ang real-time na data ng mga kadahilanan na maaaring makaapekto sa kalidad ng tsaa sa panahon ng paglilinang at mga proseso ng produksyon, kabilang ang temperatura at halumigmig, CO2, O2, PM, at light expose. Ang data ay nakolekta ng mga sensor, ipinadala ng mga node sa gateway at kalaunan sa cloud, at ginagawang ma-access upang wakasan ang mga customer sa isang webpage.

Hakbang 3: Koneksyon sa Hardware

Hakbang1: Koneksyon sa Gateway

Ang gateway ay naka-install nang magkahiwalay sa isang kahon. Isinasaalang-alang ang problema sa pagwawaldas ng init, nagdagdag kami ng 2 tagahanga. Ang isa ay para sa pagwawaldas ng init ng Raspberry Pi, ang isa pa ay para sa panloob at panlabas na sirkulasyon ng hangin. Ang kahon ng gateway ay inilalagay sa bahay ng isang magsasaka, kaya hindi namin kailangang isaalang-alang ang problema sa kuryente nito.

Larawan
Larawan

Hakbang2: Koneksyon sa Node

Ang node ay terminal ng data, at lahat ng mga orihinal na data ay nakuha mula dito. Mayroong 6 na mga sensor na konektado sa node. Bilang karagdagan sa lupa na kahalumigmigan at temperatura sensor, inilalagay namin ang iba pang mga sensor sa loob ng louver box.

Larawan
Larawan
Larawan
Larawan

Ang node ay inilalagay sa isang kahon na hindi tinatagusan ng tubig. Upang magkaroon ng isang mas mahusay na koneksyon sa node, gumawa kami ng isang adapter board. Sa huli, ibibigay namin ang link sa pag-download ng eskematiko ng board na ito. Tulad ng ipinakita sa ibaba, ang mga cable ng sensor ay naka-plug sa adapter board sa pamamagitan ng mga bloke ng terminal. Gumagamit kami ng 3 MOS tubes (SI2301) upang bumuo ng mga switch ng switch upang makontrol ang pag-on at pag-off ng mga sensor at bentilador. Ginagamit ang fan upang magpalamig. Mayroon kaming isang sensor ng temperatura (DS18B20) na naka-mount sa pisara. Maaari nitong sabihin sa amin ang panloob na temperatura ng kahon, at pagkatapos ay magpasya ang microcontroller kung i-on ang fan. Gumagamit kami ng maraming mga resistors upang makagawa ng isang circuit ng divider ng boltahe upang masukat ang boltahe ng lead-acid na baterya. Sa wakas, nakareserba kami ng 3 mga interface ng IIC at serial port sa board para sa paglaon ng pagpapalawak at pag-debug.

Larawan
Larawan

Pag-usapan natin ang tungkol sa problema sa supply ng kuryente ng node. Ang node ay inilalagay sa plantasyon ng tsaa nang sapalaran, kaya't ang tradisyunal na pamamaraan ng supply ng kuryente ay hindi na naaangkop. Ang paggamit ng isang solusyon sa solar power ay isang magandang ideya. Maraming mga solusyon na ibinigay sa merkado sa kasalukuyan. Maaari kaming pumili ng isa sa mga ito na nakakatugon sa aming mga pangangailangan. Mayroong 3 mga bahagi sa solusyon na pinili namin: solar panel, solar charge controller at lead acid na baterya. Upang makuha nang mas mahusay ang solar enerhiya, inilalagay namin ang solar panel sa tuktok ng bracket at ayusin ang anggulo nito upang matiyak na nakaharap ito sa araw. Inilagay namin ang solar charge controller sa parehong kahon na may node. Dahil walang labis na puwang sa loob ng kahon, kailangan naming maghanap ng isang bagong kahon na hindi tinatagusan ng tubig upang mailagay ang baterya ng lead acid.

Larawan
Larawan
Larawan
Larawan
Larawan
Larawan

Hakbang 4: Pag-configure ng Software

Node

Sa seksyong ito, ipakikilala namin ang pangunahing pagsasaayos ng software ng node.

DataFormat

Ang data na na-upload ng node sa gateway:

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

Kahulugan ng bawat bit ng data:

Lora_data [0] : Temperatura ng hangin, ℃

Lora_data [1] : Kahalumigmigan ng hangin,%

Lora_data [2] : Altitude mataas na m, m

Lora_data [3] : Altitude mababang walo

Lora_data [4] : konsentrasyon ng CO2 mataas na walo, ppm

Lora_data [5] : konsentrasyon ng CO2 mababa sa walo

Lora_data [6] : Dust konsentrasyon mataas na walo, pcs / 0.01cf

Lora_data [7] : Ang konsentrasyon ng alikabok ay mababa sa walo

Lora_data [8] : Banayad na intensidad mataas na walo, lux

Lora_data [9] : Banayad na tindi mababa sa walo

Lora_data [10] : O2 konsentrasyon,% (hilaw na data na hinati ng 1000)

Lora_data [11] : Temperatura ng lupa, ℃

Lora_data [12] : Halumigmig ng lupa,%

Lora_data [13] : Boltahe ng baterya, v

Lora_data [14] : Code ng error sa mga sensor

Error code:

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

Kahulugan ng bawat piraso:

bit 0: 1 ---- Error sa Temp & Humi & Barometer Sensor (BME280)

bit 1: 1 ---- Error sa Carbon Dioxide Sensor (MH-Z16)

bit 2: 1 ---- Dust Sensor (PPD42NS. error

bit 3: 1 ---- Error sa Digital Light Sensor

bit 4: 1 ---- Oxygen Sensor (ME2-O2-Ф20) error

bit 5: 1 ---- Error sa Soil Moisture at Temperature Sensor

bit 6: Nakareserba

bit 7: Nakareserba

Gumawa kami ng isang Error_code_transform.exe, buksan ito at mag-input ng error code sa hexadecimal, mabilis mong malalaman kung aling sensor ang error. Ang link sa pag-download ay nasa pagtatapos ng artikulong ito.

Pagsasaayos ng parameter: a) Siklo ng paghahatid ng data

// seeedtea.ino

#defineinterval_time 600 // segundo

Ang parameter na ito ay maaaring iba-iba upang baguhin ang cycle ng paghahatid ng data. Sa bawat pag-ikot, tumatagal ng 1 minuto ang pagkuha ng data. Kaya, hindi inirerekumenda na baguhin ang halagang ito sa mas mababa sa 60 segundo.

b) Oras ng pag-init ng dust sensor

//seeedtea.ino

#definePreheat_time 30000 // DustSensor warm-up time, milliseond //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s

c) Coefficient ng boltahe

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 // halaga ng ADC × Battery_coefficient = baterya_voltage #defineSolar_coefficient 0.22559 // Halaga ng ADC × Solar_coefficient = solar_voltage

Ang dalawang mga parameter na ito ay kinakalkula batay sa boltahe divider circuit.

d) Ang threshold ng temperatura ng pagbubukas ng fan

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperaturethreshold #defineFan_start_light 500 // light intensity

Kapag lumagpas sa aktwal na temperatura ang threshold, magsisimulang lumamig ang fan.

e) Parameter ng simula ng O2 sensor

//Oxygen.cpp

# kahuluganO2_percentage 208.00 //20.8%

f) Macro switch

//seeedtea.ino

#defineLORA_RUN // Matapos ang komento, ang pagpapasimula ng Lora at paghahatid ng data ay titigil sa #defineSENSOR_RUN // Matapos ang komento, hihinto sa pagtatrabaho ang mga externalsensors //POWER_Ctrl.cpp #defineFAN_ON // Fortesting lamang, kailangang i-comment ang praktikal na aplikasyon / **** *** Mode ng kontrol ng DS18B20 ********************* / #defineSlower_Mode // Mabagal na mode upang mapansin ang temperatura. Ang puna sa labas ay mabilis na mode

g) Pagma-map ng pin

D2: LED tagapagpahiwatig at panlabas na pag-reset ng microcontrollerIIC: SCL at SDA

//Dust_other.h

#defineDust_pin 3 // Dust sensor //CO2.cpp # kahuluganCO2_serial Serial1 // gumamit ng hardwareserial port (D0 & D1) //seeedtea.ino #definedataPin 6 // Pin ng data ng lupa #defineclockPin 7 // Pin ng orasan ng lupa // POWER_Ctrl. h # defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Fan #defineAir_CtrlPin 10 // Control pin para sa mga sensor na nakalagay sa louverbox #defineSoil_CtrlPin 11 // Soil Moisture & Temperature Sensor switch pin #defineBattery_pin A2 // Sukatin ang boltahe ng baterya #defineBattery_pin A2 // Sukatin ang boltahe ng baterya #defineBattery_pin A2 // Sukatin ang boltahe ng baterya / Sukatin ang solar panelvoltage //Oxygen.h # tukuyinO2_pin A1 // O2 sensor

h) timer ng Watchdog

Ginagamit ang timer ng bantay upang subaybayan ang katayuan ng pagpapatakbo ng system. Kapag ang sistema ay tumatakbo nang hindi normal, ang node ay mare-reset, upang maaari itong magpatakbo ng tuloy-tuloy sa isang mahabang panahon.

Ang sanggunian na isangguni:

  • Ang Adafruit_SleepyDog.h ay naidagdag sa proyekto
  • Ang Adafruit_ASFcore-master.zip ay nakabalot sa folder ng proyekto at kailangang manu-manong maidagdag sa Arduino IDE.

Mga kaugnay na pag-andar:

Paganahin ang tagapagbantay

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

Mga parameter ng pag-input:

Int maxPeriodMS: Naghihintay ng oras sa milliseconds. Ang maximum na pinapayagan ay 16000 milliseconds.

halaga ng pagbalik:

Int type, ibalik ang aktwal na oras ng paghihintay

I-reset ang bantay

walang bisa WatchdogSAMD:: i-reset ()

Tawagin ang pagpapaandar na ito upang i-reset ang timer ng tagapagbantay, tinukoy bilang "pagpapakain sa aso." Ang labis na oras ng paghihintay nang hindi na-reset ay magiging sanhi ng pag-restart ng node.

Itigil ang tagapagbantay

walang bisa WatchdogSAMD:: huwag paganahin ()

Gateway

Sa seksyong ito ay ipakikilala namin kung paano kumonekta sa Loriot server.

Hakbang1: Pagrehistro sa Loriot Server Gateway

a) Kailangang magrehistro muna ang isang bagong gumagamit, mag-click sa pagpaparehistro ng address. Punan ang UserName, Password at email address upang magparehistro, pagkatapos ng pagpaparehistro isang email ang ipapadala sa iyo, mangyaring sundin ang tagubilin sa email upang maisaaktibo.

b) Matapos ang matagumpay na pag-aktibo, mag-click dito upang mag-log in. Ang default na baitang ay "Community Network", sinusuportahan nito ang 1 Gateway (RHF2S001) at 10 node.

c) Ipasok ang Dashboard -> Gateway, i-click ang Magdagdag ng pagsisimula ng Gateway upang magdagdag ng Gateway.

d) Piliin ang Raspberry Pi 3

e) Itakda bilang sa ibaba:

  • Front-end ng radyo -> RHF2S001 868/915 MHz (SX1257)
  • BUS -> SPI

f) Punan ang MAC address ng iyong RHF2S001, dapat ay nasa format ng b8: 27: eb: xx: xx: xx. At i-input din ang impormasyon sa Lokasyon ng Gateway.

g) I-click ang "Magrehistro ng Raspberry Pi gateway" upang tapusin ang pagpaparehistro.

Larawan
Larawan

h) I-click ang nakarehistrong gateway upang ipasok ang pahina ng pagsasaayos, manu-mano ang paglipat ng "Plano ng Frequency", ang iyong plano dito ay napagpasyahan ng uri ng iyong uri na RHF2S001, ang magagamit na plano ay CN470, CN473, CN434, CN780, EU868, pagkatapos ng napiling mangyaring i-refresh ang pahina upang makuha ang eksaktong channel. Sa wiki na ito pipiliin namin ang EU868.

i) Patakbuhin ang utos sa masilya terminal :

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.

Larawan
Larawan

Hakbang2: Loriot Server Connect Node aparato

a) Kunin ang magagamit na mga channel sa gateway

Ang mga kasalukuyang gateway channel ay maaaring makuha mula sa Dashboard -> Gateway -> Iyong Gateway, maaari mong makita ang mga magagamit na mga channel tulad ng larawan sa ibaba.

Larawan
Larawan

b) Seeeduino LoRAWAN GPS (RHF3M076) Configuration

Buksan ang serial monitor ng ArduinoIDE, i-tap ang utos sa ibaba.

sa + ch

Upang kumpirmahin ang default na channel ng iyong Seeeduino_LoRAWAN GPS, makakakuha ka ng 3 mga channel. Kung walang magagamit na channel, maaari mong baguhin ang mga channel ng Seeeduino_LoRAWAN sa pamamagitan ng utos sa ibaba.

sa + ch = 0, 868.1

sa + ch = 1, 868.3 sa + ch = 2, 868.5

Pagkatapos ay maaari mong gamitin muli sa + ch upang suriin.

c) Idagdag ang Seeeduino_LoRAWAN GPS bilang isang ABP NodeLog sa Loriot server, I-click ang Dash Board -> Mga Aplikasyon -> SimpleApp. I-click ang Mag-import ng ABP, pag-input sa ibaba ng mga item

  • DevAddr: Nakuha ng Seeeduino_LoRAWAN GPS ang utos na "AT + ID" (Tandaan: Hindi sinusuportahan ng Loriot ang konektor ng colon, kailangan ng manwal na pag-alis)
  • FCntUp : Setto 1
  • FCntDn : Setto 1
  • NWKSKEY : Defaultvalue 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY : Defaultvalue 2B7E151628AED2A6ABF7158809CF4F3C
  • Ang EUI : DEVEUI, Seeeduino_LoRAWAN GPS ay dumaan sa utos na "AT + ID"
Larawan
Larawan

I-click ang pindutang I-import ang Device upang tapusin ang pag-import ng aparato. Piliin ngayon ang Dashboard-> Mga Application -> SampleApp, makikita mo ang bagong ABP Node na naidagdag mo lang.

Larawan
Larawan

d) Magpadala ng data mula sa Seeeduino_LoRAWAN

ATTENTION! Ito ay pagsubok lamang.

Bumalik sa serial monitor ng ArduinoIDE, magpadala ng utos:

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

Pagkatapos ay pumunta sa Dashboard -> Mga Application -> SampleApp -> Device, i-click ang Node Device EUI o DevAddr, mahahanap mo ang data na ipinadala mo rito.

Larawan
Larawan

Para sa mga detalye, mangyaring sumangguni sa wiki na ito.

Hakbang 5: Paggawa ng Website

Mga Kaugnay na Tool

  • virtualenv
  • Python3
  • Gunicorn
  • Superbisor
  • Nginx
  • MySQL

Ginagamit namin ang CentOS7 bilang pagsubok sa kapaligiran

virtualenv

Gumamit ng virtualenv upang bumuo ng isang nakapag-iisang kapaligiran sa produksyon ng python3

a) i-install

pip install virtualenv

b) lumikha ng isang python3 virtual na kapaligiran

virtualenv -p python3 iotea

c) simulan ang virtual na kapaligiran at ipasok ang direktoryo ng iotea

pinagmulan bin / buhayin

d) umiiral na kapaligiran

huwag paganahin

Python3

a) i-install

yum install ng epel-release

yum install python36

b) i-install ang umaasa sa library ng PyMySQL, DBUtils, Flask, websocket-client, configparser

pip install pymysql

pip install dbutils pip install flask pip install websocket-client pip install configparser

Gunicorn

a) i-install (sa ilalim ng kapaligiran ng Python3)

pip install ng gunicorn

b) patakbuhin ang proyekto ng flask (sa ilalim ng direktoryo ng proyekto ng iotea)

gunicorn -w 5 -b 0.0.0.0ubre000 app: app

c) patakbuhin ang websocket-clint upang makakuha ng loriot data

gunicorn loriot: app

d) tingnan ang puno ng proseso ng Gunicorn

pstree -ap | grep gunicorn

Superbisor

a) i-install (root user)

pip install supervisor

b) bumuo ng mga config file

echo_supervisord_conf> /etc/supervisord.conf

c) lumikha ng isang direktoryo at ipakilala ang isang pagsasaayos ng direktoryo

mkdir -p /etc/supervisor/conf.d

I-edit /etc/supervisord.conf at baguhin ang patlang ng mga file sa ilalim ng [isama] sa dulo ng file.

Tandaan na kailangan mong alisin ang ';' sa harap ng dalawang linya na ito, na kung saan ay ang character na komento.

[isama]

Mga file = /etc/supervisor/conf.d/*.conf

Nangangahulugan upang ipakilala ang /etc/supervisor/conf.d/. Ang sumusunod na file ng pagsasaayos ay ginagamit bilang file ng pagsasaayos ng proseso (sinusubaybayan ng superbisor).

d) papasok na pagsasaayos (sa ilalim ng direktoryo ng iotea)

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

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

e) buksan ang iotea ihain

superviosrctl reload # muling i-load ang file ng pagsasaayos

superviosrctl simulan loriot # buksan loriot data pagtanggap superviosrctl simulan iotea # buksan ang iotea flask application

f) iba pang mga karaniwang operasyon

supervisorctl reload # i-reload ang file ng pagsasaayos

supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # tingnan ang higit pang utos

Nginx

a) i-install

yum install -y nginx

b) pagsasaayos

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

c) simulan ang Nginx

systemctl start nginx.service

MySQL

a) mga kaugnay na parameter

gumagamit = 'ugat'

passwd = '1234' db = 'iotea' port = 3306

b) file

iotea_iotea.sql

c) pagsasaayos ng file

db.ini

Inirerekumendang: