Obsah:

Viděné řešení LoRa IoTea: 5 kroků
Viděné řešení LoRa IoTea: 5 kroků

Video: Viděné řešení LoRa IoTea: 5 kroků

Video: Viděné řešení LoRa IoTea: 5 kroků
Video: Эндрю МакАфи: Как будет выглядеть работа в будущем? 2024, Listopad
Anonim
Viděno řešení LoRa IoTea
Viděno řešení LoRa IoTea

Systém automatického shromažďování informací aplikovaný na čajové plantáže. Je součástí inteligentního shromažďování zemědělských informací.

Krok 1: Věci použité v tomto projektu

Hardwarové komponenty

  • Grove - senzor oxidu uhličitého (MH -Z16)
  • Grove - digitální světelný senzor
  • Grove - prachový senzor (PPD42NS)
  • Grove-Kyslíkový senzor (ME2-O2-Ф20)
  • Čidlo vlhkosti a teploty půdy
  • LoRa LoRaWAN Gateway - souprava 868 MHz s Raspberry Pi 3
  • Grove - snímač teploty a humusu a barometru (BME280)

Softwarové aplikace a online služby

Microsoft Visual Studio 2015

Krok 2: Příběh

Chytré zemědělství má aplikovat technologii internetu věcí na tradiční zemědělství, pomocí senzorů a softwaru řídit zemědělskou produkci prostřednictvím mobilních nebo počítačových platforem, díky čemuž bude tradiční zemědělství „chytřejší“.

Na hoře Mengding severovýchodně od Ya’an, S' -čchuan, vede horský hřeben v zeleném moři na západ k východu. Toto je nejznámější pohled na šestatřicetiletého Denga, jednoho z mála Mengdingových čajovníků své generace, s plantáží 50 m (= 3,3 ha) situovanou v nadmořské výšce 1 100 m. Deng pochází z rodiny čajovníků, ale pokračovat v rodinném odkazu není snadný úkol. "Naše čaje se pěstují ve vysoké nadmořské výšce v organickém prostředí, aby byla zajištěna jeho vynikající kvalita." Ale zároveň je hustota růstu nízká, náklady jsou vysoké a pučení je nerovnoměrné, takže je těžké čaj sklízet. Proto jsou vysokohorské čaje obvykle malou sklizní a jejich hodnoty se na trhu neprojevují. “Poslední dva roky se Deng snaží zvýšit povědomí spotřebitelů o vysokohorském čaji, aby propagoval jeho hodnotu. A když se setkal s Fanem, který hledal plantáž pro implementaci technologie Seeed IoTea, bylo dosaženo dokonalého řešení. Řešení Seeed IoTea si klade za cíl pomoci pěstitelům čaje lépe obhospodařovat plantáže, aniž by se měnily tradiční postupy pěstování čaje, a prezentovat environmentální data z plantáží v reálném čase na otevřené platformě.

Skládá se ze senzorů, uzlů a bran a shromažďuje data v reálném čase o faktorech, které mohou ovlivnit kvalitu čaje během kultivace a výrobních procesů, včetně teploty a vlhkosti, CO2, O2, PM a expozice světla. Data jsou shromažďována senzory, odesílána uzly do brány a případně do cloudu a jsou zpřístupněna koncovým zákazníkům na webové stránce.

Krok 3: Hardwarové připojení

Krok 1: Připojení brány

Brána je nainstalována samostatně v krabici. Vzhledem k problému s odvodem tepla jsme přidali 2 ventilátory. Jedna je pro odvod tepla Raspberry Pi, druhá pro vnitřní a vnější cirkulaci vzduchu. Gateway box je umístěn v domě farmáře, takže nemusíme zvažovat jeho problém s napájením.

obraz
obraz

Krok 2: Připojení uzlu

Uzel je terminál dat a všechna původní data jsou získávána odtud. K uzlu je připojeno 6 čidel. Kromě čidla půdní vlhkosti a teploty jsme do žaluziového boxu vložili další čidla.

obraz
obraz
obraz
obraz

Uzel je umístěn ve vodotěsném boxu. Abychom měli k uzlu lepší připojení, vyrobíme desku adaptéru. Nakonec poskytneme odkaz na stažení schématu této desky. Jak je znázorněno níže, kabely senzorů jsou zapojeny do desky adaptéru přes svorkovnice. K sestavení spínacích obvodů pro ovládání zapínání a vypínání senzorů a ventilátoru používáme 3 trubice MOS (SI2301). K ochlazení slouží ventilátor. Na desce máme namontovaný teplotní senzor (DS18B20). Může nám říci vnitřní teplotu krabice a poté mikrokontrolér rozhodne, zda zapne ventilátor. K vytvoření obvodu děliče napětí k měření napětí olověné baterie používáme několik odporů. Nakonec si na desce vyhrazujeme 3 rozhraní IIC a sériový port pro pozdější rozšíření a ladění.

obraz
obraz

Promluvme si o problému s napájením uzlu. Uzel je umístěn na čajové plantáži náhodně, takže tradiční způsob napájení již není použitelný. Použití solárního řešení je dobrý nápad. V současné době je na trhu mnoho řešení. Můžeme vybrat jeden z nich, který splňuje naše potřeby. V řešení, které jsme vybrali, jsou 3 části: solární panel, solární regulátor nabíjení a olověná baterie. Abychom lépe zachytili sluneční energii, položili jsme solární panel na horní část držáku a upravili jeho úhel tak, aby směřoval ke slunci. Umístili jsme solární regulátor nabíjení do stejného boxu s uzlem. Protože uvnitř krabice není žádný další prostor, museli jsme najít nový vodotěsný box pro umístění olověné baterie.

obraz
obraz
obraz
obraz
obraz
obraz

Krok 4: Konfigurace softwaru

Uzel

V této části si představíme hlavně softwarovou konfiguraci uzlu.

DataFormat

Data nahraná uzlem do brány:

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

Význam každého datového bitu:

Lora_data [0] : Teplota vzduchu, ℃

Lora_data [1] : Vlhkost vzduchu, %

Lora_data [2] : Nadmořská výška osm, m

Lora_data [3] : Nadmořská výška nízká osm

Lora_data [4] : Koncentrace CO2 vysoká osm, ppm

Lora_data [5] : Koncentrace CO2 nízká osm

Lora_data [6] : Koncentrace prachu vysoká osm, ks/0,01 cf

Lora_data [7] : Koncentrace prachu nízká osm

Lora_data [8] : Intenzita světla vysoká osm, lux

Lora_data [9] : Nízká intenzita světla osm

Lora_data [10] : Koncentrace O2, % (surová data děleno 1000)

Lora_data [11] : Teplota půdy, ℃

Lora_data [12] : Vlhkost půdy, %

Lora_data [13] : Napětí baterie, v

Lora_data [14] : Chybový kód senzorů

Chybový kód:

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

Význam každého bitu:

bit 0: 1 ---- Chyba snímače teploty a humi a barometru (BME280)

bit 1: 1 ---- Chyba snímače oxidu uhličitého (MH-Z16)

bit 2: 1 ---- Chyba snímače prachu (PPD42NS)

bit 3: 1 ---- Chyba snímače digitálního světla

bit 4: 1 ---- Chyba senzoru kyslíku (ME2-O2-Ф20)

bit 5: 1 ---- Chyba snímače vlhkosti půdy a teploty

bit 6: Vyhrazeno

bit 7: Vyhrazeno

Vytvořili jsme Error_code_transform.exe, otevřete jej a zadáte kód chyby v šestnáctkové soustavě, rychle poznáte, který senzor je chyba. Odkaz ke stažení je na konci tohoto článku.

Úprava parametrů: a) Cyklus přenosu dat

// seeedtea.ino

#defineinterval_time 600 // sekunda

Tento parametr lze změnit pro změnu cyklu přenosu dat. V každém cyklu trvá sběr dat přibližně 1 minutu. Nedoporučuje se tedy měnit tuto hodnotu na méně než 60 sekund.

b) Doba zahřívání snímače prachu

//seeedtea.ino

#definePreheat_time 30000 // Doba zahřívání prachu, milisekund //Dust_other.cpp #definesampletime_ms 30000 // vzorkovací doba30s

c) Součinitel napětí

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 // ADC value × Battery_coefficient = battery_voltage #defineSolar_coefficient 0.22559 // ADC value × Solar_coefficient = solar_voltage

Tyto dva parametry jsou vypočítány na základě obvodu děliče napětí.

d) Prahová hodnota teploty ventilátoru

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // teplotní omezení #defineFan_start_light 500 // intenzita světla

Když skutečná teplota překročí prahovou hodnotu, ventilátor se začne ochlazovat.

e) Parametr inicializace senzoru O2

//Oxygen.cpp

#defineO2_percentage 208,00 //20,8%

f) Přepínač makro

//seeedtea.ino

#defineLORA_RUN // Po komentáři se Lora inicializace a přenos dat zastaví #defineSENSOR_RUN // Po komentáři přestanou externí senzory fungovat //POWER_Ctrl.cpp #defineFAN_ON // Pouze Fortesting, praktickou aplikaci je třeba okomentovat /**** *** Řídicí režim DS18B20 **********************/ #defineSlower_Mode // Pomalý režim pro získání teploty. Komentování je rychlý režim

g) Mapování pinů

D2: LED indikátor a externí reset mikrokontroléru IIC: SCL a SDA

// Prach_další.h

#defineDust_pin 3 // Senzor prachu //CO2.cpp #defineCO2_serial Serial1 // použijte hardwarový server (D0 & D1) //seeedtea.ino #definedataPin 6 // Datový pin půdy #defineclockPin 7 // Pin hodin půdy // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Ventilátor #defineAir_CtrlPin 10 // Ovládací kolík pro senzory umístěné v louverboxu #defineSoil_CtrlPin 11 // Pólový spínač snímače vlhkosti a teploty #defineBattery_pin A2 // Měření napětí baterie #defineSolar /Změřte napětí solárního panelu //Oxygen.h #defineO2_pin A1 // senzor O2

h) Časovač hlídacího psa

Časovač Watchdog se používá ke sledování stavu běhu systému. Pokud systém běží abnormálně, uzel se resetuje, aby mohl běžet nepřetržitě po dlouhou dobu.

Knihovna, na kterou se bude odkazovat:

  • Do projektu byl přidán Adafruit_SleepyDog.h
  • Soubor Adafruit_ASFcore-master.zip je zabalen do složky projektu a je třeba jej ručně přidat do IDE Arduino.

Související funkce:

Povolit hlídacího psa

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

Vstupní parametry:

Int maxPeriodMS: Čekací doba v milisekundách. Maximální povolená hodnota je 16 000 milisekund.

návratová hodnota:

Int typ, vraťte skutečnou čekací dobu

Resetujte hlídacího psa

void WatchdogSAMD:: reset ()

Voláním této funkce resetujete časovač hlídacího psa, označovaný také jako „krmení psa“. Překročení čekací doby bez resetu způsobí restart uzlu.

Zastavte hlídacího psa

void WatchdogSAMD:: disable ()

Brána

V této části si představíme, jak se připojit k serveru Loriot.

Krok 1: Registrace brány Loriot Server

a) Nový uživatel musí nejprve zaregistrovat účet, klikněte na registrační adresu. Chcete -li se zaregistrovat, vyplňte uživatelské jméno, heslo a e -mailovou adresu, po registraci vám bude zaslán e -mail, pro aktivaci postupujte podle pokynů v e -mailu.

b) Po úspěšné aktivaci se kliknutím sem přihlaste. Výchozí úroveň je „Komunitní síť“, podporuje 1 bránu (RHF2S001) a 10 uzlů.

c) Vstupte na Dashboard -> Gateway, kliknutím na Add Gateway start přidáte Gateway.

d) Vyberte Raspberry Pi 3

e) Nastavit níže:

  • Rozhraní rádia -> RHF2S001 868/915 MHz (SX1257)
  • AUTOBUS -> SPI

f) Vyplňte MAC adresu vašeho RHF2S001, měla by být ve formátu b8: 27: eb: xx: xx: xx. A také zadejte informace o poloze brány.

g) Registraci dokončíte kliknutím na „Zaregistrovat bránu Raspberry Pi“.

obraz
obraz

h) Kliknutím na registrovanou bránu přejděte na konfigurační stránku, ručně přepněte „Frekvenční plán“, váš plán zde určuje typ vašeho typu RHF2S001, dostupný plán je CN470 , CN473 , CN434 , CN780 , EU868, po výběru obnovte stránku získat přesný kanál. Na této wiki vybíráme EU868.

i) Spusťte příkaz v terminálu tmelu :

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.

obraz
obraz

Krok 2: Zařízení Loriot Server Connect Node

a) Získejte dostupné kanály brány

Aktuální kanály brány lze získat z Dashboard -> Gateway -> Your Gateway, dostupné kanály můžete vidět jako na obrázku níže.

obraz
obraz

b) Konfigurace Seeeduino LoRAWAN GPS (RHF3M076)

Otevřete sériový monitor ArduinoIDE, klepněte na příkaz níže.

při+ch

K potvrzení výchozího kanálu vašeho Seeeduino_LoRAWAN GPS získáte 3 kanály. Pokud není k dispozici žádný kanál, můžete kanály Seeeduino_LoRAWAN změnit níže uvedeným příkazem.

při+ch = 0, 868,1

při+ch = 1, 868,3 při+ch = 2, 868,5

Poté můžete pomocí+ch znovu zkontrolovat.

c) Přidejte Seeeduino_LoRAWAN GPS jako ABP NodeLog na server Loriot, klikněte na Dash Board -> Aplikace -> SimpleApp. Klikněte na položku Importovat vstup ABP below pod položkami

  • DevAddr: Seeeduino_LoRAWAN GPS získat pomocí příkazu „AT+ID“(Poznámka: Loriot nepodporuje dvojtečku, je třeba odebrat ručně)
  • FCntUp : Setto 1
  • FCntDn : Setto 1
  • NWKSKEY : Výchozí hodnota 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY : Výchozí hodnota 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI : DEVEUI, Seeeduino_LoRAWAN GPS prochází příkazem „AT+ID“
obraz
obraz

Kliknutím na tlačítko Importovat zařízení dokončíte import zařízení. Nyní zvolte Dashboard-> Applications -> SampleApp, uvidíte nový uzel ABP, který jste právě přidali.

obraz
obraz

d) Odeslat data z Seeeduino_LoRAWAN

POZORNOST! Toto je jen test.

Zpět na sériový monitor ArduinoIDE, odešlete příkaz:

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

Poté přejděte na Dashboard -> Aplikace -> SampleApp -> Zařízení, klikněte na Node Device EUI nebo DevAddr, najdete zde data, která jste právě odeslali.

obraz
obraz

Podrobnosti najdete na této wiki.

Krok 5: Stavba webových stránek

Související nástroje

  • virtualenv
  • Python3
  • Gunicorn
  • Dozorce
  • Nginx
  • MySQL

Jako testovací prostředí nasazení používáme CentOS7

virtualenv

Použijte virtualenv k vybudování samostatného produkčního prostředí python3

a) nainstalovat

pip install virtualenv

b) vytvořte virtuální prostředí python3

virtualenv -p python3 iotea

c) spusťte virtuální prostředí a zadejte adresář iotea

zdrojový koš/aktivovat

d) existovat prostředí

deaktivovat

Python3

a) nainstalovat

yum nainstalovat epel-release

yum nainstalovat python36

b) nainstalujte závislou knihovnu PyMySQL, DBUtils, Flask, websocket-client, configparser

pip install pymysql

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

Gunicorn

a) nainstalovat (v prostředí Python3)

pip install gunicorn

b) spusťte projekt baňky (v adresáři projektu iotea)

gunicorn -w 5 -b 0,0.0.0:5000 aplikace: cca

c) Spusťte websocket-clint, abyste získali loriotská data

gunicorn loriot: cca

d) zobrazit strom procesu Gunicorn

pstree -ap | grep gunicorn

Dozorce

a) nainstalovat (uživatel root)

správce instalace pipu

b) generovat konfigurační soubory

echo_supervisord_conf> /etc/supervisord.conf

c) vytvořte adresář a představte konfiguraci adresáře

mkdir -p /etc/supervisor/conf.d

Upravte /etc/supervisord.conf a upravte pole souborů pod [zahrnout] na konci souboru.

Všimněte si, že musíte odstranit ';' před těmito dvěma řádky, což je znak komentáře.

[zahrnout]

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

Znamená zavést /etc/supervisor/conf.d/. Jako konfigurační soubor procesu se používá následující konfigurační soubor (monitorovaný supervizorem).

d) příchozí konfigurace (v adresáři iotea)

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

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

e) otevřená iotea sloužit

superviosrctl reload #reload the configuration file

superviosrctl start loriot #open loriot data receive superviosrctl start iotea #open the iotea flask application

f) další běžné operace

supervisorctl reload # znovu načte konfigurační soubor

supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # zobrazit další příkaz

Nginx

a) nainstalovat

yum install -y nginx

b) konfigurace

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

c) spusťte Nginx

systemctl start nginx.service

MySQL

a) související parametry

user = 'root'

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

b) soubor

iotea_iotea.sql

c) konfigurační soubor

db.ini

Doporučuje: