Satura rādītājs:

Redzēts LoRa IoTea risinājums: 5 soļi
Redzēts LoRa IoTea risinājums: 5 soļi

Video: Redzēts LoRa IoTea risinājums: 5 soļi

Video: Redzēts LoRa IoTea risinājums: 5 soļi
Video: Джейми Оливер: Обучить каждого ребенка тому, что такое еда 2024, Jūlijs
Anonim
Redzēts LoRa IoTea risinājums
Redzēts LoRa IoTea risinājums

Tējas stādīšanai piemērota automātiska informācijas vākšanas sistēma. Tā ir daļa no viedās lauksaimniecības informācijas vākšanas.

1. darbība. Šajā projektā izmantotās lietas

Aparatūras komponenti

  • Grove - oglekļa dioksīda sensors (MH -Z16)
  • Grove - digitālais gaismas sensors
  • Grove - putekļu sensors (PPD42NS)
  • Grove-skābekļa sensors (ME2-O2-Ф20)
  • Augsnes mitruma un temperatūras sensors
  • LoRa LoRaWAN vārteja - 868 MHz komplekts ar Raspberry Pi 3
  • Grove - Temp & Humi & Barometer sensors (BME280)

Programmatūras lietotnes un tiešsaistes pakalpojumi

Microsoft Visual Studio 2015

2. darbība: stāsts

Viedā lauksaimniecība ir izmantot lietu interneta tehnoloģiju tradicionālajai lauksaimniecībai, izmantojot sensorus un programmatūru, lai kontrolētu lauksaimniecības ražošanu, izmantojot mobilās vai datoru platformas, padarot tradicionālo lauksaimniecību “gudrāku”.

Mengdingas kalnā uz ziemeļaustrumiem no Jaņas, Sičuaņā, kalnu grēda iet zaļā jūrā uz rietumiem uz austrumiem. Šis ir vispazīstamākais skats 36 gadus vecajam Dengam, vienam no retajiem savas paaudzes Mengding tējas ražotājiem, ar 50 m (= 3,3 ha) plantāciju, kas atrodas 1100 m augstumā virs jūras līmeņa. Dengs nāk no tējas ražotāju ģimenes, taču ģimenes mantojuma saglabāšana nav viegls uzdevums. “Mūsu tējas tiek audzētas lielā augstumā bioloģiskā vidē, lai nodrošinātu tās izcilo kvalitāti. Bet tajā pašā laikā augšanas blīvums ir zems, izmaksas ir augstas un pumpuri ir nevienmērīgi, tāpēc tēju ir grūti novākt. Tāpēc augstkalnu tējas parasti ir nelielas ražas, un to vērtības netiek atspoguļotas tirgū.” Pēdējos divus gadus Dengs ir mēģinājis palielināt patērētāju izpratni par augstkalnu tēju, lai veicinātu to vērtību. Un, kad viņš satika Fanu, kurš meklēja plantāciju, lai ieviestu Seeed IoTea tehnoloģiju, tika panākta ideāla risinājuma atbilstība. Seeed IoTea risinājuma mērķis ir palīdzēt tējas audzētājiem labāk pārvaldīt stādījumus, nemainot tradicionālo tējas audzēšanas praksi, un atklātā platformā iesniegt reāllaika datus par stādījumiem.

IoTea, kas sastāv no sensoriem, mezgliem un vārtiem, apkopo reālā laika datus par faktoriem, kas var ietekmēt tējas kvalitāti audzēšanas un ražošanas procesā, tostarp temperatūru un mitrumu, CO2, O2, PM un gaismas iedarbību. Datus apkopo sensori, mezgli nosūta uz vārteju un galu galā mākoni, un tie ir pieejami galapatērētājiem tīmekļa vietnē.

3. darbība. Aparatūras savienojums

1. solis: vārtejas savienojums

Vārteja ir uzstādīta atsevišķi kastē. Ņemot vērā siltuma izkliedes problēmu, mēs pievienojām 2 ventilatorus. Viens ir paredzēts Raspberry Pi siltuma izkliedēšanai, otrs - iekšējai un ārējai gaisa cirkulācijai. Vārtejas kaste ir novietota zemnieka mājā, tāpēc mums nav jāapsver tā jaudas problēma.

Attēls
Attēls

2. solis: mezgla savienojums

Mezgls ir datu terminālis, un visi sākotnējie dati tiek iegūti no šejienes. Mezglam ir pievienoti 6 sensori. Papildus augsnes mitruma un temperatūras sensoram mēs ievietojam citus sensorus žalūziju kastē.

Attēls
Attēls
Attēls
Attēls

Mezgls ir ievietots ūdensnecaurlaidīgā kastē. Lai būtu labāks savienojums ar mezglu, mēs izgatavojam adaptera plāksni. Visbeidzot, mēs nodrošināsim šīs tāfeles shematisko lejupielādes saiti. Kā parādīts zemāk, sensoru kabeļi ir pievienoti adaptera plāksnei caur spaiļu blokiem. Mēs izmantojam 3 MOS lampas (SI2301), lai izveidotu slēdžu ķēdes, lai kontrolētu sensoru un ventilatora ieslēgšanu un izslēgšanu. Ventilators tiek izmantots atdzesēšanai. Uz tāfeles ir uzstādīts temperatūras sensors (DS18B20). Tas var mums pateikt kastes iekšējo temperatūru, un pēc tam mikrokontrolleris izlemj, vai ieslēgt ventilatoru. Mēs izmantojam vairākus rezistorus, lai izveidotu sprieguma dalītāja ķēdi svina-skābes akumulatora sprieguma mērīšanai. Visbeidzot, mēs rezervējam 3 IIC saskarnes un seriālo portu uz tāfeles vēlākai paplašināšanai un atkļūdošanai.

Attēls
Attēls

Parunāsim par mezgla barošanas problēmu. Mezgls tiek novietots tējas plantācijā nejauši, tāpēc tradicionālā barošanas metode vairs nav piemērojama. Saules enerģijas risinājuma izmantošana ir laba ideja. Pašlaik tirgū tiek piedāvāti daudzi risinājumi. Mēs varam izvēlēties vienu no tiem, kas atbilst mūsu vajadzībām. Mūsu izvēlētajā risinājumā ir 3 daļas: saules panelis, saules uzlādes kontrolieris un svina skābes akumulators. Lai labāk uztvertu saules enerģiju, mēs uzliekam saules paneli kronšteina augšpusē un noregulējam tā leņķi, lai tas būtu vērsts pret sauli. Mēs ievietojām saules uzlādes kontrolieri vienā kastē ar mezglu. Tā kā kastē nav papildu vietas, mums bija jāatrod jauna ūdensnecaurlaidīga kaste svina skābes akumulatora ievietošanai.

Attēls
Attēls
Attēls
Attēls
Attēls
Attēls

4. solis: programmatūras konfigurēšana

Mezgls

Šajā sadaļā mēs iepazīstināsim ar mezgla galvenokārt programmatūras konfigurāciju.

DataFormat

Mezgla augšupielādētie dati vārtejā:

neparakstīta zīme Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Katra datu bita nozīme:

Lora_data [0] : Gaisa temperatūra, ℃

Lora_data [1] : Gaisa mitrums, %

Lora_data [2] high Augstums augstumā astoņi, m

Lora_data [3] low Zemais augstums astoņi

Lora_data [4] : CO2 koncentrācija augsta astoņi, ppm

Lora_data [5] : CO2 koncentrācija zema astoņi

Lora_data [6] : Putekļu koncentrācija augsta astoņi, gab./0.01cf

Lora_data [7] low Putekļu koncentrācija zema astoņi

Lora_data [8] : Gaismas intensitāte augsta astoņi, lukss

Lora_data [9] : Gaismas intensitāte zema astoņi

Lora_data [10] : O2 koncentrācija, % (izejas dati dalīti ar 1000)

Lora_data [11] : Augsnes temperatūra, ℃

Lora_data [12] : Augsnes mitrums, %

Lora_data [13] : Akumulatora spriegums, v

Lora_data [14] : Sensoru kļūdas kods

Kļūdas kods:

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

Katra bita nozīme:

bits 0: 1 ---- Temp & Humi & Barometer Sensor (BME280) kļūda

bits 1: 1 ---- Oglekļa dioksīda sensora (MH-Z16) kļūda

bits 2: 1 ---- Putekļu sensora (PPD42NS) kļūda

bits 3: 1 ---- Digitālā gaismas sensora kļūda

bits 4: 1 ---- skābekļa sensora (ME2-O2-Ф20) kļūda

bits 5: 1 ---- Augsnes mitruma un temperatūras sensora kļūda

6. bits: rezervēts

7. bits: rezervēts

Mēs esam izveidojuši Error_code_transform.exe, atveriet to un ievadiet kļūdas kodu heksadecimālā formā, un jūs ātri uzzināsit, kurš sensors ir kļūda. Lejupielādes saite ir šī raksta beigās.

Parametru pielāgošana: a) Datu pārraides cikls

// seeedtea.ino

#defineinterval_time 600 // sekunde

Šo parametru var mainīt, lai mainītu datu pārraides ciklu. Katrā ciklā datu iegūšana ilgst apmēram 1 minūti. Tāpēc nav ieteicams mainīt šo vērtību uz mazāk nekā 60 sekundēm.

b) Putekļu sensora iesildīšanās laiks

//seeedtea.ino

#definePreheat_time 30000 // DustSensor iesildīšanās laiks, milisekundes //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s

c) Sprieguma koeficients

//POWER_Ctrl.cpp

#defineBattery_coefficient 0,159864 // ADC vērtība × Akumulatora koeficients = akumulatora spriegums #defineSolar_eefekts 0,22559 // ADC vērtība × Saules koeficients = saules spriegums

Šie divi parametri tiek aprēķināti, pamatojoties uz sprieguma dalītāja ķēdi.

d) Ventilatora atvēršanas temperatūras slieksnis

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperatūras slieksnis #defineFan_start_light 500 // gaismas intensitāte

Kad faktiskā temperatūra pārsniedz slieksni, ventilators sāks atdzist.

e) O2 sensora inicializācijas parametrs

// Skābeklis.cpp

#defineO2_percentage 208.00 // 20.8%

f) Makro slēdzis

//seeedtea.ino

#defineLORA_RUN // Pēc komentāra Lora inicializācija un datu pārraide tiks pārtraukta *** DS18B20 vadības režīms **********************/ #defineSlower_Mode // Lēnais režīms temperatūras maiņai. Komentārs ir ātrs režīms

g) Tapu kartēšana

D2: LED indikators un ārējais atiestatīšanas mikrokontrolleris IIC: SCL un SDA

// Putekļu_cits.h

#defineDust_pin 3 // Putekļu sensors //CO2.cpp #defineCO2_serial Serial1 // izmantojiet aparatūras portu (D0 & D1) //seeedtea.ino #definedataPin 6 // Augsnes datu tapa #defineclockPin 7 // Augsnes pulksteņa tapa // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Ventilators #defineAir_CtrlPin 10 // Vadības tapa sensoriem, kas ievietoti žalūzijās #defineSoil_CtrlPin 11 // Augsnes mitruma un temperatūras sensora slēdža tapa #defineBattery_pin A2 // Mērīt akumulatora spriegumu #pin /Saules paneļa sprieguma mērīšana // Skābeklis.h #defineO2_pin A1 // O2 sensors

h) Sargsuņa taimeris

Sargsuņa taimeris tiek izmantots, lai uzraudzītu sistēmas darbības statusu. Ja sistēma darbojas neparasti, mezgls tiks atiestatīts, lai tas varētu ilgstoši darboties.

Bibliotēka, uz kuru atsaukties:

  • Adafruit_SleepyDog.h ir pievienots projektam
  • Adafruit_ASFcore-master.zip ir iepakots mapē projekts, un tas manuāli jāpievieno Arduino IDE.

Saistītās funkcijas:

Iespējot sargsuņa darbību

int WatchdogSAMD:: iespējot (int maxPeriodMS, bool isForSleep)

Ievades parametri:

Int maxPeriodMS: gaidīšanas laiks milisekundēs. Maksimālais pieļaujamais ir 16000 milisekundes.

atgriešanās vērtība:

Int tips, atgrieziet faktisko gaidīšanas laiku

Atjaunot sargsuņa darbību

void WatchdogSAMD:: atiestatīt ()

Zvaniet šai funkcijai, lai atiestatītu sargsuņa taimeri, ko dēvē par "suņa barošanu". Pārsniedzot gaidīšanas laiku bez atiestatīšanas, mezgls tiks restartēts.

Stop sargsuns

void WatchdogSAMD:: atspējot ()

Vārteja

Šajā sadaļā mēs iepazīstināsim ar savienojumu ar Loriot serveri.

1. darbība: Loriot servera vārtejas reģistrācija

a) Jaunajam lietotājam vispirms ir jāreģistrē konts, noklikšķiniet uz reģistrācijas adreses. Lai reģistrētos, ievadiet lietotājvārdu, paroli un e -pasta adresi, pēc reģistrācijas jums tiks nosūtīts e -pasts. Lai aktivizētu, lūdzu, izpildiet e -pastā sniegtos norādījumus.

b) Pēc veiksmīgas aktivizācijas noklikšķiniet šeit, lai pieteiktos. Noklusējuma līmenis ir “Kopienas tīkls”, tas atbalsta 1 vārteju (RHF2S001) un 10 mezglus.

c) Ievadiet informācijas paneli -> vārteja, noklikšķiniet uz Pievienot vārteju, lai pievienotu vārteju.

d) Atlasiet Raspberry Pi 3

e) iestatiet šādi:

  • Radio priekšpuse -> RHF2S001 868/915 MHz (SX1257)
  • BUS -> SPI

f) Aizpildiet sava RHF2S001 MAC adresi, un tai jābūt formātā b8: 27: eb: xx: xx: xx. Un arī ievadiet vārtejas atrašanās vietas informāciju.

g) Lai pabeigtu reģistrāciju, noklikšķiniet uz “Reģistrēt Raspberry Pi vārteju”.

Attēls
Attēls

h) Noklikšķiniet uz reģistrētās vārtejas, lai atvērtu konfigurācijas lapu, manuāli pārslēdziet “Frekvenču plānu”, jūsu plānu šeit nosaka jūsu RHF2S001 tipa veids, pieejamais plāns ir CN470, CN473, CN434, CN780, EU868, pēc atlasīšanas, lūdzu, atsvaidziniet lapu lai iegūtu precīzu kanālu. Šajā wiki mēs izvēlamies EU868.

i) Izpildiet komandu špakteles terminālī :

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.

Attēls
Attēls

2. darbība: ierīce Loriot Server Connect Node

a) Iegūstiet pieejamos vārtejas kanālus

Pašreizējos vārtejas kanālus var iegūt no informācijas paneļa -> vārteja -> jūsu vārteja, pieejamos kanālus varat redzēt, kā parādīts attēlā.

Attēls
Attēls

b) Seeeduino LoRAWAN GPS (RHF3M076) konfigurācija

Atveriet ArduinoIDE sērijas monitoru, pieskarieties zemāk esošajai komandai.

pie+ch

Lai apstiprinātu sava Seeeduino_LoRAWAN GPS noklusējuma kanālu, jūs iegūsit 3 kanālus. Ja nav pieejams neviens kanāls, varat mainīt Seeeduino_LoRAWAN kanālus, izmantojot tālāk norādīto komandu.

pie+ch = 0, 868,1

pie+ch = 1, 868,3 pie+ch = 2, 868,5

Pēc tam varat vēlreiz izmantot+ch, lai pārbaudītu.

c) Pievienojiet Seeeduino_LoRAWAN GPS kā ABP NodeLog Loriot serverī, noklikšķiniet uz Dash Board -> Applications -> SimpleApp. Zem vienumiem noklikšķiniet uz Importēt ABP ievadi

  • DevAddr: Seeeduino_LoRAWAN GPS nokļūst caur komandu "AT+ID" (piezīme: Loriot neatbalsta resnās zarnas savienotāju, nepieciešams noņemt manuāli)
  • FCntUp : Iestatiet 1
  • FCntDn : Iestatiet 1
  • NWKSKEY : Noklusējuma vērtība 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY : Noklusējuma vērtība 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI, DEVEUI, Seeeduino_LoRAWAN GPS, izmantojot komandu "AT+ID"
Attēls
Attēls

Lai pabeigtu ierīces importēšanu, noklikšķiniet uz pogas Importēt ierīci. Tagad izvēlieties Dashboard-> Applications -> SampleApp, un jūs redzēsiet tikko pievienoto ABP Node.

Attēls
Attēls

d) Nosūtiet datus no Seeeduino_LoRAWAN

UZMANĪBU! Tas ir tikai pārbaudījums.

Atpakaļ uz ArduinoIDE sērijas monitoru, nosūtiet komandu:

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

Pēc tam dodieties uz Dashboard -> Applications -> SampleApp -> Device, noklikšķiniet uz Node Device EUI vai DevAddr, šeit atradīsit tikko nosūtītos datus.

Attēls
Attēls

Lai iegūtu sīkāku informāciju, lūdzu, skatiet šo wiki.

5. solis: vietnes izveide

Saistītie rīki

  • virtualenv
  • Python3
  • Gunicorn
  • Uzraugs
  • Nginx
  • MySQL

Mēs izmantojam CentOS7 kā testa izvietošanas vidi

virtualenv

Izmantojiet virtualenv, lai izveidotu atsevišķu python3 ražošanas vidi

a) instalēt

pip instalēt virtualenv

b) izveidot python3 virtuālo vidi

virtualenv -p python3 iotea

c) palaidiet virtuālo vidi un ievadiet iotea direktoriju

avota tvertne/aktivizēt

d) pastāv vide

deaktivizēt

Python3

a) instalēt

yum instalēt epel-release

yum instalēt python36

b) instalējiet atkarīgo bibliotēku PyMySQL, DBUtils, Flask, websocket-client, configparser

pip instalēt pymysql

pip instalēt dbutils pip instalēt kolbu pip instalēt websocket-client pip install configparser

Gunicorn

a) instalēt (Python3 vidē)

pip instalēt gunicorn

b) palaist kolbas projektu (saskaņā ar iotea projektu direktoriju)

gunicorn -w 5 -b 0.0.0.0:5000 lietotne: lietotne

c) palaist websocket-clint, lai iegūtu loriot datus

gunicorn loriot: lietotne

d) apskatīt Gunicorn procesa koku

pstree -ap | grep gunicorn

Uzraugs

a) instalēt (root lietotājs)

pip instalēšanas uzraugs

b) ģenerēt konfigurācijas failus

echo_supervisord_conf> /etc/supervisord.conf

c) izveidot direktoriju un ieviest direktorija konfigurāciju

mkdir -p /etc/supervisor/conf.d

Rediģējiet /etc/supervisord.conf un mainiet failu lauku zem [iekļaut] faila beigās.

Ņemiet vērā, ka ir jānoņem ';' šo divu rindu priekšā, kas ir komentāra raksturs.

[iekļaut]

Faili = /etc/supervisor/conf.d/*.conf

Līdzekļi, lai ieviestu /etc/supervisor/conf.d/. Sekojošais konfigurācijas fails tiek izmantots kā procesa konfigurācijas fails (uzrauga vadītājs).

d) ienākošā konfigurācija (iotea direktorijā)

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

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

e) atvērta iotea serve

superviosrctl reload #reload konfigurācijas failu

superviosrctl start loriot #open loriot datu uztveršana superviosrctl start iotea #atveriet iotea kolbas lietojumprogrammu

f) citas kopīgas darbības

supervisorctl reload # atkārtoti ielādējiet konfigurācijas failu

supervisorctl atjaunināšana supervorctl start xxx supervorctl stop xxx supervorctl statuss xxx supervorctl palīdzība # skatīt vairāk komandu

Nginx

a) instalēt

yum instalēt -y nginx

b) konfigurācija

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

c) palaidiet Nginx

systemctl start nginx.service

MySQL

a) saistītie parametri

lietotājs = 'root'

passwd = '1234' db = 'iotea' ports = 3306

b) fails

iotea_iotea.sql

c) konfigurācijas fails

db.ini

Ieteicams: