Indholdsfortegnelse:

Set IoTea LoRa -løsning (opdatering 1811): 5 trin
Set IoTea LoRa -løsning (opdatering 1811): 5 trin

Video: Set IoTea LoRa -løsning (opdatering 1811): 5 trin

Video: Set IoTea LoRa -løsning (opdatering 1811): 5 trin
Video: Barron Trump asks, "Mom, are you okay?" So cute ❤ #barrontrump #melaniatrump #donaldtrump #trump 2024, November
Anonim
Set IoTea LoRa -løsning (opdatering 1811)
Set IoTea LoRa -løsning (opdatering 1811)

Internet+ er et populært koncept nu. Denne gang prøvede vi Internettet plus landbrug for at få en tehave til at vokse ud på Internettet.

Trin 1: Ting, der bruges i dette projekt

Hardware komponenter

  • Grove - Kuldioxidføler (MH -Z16)
  • Grove - Digital lyssensor
  • Grove - støvføler (PPD42NS)
  • Grove-Oxygen Sensor (ME2-O2-Ф20)
  • Jordfugtigheds- og temperatursensor
  • LoRa LoRaWAN Gateway - 868MHz kit med Raspberry Pi 3
  • Grove - Temp & Humi & Barometersensor (BME280)

Software -apps og onlinetjenester

Microsoft Visual Studio 2015

Trin 2: Historie

På Mengding -bjerget nordøst for Ya’an, Sichuan, løber bjergryggen vest til øst i et hav af grønt. Dette er et mest kendt syn for 36-årige Deng, en af de meget få Mengding-te-producenter i sin generation, med en plantage på 50mu (= 3,3 hektar) beliggende på 1100 m over havets overflade. Deng kommer fra en familie af tefabrikanter, men det er ikke en let opgave at videreføre arven fra familien. “Vores te dyrkes i stor højde i et organisk miljø for at sikre dets fremragende kvalitet. Men på samme tid er væksttætheden lav, omkostningerne høje og spirende er ujævn, hvilket gør te svært at høste. Derfor er te på højt bjerg normalt små høst, og deres værdier afspejles ikke på markedet.”I de sidste to år har Deng forsøgt at øge forbrugernes bevidsthed om højbjergte for at fremme deres værdi. Og da han mødte Fan, der ledte efter en plantage til at implementere Seeeds IoTea -teknologi, blev det perfekte match til en løsning.

Trin 3: Hardwareforbindelse

Hardware til dette projekt kan opdeles i 4 dele: Strøm, sensorer, node og gateway. Følgende artikel viser dig, hvordan du gennemfører det trin for trin.

Power del

Power Part indeholder hovedsageligt et solpanel og et litiumbatteri, hvis du bare bygger dette projekt til demonstration, kan du ignorere dem. Eller du kan følge forrige tutorial for at installere nodekraft.

Sensorer del

I Sensors Part, på grund af de mange sensorer, brugte vi en vejrstation og lavede også et akrylbeslag til at installere dem.

Billede
Billede

Som du ser på billedet ovenfor, digital lyssensor altid på toppen, så den kan indsamle belysningsinformation. De sensorer, der genererer varme, installeres i midten af akrylbeslaget, f.eks. O2 -sensor, støvføler og CO2 -sensor. Endelig temperatur- og fugtighedssensor i bunden af akrylbeslaget.

Desuden er jordtemperatur- og fugtighedsføler installeret alene i jorden. Node del

Billede
Billede

Node Part er en Seeeduino LoRaWan, der er installeret i en vandtæt boks, den tilsluttes strøm og sensorer via vandled. Blandt dem kan støvsensor tilsluttes LoRaWans digitale pin D3, CO2 -sensor tilsluttes til pin D4 & D5, Jordsensor tilsluttes til pin D6 & D7, O2 -sensor tilsluttes analog pin A1 og lyssensor og barometersensor tilsluttes I2C -port.

BEMÆRK: Der skal tilføjes en 10k modstand mellem jordfølerens blå (data) kabel og røde (Vcc) kabel.

Seeeduino LoRaWan indsamler sensorværdi en gang imellem og sender dem til Gateway via LoRa. Dataformatet som nedenfor:

{

[0], /* Lufttemperatur (℃)* /[1], /* Luftfugtighed (%)* /[2], /* Højde (m) høj byte* /[3], /* Højde (m) lav byte */[4],/ * CO2 -koncentration (PPM) høj byte */[5],/ * CO2 -koncentration (PPM) lav byte */[6],/ * Støvkoncentration (stk/0,01cf) høj byte */[7],/ *Støvkoncentration (stk/0.01cf) lav byte */[8],/ *Lysintensitet (lux) høj byte */[9],/ *Lysintensitet (lux) lav byte */ [10], /* O2 -koncentration (%)* /[11], /* Jordtemperatur (℃)* /[12], /* Jordfugtighed (%)* /[13], /* Batterispænding (V) */ [14]/ *Sensorfejlkode */}

Hver bit i sensorfejlkode -byte har en forskellig betydning, ligesom nedenfor:

{

bit0: 1; / * Barometer sensorfejl */ bit1: 1; / * CO2 -sensorfejl */ bit2: 1; / * Støvfølerfejl */ bit3: 1; / * Lysfølerfejl */ bit4: 1; / * O2 sensorfejl */ bit5: 1; / * Jordfølerfejl */ reserveret: 2; / * Reserveret */}

Gateway del

Billede
Billede

Gateway Part er en Raspberry Pi, der tilsluttede Gateway -modulet RHF0M301–868 og PRI 2 Bridge RHF4T002, det blev installeret i en vandtæt boks og sluttede til strøm og USB -kamera via vandled. Fordi den bruger specialiseret firmware, skal du følge Seeed Wiki for at konfigurere den.

Trin 4: Software programmering

Som hardware -forbindelse kan softwareprogrammering også opdeles, den kan opdeles i 3 dele: Node, Gateway og websted.

Node del

De fleste drivere, som Node Part kræver, findes allerede i origin_driver -mappen. De følgende biblioteker skal installeres manuelt:

Adafruit_ASFcore

Fordi projektet er kompliceret, anbefaler vi, at du bruger Microsoft Visual Studio i stedet for Arduino IDE. Et plugin kaldet Visual Micro kan hjælpe dig med at bygge et Arduino -projekt ved hjælp af Visual Studio, klik her for mere information.

For bedre læsbarhed og vedligeholdelse bruger vi denne gang objektorienteret programmering. Klassediagrammet over dette projekt ligner nedenfor:

Billede
Billede

For disse sensorer har allerede OOP -driver, vi pakkede den om for at tilpasse dette projekt, for andre omskrev vi deres drivere ved hjælp af OOP. Sensorklassen i mellemvarelaget bruges til at forene grænseflader mellem rigtige sensorer, for eksempel kan en barometersensor indsamle temperatur, fugtighed og højde på samme tid, så den har 3 grænseflader til at opnå temperatur, fugtighed og højde. Men de har forskellen metode navn, som vil gøre programmet for at erhverve sensorer værdi mere kompliceret, ligesom dette:

barometer-> getTemperature ();

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

Men ved hjælp af OOP ser det sådan ud:

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

}

Vi har også pakket en applikationsklasse, den implementerer IApplication -grænseflade, metoden setup () og loop () i IoTea.ino kan kalde setup () og loop () -metoden i Application -objekt.

BEMÆRK: USB Serial bruges KUN til at fejlsøge. Efter fejlfinding bedes du kommentere, at den initialiserer kode i setup () -metoden.

Gateway del

Gateway Part's Python -program i hjemmemappen bruges til at tage fotos og uploade dem til Amazon S3 Server hver time. Inden du bruger det, skal du sørge for, at fswebcam allerede er installeret i din Raspberry Pi:

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

Hvis du vil uploade fotos, skal du konfigurere din AWS ved at følge trinene. Installer først AWS SDK og AWS CLI til din Raspberry Pi ved at bruge disse kommandoer:

sudo pip installer boto3

sudo pip installer awscli

og kør derefter AWS CLI:

sudo aws konfigurere

Konfigurer dit AWS Access Key ID, AWS Secret Access ID og standardregionnavn.

Hvis du ikke kan lide at uploade dine fotos, kan du springe AWS -konfigurationstrin over og kommentere koder om upload i photo.py. For at køre dette program efter opstart af Raspberry Pi hver gang, kan du oprette et filnavnfoto i /etc/init.d og skrive følgende kode til det.

#!/bin/bash

#/etc.: 0 1 6 # Kort beskrivelse: fotografering initscript # Beskrivelse: Denne service bruges til at styre fotografering ### END INIT INFO case "$ 1" i start) ekko "Start med at tage foto" /home/rxhf/photo.py &;; stop) ekko "Stop med at tage foto" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) ekko "Brug: service foto start | stop" exit 1;; esac exit 0

angive udførelsestilladelse

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

og test det

sudo /etc/init.d/photo start

Hvis der ikke er noget problem, skal du stoppe det og tilføje det til opstartsprogrammet

sudo /etc/init.d/photo stop

sudo update-rc.d foto standarder

BEMÆRK: Hvis du vil starte gateway efter Raspberry Pi -opstart, skal du tilføje gateway -startkoder i Seeed Wiki til /etc/rc.local, lad det se sådan ud:

#!/bin/sh -e

# # rc.local # # Dette script udføres i slutningen af hvert flerbrugerniveau. # Sørg for, at scriptet vil "afslutte 0" ved succes eller en anden # værdi ved fejl. # # For at aktivere eller deaktivere dette script skal du bare ændre udførelsen # bits. # # Som standard gør dette script ingenting. # Udskriv IP -adressen _IP = $ (værtsnavn -I) || true if ["$ _IP"]; derefter printf "Min IP -adresse er %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

Internet side

Vi implementerede webstedet på CentOS 7. Følgende trin viser dig, hvordan du implementerer.

Trin 1. Installer Python3

sudo yum -y installer epel -release

sudo yum -y installer python36

Trin 2. Installer Python pip og virtuelt miljø

wget

sudo python36 get-pip.py sudo pip installer virtualenv

Setp 3. Klon vores websted fra GitHub

sudo yum -y installer git

git-klon

Trin 4. Opret og aktiver virtuelt miljø

virtualenv -p python36 iotea -hb

cd iotea-hb kildebakke/aktivere

Trin 5. Installer afhængige biblioteker

pip installer pymysql

pip install dbutils pip install kolbe pip install websocket-client pip install cofigparser

Trin 6. Opret database

sudo yum -y installer mariadb mariabd -server

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

og brug derefter iotea_hb.sql til at oprette en tabel.

Trin 7. Opret db.ini, og skriv disse koder til den

[db]

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

ændre db.ini's sti i db.py

# i db.py

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

Trin 8. Skift port i app.py og start webstedet:

# i app.py

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

# i terminal

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

besøg nu 127.0.0.1:8080 i din webbrowser, du kan se webstedet, men data i realtid vises ikke.

Trin 9. Hent loriot -data

Åbn en anden terminal, genindfør virtuelt miljø og start loriot -appen:

cd iotea-hb

kildebakke/aktivere gunicorn loriot: ca.

Vent et stykke tid, du vil se data, der vises på webstedet, eller du kan ændre wss i loriot.py:

# i loriot.py

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

ws = create_connection ()

Trin 5: Betjening

Du kan besøge vores websteder for at se data i realtid:

  • I Ya'an
  • Til demonstration

Anbefalede: