Kazalo:

Glejte rešitev IoTea LoRa (posodobitev 1811): 5 korakov
Glejte rešitev IoTea LoRa (posodobitev 1811): 5 korakov

Video: Glejte rešitev IoTea LoRa (posodobitev 1811): 5 korakov

Video: Glejte rešitev IoTea LoRa (posodobitev 1811): 5 korakov
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, November
Anonim
Glejte rešitev IoTea LoRa (posodobitev 1811)
Glejte rešitev IoTea LoRa (posodobitev 1811)

Internet+ je danes priljubljen koncept. Tokrat smo poskusili z internetom in kmetijstvom narediti čajni vrt iz internetnega čaja.

1. korak: Stvari, uporabljene v tem projektu

Strojne komponente

  • Grove - Senzor ogljikovega dioksida (MH -Z16)
  • Grove - digitalni svetlobni senzor
  • Grove - Senzor prahu (PPD42NS)
  • Grove-Senzor kisika (ME2-O2-Ф20)
  • Senzor vlage in temperature tal
  • LoRa LoRaWAN Gateway - 868MHz komplet z Raspberry Pi 3
  • Grove - Temp & Humi & Barometer Sensor (BME280)

Programske aplikacije in spletne storitve

Microsoft Visual Studio 2015

2. korak: Zgodba

Na gori Mengding severovzhodno od Ya’ana v Sečuanu gorski greben poteka od zahoda proti vzhodu v zelenem morju. To je najbolj znan prizor 36-letnega Denga, enega redkih proizvajalcev čaja v svoji generaciji Mengding, s plantažo 50mu (= 3,3 hektarja) na 1100 m nadmorske višine. Deng prihaja iz družine proizvajalcev čaja, vendar nadaljevanje družinske zapuščine ni lahka naloga. »Naši čaji rastejo na visokih nadmorskih višinah v ekološkem okolju, da se zagotovi njihova odlična kakovost. Toda hkrati je gostota rasti nizka, stroški visoki in brstenje neenakomerno, zato je čaj težko nabrati. Zato so gorski čaji običajno majhne letine in njihove vrednosti se ne odražajo na trgu. «Zadnji dve leti je Deng poskušal ozavestiti potrošnike o visokogorskem čaju, da bi promoviral njihovo vrednost. In ko je spoznal Fan, ki je iskal plantažo za izvajanje Seeedove tehnologije IoTea, se je odlično znašla rešitev.

3. korak: Povezava strojne opreme

Strojno opremo tega projekta lahko razdelimo na 4 dele: napajanje, senzorje, vozlišče in prehod. Naslednji članek vam bo pokazal, kako ga dokončati korak za korakom.

Močni del

Power Part v glavnem vsebuje sončno ploščo in litijevo baterijo, če le zgradite ta projekt za predstavitev, jih lahko prezrete. Lahko pa uporabite prejšnjo vadnico za namestitev moči vozlišča.

Del senzorjev

V delu Senzorji smo zaradi številnih senzorjev uporabili vremensko postajo in za njihovo namestitev izdelali tudi akrilni nosilec.

Slika
Slika

Kot vidite na zgornji sliki, je digitalni senzor svetlobe vedno na vrhu, tako da lahko zbira informacije o osvetlitvi. Senzorji, ki bodo proizvajali toploto, so nameščeni sredi akrilnega nosilca, na primer senzorja O2, senzorja prahu in senzorja CO2. Končno senzor temperature in vlažnosti na dnu akrilnega nosilca.

Poleg tega je senzor temperature in vlažnosti tal nameščen sam v tleh. Del vozlišča

Slika
Slika

Node Part je Seeeduino LoRaWan, ki je nameščen v vodotesni škatli in se povezuje z napajanjem in senzorji prek vodnih spojev. Med njimi se senzor prahu poveže z LoRaWan -ovim digitalnim zatičem D3, senzor za CO2 se priključi na pin D4 & D5, senzor tal se poveže z zatičem D6 & D7, senzor O2 poveže z analognim zatičem A1 in senzor svetlobe in senzor barometra povežeta z vrati I2C.

OPOMBA: Med modrim (podatkovnim) kablom senzorja tal in rdečim (Vcc) kablom je treba dodati 10k upor.

Seeeduino LoRaWan občasno zbere vrednost senzorjev in jih prek LoRa pošlje na Gateway. Podatkovna oblika, kot je prikazano spodaj:

{

[0], /* Temperatura zraka (℃)* /[1], /* Vlažnost zraka (%)* /[2], /* Nadmorska višina (m) visoki bajt* /[3], /* Nadmorska višina (m) nizek bajt */[4],/ * koncentracija CO2 (PPM) visok bajt */[5],/ * koncentracija CO2 (PPM) nizek bajt */[6],/ * koncentracija prahu (kos/0,01 cf) visok bajt */[7],/ *Koncentracija prahu (kos/0,01 cf) nizek bajt */[8],/ *Intenzivnost svetlobe (lux) visok bajt */[9],/ *Intenzivnost svetlobe (lux) nizek bajt */ [10], /* koncentracija O2 (%)* /[11], /* temperatura tal (℃)* /[12], /* vlažnost tal (%)* /[13], /* napetost akumulatorja (V) */ [14]/ *Koda napake senzorja */}

Vsak bit v bajtu kode napake senzorja ima pomen razlike, tako kot spodaj:

{

bit0: 1; / * Napaka senzorja barometra */ bit1: 1; / * Napaka senzorja CO2 */ bit2: 1; / * Napaka senzorja prahu */ bit3: 1; / * Napaka svetlobnega senzorja */ bit4: 1; / * Napaka senzorja O2 */ bit5: 1; / * Napaka senzorja tal */ rezervirano: 2; / * Rezervirano */}

Del prehoda

Slika
Slika

Gateway Part je Raspberry Pi, ki je priključil modul Gateway RHF0M301–868 in PRI 2 Bridge RHF4T002, nameščen v vodotesni škatli in prek vodnih spojev povezan z napajalnikom in USB kamero. Ker uporablja specializirano vdelano programsko opremo, sledite Seeed Wiki, da jo konfigurirate.

4. korak: Programiranje programske opreme

Kot strojno povezavo lahko tudi programsko programiranje razdelite na tri dele: vozlišče, prehod in spletno mesto.

Del vozlišča

Večina gonilnikov, ki jih potrebuje Node Part, je že v mapi origin_driver. Knjižnice, ki sledijo, je treba namestiti ročno:

Adafruit_ASFcore

Ker je projekt zapleten, priporočamo, da namesto Arduino IDE uporabite Microsoft Visual Studio. Vtičnik, imenovan Visual Micro, vam lahko pomaga pri ustvarjanju projekta Arduino z uporabo Visual Studia, kliknite tukaj za več informacij.

Za boljšo berljivost in vzdrževanje tokrat uporabljamo objektno usmerjeno programiranje. Diagram razredov tega projekta je videti spodaj:

Slika
Slika

Za te senzorje že imamo gonilnik OOP, smo ga prepakirali, da prilagodimo ta projekt, za druge smo njihove gonilnike prepisali z uporabo OOP. Razred senzorja v sloju vmesne programske opreme se uporablja za poenotenje vmesnikov resničnih senzorjev, na primer senzor barometra lahko hkrati zbira temperaturo, vlažnost in nadmorsko višino, zato ima 3 vmesnike za pridobivanje temperature, vlažnosti in nadmorske višine. Imajo pa različno ime metode, zaradi česar bo program pridobivanja vrednosti senzorjev bolj zapleten, takole:

barometer-> getTemperature ();

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

Toda z uporabo OOP izgleda tako:

for (samodejno i = 0; i getValue ();

}

Pakirali smo tudi razred Application, ki izvaja vmesnik IApplication, metodo setup () in loop () v IoTea.ino lahko pokličeta metodo setup () in loop () v objektu Application.

OPOMBA: Serijski vmesnik USB se uporablja samo za odpravljanje napak. Ko odpravite napake, komentirajte, da je inicializirana koda v metodi setup ().

Del prehoda

Program Python Gateway Part v domači mapi se uporablja za fotografiranje in vsako uro nalaganje na strežnik Amazon S3. Preden ga uporabite, se prepričajte, da je fswebcam že nameščen v vašem Raspberry Pi:

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

Če želite naložiti fotografije, konfigurirajte svoj AWS po naslednjih korakih. Najprej namestite AWS SDK in AWS CLI v svoj Raspberry Pi z uporabo teh ukazov:

sudo pip namestite boto3

sudo pip namestite awscli

in nato zaženite AWS CLI:

sudo aws configure

Konfigurirajte svoj ID ključa za dostop do AWS, ID tajnega dostopa AWS in privzeto ime regije.

Če ne želite naložiti svojih fotografij, lahko preskočite korake konfiguracije AWS in kode komentarjev o nalaganju v photo.py. Za zagon tega programa po vsakem zagonu Raspberry Pi lahko ustvarite fotografijo imena datoteke v /etc/init.d in vanj napišete naslednjo kodo.

#!/bin/bash

# /etc/init.d/photo ### BEGIN INIT INFO # Zagotavlja: seeed_photo # Zahtevan zagon: $ remote_fs $ syslog # Zahtevan ustavitev: $ remote_fs $ syslog # Privzeti zagon: 2 3 4 5 # Privzeto-zaustavi: 0 1 6 # Kratek opis: fotografiranje initscript # Opis: Ta storitev se uporablja za upravljanje fotografiranja ### END INIT INFO case "$ 1" at start) echo "Start shooting photo" /home/rxhf/photo.py &;; stop) echo "Nehaj fotografirati" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Usage: service photo start | stop" exit 1;; esac izhod 0

nastavite dovoljenje za izvedbo

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

in ga preizkusi

sudo /etc/init.d/photo start

Če ni težav, ga ustavite in dodajte v zagonsko aplikacijo

sudo /etc/init.d/photo stop

privzete nastavitve fotografij sudo update-rc.d

OPOMBA: Če želite zagnati prehod po zagonu Raspberry Pi, dodajte začetne kode prehoda v Seeed Wiki v /etc/rc.local, naj bo videti tako:

#!/bin/sh -e

# # rc.local # # Ta skript se izvede na koncu vsake ravni uporabe za več uporabnikov. # Prepričajte se, da bo skript ob uspehu "zapustil 0" ali katero koli drugo vrednost pri napaki. # # Če želite omogočiti ali onemogočiti ta skript, samo spremenite # bita izvedbe. # # Ta skript privzeto ne naredi nič. # Natisnite naslov IP _IP = $ (ime gostitelja -I) || res, če ["$ _IP"]; nato printf "Moj naslov IP je %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 izhod 0

Spletna stran

Spletno mesto smo razmestili na CentOS 7. Naslednji koraki vam bodo pokazali, kako uvesti.

Korak 1. Namestite Python3

sudo yum -y namestite epel -release

sudo yum -y namestite python36

Korak 2. Namestite Python pip in virtualno okolje

wget

sudo python36 get-pip.py sudo pip namestite virtualenv

Setp 3. Klonirajte našo spletno stran z GitHub -a

sudo yum -y install git

git clone

Korak 4. Ustvarite in aktivirajte virtualno okolje

virtualenv -p python36 iotea -hb

cd iotea-hb vir bin/enable

Korak 5. Namestite odvisne knjižnice

pip namestite pymysql

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

Korak 6. Ustvarite bazo podatkov

sudo yum -y namestite mariadb mariabd -server

sudo systemctl omogoči mariadb sudo systemctl začni mariadb mysql -uroot -p

in nato z iotea_hb.sql ustvarite tabelo.

Korak 7. Ustvarite db.ini in mu zapišite te kode

[db]

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

spremenite pot db.ini v db.py

# v db.py

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

Korak 8. Spremenite vrata v app.py in zaženite spletno mesto:

# v app.py

#app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)

# v terminalu

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

zdaj obiščite 127.0.0.1:8080 v svojem spletnem brskalniku, lahko vidite spletno mesto, vendar podatki v realnem času niso prikazani.

Korak 9. Pridobite podatke o loriotu

Odprite drug terminal, znova vnesite virtualno okolje in zaženite aplikacijo loriot:

cd iotea-hb

vir bin/aktiviraj pištolo loriot: app

Počakajte nekaj časa, na spletnem mestu bodo prikazani podatki ali pa lahko spremenite wss v loriot.py:

# v loriot.py

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

ws = ustvari_povezavo ()

5. korak: Delovanje

Na naših spletnih straneh si lahko ogledate podatke v realnem času:

  • V Ya'anu
  • Za demonstracijo

Priporočena: