Taula de continguts:

Seeed IoTea LoRa Solution (Actualització 1811): 5 passos
Seeed IoTea LoRa Solution (Actualització 1811): 5 passos

Vídeo: Seeed IoTea LoRa Solution (Actualització 1811): 5 passos

Vídeo: Seeed IoTea LoRa Solution (Actualització 1811): 5 passos
Vídeo: Высокая плотность 2022 2024, De novembre
Anonim
Seeed IoTea LoRa Solution (actualització 1811)
Seeed IoTea LoRa Solution (actualització 1811)

Internet + és ara un concepte popular. Aquesta vegada hem provat Internet i l'agricultura perquè el jardí del te creixi a Internet.

Pas 1: coses utilitzades en aquest projecte

Components de maquinari

  • Grove - Sensor de diòxid de carboni (MH-Z16)
  • Grove - Sensor de llum digital
  • Grove - Sensor de pols (PPD42NS)
  • Grove - Sensor d'oxigen (ME2-O2-Ф20)
  • Sensor de temperatura i humitat del sòl
  • LoRa LoRaWAN Gateway: kit de 868 MHz amb Raspberry Pi 3
  • Grove - Sensor de temperatura i temperatura i baròmetre (BME280)

Aplicacions de programari i serveis en línia

Microsoft Visual Studio 2015

Pas 2: història

A la muntanya Mengding al nord-est de Ya’an, Sichuan, la cresta de la muntanya discorre d’oest a est en un mar verd. Aquest és un espectacle molt familiar per a Deng, de 36 anys, un dels pocs fabricants de te Mengding de la seva generació, amb una plantació de 50mu (= 3,3 hectàrees) situada a 1100m sobre el nivell del mar. Deng prové d’una família de fabricants de te, però continuar el llegat familiar no és una tasca fàcil. “Els nostres tes es conreen a gran altitud en un entorn orgànic per garantir la seva excel·lent qualitat. Però, al mateix temps, la densitat de creixement és baixa, el cost és elevat i la brotació és desigual, cosa que fa que el te sigui difícil de collir. Per això, els tes d’alta muntanya són normalment collites petites i els seus valors no es reflecteixen al mercat . Durant els darrers dos anys, Deng ha intentat sensibilitzar els consumidors sobre el te d’alta muntanya per promoure el seu valor. I quan va conèixer Fan, que buscava una plantació per implementar la tecnologia IoTea de Seeed, es va fer una combinació perfecta per a una solució.

Pas 3: connexió de maquinari

El maquinari d’aquest projecte es pot dividir en 4 parts: alimentació, sensors, node i passarel·la. El següent article us mostrarà com completar-lo pas a pas.

Part de la potència

Power Part conté principalment un panell solar i una bateria de liti, si només construïu aquest projecte per demostrar-lo, podeu ignorar-los. O bé podeu seguir el tutorial anterior per instal·lar l'alimentació del node.

Part dels sensors

A Sensors Part, a causa de la gran quantitat de sensors, hem utilitzat una estació meteorològica i també hem fet un suport acrílic per instal·lar-los.

Imatge
Imatge

Com veieu a la imatge superior, el sensor de llum digital sempre està a la part superior, de manera que pugui recollir informació sobre il·luminació. Els sensors que generaran calor s’instal·len al centre del suport d’acrílic, com ara el sensor O2, el sensor de pols i el sensor de CO2. Per fi, sensor de temperatura i humitat a la part inferior del suport d’acrílic.

A més, el sensor de temperatura i humitat del sòl s’instal·la sol al sòl. Part del node

Imatge
Imatge

Node Part és un Seeeduino LoRaWan que s’instal·la en una caixa impermeable, que es connecta a l’alimentació i als sensors mitjançant Water Joints. Entre ells, el sensor de pols es connecta al pin digital D3 de LoRaWan, el sensor de CO2 es connecta al pin D4 i D5, el sensor de sòl es connecta al pin D6 i D7, el sensor O2 es connecta al pin analògic A1 i el sensor de llum i baròmetre es connecta al port I2C.

NOTA: S'ha d'afegir una resistència de 10 k entre el cable blau (dades) del sensor del sòl i el cable vermell (Vcc).

Seeeduino LoRaWan recull el valor dels sensors de tant en tant i els envia a Gateway mitjançant LoRa. El format de dades que es mostra a continuació:

{

[0], / * Temperatura de l'aire (℃) * / [1], / * Humitat de l'aire (%) * / [2], / * Altitud (m) byte alt * / [3], / * Altitud (m) byte baix * / [4], / * concentració de CO2 (PPM) byte alt * / [5], / * concentració de CO2 (PPM) byte baix * / [6], / * concentració de pols (pcs / 0,01cf) byte alt * / [7], / * Concentració de pols (pcs / 0,01cf) byte baix * / [8], / * Intensitat lumínica (lux) byte alt * / [9], / * Intensitat lumínica (lux) byte baix * / [10], / * Concentració d’O2 (%) * / [11], / * Temperatura del sòl (℃) * / [12], / * Humitat del sòl (%) * / [13], / * Tensió de la bateria (V) * / [14] / * Codi d'error del sensor * /}

Cada bit del byte del codi d'error del sensor té un significat diferencial, igual que a continuació:

{

bit0: 1; / * Error del sensor de baròmetre * / bit1: 1; / * Error del sensor de CO2 * / bit2: 1; / * Error del sensor de pols * / bit3: 1; / * Error del sensor de llum * / bit4: 1; / * Error del sensor O2 * / bit5: 1; / * Error del sensor del sòl * / reservat: 2; / * Reservat * /}

Part de la passarel·la

Imatge
Imatge

Gateway Part és un Raspberry Pi que connecta el mòdul Gateway RHF0M301–868 i el PRI 2 Bridge RHF4T002, que s’instal·la en una caixa impermeable i es connecta a la càmera d’alimentació i USB mitjançant Water Joints. Com que utilitza un firmware especialitzat, seguiu Seeed Wiki per configurar-lo.

Pas 4: programació de programari

Com a connexió de maquinari, la programació de programari també es pot dividir, es pot dividir en 3 parts: node, passarel·la i lloc web.

Part del node

La majoria dels controladors necessaris per a la part del node ja es troben a la carpeta origin_driver. Cal instal·lar manualment les biblioteques següents:

Adafruit_ASFcore

Com que el projecte és complicat, us recomanem que utilitzeu Microsoft Visual Studio en lloc d'Arduino IDE. Un connector anomenat Visual Micro us pot ajudar a generar un projecte Arduino mitjançant Visual Studio; feu clic aquí per obtenir més informació.

Per a una millor llegibilitat i facilitat de manteniment, utilitzem aquesta vegada la programació orientada a objectes. El diagrama de classes d’aquest projecte té l’aspecte següent:

Imatge
Imatge

Per a aquells sensors que ja tenen controlador OOP, el vam tornar a empaquetar per adaptar aquest projecte; per a altres, vam canviar els seus controladors mitjançant OOP. La classe de sensor en capa middleware s’utilitza per unificar interfícies de sensors reals, per exemple, un sensor de baròmetre pot recollir temperatura, humitat i altitud al mateix temps, de manera que té 3 interfícies per adquirir temperatura, humitat i altitud. Però tenen un nom de mètode de diferència que farà que el programa d’adquisició de sensors sigui més complicat, així:

baròmetre-> getTemperature ();

baròmetre-> getHumidity (); baròmetre-> getAltitude (); // … un altre_sensor-> getSomeValue (); // …

Però fent servir POO, es veu així:

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

}

També hem empaquetat una classe d'aplicació, implementa la interfície IApplication, el mètode setup () i loop () a IoTea.ino pot cridar el mètode setup () i loop () a l'objecte Application.

NOTA: El serial USB s’utilitza NOMÉS per depurar. Després de la depuració, comenteu que inicialitza el codi al mètode setup ().

Part de la passarel·la

El programa Python de Gateway Part a la carpeta inicial s’utilitza per fer fotos i penjar-les al servidor Amazon S3 cada hora. Abans d’utilitzar-lo, assegureu-vos que fswebcam ja estigui instal·lada al vostre Raspberry Pi:

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

Si voleu penjar fotos, configureu el vostre AWS seguint els passos següents. En primer lloc, instal·leu AWS SDK i AWS CLI al vostre Raspberry Pi mitjançant aquestes ordres:

sudo pip instal·lar boto3

sudo pip instal·la awscli

i, a continuació, executeu AWS CLI:

sudo aws configure

Configureu l'identificador de clau d'accés AWS, l'identificador d'accés secret d'AWS i el nom de regió per defecte.

Si no us agrada penjar les vostres fotos, podeu ometre els passos de configuració d'AWS i codis de comentaris sobre la càrrega a photo.py. Per executar aquest programa després d'arrencar Raspberry Pi cada vegada, podeu crear una foto de nom de fitxer a /etc/init.d i escriure-hi el següent codi.

#! / bin / bash

# /etc/init.d/photo ### BEGIN INIT INFO # Ofereix: seeed_photo # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Descripció breu: presa de fotografies initscript # Descripció: aquest servei s'utilitza per gestionar la presa de fotos ### END INIT INFO cas "$ 1" a l'inici) eco "Comença a fer fotos" /home/rxhf/photo.py &;; stop) eco "Deixa de fer fotos" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) ressò "Ús: foto de servei inici | parada" sortida 1;; sortida 0 d'esac

defineix el permís d'execució

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

i proveu-lo

sudo /etc/init.d/photo start

Si no hi ha cap problema, atureu-lo i afegiu-lo a l'aplicació d'inici

sudo /etc/init.d/photo stop

sudo update-rc.d per defecte de la foto

NOTA: Si voleu iniciar la passarel·la després de l’arrencada de Raspberry Pi, afegiu els codis d’inici de la passarel·la a Seeed Wiki a /etc/rc.local, deixeu que sembli:

#! / bin / sh -e

# # rc.local # # Aquest script s'executa al final de cada nivell d'execució multiusuari. # Assegureu-vos que l'script "sortirà de 0" en cas d'èxit o de qualsevol altre # valor en cas d'error. # # Per habilitar o desactivar aquest script, canvieu l'execució # bits. # # Per defecte, aquest script no fa res. # Imprimiu l'adreça IP _IP = $ (nom de l'amfitrió -I) || cert si ["$ _IP"]; després printf "La meva adreça IP és% 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 sortida 0

Lloc web

Hem desplegat el lloc web a CentOS 7. Els passos següents us mostraran com implementar-lo.

Pas 1. Instal·leu Python3

sudo yum -y instal·leu epel-release

sudo yum -y instal·lar python36

Pas 2. Instal·leu Python pip i entorn virtual

wget

sudo python36 get-pip.py sudo pip instal·la virtualenv

Setp 3. Cloneu el nostre lloc web des de GitHub

sudo yum -y install git

git clone

Pas 4. Creeu i activeu l'entorn virtual

virtualenv -p python36 iotea-hb

cd iotea-hb source bin / activate

Pas 5. Instal·leu biblioteques dependents

pip instal·lar pymysql

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

Pas 6. Crea una base de dades

sudo yum -y instal·leu mariadb mariabd-server

sudo systemctl habilitar mariadb sudo systemctl iniciar mariadb mysql -uroot -p

i després utilitzeu iotea_hb.sql per crear una taula.

Pas 7. Creeu db.ini i escriviu-hi aquests codis

[db]

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

canvieu el camí de db.ini a db.py

# a db.py

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

Pas 8. Canvieu el port a app.py i inicieu el lloc web:

# a app.py

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

# al terminal

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

ara visiteu 127.0.0.1:8080 al navegador web, podeu veure el lloc web, però no es mostren dades en temps real.

Pas 9. Obteniu dades loriot

Obriu un altre terminal, torneu a introduir l’entorn virtual i inicieu l’aplicació loriot:

cd iotea-hb

paperera font / activa gunicorn loriot: aplicació

Espereu una estona, veureu dades mostrades al lloc web o podeu canviar wss a loriot.py:

# a loriot.py

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

ws = create_connection ()

Pas 5: operació

Podeu visitar els nostres llocs web per veure dades en temps real:

  • A Ya'an
  • Per a la demostració

Recomanat: