INHOUDSOPGAWE:

Sien IoTea LoRa -oplossing (opdatering 1811): 5 stappe
Sien IoTea LoRa -oplossing (opdatering 1811): 5 stappe

Video: Sien IoTea LoRa -oplossing (opdatering 1811): 5 stappe

Video: Sien IoTea LoRa -oplossing (opdatering 1811): 5 stappe
Video: Going to Italy - Anne Lister & her Italian connections 2024, November
Anonim
Sien IoTea LoRa -oplossing (opdatering 1811)
Sien IoTea LoRa -oplossing (opdatering 1811)

Internet+ is nou 'n gewilde konsep. Hierdie keer het ons die internet plus landbou probeer om teetuin te laat groei deur die internettee.

Stap 1: Dinge wat in hierdie projek gebruik word

Hardeware komponente

  • Grove - Koolstofdioksied sensor (MH -Z16)
  • Grove - Digitale ligsensor
  • Grove - Stofsensor (PPD42NS)
  • Grove-Suurstofsensor (ME2-O2-Ф20)
  • Grondvog- en temperatuursensor
  • LoRa LoRaWAN Gateway - 868MHz -stel met Framboos Pi 3
  • Grove - Temp & Humi & Barometersensor (BME280)

Sagteware -programme en aanlyndienste

Microsoft Visual Studio 2015

Stap 2: Verhaal

Op die Mengdingberg noordoos van Ya'an, Sichuan, loop die bergrug wes na oos in 'n see van groen. Dit is 'n bekendste gesig vir die 36-jarige Deng, een van die min Mengding-teemakers van sy generasie, met 'n plantasie van 50 mu (= 3,3 hektaar) op 1100 m bo seespieël. Deng kom uit 'n familie teemakers, maar dit is nie 'n maklike taak om die erfenis van die familie voort te sit nie. 'Ons tee word grootliks in 'n organiese omgewing verbou om die uitstekende kwaliteit daarvan te verseker. Maar terselfdertyd is die groeidigtheid laag, die koste hoog en die bot oneweredig, wat die tee moeilik maak om te oes. Daarom is hoë-bergtee gewoonlik klein oeste en hul waardes word nie op die mark weerspieël nie.”Deng probeer die afgelope twee jaar die verbruikers se bewustheid van hoë-bergtee probeer verhoog om hul waarde te bevorder. En toe hy Fan ontmoet, wat op soek was na 'n plantasie om Seeed se IoTea -tegnologie te implementeer, was die perfekte oplossing vir 'n oplossing.

Stap 3: Hardewareverbinding

Die hardeware van hierdie projek kan in vier dele verdeel word: Krag, Sensors, Node en Gateway. Die volgende artikel sal u wys hoe u dit stap vir stap kan voltooi.

Krag Deel

Power Part bevat hoofsaaklik 'n sonpaneel en 'n litiumbattery; as u hierdie projek net vir demonstrasie bou, kan u dit ignoreer. Of u kan die vorige tutoriaal volg om node -krag te installeer.

Sensors deel

Vanweë die vele sensors het ons in Sensors Part 'n weerstasie gebruik en ook 'n akrielbeugel gemaak om dit te installeer.

Beeld
Beeld

Soos u op die foto hierbo sien, is die digitale ligsensor altyd bo -aan, sodat dit inligting oor die beligting kan versamel. Die sensors wat hitte opwek, word in die middel van die akrielbeugel geïnstalleer, soos O2 -sensor, stofsensor en CO2 -sensor. Uiteindelik temperatuur- en humiditeitsensor onderaan die akrielbeugel.

Boonop word die grondtemperatuur- en humiditeitsensor alleen in die grond geïnstalleer. Knooppuntdeel

Beeld
Beeld

Node Part is 'n Seeeduino LoRaWan wat in 'n waterdigte boks geïnstalleer is, en kan via waterverbindings met krag en sensors verbind word. Onder hulle kan stofsensor gekoppel word aan LoRaWan se digitale pen D3, CO2 -sensor met pen D4 en D5, grondsensor verbind met pen D6 en D7, O2 -sensor koppel aan analoog pen A1 en ligsensor en barometersensor verbind met I2C -poort.

OPMERKING: 'n 10k weerstand moet bygevoeg word tussen die blou (data) kabel van die grondsensor en die rooi (Vcc) kabel.

Seeeduino LoRaWan versamel af en toe die waarde van sensors en stuur dit via LoRa na Gateway. Die dataformaat soos hieronder:

{

[0], /* Lugtemperatuur (℃)* /[1], /* Lugvog (%)* /[2], /* Hoogte (m) hoë byte* /[3], /* Hoogte (m) lae byte */[4],/ * CO2 -konsentrasie (PPM) hoë byte */[5],/ * CO2 -konsentrasie (PPM) lae byte */[6],/ * Stofkonsentrasie (stuks/0.01cf) hoë byte */[7],/ *Stofkonsentrasie (stuks/0.01cf) lae byte */[8],/ *Ligintensiteit (lux) hoë byte */[9],/ *Ligintensiteit (lux) lae byte */ [10], /* O2 -konsentrasie (%)* /[11], /* Grondtemperatuur (℃)* /[12], /* Grondvog (%)* /[13], /* Batteryspanning (V) */ [14]/ *Sensorfoutkode */}

Elke bietjie in sensorfoutkode -byte het 'n verskil, net soos hieronder:

{

bietjie 0: 1; / * Barometersensorfout */ bit1: 1; / * CO2 Sensor Fout */ bit2: 1; / * Stofsensorfout */ bit3: 1; / * Lichtsensorfout */ bit4: 1; / * O2 sensorfout */ bit5: 1; / * Grondsensorfout */ voorbehou: 2; / * Voorbehou */}

Gateway -deel

Beeld
Beeld

Gateway Part is 'n Raspberry Pi wat Gateway -module RHF0M301–868 en PRI 2 Bridge RHF4T002 ingeprop het, dit in 'n waterdigte boks geïnstalleer het en via 'n waterverbinding met die krag- en USB -kamera verbind is. Omdat dit gespesialiseerde firmware gebruik, volg Seeed Wiki om dit op te stel.

Stap 4: sagteware programmering

Aangesien hardewareverbinding ook sagtewareprogrammering verdeel kan word, kan dit in drie dele verdeel word: Node, Gateway en webwerf.

Knooppuntdeel

Die meeste bestuurders wat nodige onderdeel benodig, is reeds in die oorsprong_driver -lêergids. Die volgende biblioteke moet met die hand geïnstalleer word:

Adafruit_ASFcore

Omdat die projek ingewikkeld is, beveel ons aan dat u Microsoft Visual Studio in plaas van Arduino IDE gebruik. 'N Inprop genaamd Visual Micro kan u help om 'n Arduino -projek op te stel deur Visual Studio te gebruik, klik hier vir meer inligting.

Vir 'n beter leesbaarheid en instandhouding, gebruik ons hierdie keer Objekgeoriënteerde programmering. Die klasdiagram van hierdie projek lyk soos volg:

Beeld
Beeld

Omdat die sensors reeds 'n OOP -bestuurder het, het ons dit herverpak om hierdie projek aan te pas; vir ander het ons hul bestuurders herskryf deur OOP te gebruik. Die sensorklas in die middelware laag word gebruik om koppelvlakke van werklike sensors te verenig, byvoorbeeld, 'n barometersensor kan temperatuur, humiditeit en hoogte terselfdertyd versamel, sodat dit 3 koppelvlakke het om temperatuur, humiditeit en hoogte te verkry. Maar hulle het 'n ander metode, wat die program vir die verkryging van sensors meer ingewikkeld sal maak, net soos volg:

barometer-> getTemperature ();

barometer-> getHumidity (); barometer-> getAltitude (); //… another_sensor-> getSomeValue (); //…

Maar met behulp van OOP lyk dit so:

vir (auto i = 0; i getValue ();

}

Ons het ook 'n toepassingsklas ingepak, dit implementeer die IApplication -koppelvlak, die setup () en loop () metode in IoTea.ino kan die setup () en loop () metode in die Application object noem.

LET WEL: SLEGS USB -reeks word gebruik om te ontfout. Na die ontfouting, lewer 'n opmerking oor die inisialisering van die kode in die setup () metode.

Gateway -deel

Gateway Part se Python -program in die tuisgids word gebruik om foto's te neem en dit elke uur na Amazon S3 Server te laai. Voordat u dit gebruik, moet u seker maak dat fswebcam reeds in u Raspberry Pi geïnstalleer is:

sudo apt-get update && sudo apt-get install fswebcam

As u foto's wil oplaai, stel u AWS op deur die volgende stappe te volg. Installeer eers AWS SDK en AWS CLI op u Raspberry Pi deur die volgende opdragte te gebruik:

sudo pip installeer boto3

sudo pip installeer awscli

en voer dan AWS CLI uit:

sudo aws opstel

Stel u AWS -toegangsleutel -ID, AWS -geheime toegang -ID en versteknaam op.

As u nie daarvan hou om u foto's op te laai nie, kan u AWS -konfigurasiestappe en kommentaarkodes oor die oplaai in photo.py oorslaan. Om hierdie program te laat loop nadat u Raspberry Pi elke keer begin het, kan u 'n lêernaamfoto in /etc/init.d skep en die volgende kode daaraan skryf.

#!/bin/bash

#/etc.: 0 1 6 # Kort beskrywing: foto neem initscript # Beskrywing: Hierdie diens word gebruik om foto's te neem ### EINDE INIT INFO geval "$ 1" aan die begin) eggo "Begin met foto neem" /home/rxhf/photo.py &;; stop) eggo "Stop met foto neem" dood $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) eggo "Gebruik: diensfoto begin | stop" afrit 1;; esac afrit 0

stel toestemming vir uitvoering

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

en toets dit

sudo /etc/init.d/photo begin

As daar geen probleem is nie, stop dit en voeg dit by die opstartprogram

sudo /etc/init.d/photo stop

sudo update-rc.d foto standaard

OPMERKING: As u gateway wil begin nadat Raspberry Pi begin is, voeg gateway -startkodes by Seeed Wiki by /etc/rc.local, laat dit lyk:

#!/bin/sh -e

# # rc.local # # Hierdie script word uitgevoer aan die einde van elke multi -gebruiker -vlak. # Maak seker dat die skrif 'suksesvol' of 'n ander # waarde by fout "0" verlaat. # # Om hierdie script in of uit te skakel, verander net die uitvoering # bisse. # # Hierdie skrip doen standaard niks. # Druk die IP -adres af _IP = $ (gasheernaam -I) || waar as ["$ _IP"]; druk dan "My IP -adres is %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 afrit 0

Webwerf

Ons het die webwerf op CentOS 7. Die volgende stappe sal u wys hoe u dit kan implementeer.

Stap 1. Installeer Python3

sudo yum -y installeer epel -release

sudo yum -y installeer python36

Stap 2. Installeer Python pip en virtuele omgewing

wget

sudo python36 get-pip.py sudo pip installeer virtualenv

Setp 3. Kloon ons webwerf vanaf GitHub

sudo yum -y installeer git

git-kloon

Stap 4. Skep en aktiveer virtuele omgewing

virtualenv -p python36 iotea -hb

cd iotea-hb bronbak/aktiveer

Stap 5. Installeer afhanklike biblioteke

pip installeer pymysql

pip install dbutils pip install flask pip install websocket-client pip install cofigparser

Stap 6. Skep databasis

sudo yum -y installeer mariadb mariabd -bediener

sudo systemctl aktiveer mariadb sudo systemctl begin mariadb mysql -uroot -p

en gebruik dan iotea_hb.sql om 'n tabel te skep.

Stap 7. Skep db.ini en skryf hierdie kodes daarby

[db]

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

verander die pad van db.ini in db.py

# in db.py

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

Stap 8. Verander poort in app.py en begin die webwerf:

# in app.py

#app.run (ontfouting = waar, poort = 6000) app.run (ontfouting = waar, poort = 8080)

# in terminaal

pip installeer gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app

Besoek nou 127.0.0.1:8080 in u webblaaier, u kan die webwerf sien, maar intydse data word nie vertoon nie.

Stap 9. Kry loriot -data

Maak 'n ander terminale oop, voer die virtuele omgewing weer in en begin die loriot -app:

cd iotea-hb

bronbak/aktiveer geweerhoorn loriot: app

Wag 'n rukkie, u sien data op die webwerf, of u kan wss verander in loriot.py:

# in loriot.py

#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

Stap 5: Bediening

U kan ons webwerwe besoek om real-time data te sien:

  • In Ya'an
  • Vir demonstrasie

Aanbeveel: