Turinys:

Matytas „IoTea LoRa“sprendimas (1811 atnaujinimas): 5 žingsniai
Matytas „IoTea LoRa“sprendimas (1811 atnaujinimas): 5 žingsniai

Video: Matytas „IoTea LoRa“sprendimas (1811 atnaujinimas): 5 žingsniai

Video: Matytas „IoTea LoRa“sprendimas (1811 atnaujinimas): 5 žingsniai
Video: Высокая плотность 2022 2024, Lapkritis
Anonim
Mačiau „IoTea LoRa“sprendimą (1811 atnaujinimas)
Mačiau „IoTea LoRa“sprendimą (1811 atnaujinimas)

Internetas+ dabar yra populiari sąvoka. Šį kartą mes išbandėme internetą ir žemės ūkį, kad sukurtume arbatos sodą, išauginančią interneto arbatą.

1 žingsnis: šiame projekte naudojami dalykai

Techninės įrangos komponentai

  • „Grove“- anglies dioksido jutiklis (MH -Z16)
  • Grove - skaitmeninis šviesos jutiklis
  • Grove - dulkių jutiklis (PPD42NS)
  • Grove-deguonies jutiklis (ME2-O2-Ф20)
  • Dirvožemio drėgmės ir temperatūros jutiklis
  • „LoRa LoRaWAN Gateway“- 868 MHz rinkinys su „Raspberry Pi 3“
  • Grove - Temp & Humi & Barometer jutiklis (BME280)

Programinės įrangos programos ir internetinės paslaugos

„Microsoft Visual Studio 2015“

2 žingsnis: istorija

Mengding kalne į šiaurės rytus nuo Ya'an, Sičuanas, kalnų ketera eina į vakarus į rytus žalioje jūroje. Tai labiausiai pažįstamas vaizdas 36 metų Dengui, vienam iš nedaugelio savo kartos „Mengding“arbatos gamintojų, kuriame yra 50 m (= 3,3 ha) plantacija, esanti 1100 m virš jūros lygio. Deng yra kilęs iš arbatos gamintojų šeimos, tačiau išlaikyti šeimos palikimą nėra lengva užduotis. „Mūsų arbatos yra auginamos dideliame aukštyje ekologiškoje aplinkoje, kad būtų užtikrinta puiki jos kokybė. Tačiau tuo pačiu metu augimo tankis yra mažas, kaina didelė ir pumpurai nevienodi, todėl arbatą sunku nuimti. Štai kodėl aukštų kalnų arbatos paprastai yra nedideli derliai, o jų vertybės neatsispindi rinkoje. “Pastaruosius dvejus metus„ Deng “stengėsi didinti vartotojų supratimą apie kalnų arbatą, siekdama skatinti jų vertę. Ir kai jis susitiko su Fanu, kuris ieškojo plantacijos „Seeed“„IoTea“technologijai diegti, buvo puikiai suderintas sprendimas.

3 žingsnis: aparatinės įrangos prijungimas

Šio projekto aparatūrą galima padalyti į 4 dalis: „Power“, „Sensors“, „Node“ir „Gateway“. Šis straipsnis žingsnis po žingsnio parodys, kaip jį užbaigti.

Maitinimo dalis

Maitinimo dalyje daugiausia yra saulės kolektorius ir ličio baterija, jei tik kuriate šį projektą demonstracijai, galite į juos nekreipti dėmesio. Arba galite sekti ankstesnę pamoką, kad įdiegtumėte mazgo galią.

Jutiklių dalis

Jutiklių dalyje dėl daugybės jutiklių mes naudojome orų stotį ir taip pat pagaminome akrilo laikiklį.

Vaizdas
Vaizdas

Kaip matote aukščiau esančiame paveikslėlyje, skaitmeninis šviesos jutiklis visada yra viršuje, kad galėtų surinkti apšvietimo informaciją. Šilumą skleidžiantys jutikliai, tokie kaip O2 jutiklis, dulkių jutiklis ir CO2 jutiklis, yra sumontuoti akrilo laikiklio viduryje. Galiausiai, temperatūros ir drėgmės jutiklis akrilo laikiklio apačioje.

Be to, dirvožemio temperatūros ir drėgmės jutiklis yra sumontuotas vien tik dirvožemyje. Mazgo dalis

Vaizdas
Vaizdas

„Node Part“yra „Seeeduino LoRaWan“, sumontuotas vandeniui atsparioje dėžutėje, jungiantis prie maitinimo ir jutiklių per vandens jungtis. Tarp jų, dulkių jutiklis prijungiamas prie „LoRaWan“skaitmeninio kaiščio D3, CO2 jutiklis prijungiamas prie kaiščio D4 ir D5, dirvožemio jutiklis prijungiamas prie kaiščio D6 ir D7, O2 jutiklis prijungiamas prie analoginio kaiščio A1, o šviesos jutiklis ir barometro jutiklis prijungiami prie I2C prievado.

PASTABA: tarp dirvožemio jutiklio mėlynojo (duomenų) ir raudonojo (Vcc) kabelio reikia pridėti 10 k rezistorių.

„Seeeduino LoRaWan“retkarčiais renka jutiklių vertes ir siunčia jas į „Gateway“per „LoRa“. Duomenų formatas, kaip parodyta žemiau:

{

[0], /* Oro temperatūra (℃)* /[1], /* Oro drėgmė (%)* /[2], /* Aukštis (m) didelis baitas* /[3], /* Aukštis (m) mažas baitas */[4],/ * CO2 koncentracija (PPM) didelis baitas */[5],/ * CO2 koncentracija (PPM) mažas baitas */[6],/ * Dulkių koncentracija (vnt/0,01 cf) didelis baitas */[7],/ *Dulkių koncentracija (vnt/0,01 cf) mažas baitas */[8],/ *Šviesos intensyvumas (liuksai) didelis baitas */[9],/ *Šviesos intensyvumas (liuksai) mažas baitas */ [10], /* O2 koncentracija (%)* /[11], /* Dirvožemio temperatūra (℃)* /[12], /* Dirvožemio drėgmė (%)* /[13], /* Akumuliatoriaus įtampa (V) */ [14]/ *Jutiklio klaidos kodas */}

Kiekvienas jutiklio klaidos kodo baito bitas turi skirtingą reikšmę, kaip nurodyta toliau:

{

bitai 0: 1; / * Barometro jutiklio klaida */ bit1: 1; / * CO2 jutiklio klaida */ bit2: 1; / * Dulkių jutiklio klaida */ bit3: 1; / * Šviesos jutiklio klaida */ bit4: 1; / * O2 jutiklio klaida */ bit5: 1; / * Dirvos jutiklio klaida */ rezervuota: 2; / * Rezervuota */}

Vartų dalis

Vaizdas
Vaizdas

„Gateway Part“yra „Raspberry Pi“, prijungtas prie vartų modulių RHF0M301–868 ir PRI 2 Bridge RHF4T002, sumontuotas vandeniui atsparioje dėžutėje ir prijungtas prie maitinimo ir USB kameros per vandens jungtis. Kadangi ji naudoja specializuotą programinę -aparatinę įrangą, ją sukonfigūruokite vadovaudamiesi „Seeed Wiki“.

4 žingsnis: programinės įrangos programavimas

Kaip aparatinės įrangos ryšį, programinės įrangos programavimą taip pat galima padalyti, jis gali būti padalintas į 3 dalis: mazgą, šliuzą ir svetainę.

Mazgo dalis

Dauguma tvarkyklių, kurioms reikia mazgo dalies, jau yra aplanke origin_driver. Toliau pateiktas bibliotekas reikia įdiegti rankiniu būdu:

Adafruit_ASFcore

Kadangi projektas yra sudėtingas, rekomenduojame vietoj „Arduino IDE“naudoti „Microsoft Visual Studio“. Įskiepis pavadinimu „Visual Micro“gali padėti jums sukurti „Arduino“projektą naudojant „Visual Studio“, spustelėkite čia, jei norite gauti daugiau informacijos.

Siekiant geresnio skaitymo ir priežiūros, šį kartą naudojame objektinį programavimą. Šio projekto klasės schema atrodo taip:

Vaizdas
Vaizdas

Tiems jutikliams jau yra OOP tvarkyklė, mes juos perpakavome, kad pritaikytume šį projektą, kitiems - perrašėme jų tvarkykles naudodami OOP. „Sensor“klasė tarpinėje programinėje įrangoje naudojama suvienodinti tikrų jutiklių sąsajas, pavyzdžiui, barometro jutiklis gali vienu metu surinkti temperatūrą, drėgmę ir aukštį, todėl turi 3 sąsajas temperatūrai, drėgmei ir aukščiui nustatyti. Tačiau jie turi skirtingą metodo pavadinimą, dėl kurio jutiklių gavimo programa bus sudėtingesnė, kaip nurodyta toliau:

barometras-> getTemperature ();

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

Bet naudojant OOP, tai atrodo taip:

už (auto i = 0; i getValue ();

}

Mes taip pat supakavome programų klasę, ji įgyvendino „IApplication“sąsają, sąrankos () ir kilpos () metodą „IoTea.ino“gali iškviesti sąrankos () ir kilpos () metodą programos objekte.

PASTABA: USB Serial naudojamas TIK derinimui. Po derinimo pakomentuokite, kad jis inicijuoja kodą setup () metodu.

Vartų dalis

„Gateway Part“programa „Python“namų aplanke naudojama fotografuoti ir kas valandą įkelti jas į „Amazon S3 Server“. Prieš naudodami, įsitikinkite, kad „fswebcam“jau įdiegta jūsų „Raspberry Pi“:

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

Jei norite įkelti nuotraukų, sukonfigūruokite AWS atlikdami šiuos veiksmus. Pirmiausia įdiekite AWS SDK ir AWS CLI į savo Raspberry Pi naudodami šias komandas:

sudo pip įdiegti boto3

sudo pip įdiegti awscli

tada paleiskite AWS CLI:

sudo aws konfigūruoti

Konfigūruokite savo AWS prieigos rakto ID, AWS slaptosios prieigos ID ir numatytąjį regiono pavadinimą.

Jei nemėgstate įkelti savo nuotraukų, galite praleisti AWS konfigūracijos veiksmus ir komentarų kodus apie įkėlimą adresu photo.py. Norėdami paleisti šią programą kiekvieną kartą paleidę „Raspberry Pi“, galite sukurti failo pavadinimo nuotrauką /etc/init.d ir į ją įrašyti šį kodą.

#!/bin/bash

$: 0 1 6 # Trumpas aprašas: fotografavimas initscript # Aprašymas: Ši paslauga naudojama fotografavimui valdyti ### END INIT INFO case "$ 1" in start) echo "Start fotografuoti" /home/rxhf/photo.py &;; stop) echo „Nustokite fotografuoti“kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) aidas "Naudojimas: tarnybinės nuotraukos pradžia | sustabdymas" išėjimas 1;; esac išėjimas 0

nustatyti leidimą vykdyti

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

ir išbandyti

sudo /etc/init.d/photo start

Jei nėra problemos, sustabdykite ją ir pridėkite ją prie paleisties programos

sudo /etc/init.d/photo stop

„sudo update-rc.d“nuotraukų numatytieji nustatymai

PASTABA: Jei norite paleisti šliuzą po „Raspberry Pi“paleidimo, pridėkite šliuzo pradžios kodus „Seeed Wiki“prie /etc/rc.local, leiskite tai atrodyti taip:

#!/bin/sh -e

# # rc.local # # Šis scenarijus vykdomas kiekvieno daugiafunkcinio darbo lygio pabaigoje. # Įsitikinkite, kad scenarijus „išeis iš 0“, jei bus sėkminga, arba bet kuri kita # klaida. # # Norėdami įjungti arba išjungti šį scenarijų, tiesiog pakeiskite vykdymo # bitą. # # Pagal numatytuosius nustatymus šis scenarijus nieko nedaro. # Atspausdinkite IP adresą _IP = $ (pagrindinio kompiuterio pavadinimas -I) || tiesa, jei ["$ _IP"]; tada printf "Mano IP adresas yra %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 išeiti 0

Interneto svetainė

Mes įdiegėme svetainę „CentOS 7.“. Toliau nurodyti veiksmai parodys, kaip diegti.

Žingsnis 1. Įdiekite „Python3“

sudo yum -y įdiegti epel -release

sudo yum -įdiegti python36

2 veiksmas. Įdiekite „Python pip“ir virtualią aplinką

wget

sudo python36 get-pip.py sudo pip įdiegti virtualenv

Nustatykite 3. Klonuokite mūsų svetainę iš „GitHub“

sudo yum -įdiegti git

git klonas

Žingsnis 4. Sukurkite ir suaktyvinkite virtualią aplinką

virtualenv -p python36 iotea -hb

cd iotea-hb šaltinio bin/suaktyvinti

Žingsnis 5. Įdiekite priklausomas bibliotekas

pip įdiegti pymysql

pip install dbutils pip install kolba pip install websocket-client pip install cofigparser

Žingsnis 6. Sukurkite duomenų bazę

sudo yum -y įdiegti mariadb mariabd -server

sudo systemctl įgalinti mariadb sudo systemctl paleisti mariadb mysql -uroot -p

tada naudokite iotea_hb.sql, kad sukurtumėte lentelę.

Žingsnis 7. Sukurkite db.ini ir į jį įrašykite šiuos kodus

[db]

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

pakeisti db.ini kelią į db.py

# į db.py

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

8 veiksmas. Pakeiskite „app.py“prievadą ir paleiskite svetainę:

# in app.py

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

# terminale

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

dabar apsilankykite 127.0.0.1:8080 savo žiniatinklio naršyklėje, galite pamatyti svetainę, tačiau realaus laiko duomenys nerodomi.

Žingsnis 9. Gaukite loriot duomenų

Atidarykite kitą terminalą, iš naujo įveskite virtualią aplinką ir paleiskite „loriot“programą:

cd iotea-hb

šaltinis bin/suaktyvinti gunicorn loriot: app

Palaukite šiek tiek, pamatysite duomenis, rodomus svetainėje, arba galite pakeisti wss svetainėje loriot.py:

# in loriot.py

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

ws = create_connection ()

5 žingsnis: veikimas

Norėdami peržiūrėti duomenis realiuoju laiku, galite apsilankyti mūsų svetainėse:

  • Jaane
  • Demonstracijai

Rekomenduojamas: