Sadržaj:

Vidjeli IoTea LoRa rješenje (ažuriranje 1811): 5 koraka
Vidjeli IoTea LoRa rješenje (ažuriranje 1811): 5 koraka

Video: Vidjeli IoTea LoRa rješenje (ažuriranje 1811): 5 koraka

Video: Vidjeli IoTea LoRa rješenje (ažuriranje 1811): 5 koraka
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Studeni
Anonim
Vidjeli IoTea LoRa rješenje (ažuriranje 1811)
Vidjeli IoTea LoRa rješenje (ažuriranje 1811)

Internet+ je danas popularan koncept. Ovaj put smo isprobali Internet i poljoprivredu kako bismo iz čajskog vrta izrasli Internet čaj.

Korak 1: Stvari korištene u ovom projektu

Hardverske komponente

  • Grove - Senzor ugljičnog dioksida (MH -Z16)
  • Grove - digitalni svjetlosni senzor
  • Grove - Senzor prašine (PPD42NS)
  • Grove-Senzor kisika (ME2-O2-F20)
  • Senzor vlage i temperature tla
  • LoRa LoRaWAN pristupnik - 868MHz komplet s Raspberry Pi 3
  • Grove - Senzor za temp i Humi i barometar (BME280)

Softverske aplikacije i mrežne usluge

Microsoft Visual Studio 2015

Korak 2: Priča

Na planini Mengding sjeveroistočno od Ya’ana, Sichuan, planinski greben ide od zapada prema istoku u zelenom moru. Ovo je najpoznatiji prizor za 36-godišnjeg Denga, jednog od rijetkih proizvođača čaja Mengding svoje generacije, s plantažom od 50mu (= 3,3 hektara) smještenom na 1100 m nadmorske visine. Deng potječe iz obitelji proizvođača čajeva, no nošenje obiteljskog naslijeđa nije lak zadatak. “Naši čajevi uzgajaju se na velikim nadmorskim visinama u organskom okruženju kako bi se osigurala njegova izvrsna kvaliteta. No, u isto vrijeme, gustoća rasta je niska, troškovi su visoki i pupoljci su neravnomjerni, što otežava berbu čaja. Zato su visokoplaninski čajevi obično male berbe i njihove se vrijednosti ne odražavaju na tržištu.”Posljednje dvije godine Deng pokušava podići svijest potrošača o planinskim čajevima kako bi promicao njihovu vrijednost. A kad je upoznao Fan, koji je tražio plantažu za implementaciju Seeedove IoTea tehnologije, napravljeno je savršeno rješenje.

Korak 3: Povezivanje hardvera

Hardver ovog projekta može se podijeliti na 4 dijela: Napajanje, Senzori, Čvor i Gateway. Sljedeći članak će vam pokazati kako to učiniti korak po korak.

Snažni dio

Power Part uglavnom sadrži solarnu ploču i litijevu bateriju, ako samo napravite ovaj projekt za demonstraciju, možete ih zanemariti. Ili možete slijediti prethodni vodič za instaliranje napajanja čvora.

Dio senzora

U dijelu Senzori, zbog mnogih senzora, koristili smo meteorološku stanicu, a također smo napravili i akrilni nosač za njihovu ugradnju.

Slika
Slika

Kao što vidite na gornjoj slici, digitalni senzor svjetla uvijek je na vrhu, tako da može prikupljati informacije o osvjetljenju. Senzori koji će generirati toplinu ugrađeni su u sredinu akrilnog držača, poput osjetnika O2, senzora prašine i osjetnika CO2. Konačno, osjetnik temperature i vlažnosti na dnu akrilnog držača.

Osim toga, osjetnik temperature i vlažnosti tla ugrađuje se sam u tlo. Dio čvora

Slika
Slika

Node Part je Seeeduino LoRaWan koji se instalira u vodootpornu kutiju, spaja se na napajanje i senzore preko vodenih spojeva. Među njima, senzor prašine spojen je na LoRaWan -ov digitalni pin D3, senzor CO2 spojen na pin D4 & D5, osjetnik tla spojen na pin D6 & D7, senzor O2 spojen na analogni pin A1 i senzor svjetla i senzor barometra spojeni na I2C priključak.

NAPOMENA: Između plavog (podatkovnog) kabela osjetnika tla i crvenog (Vcc) kabela potrebno je dodati 10k otpornik.

Seeeduino LoRaWan povremeno prikuplja vrijednosti senzora i šalje ih na Gateway putem LoRa -e. Format podataka kao što je dolje:

{

[0], /* Temperatura zraka (℃)* /[1], /* Vlažnost zraka (%)* /[2], /* Nadmorska visina (m) visoki bajt* /[3], /* Nadmorska visina (m) niski bajt */[4],/ * koncentracija CO2 (PPM) visoki bajt */[5],/ * koncentracija CO2 (PPM) niski bajt */[6],/ * Koncentracija prašine (kom/0,01 cf) visoki bajt */[7],/ *Koncentracija prašine (kom/0,01 cf) niski bajt */[8],/ *Intenzitet svjetla (lux) visoki bajt */[9],/ *Intenzitet svjetla (lux) niski bajt */ [10], /* koncentracija O2 (%)* /[11], /* temperatura tla (℃)* /[12], /* vlažnost tla (%)* /[13], /* napon baterije (V) */ [14]/ *Kôd pogreške senzora */}

Svaki bit u bajtu koda greške senzora ima različito značenje, baš kao u nastavku:

{

bit0: 1; / * Pogreška senzora barometra */ bit1: 1; / * Pogreška senzora CO2 */ bit2: 1; / * Greška senzora prašine */ bit3: 1; / * Pogreška senzora svjetla */ bit4: 1; / * Pogreška osjetnika O2 */ bit5: 1; / * Pogreška osjetnika tla */ rezervirano: 2; /* Rezervirano */ }

Dio pristupnika

Slika
Slika

Gateway Part je Raspberry Pi koji je priključio Gateway modul RHF0M301–868 i PRI 2 Bridge RHF4T002, instalirao ga je u vodootpornu kutiju i spojio na napajanje i USB kameru putem vodenih spojeva. Budući da koristi specijalizirani firmver, slijedite Seeed Wiki za njegovu konfiguraciju.

Korak 4: Programiranje softvera

Kao hardverska veza, softversko programiranje se također može podijeliti, može se podijeliti na 3 dijela: čvor, pristupnik i web mjesto.

Dio čvora

Većina upravljačkih programa kojima je potreban Node Part već se nalaze u folderu origin_driver. Knjižnice koje slijede moraju se instalirati ručno:

Adafruit_ASFcore

Budući da je projekt kompliciran, preporučujemo da umjesto Arduino IDE -a koristite Microsoft Visual Studio. Dodatak pod nazivom Visual Micro može vam pomoći da osmislite Arduino projekt pomoću Visual Studija, kliknite ovdje za više informacija.

Za bolju čitljivost i održavanje, ovaj put koristimo Objektno orijentirano programiranje. Dijagram klasa ovog projekta izgleda ovako:

Slika
Slika

Za te senzore već imamo OOP upravljački program, prepakirali smo ga kako bismo prilagodili ovaj projekt, za druge smo njihove upravljačke programe prepisali pomoću OOP -a. Klasa senzora u sloju međuopreme koristi se za ujednačavanje sučelja stvarnih senzora, na primjer, senzor barometra može istovremeno prikupljati temperaturu, vlagu i nadmorsku visinu, pa ima 3 sučelja za stjecanje temperature, vlažnosti i nadmorske visine. Ali oni imaju različit naziv metode, što će program stjecanja vrijednosti senzora zakomplicirati, baš ovako:

barometar-> getTemperature ();

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

No, koristeći OOP, to izgleda ovako:

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

}

Pakirali smo i klasu Application, koja implementira IApplication sučelje, setup () i loop () metodu u IoTea.ino može pozvati setup () i loop () metodu u Application objektu.

NAPOMENA: USB serijski poslužitelj koristi se SAMO za otklanjanje pogrešaka. Nakon otklanjanja pogrešaka, komentirajte da je inicijalizirani kod u metodi setup ().

Dio pristupnika

Python program Gateway Part u početnoj mapi koristi se za snimanje fotografija i njihovo postavljanje na Amazon S3 Server svakih sat vremena. Prije nego ga upotrijebite, provjerite je li fswebcam već instaliran na vašem Raspberry Pi:

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

Ako želite prenijeti fotografije, konfigurirajte svoj AWS slijedeći korake. Najprije instalirajte AWS SDK i AWS CLI na svoj Raspberry Pi pomoću ovih naredbi:

sudo pip instalirajte boto3

sudo pip install awscli

a zatim pokrenite AWS CLI:

sudo aws konfigurirati

Konfigurirajte svoj ID pristupnog ključa AWS, ID tajnog pristupa AWS -a i zadani naziv regije.

Ako ne volite učitavati svoje fotografije, možete preskočiti korake konfiguracije AWS -a i kodove komentara o prijenosu u photo.py. Za pokretanje ovog programa nakon svakog pokretanja programa Raspberry Pi, možete stvoriti fotografiju naziva datoteke u /etc/init.d i upisati joj sljedeći kod.

#!/bin/bash

# /etc/init.d/photo ### BEGIN INIT INFO # Pruža: seeed_photo # Obavezno-Pokreni: $ remote_fs $ syslog # Obavezno-Zaustavi: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Kratak opis: snimanje fotografija initscript # Opis: Ova se usluga koristi za upravljanje snimanjem fotografija ### END INIT INFO slučaj "$ 1" u početku) odjek "Počni snimanje fotografije" /home/rxhf/photo.py &;; stop) echo "Prestani snimati" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Usage: service photo start | stop" izlaz 1;; esac izlaz 0

postaviti dopuštenje za izvršenje

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

i isprobajte ga

sudo /etc/init.d/photo start

Ako nema problema, zaustavite ga i dodajte u aplikaciju za pokretanje

sudo /etc/init.d/photo stop

sudo update-rc.d zadane fotografije

NAPOMENA: Ako želite pokrenuti gateway nakon podizanja sustava Raspberry Pi, dodajte početne kodove pristupnika u Seeed Wiki u /etc/rc.local, neka izgleda ovako:

#!/bin/sh -e

# # rc.local # # Ova se skripta izvršava na kraju svake višekorisničke razine izvođenja. # Provjerite hoće li skripta "izaći 0" u slučaju uspjeha ili bilo koje druge # vrijednosti u slučaju pogreške. # # Da biste omogućili ili onemogućili ovu skriptu, samo promijenite # bita izvođenja. # # Prema zadanim postavkama, ova skripta ne radi ništa. # Ispišite IP adresu _IP = $ (naziv hosta -I) || true if ["$ _IP"]; tada printf "Moja IP adresa 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 izlaz 0

Web stranica

Web stranicu smo postavili na CentOS 7. Sljedeći koraci pokazat će vam kako se primjenjuje.

Korak 1. Instalirajte Python3

sudo yum -y instalirajte epel -release

sudo yum -y instalirajte python36

Korak 2. Instalirajte Python pip i virtualno okruženje

wget

sudo python36 get-pip.py sudo pip instaliraj virtualenv

Setp 3. Klonirajte našu web stranicu s GitHub -a

sudo yum -y install git

git klon

Korak 4. Izradite i aktivirajte virtualno okruženje

virtualenv -p python36 iotea -hb

cd iotea-hb izvor kanta/aktiviranje

Korak 5. Instalirajte ovisne knjižnice

pip install pymysql

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

Korak 6. Stvorite bazu podataka

sudo yum -y instalirajte mariadb mariabd -server

sudo systemctl omogućiti mariadb sudo systemctl pokrenuti mariadb mysql -uroot -p

a zatim upotrijebite iotea_hb.sql za izradu tablice.

Korak 7. Napravite db.ini i upišite mu ove kodove

[db]

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

promijenite db.ini putanju u db.py

# u db.py

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

Korak 8. Promijenite port u app.py i pokrenite web stranicu:

# u app.py

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

# u terminalu

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

sada posjetite 127.0.0.1:8080 u svom web pregledniku, možete vidjeti web stranicu, ali se podaci u stvarnom vremenu ne prikazuju.

Korak 9. Nabavite loriot podatke

Otvorite drugi terminal, ponovno uđite u virtualno okruženje i pokrenite aplikaciju loriot:

cd iotea-hb

izvorni spremnik/aktiviranje oružja loriot: app

Pričekajte malo, vidjet ćete podatke prikazane na web stranici ili možete promijeniti wss u loriot.py:

# u loriot.py

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

ws = create_connection ()

Korak 5: Operacija

Možete posjetiti naše web stranice kako biste vidjeli podatke u stvarnom vremenu:

  • U Ya'anu
  • Za demonstraciju

Preporučeni: