Turinys:
- 1 žingsnis: šiame projekte naudojami dalykai
- 2 žingsnis: istorija
- 3 žingsnis: aparatinės įrangos prijungimas
- 4 žingsnis: programinės įrangos programavimas
- 5 žingsnis: veikimas
Video: Matytas „IoTea LoRa“sprendimas (1811 atnaujinimas): 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
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į.
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
„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
„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:
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:
Nešiojamojo kompiuterio CMOS akumuliatoriaus problemos sprendimas: 7 žingsniai (su paveikslėliais)
Išspręskite nešiojamojo kompiuterio CMOS akumuliatoriaus problemą: vieną dieną neišvengiama atsitiks jūsų kompiuteryje, CMOS akumuliatorius sugenda. Tai gali būti diagnozuota kaip įprasta priežastis, dėl kurios kompiuteris turi iš naujo įvesti laiką ir datą kiekvieną kartą, kai kompiuteris praranda maitinimą. Jei nešiojamojo kompiuterio baterija išsikrovusi ir
Realaus laiko Rubiko kubo sprendimas užrištomis akimis naudojant „Raspberry Pi“ir „OpenCV“: 4 žingsniai
Realaus laiko „Rubiko kubo“užrištomis akimis sprendimas naudojant „Raspberry Pi“ir „OpenCV“: tai yra antroji „Rubik“kubo įrankio versija, skirta spręsti akis. 1 -oji versija buvo sukurta naudojant „javascript“, galite pamatyti projektą „RubiksCubeBlindfolded1“Skirtingai nuo ankstesnės, ši versija naudoja „OpenCV“biblioteką, kad aptiktų spalvas ir el
Spustelėjimo triukšmo problemos sprendimas „Apple“27 colių ekrane: 4 žingsniai
Spustelėjusio triukšmo problemos sprendimas „Apple 27“ekrane: ar kada nors vienas iš jūsų mylimų ekranų pradėjo skleisti daug triukšmo, kai jį naudojate? Atrodo, kad tai atsitinka po to, kai ekranas buvo naudojamas keletą metų. Aš suderinau vieną iš ekranas galvoja, kad aušinimo ventiliatoriuje yra klaida, b
Matytas „IoTea LoRa“sprendimas (su „Azure“, 1812 naujinimas): 5 žingsniai
Matytas „IoTea LoRa“sprendimas (su „Azure“, 1812 naujinimas): „Microsoft Azure“yra debesies paslauga, teikianti galingesnę ir stabilesnę skaičiavimo galią. Šį kartą bandėme į jį siųsti savo „IoTea“duomenis
„Arduino“projektas: „LoRa“modulio RF1276 bandymo diapazonas GPS sekimui Sprendimas: 9 žingsniai (su paveikslėliais)
„Arduino“projektas: „LoRa“modulio RF1276 bandymo diapazonas GPS sekimui Sprendimas: Ryšys: USB - nuoseklus Reikalingas: „Chrome“naršyklės poreikis: 1 X „Arduino Mega“poreikis: 1 X GPS poreikis: 1 X SD kortelės poreikis: 2 X „LoRa“modemas RF1276 Funkcija: „Arduino“Siųsti GPS reikšmę į pagrindinę bazę - Pagrindinė bazė saugo duomenis „Dataino Server Lora“modulyje: itin ilgas atstumas