Cuprins:

Seeed IoTea LoRa Solution (Update 1811): 5 pași
Seeed IoTea LoRa Solution (Update 1811): 5 pași

Video: Seeed IoTea LoRa Solution (Update 1811): 5 pași

Video: Seeed IoTea LoRa Solution (Update 1811): 5 pași
Video: High Density 2022 2024, Iulie
Anonim
Seeed IoTea LoRa Solution (Update 1811)
Seeed IoTea LoRa Solution (Update 1811)

Internet + este un concept popular acum. De data aceasta am încercat internetul, plus agricultura, pentru a face ca ceaiul să crească pe internet.

Pasul 1: Lucruri utilizate în acest proiect

Componente hardware

  • Grove - Senzor de dioxid de carbon (MH-Z16)
  • Grove - senzor digital de lumină
  • Grove - Senzor de praf (PPD42NS)
  • Grove - Senzor de oxigen (ME2-O2-Ф20)
  • Senzor de umiditate și temperatură a solului
  • LoRa LoRaWAN Gateway - Kit 868MHz cu Raspberry Pi 3
  • Grove - Senzor de temp & Humi și barometru (BME280)

Aplicații software și servicii online

Microsoft Visual Studio 2015

Pasul 2: Poveste

Pe muntele Mengding la nord-est de Ya’an, Sichuan, creasta montană se îndreaptă spre vest spre est, într-o mare verde. Aceasta este o priveliște familiară pentru Deng, în vârstă de 36 de ani, unul dintre puținii producători de ceai Mengding din generația sa, cu o plantație de 50mu (= 3,3 hectare) situată la 1100m deasupra nivelului mării. Deng provine dintr-o familie de producători de ceai, dar continuarea moștenirii familiei nu este o sarcină ușoară. „Ceaiurile noastre sunt cultivate la mare altitudine într-un mediu organic pentru a asigura calitatea sa excelentă. Dar, în același timp, densitatea de creștere este scăzută, costul este ridicat și înmugurirea este inegală, ceea ce face ca ceaiul să fie greu de recoltat. De aceea, ceaiurile de munte sunt în mod normal recolte mici, iar valorile lor nu se reflectă pe piață.”În ultimii doi ani, Deng a încercat să sensibilizeze consumatorii cu privire la ceaiul de munte pentru a le promova valoarea. Și când l-a întâlnit pe Fan, care căuta o plantație pentru a implementa tehnologia IoTea a lui Seeed, s-a făcut o potrivire perfectă pentru o soluție.

Pasul 3: Conexiune hardware

Hardware-ul acestui proiect poate fi împărțit în 4 părți: putere, senzori, nod și gateway. Articolul următor vă va arăta cum să îl finalizați pas cu pas.

Partea de putere

Partea de alimentare conține în principal un panou solar și o baterie cu litiu, dacă doar construiți acest proiect pentru demonstrație, le puteți ignora. Sau puteți urma tutorialul anterior pentru a instala alimentarea nodului.

Partea senzorilor

În partea senzorilor, din cauza multor senzori, am folosit o stație meteo și, de asemenea, am realizat un suport acrilic pentru a le instala.

Imagine
Imagine

După cum vedeți în imaginea de mai sus, senzorul digital de lumină este întotdeauna în partea de sus, astfel încât să poată colecta informații despre iluminat. Senzorii care vor genera căldură sunt instalați în mijlocul suportului acrilic, cum ar fi senzorul O2, senzorul de praf și senzorul de CO2. În cele din urmă, senzor de temperatură și umiditate pe partea inferioară a suportului acrilic.

În plus, senzorul de temperatură și umiditate al solului este instalat singur în sol. Partea nodului

Imagine
Imagine

Node Part este un Seeeduino LoRaWan care este instalat într-o cutie impermeabilă, se conectează la alimentare și senzori prin îmbinări de apă. Dintre acestea, senzorul de praf se conectează la pinul digital D3 al LoRaWan, senzorul de CO2 se conectează la pinul D4 și D5, senzorul de sol se conectează la pinul D6 și D7, senzorul O2 se conectează la pinul analog A1 și senzorul de lumină și senzorul barometru se conectează la portul I2C.

NOTĂ: Trebuie adăugat un rezistor de 10 k între cablul albastru (de date) al senzorului de sol și cablul roșu (Vcc).

Seeeduino LoRaWan colectează din când în când valoarea senzorilor și le trimite la Gateway prin LoRa. Formatul de date ca mai jos:

{

[0], / * Temperatura aerului (℃) * / [1], / * Umiditatea aerului (%) * / [2], / * Altitudine (m) octet mare * / [3], / * Altitudine (m) octet scăzut * / [4], / * concentrație CO2 (PPM) octet ridicat * / [5], / * concentrație CO2 (PPM) octet scăzut * / [6], / * concentrație de praf (bucăți / 0,01cf) octet ridicat * / [7], / * Concentrație de praf (bucăți / 0,01cf) octet scăzut * / [8], / * Intensitate luminoasă (lux) octet mare * / [9], / * Intensitate lumină (lux) octet scăzut * / [10], / * Concentrația de O2 (%) * / [11], / * Temperatura solului (℃) * / [12], / * Umiditatea solului (%) * / [13], / * Tensiunea bateriei (V) * / [14] / * Cod eroare senzor * /}

Fiecare bit din codul de eroare al senzorului octet are o semnificație diferențiată, la fel ca mai jos:

{

bit0: 1; / * Eroare senzor barometru * / bit1: 1; / * Eroare senzor CO2 * / bit2: 1; / * Eroare senzor de praf * / bit3: 1; / * Eroare senzor de lumină * / bit4: 1; / * Eroare senzor O2 * / bit5: 1; / * Eroare senzor sol * / rezervat: 2; / * Rezervat * /}

Piesa Gateway

Imagine
Imagine

Gateway Part este un Raspberry Pi care a conectat modulul Gateway RHF0M301–868 și PRI 2 Bridge RHF4T002, a fost instalat într-o cutie impermeabilă și se conectează la camera de alimentare și USB prin Water Joints. Deoarece folosește firmware specializat, vă rugăm să urmați Seeed Wiki pentru a-l configura.

Pasul 4: Programare software

Ca conexiune hardware, programarea software poate fi, de asemenea, împărțită, poate fi împărțită în 3 părți: nod, gateway și site web.

Partea nodului

Majoritatea driverelor necesare pentru Node Part sunt deja conținute în folderul origin_driver. Bibliotecile care urmează trebuie instalate manual:

Adafruit_ASFcore

Deoarece proiectul este complicat, vă recomandăm să utilizați Microsoft Visual Studio în loc de Arduino IDE. Un plugin numit Visual Micro vă poate ajuta să creați un proiect Arduino utilizând Visual Studio, faceți clic aici pentru mai multe informații.

Pentru o mai bună lizibilitate și întreținere, de data aceasta folosim programarea orientată pe obiecte. Diagrama de clasă a acestui proiect arată ca mai jos:

Imagine
Imagine

Pentru acei senzori au deja driver OOP, l-am reambalat pentru a adapta acest proiect, pentru alții, le-am rescris driverele folosind OOP. Clasa de senzori în stratul middleware este utilizată pentru unificarea interfețelor senzorilor reali, de exemplu, un senzor barometru poate colecta temperatura, umiditatea și altitudinea în același timp, deci are 3 interfețe pentru a dobândi temperatură, umiditate și altitudine. Dar au denumirea metodei diferenței, ceea ce va face programul de achiziție a senzorilor mai complicat, la fel:

barometru-> getTemperature ();

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

Dar folosind OOP, arată astfel:

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

}

Am ambalat și o clasă de aplicație, implementează interfața IApplication, metoda setup () și loop () în IoTea.ino poate apela metoda setup () și loop () în obiectul Application.

NOTĂ: Seria USB este utilizată NUMAI pentru depanare. După depanare, vă rugăm să comentați codul de inițializare în metoda setup ().

Piesa Gateway

Programul Python al Gateway Part din folderul principal este utilizat pentru a face fotografii și a le încărca pe Amazon S3 Server în fiecare oră. Înainte de ao utiliza, asigurați-vă că fswebcam este deja instalată în Raspberry Pi:

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

Dacă doriți să încărcați fotografii, configurați AWS urmând pașii. Mai întâi, instalați AWS SDK și AWS CLI pe Raspberry Pi utilizând aceste comenzi:

sudo pip instala boto3

sudo pip instalează awscli

și apoi, rulați AWS CLI:

sudo aws configure

Configurați ID-ul cheii de acces AWS, ID-ul accesului AWS secret și numele regiunii implicite.

Dacă nu vă place să încărcați fotografiile, puteți sări peste pașii de configurare AWS și codurile de comentarii despre încărcare în photo.py. Pentru a rula acest program după ce porniți de fiecare dată Raspberry Pi, puteți crea o fotografie cu numele fișierului în /etc/init.d și să scrieți următorul cod.

#! / bin / bash

# /etc/init.d/photo ### BEGIN INIT INFO # Oferă: seeed_photo # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Descriere scurtă: realizarea fotografiei în scriptul # Descriere: Acest serviciu este utilizat pentru gestionarea fotografierii ### END INIT INFO caz „$ 1” la început) ecou „Începe fotografierea” /home/rxhf/photo.py &;; opriți) ecou „Opriți fotografierea” ucide $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) ecou „Utilizare: pornire fotografie service | stop” ieșire 1;; esac ieșire 0

setați permisiunea de execuție

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

și testați-l

sudo /etc/init.d/photo start

Dacă nu există nicio problemă, opriți-o și adăugați-o la aplicația de pornire

sudo /etc/init.d/photo stop

sudo update-rc.d implicit foto

NOTĂ: Dacă doriți să porniți gateway-ul după pornirea Raspberry Pi, adăugați coduri de pornire ale gateway-ului în Seeed Wiki la /etc/rc.local, să arate ca:

#! / bin / sh -e

# # rc.local # # Acest script este executat la sfârșitul fiecărui nivel de rulare multi-utilizator. # Asigurați-vă că scriptul va „ieși de la 0” la succes sau orice altă valoare # la eroare. # # Pentru a activa sau dezactiva acest script, trebuie doar să schimbați # de biți de execuție. # # În mod implicit, acest script nu face nimic. # Imprimați adresa IP _IP = $ (hostname -I) || adevărat dacă ["$ _IP"]; apoi printf "Adresa mea IP este% 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 exit 0

Site-ul web

Am implementat site-ul web pe CentOS 7. Următorii pași vă vor arăta cum să implementați.

Pasul 1. Instalați Python3

sudo yum -y install epel-release

sudo yum -y install python36

Pasul 2. Instalați Python pip și mediul virtual

wget

sudo python36 get-pip.py sudo pip instala virtualenv

Setp 3. Clonați site-ul nostru web din GitHub

sudo yum -y install git

git clone

Pasul 4. Creați și activați mediul virtual

virtualenv -p python36 iotea-hb

cd iotea-hb bin sursă / activați

Pasul 5. Instalați biblioteci dependente

pip instalează pymysql

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

Pasul 6. Creați baza de date

sudo yum -y install mariadb mariabd-server

sudo systemctl activate mariadb sudo systemctl start mariadb mysql -uroot -p

și apoi utilizați iotea_hb.sql pentru a crea un tabel.

Pasul 7. Creați db.ini și scrieți aceste coduri

[db]

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

modificați calea db.ini în db.py

# în db.py

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

Pasul 8. Schimbați portul în app.py și porniți site-ul web:

# în app.py

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

# în terminal

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

acum vizitați 127.0.0.1:8080 în browserul dvs. web, puteți vedea site-ul web, dar datele în timp real nu sunt afișate.

Pasul 9. Obțineți date loriot

Deschideți un alt terminal, reintroduceți mediul virtual și porniți aplicația loriot:

cd iotea-hb

coș sursă / activează gunicorn loriot: aplicație

Așteptați un timp, veți vedea datele afișate pe site-ul web sau puteți schimba wss în loriot.py:

# în loriot.py

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

ws = create_connection ()

Pasul 5: Operațiune

Puteți vizita site-urile noastre web pentru a vizualiza date în timp real:

  • În Ya'an
  • Pentru demonstrație

Recomandat: