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, Juli
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 pokušali putem Interneta i poljoprivrede napraviti vrt iz čaja iz interneta.

Korak 1: Stvari koje se koriste 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 sa 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, u Sečuanu, planinski greben ide zapadno -istočno u zelenom moru. Ovo je najpoznatiji prizor za 36-godišnjeg Denga, jednog od rijetkih proizvođača čaja Mengding svoje generacije, sa plantažom od 50mu (= 3,3 hektara) smještenom na 1100m nadmorske visine. Deng dolazi iz porodice proizvođača čajeva, ali nošenje porodičnog naslijeđa nije lak zadatak. „Naši čajevi uzgajaju se na velikim nadmorskim visinama u organskom okruženju kako bi se osigurala njihova izvrsna kvaliteta. Ali u isto vrijeme, gustoća rasta je niska, troškovi su visoki i pupoljci su neujednačeni, što otežava berbu čaja. Zato su visokoplaninski čajevi obično male berbe i njihove vrijednosti se ne odražavaju na tržištu.”Posljednje dvije godine Deng pokušava podići svijest potrošača o planinskim čajevima kako bi promovirao njihovu vrijednost. A kad je upoznao Fan, koji je tražio plantažu za implementaciju Seeed -ove 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.

Power Part

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

Sensors Part

U dijelu senzora, zbog brojnih senzora, koristili smo meteorološku stanicu, a također smo napravili i akrilni držač za njihovu ugradnju.

Image
Image

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 senzora O2, senzora prašine i senzora CO2. Konačno, osjetnik temperature i vlažnosti na dnu akrilnog držača.

Osim toga, senzor temperature i vlažnosti tla ugrađuje se sam u tlo. Node Part

Image
Image

Node Part je Seeeduino LoRaWan koji se instalira u vodootpornu kutiju, povezuje se na napajanje i senzore preko vodenih spojeva. Među njima, senzor prašine spojen je na LoRaWan -ov digitalni pin D3, CO2 senzor spojen na pin D4 & D5, senzor tla povezan na pin D6 & D7, O2 senzor 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 senzora tla potrebno je dodati otpornik od 10 k.

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

{

[0], /* Temperatura vazduha (℃)* /[1], /* Vlažnost vazduha (%)* /[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 greške senzora */}

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

{

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

Gateway Part

Image
Image

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 preko vodenih spojeva. Budući da koristi specijalizirani firmver, slijedite Seeed Wiki kako biste ga konfigurirali.

Korak 4: Programiranje softvera

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

Node Part

Većina upravljačkih programa kojima je potreban Node Part već se nalaze u folderu origin_driver. Biblioteke 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:

Image
Image

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, vlažnost i nadmorsku visinu, tako da ima 3 sučelja za mjerenje 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 (); //… još jedan_senzor-> getSomeValue (); //…

No, koristeći OOP, to izgleda ovako:

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

}

Pakirali smo i klasu aplikacije, ona implementira IApplication interfejs, metod setup () i loop () u IoTea.ino može pozvati setup () i loop () metodu u objektu Application.

NAPOMENA: Serijski USB se koristi samo za otklanjanje grešaka. Nakon otklanjanja grešaka, molimo vas da komentarišete da je inicijalizirani kod u metodi setup ().

Gateway Part

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 učitati fotografije, konfigurirajte svoj AWS slijedeći korake. Prvo instalirajte AWS SDK i AWS CLI na svoj Raspberry Pi pomoću ovih naredbi:

sudo pip install boto3

sudo pip install awscli

a zatim pokrenite AWS CLI:

sudo aws configure

Konfigurirajte svoj ID pristupnog ključa za AWS, ID tajnog pristupa AWS -a i naziv zadanog regiona.

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

#!/bin/bash

# /etc/init.d/photo ### BEGIN INIT INFO # Obezbeđuje: seeed_photo # Obavezan start: $ remote_fs $ syslog # Obavezno-zaustavi: $ remote_fs $ syslog # Podrazumevano-početak: 2 3 4 5 # Podrazumevano-zaustavi: 0 1 6 # Kratak opis: snimanje fotografija initscript # Opis: Ova usluga se koristi za upravljanje snimanjem fotografija ### END INIT INFO futrola "$ 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 dozvolu za izvršenje

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

i testirajte 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 postavke fotografije

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

#!/bin/sh -e

# # rc.local # # Ova skripta se izvršava na kraju svake višekorisničke razine izvođenja. # Uvjerite se da će skripta "izaći 0" u slučaju uspjeha ili bilo koje druge # vrijednosti u slučaju greške. # # Da biste omogućili ili onemogućili ovu skriptu, samo promijenite # bita izvođenja. # # Prema zadanim postavkama, ova skripta ne radi ništa. # Odštampajte IP adresu _IP = $ (ime hosta -I) || true ako ["$ _IP"]; onda 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

Website

Web lokaciju 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 install virtualenv

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

sudo yum -y install git

git clone

Korak 4. Kreirajte 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. Kreirajte bazu podataka

sudo yum -y instalirajte mariadb mariabd -server

sudo systemctl omogući mariadb sudo systemctl start mariadb mysql -uroot -p

a zatim upotrijebite iotea_hb.sql za kreiranje tablice.

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

[db]

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

promijenite putanju db.ini 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, ponovo unesite virtualno okruženje i pokrenite loriot aplikaciju:

cd iotea-hb

izvor kanta/aktiviraj gunicorn 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čuje se: