Innehållsförteckning:

Såg IoTea LoRa -lösning (uppdatering 1811): 5 steg
Såg IoTea LoRa -lösning (uppdatering 1811): 5 steg

Video: Såg IoTea LoRa -lösning (uppdatering 1811): 5 steg

Video: Såg IoTea LoRa -lösning (uppdatering 1811): 5 steg
Video: Seeed IoTea Lora Solution 2024, Juli
Anonim
Såg IoTea LoRa -lösning (uppdatering 1811)
Såg IoTea LoRa -lösning (uppdatering 1811)

Internet+ är ett populärt koncept nu. Den här gången försökte vi Internet plus jordbruk för att få en te -trädgård att växa ut på Internet -teet.

Steg 1: Saker som används i detta projekt

Hårdvarukomponenter

  • Grove - koldioxidgivare (MH -Z16)
  • Grove - Digital ljussensor
  • Grove - Dammsensor (PPD42NS)
  • Grove-Oxygen Sensor (ME2-O2-Ф20)
  • Jordfuktighet och temperatursensor
  • LoRa LoRaWAN Gateway - 868MHz -kit med Raspberry Pi 3
  • Grove - Temp & Humi & Barometersensor (BME280)

Programvaruappar och onlinetjänster

Microsoft Visual Studio 2015

Steg 2: Berättelse

På Mengdingberget nordost om Ya’an, Sichuan, löper bergskammen väst mot öst i ett grönt hav. Detta är en mycket bekant syn för 36-åriga Deng, en av de få Mengding-tebryggarna i sin generation, med en plantage på 50mu (= 3,3 hektar) som ligger 1100 m över havet. Deng kommer från en familj av tebryggare, men det är ingen lätt uppgift att fortsätta med arvet från familjen.”Våra teer odlas på hög höjd i en organisk miljö för att säkerställa dess utmärkta kvalitet. Men samtidigt är tillväxttätheten låg, kostnaden hög och spirande är ojämn, vilket gör te svårt att skörda. Det är därför högfjällste är normalt små skördar och deras värderingar återspeglas inte på marknaden.”Under de senaste två åren har Deng försökt öka konsumenternas medvetenhet om högbergste för att främja deras värde. Och när han träffade Fan, som letade efter en plantage för att implementera Seeeds IoTea -teknik, gjordes en perfekt matchning för en lösning.

Steg 3: Maskinvaruanslutning

Hårdvaran för detta projekt kan delas upp i fyra delar: Power, Sensors, Node och Gateway. Följande artikel kommer att visa dig hur du slutför det steg för steg.

Strömdel

Power Part innehåller främst en solpanel och ett litiumbatteri, om du bara bygger det här projektet för demonstration kan du ignorera dem. Eller så kan du följa föregående handledning för att installera nodström.

Sensorer Del

I Sensors Part, på grund av de många sensorerna, använde vi en väderstation och gjorde också en akrylfäste för att installera dem.

Bild
Bild

Som du ser på bilden ovan, Digital Light Sensor alltid på toppen, så att den kan samla belysningsinformation. Sensorerna som genererar värme installeras i mitten av akrylfästet, till exempel O2 -sensor, dammsensor och CO2 -sensor. Äntligen temperatur- och fuktighetssensor på botten av akrylfästet.

Dessutom är jordtemperatur- och luftfuktighetssensorn installerad ensam i jorden. Noddel

Bild
Bild

Node Part är en Seeeduino LoRaWan som installeras i en vattentät låda, den ansluts till ström och sensorer via vattenleder. Bland dem kan Dust Sensor ansluta till LoRaWans digitala stift D3, CO2 Sensor ansluta till stift D4 & D5, Jordsensor ansluta till stift D6 & D7, O2 Sensor ansluta till analog stift A1 och Ljussensor & Barometersensor ansluta till I2C -port.

OBS! En 10k motstånd bör läggas till mellan jordsensorns blå (data) kabel och den röda (Vcc) kabeln.

Seeeduino LoRaWan samlar in sensorvärde då och då och skickar dem till Gateway via LoRa. Dataformatet som nedan:

{

[0], /* Lufttemperatur (℃)* /[1], /* Luftfuktighet (%)* /[2], /* Höjd (m) hög byte* /[3], /* Höjd (m) låg byte */[4],/ * CO2 -koncentration (PPM) hög byte */[5],/ * CO2 -koncentration (PPM) låg byte */[6],/ * Dammkoncentration (st/0,01cf) hög byte */[7],/ *Dammkoncentration (st/0,01cf) låg byte */[8],/ *Ljusintensitet (lux) hög byte */[9],/ *Ljusintensitet (lux) låg byte */ [10], /* O2 -koncentration (%)* /[11], /* Jordtemperatur (℃)* /[12], /* Jordfuktighet (%)* /[13], /* Batterispänning (V) */ [14]/ *Sensorfelkod */}

Varje bit i Sensor Error Code -byte har en skillnadsbetydelse, precis som nedan:

{

bit0: 1; / * Barometersensorfel */ bit1: 1; / * CO2 Sensor Error */ bit2: 1; / * Dammsensorfel */ bit3: 1; / * Ljussensorfel */ bit4: 1; / * O2 Sensor Error */ bit5: 1; / * Jordgivarfel */ reserverad: 2; / * Reserverad */}

Gateway -del

Bild
Bild

Gateway Part är en Raspberry Pi som pluggade Gateway -modulen RHF0M301–868 och PRI 2 Bridge RHF4T002, den installerades i en vattentät låda och ansluts till ström och USB -kamera via vattenleder. Eftersom den använder specialiserad firmware, följ Seeed Wiki för att konfigurera den.

Steg 4: Programvaruprogrammering

Som hårdvaruanslutning kan programvaruprogrammering också delas upp, den kan delas upp i tre delar: Nod, Gateway och webbplats.

Noddel

De flesta drivrutiner som noddel krävs finns redan i mappen origin_driver. Följande bibliotek måste installeras manuellt:

Adafruit_ASFcore

Eftersom projektet är komplicerat rekommenderar vi att du använder Microsoft Visual Studio istället för Arduino IDE. Ett plugin som heter Visual Micro kan hjälpa dig att bygga ett Arduino -projekt med Visual Studio, klicka här för mer information.

För bättre läsbarhet och underhållbarhet använder vi objektorienterad programmering den här gången. Klassdiagrammet för detta projekt ser ut som nedan:

Bild
Bild

Eftersom de sensorerna redan har OOP -drivrutin, packade vi om den för att anpassa detta projekt, för andra skrev vi om deras drivrutiner med hjälp av OOP. Sensorklassen i mellanvarulager används för att förena gränssnitt för riktiga sensorer, till exempel kan en barometersensor samla temperatur, luftfuktighet och höjd samtidigt, så den har 3 gränssnitt för att förvärva temperatur, luftfuktighet och höjd. Men de har skillnadsmetodnamn, vilket kommer att göra programmet för att förvärva sensorer värde mer komplicerat, precis så här:

barometer-> getTemperature ();

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

Men med OOP ser det ut så här:

för (auto i = 0; i getValue ();

}

Vi packade också en applikationsklass, den implementerar IApplication -gränssnitt, metoden setup () och loop () i IoTea.ino kan anropa setup () och loop () -metoden i Application -objekt.

OBS: USB Serial används ENDAST för att felsöka. Efter felsökning, kommentera att den initierar koden i setup () -metoden.

Gateway -del

Gateway Part's Python -program i hemmappen används för att ta foton och ladda upp dem till Amazon S3 Server varje timme. Innan du använder den, se till att fswebcam redan är installerad i din Raspberry Pi:

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

Om du vill ladda upp foton konfigurerar du din AWS genom att följa stegen. Installera först AWS SDK och AWS CLI till din Raspberry Pi med hjälp av dessa kommandon:

sudo pip installera boto3

sudo pip installera awscli

och kör sedan AWS CLI:

sudo aws konfigurera

Konfigurera ditt AWS Access Key ID, AWS Secret Access ID och Standard regionnamn.

Om du inte gillar att ladda upp dina foton kan du hoppa över AWS -konfigurationssteg och kommentarkoder om uppladdning i photo.py. För att köra detta program efter att ha startat Raspberry Pi varje gång kan du skapa ett filnamnfoto i /etc/init.d och skriva följande kod till det.

#!/bin/bash

#/etc.: 0 1 6 # Kort beskrivning: fotografering initscript # Beskrivning: Denna tjänst används för att hantera fotografering ### END INIT INFO fall "$ 1" i start) echo "Börja ta foto" /home/rxhf/photo.py &;; stop) echo "Sluta ta foto" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Användning: service foto start | stopp" avsluta 1;; esac exit 0

ange körningstillstånd

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

och testa det

sudo /etc/init.d/photo start

Om det inte finns några problem, stoppa det och lägg till det i startprogrammet

sudo /etc/init.d/photo stop

sudo update-rc.d fotoinställningar

OBS: Om du vill starta gateway efter Raspberry Pi -start, lägg till gateway -startkoder i Seeed Wiki till /etc/rc.local, låt det se ut som:

#!/bin/sh -e

# # rc.local # # Detta skript körs i slutet av varje fleranvändarkörnivå. # Se till att skriptet "avslutar 0" vid framgång eller något annat # värde vid fel. # # För att aktivera eller inaktivera detta skript ändrar du bara körningen # bitar. # # Som standard gör detta skript ingenting. # Skriv ut IP -adressen _IP = $ (värdnamn -I) || sant om ["$ _IP"]; printf "Min IP -adress är %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

Hemsida

Vi distribuerade webbplatsen på CentOS 7. Följande steg visar hur du distribuerar.

Steg 1. Installera Python3

sudo yum -y installera epel -release

sudo yum -y installera python36

Steg 2. Installera Python pip och virtuellt miljö

wget

sudo python36 get-pip.py sudo pip installera virtualenv

Setp 3. Klona vår webbplats från GitHub

sudo yum -y installera git

git-klon

Steg 4. Skapa och aktivera virtuellt miljö

virtualenv -p python36 iotea -hb

cd iotea-hb källfack/aktivera

Steg 5. Installera beroende bibliotek

pip installera pymysql

pip installera dbutils pip installera kolven pip install websocket-client pip install cofigparser

Steg 6. Skapa databas

sudo yum -y installera mariadb mariabd -server

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

och använd sedan iotea_hb.sql för att skapa en tabell.

Steg 7. Skapa db.ini och skriv dessa koder till den

[db]

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

ändra db.inis sökväg i db.py

# i db.py

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

Steg 8. Ändra port i app.py och starta webbplatsen:

# i app.py

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

# i terminal

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

Besök nu 127.0.0.1:8080 i din webbläsare, du kan se webbplatsen, men data i realtid visas inte.

Steg 9. Skaffa loriot -data

Öppna en annan terminal, ange virtuellt miljö igen och starta loriot -appen:

cd iotea-hb

källkorg/aktivera gunicorn loriot: app

Vänta ett tag, du kommer att se data som visas på webbplatsen, eller så kan du ändra wss i loriot.py:

# i loriot.py

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

ws = create_connection ()

Steg 5: Drift

Du kan besöka våra webbplatser för att se data i realtid:

  • I Ya'an
  • För demonstration

Rekommenderad: