Innholdsfortegnelse:

Sett IoTea LoRa -løsning (oppdatering 1811): 5 trinn
Sett IoTea LoRa -løsning (oppdatering 1811): 5 trinn

Video: Sett IoTea LoRa -løsning (oppdatering 1811): 5 trinn

Video: Sett IoTea LoRa -løsning (oppdatering 1811): 5 trinn
Video: Editing Marlin 2.0.x Firmware - Atomic U300 Marlin Firmware Setting Part 1 2024, Juli
Anonim
Så IoTea LoRa -løsning (oppdatering 1811)
Så IoTea LoRa -løsning (oppdatering 1811)

Internet+ er et populært konsept nå. Denne gangen prøvde vi Internett pluss jordbruk for å lage tehage som vokser ut på internett.

Trinn 1: Ting som brukes i dette prosjektet

Maskinvarekomponenter

  • Grove - Karbondioksidsensor (MH -Z16)
  • Grove - Digital lyssensor
  • Grove - støvsensor (PPD42NS)
  • Grove-oksygensensor (ME2-O2-Ф20)
  • Jordfuktighet og temperatursensor
  • LoRa LoRaWAN Gateway - 868MHz sett med Raspberry Pi 3
  • Grove - Temp & Humi & Barometersensor (BME280)

Programvare -apper og online -tjenester

Microsoft Visual Studio 2015

Trinn 2: Historie

På Mengding -fjellet nordøst for Ya’an, Sichuan, går fjellryggen vest til øst i et grønt hav. Dette er et mest kjent syn for 36 år gamle Deng, en av de få Mengding-te-skaperne i sin generasjon, med en plantasje på 50mu (= 3,3 hektar) som ligger på 1100 moh. Deng kommer fra en familie av tekokere, men det er ikke en lett oppgave å videreføre arven etter familien. “Teene våre dyrkes i stor høyde i et organisk miljø for å sikre sin utmerkede kvalitet. Men samtidig er veksttettheten lav, kostnadene høye og spirende er ujevn, noe som gjør te vanskelig å høste. Derfor er te på høyfjell normalt små avlinger, og verdiene deres gjenspeiles ikke på markedet. »De siste to årene har Deng prøvd å øke forbrukernes bevissthet om te for å fremme verdien. Og da han møtte Fan, som var på utkikk etter en plantasje for å implementere Seeeds IoTea -teknologi, ble det gjort en perfekt match for en løsning.

Trinn 3: Maskinvaretilkobling

Maskinvaren til dette prosjektet kan deles i fire deler: Strøm, sensorer, node og gateway. Følgende artikkel viser deg hvordan du fullfører det trinnvis.

Strømdel

Power Part inneholder hovedsakelig et solcellepanel og et litiumbatteri. Hvis du bare bygger dette prosjektet for demonstrasjon, kan du ignorere dem. Eller du kan følge Forrige opplæring for å installere nodestrøm.

Sensorer del

I Sensors Part, på grunn av de mange sensorene, brukte vi en værstasjon, og laget også en akrylbrakett for å installere dem.

Bilde
Bilde

Som du ser på bildet ovenfor, digital lyssensor alltid på toppen, slik at den kan samle belysningsinformasjon. Sensorene som vil generere varme, er installert i midten av akrylbraketten, for eksempel O2 -sensor, støvsensor og CO2 -sensor. Endelig temperatur- og fuktighetssensor på bunnen av akrylbraketten.

Dessuten er jordtemperatur- og fuktighetssensoren installert alene i jorda. Node del

Bilde
Bilde

Node Part er en Seeeduino LoRaWan som er installert i en vanntett boks, den kobles til strøm og sensorer via vannledd. Blant dem, støvsensor kobles til LoRaWans digitale pinne D3, CO2 -sensor kobler til pinne D4 og D5, Jordføler tilkobles til pinne D6 & D7, O2 -sensor kobles til analog pin A1 og lyssensor og barometersensor kobles til I2C -port.

MERK: En 10k motstand bør legges til mellom jordfølerens blå (data) kabel og rød (Vcc) kabel.

Seeeduino LoRaWan samler inn sensorverdier en gang i blant, og sender dem til Gateway via LoRa. Dataformatet som nedenfor:

{

[0], /* Lufttemperatur (℃)* /[1], /* Luftfuktighet (%)* /[2], /* Høyde (m) høy byte* /[3], /* Høyde (m) lav byte */[4],/ * CO2 -konsentrasjon (PPM) høy byte */[5],/ * CO2 -konsentrasjon (PPM) lav byte */[6],/ * Støvkonsentrasjon (stk/0,01cf) høy byte */[7],/ *Støvkonsentrasjon (stk/0.01cf) lav byte */[8],/ *Lysintensitet (lux) høy byte */[9],/ *Lysintensitet (lux) lav byte */ [10], /* O2 -konsentrasjon (%)* /[11], /* Jordtemperatur (℃)* /[12], /* Jordfuktighet (%)* /[13], /* Batterispenning (V) */ [14]/ *Sensor feilkode */}

Hver bit i sensorfeilkode -byte har en forskjellig betydning, akkurat som nedenfor:

{

bit0: 1; / * Barometersensorfeil */ bit1: 1; / * CO2 Sensor Error */ bit2: 1; / * Støvfølerfeil */ bit3: 1; / * Lyssensorfeil */ bit4: 1; / * O2 Sensor Error */ bit5: 1; / * Jordfeilfeil */ reservert: 2; /* Reservert */ }

Gateway del

Bilde
Bilde

Gateway Part er en Raspberry Pi som plugget Gateway -modulen RHF0M301–868 og PRI 2 Bridge RHF4T002, den ble installert i en vanntett boks og koblet til strøm og USB -kamera via vannledd. Fordi den bruker spesialisert fastvare, vennligst følg Seeed Wiki for å konfigurere den.

Trinn 4: Programvareprogrammering

Som maskinvaretilkobling kan programvareprogrammering også deles, den kan deles i 3 deler: Node, Gateway og nettsted.

Node del

De fleste drivere som Node Part krever, finnes allerede i origin_driver -mappen. Bibliotekene som følger ned må installeres manuelt:

Adafruit_ASFcore

Fordi prosjektet er komplisert, anbefaler vi at du bruker Microsoft Visual Studio i stedet for Arduino IDE. Et plugin som heter Visual Micro kan hjelpe deg med å bygge et Arduino -prosjekt ved å bruke Visual Studio, klikk her for mer informasjon.

For bedre lesbarhet og vedlikehold, bruker vi Objektorientert programmering denne gangen. Klassediagrammet for dette prosjektet ser ut som nedenfor:

Bilde
Bilde

For de sensorene som allerede har OOP -driver, pakket vi den om for å tilpasse dette prosjektet, for andre skrev vi om driverne deres ved å bruke OOP. Sensorklassen i mellomvarelaget brukes til å forene grensesnitt til ekte sensorer, for eksempel kan en barometersensor samle temperatur, fuktighet og høyde samtidig, så den har 3 grensesnitt for å skaffe temperatur, fuktighet og høyde. Men de har forskjellsmetodenavn, noe som vil gjøre programmet for å skaffe sensorer verdi mer komplisert, akkurat slik:

barometer-> getTemperature ();

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

Men ved bruk av OOP ser det slik ut:

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

}

Vi pakket også en applikasjonsklasse, den implementerer IApplication -grensesnitt, metoden setup () og loop () i IoTea.ino kan kalle setup () og loop () -metoden i applikasjonsobjektet.

MERK: USB Serial brukes KUN for feilsøking. Etter feilsøking, vennligst kommenter at den initialiserer koden i setup () -metoden.

Gateway del

Gateway Part's Python -program i hjemmemappen brukes til å ta bilder og laste dem opp til Amazon S3 Server hver time. Før du bruker det, må du kontrollere at fswebcam allerede er installert i Raspberry Pi:

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

Hvis du vil laste opp bilder, konfigurerer du AWS ved å følge trinnene. Installer først AWS SDK og AWS CLI på din Raspberry Pi ved å bruke disse kommandoene:

sudo pip installer boto3

sudo pip installer awscli

og kjør deretter AWS CLI:

sudo aws konfigurere

Konfigurer AWS Access Key ID, AWS Secret Access ID og Standard regionnavn.

Hvis du ikke liker å laste opp bildene dine, kan du hoppe over AWS -konfigurasjonstrinn og kommentarkoder om opplasting i photo.py. For å kjøre dette programmet etter å ha startet Raspberry Pi hver gang, kan du lage 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 tjenesten brukes til å administrere fotografering ### END INIT INFO tilfelle "$ 1" i start) echo "Start fotografering" /home/rxhf/photo.py &;; stop) echo "Slutt å ta bilde" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) ekko "Bruk: tjenestefoto start | stopp" exit 1;; esac exit 0

angi kjøringstillatelse

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

og test det

sudo /etc/init.d/photo start

Hvis det ikke er noe problem, stopp det og legg det til i oppstartsprogrammet

sudo /etc/init.d/photo stop

sudo update-rc.d fotoinnstillinger

MERK: Hvis du vil starte gateway etter oppstart av Raspberry Pi, kan du legge til gateway -startkoder i Seeed Wiki til /etc/rc.local, la det se slik ut:

#!/bin/sh -e

# # rc.local # # Dette skriptet kjøres på slutten av hvert flerbruker -nivå. # Sørg for at skriptet vil "avslutte 0" ved suksess eller annen # verdi ved feil. # # For å aktivere eller deaktivere dette skriptet, bare endre kjøringen # bits. # # Som standard gjør dette skriptet ingenting. # Skriv ut IP -adressen _IP = $ (vertsnavn -I) || true if ["$ _IP"]; deretter 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

Nettsted

Vi distribuerte nettstedet på CentOS 7. Følgende trinn viser deg hvordan du distribuerer det.

Trinn 1. Installer Python3

sudo yum -y installer epel -release

sudo yum -y installer python36

Trinn 2. Installer Python pip og virtuelt miljø

wget

sudo python36 get-pip.py sudo pip install virtualenv

Setp 3. Klon nettstedet vårt fra GitHub

sudo yum -y installer git

git-klon

Trinn 4. Opprett og aktiver virtuelt miljø

virtualenv -p python36 iotea -hb

cd iotea-hb kildeboks/aktivere

Trinn 5. Installer avhengige biblioteker

pip installer pymysql

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

Trinn 6. Lag database

sudo yum -y installer mariadb mariabd -server

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

og bruk deretter iotea_hb.sql for å lage et bord.

Trinn 7. Lag db.ini, og skriv disse kodene til den

[db]

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

endre db.inis vei i db.py

# i db.py

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

Trinn 8. Bytt port i app.py og start nettstedet:

# 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

nå besøk 127.0.0.1:8080 i nettleseren din, du kan se nettstedet, men sanntidsdata vises ikke.

Trinn 9. Få loriot -data

Åpne en annen terminal, angi virtuelt miljø på nytt og start loriot -appen:

cd iotea-hb

kildebeholder/aktivere gunicorn loriot: app

Vent en stund, du vil se data som vises på nettstedet, eller du kan endre wss i loriot.py:

# i loriot.py

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

ws = create_connection ()

Trinn 5: Drift

Du kan besøke nettstedene våre for å se sanntidsdata:

  • I Ya'an
  • Til demonstrasjon

Anbefalt: