Obsah:

Viděné řešení IoTea LoRa (aktualizace 1811): 5 kroků
Viděné řešení IoTea LoRa (aktualizace 1811): 5 kroků

Video: Viděné řešení IoTea LoRa (aktualizace 1811): 5 kroků

Video: Viděné řešení IoTea LoRa (aktualizace 1811): 5 kroků
Video: Эндрю МакАфи: Как будет выглядеть работа в будущем? 2024, Červenec
Anonim
Viděné řešení IoTea LoRa (aktualizace 1811)
Viděné řešení IoTea LoRa (aktualizace 1811)

Internet+ je nyní populární koncept. Tentokrát jsme vyzkoušeli internet plus zemědělství, aby z čajové zahrady vyrostl internetový čaj.

Krok 1: Věci použité v tomto projektu

Hardwarové komponenty

  • Grove - senzor oxidu uhličitého (MH -Z16)
  • Grove - digitální světelný senzor
  • Grove - prachový senzor (PPD42NS)
  • Grove-Kyslíkový senzor (ME2-O2-Ф20)
  • Čidlo vlhkosti a teploty půdy
  • LoRa LoRaWAN Gateway - souprava 868 MHz s Raspberry Pi 3
  • Grove - snímač teploty a humusu a barometru (BME280)

Softwarové aplikace a online služby

Microsoft Visual Studio 2015

Krok 2: Příběh

Na hoře Mengding severovýchodně od Ya’an, S' -čchuan, vede horský hřeben v zeleném moři na západ k východu. Toto je nejznámější pohled na 36letého Denga, jednoho z mála Mengdingových čajovníků své generace, s plantáží 50 m (= 3,3 ha) situovanou v 1100 m nad mořem. Deng pochází z rodiny čajovníků, ale pokračovat v rodinném odkazu není snadný úkol. "Naše čaje se pěstují ve vysoké nadmořské výšce v organickém prostředí, aby byla zajištěna jeho vynikající kvalita." Ale zároveň je hustota růstu nízká, náklady jsou vysoké a pučení je nerovnoměrné, takže je těžké čaj sklízet. Proto jsou vysokohorské čaje obvykle malou sklizní a jejich hodnoty se na trhu neprojevují. “Poslední dva roky se Deng snaží zvýšit povědomí spotřebitelů o vysokohorském čaji, aby propagoval jejich hodnotu. A když se setkal s Fanem, který hledal plantáž pro implementaci technologie Seeed IoTea, bylo dosaženo dokonalého řešení.

Krok 3: Hardwarové připojení

Hardware tohoto projektu lze rozdělit na 4 části: napájení, senzory, uzel a brána. Následující článek vám ukáže, jak jej krok za krokem dokončit.

Power Part

Power Part obsahuje hlavně solární panel a lithiovou baterii, pokud tento projekt postavíte jen na ukázku, můžete je ignorovat. Nebo můžete podle pokynů v předchozím kurzu nainstalovat napájení uzlu.

Senzory Část

V části Senzory jsme kvůli mnoha senzorům použili meteorologickou stanici a také jsme pro jejich instalaci vyrobili akrylový držák.

obraz
obraz

Jak vidíte na obrázku výše, digitální světelný senzor je vždy nahoře, takže dokáže sbírat informace o osvětlení. Senzory, které budou generovat teplo, jsou instalovány uprostřed akrylového držáku, jako je senzor O2, prachový senzor a snímač CO2. Konečně snímač teploty a vlhkosti na spodní straně akrylového držáku.

Kromě toho je snímač teploty a vlhkosti půdy instalován samostatně v půdě. Část uzlu

obraz
obraz

Node Part je Seeeduino LoRaWan, který je instalován ve vodotěsném boxu a připojuje se k napájení a senzorům pomocí Water Joints. Mezi nimi je senzor prachu připojen k digitálnímu kolíku D3 LoRaWan, senzor CO2 připojen ke kolíku D4 a D5, snímač půdy připojen ke kolíku D6 a D7, senzor O2 připojen k analogovému kolíku A1 a senzor světla a barometr připojen k portu I2C.

POZNÁMKA: Mezi modrý (datový) kabel čidla půdy a červený (Vcc) kabel by měl být přidán odpor 10k.

Seeeduino LoRaWan sbírá hodnoty senzorů jednou za čas a odesílá je do brány přes LoRa. Datový formát jako níže:

{

[0], /* Teplota vzduchu (℃)* /[1], /* Vlhkost vzduchu (%)* /[2], /* Nadmořská výška (m) vysoký bajt* /[3], /* Nadmořská výška (m) nízký byte */[4],/ * koncentrace CO2 (PPM) vysoký byte */[5],/ * koncentrace CO2 (PPM) nízký byte */[6],/ * koncentrace prachu (ks/0,01 cf) vysoký byte */[7],/ *Koncentrace prachu (ks/0,01 cf) nízký byte */[8],/ *intenzita světla (lux) vysoký byte */[9],/ *intenzita světla (lux) nízký byte */ [10], /* koncentrace O2 (%)* /[11], /* teplota půdy (℃)* /[12], /* vlhkost půdy (%)* /[13], /* napětí baterie (V) */ [14]/ *Kód chyby senzoru */}

Každý bit v bajtu chybového kódu senzoru má rozdílný význam, stejně jako níže:

{

bit0: 1; / * Chyba senzoru barometru */ bit1: 1; / * Chyba senzoru CO2 */ bit2: 1; / * Chyba senzoru prachu */ bit3: 1; / * Chyba snímače světla */ bit4: 1; / * Chyba senzoru O2 */ bit5: 1; / * Chyba snímače půdy */ rezervováno: 2; / * Rezervováno */}

Část brány

obraz
obraz

Gateway Part je Raspberry Pi, který zapojil Gateway modul RHF0M301–868 a PRI 2 Bridge RHF4T002, nainstaloval se do vodotěsného boxu a připojil se k napájení a USB kameře pomocí Water Joints. Protože používá specializovaný firmware, nakonfigurujte jej podle Seeed Wiki.

Krok 4: Programování softwaru

Hardwarové připojení a softwarové programování lze také rozdělit na tři části: Node, Gateway a Web.

Část uzlu

Většina ovladačů, které Node Part vyžaduje, je již obsažena ve složce origin_driver. Následující knihovny je třeba nainstalovat ručně:

Adafruit_ASFcore

Protože je projekt komplikovaný, doporučujeme místo Arduino IDE použít Microsoft Visual Studio. Plugin s názvem Visual Micro vám může pomoci s projektem Arduino pomocí Visual Studia, kliknutím sem získáte další informace.

Pro lepší čitelnost a udržovatelnost tentokrát používáme objektově orientované programování. Diagram tříd tohoto projektu vypadá takto:

obraz
obraz

Protože tyto senzory již mají ovladač OOP, přepracovali jsme jej, abychom přizpůsobili tento projekt, u ostatních jsme jejich ovladače přepsali pomocí OOP. Třída Sensor ve střední vrstvě slouží ke sjednocení rozhraní skutečných senzorů, například senzor barometru může současně sbírat teplotu, vlhkost a nadmořskou výšku, takže má 3 rozhraní pro získávání teploty, vlhkosti a nadmořské výšky. Mají však název rozdílové metody, což zkomplikuje program získávání hodnoty senzorů, a to takto:

barometr-> getTemperature ();

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

Ale pomocí OOP to vypadá takto:

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

}

Zabalili jsme také třídu Application, která implementuje rozhraní IApplication, metoda setup () a loop () v IoTea.ino může volat metodu setup () a loop () v objektu Application.

POZNÁMKA: USB Serial se používá pouze k ladění. Po ladění prosím komentujte jeho inicializaci kódu v metodě setup ().

Část brány

Program Python Gateway Part v domovské složce slouží k pořizování fotografií a jejich odesílání na server Amazon S3 každou hodinu. Než jej použijete, ujistěte se, že je fswebcam již nainstalován ve vašem Raspberry Pi:

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

Pokud chcete nahrávat fotografie, nakonfigurujte svůj AWS podle následujících kroků. Nejprve nainstalujte AWS SDK a AWS CLI do svého Raspberry Pi pomocí těchto příkazů:

sudo pip install boto3

sudo pip install awscli

a poté spusťte AWS CLI:

sudo aws configure

Nakonfigurujte své ID přístupového klíče AWS, tajné přístupové ID AWS a výchozí název oblasti.

Pokud neradi nahráváte své fotografie, můžete přeskočit kroky konfigurace AWS a komentovat kódy o nahrávání do souboru photo.py. Pro spuštění tohoto programu po každém spuštění Raspberry Pi můžete vytvořit fotografii s názvem souboru v souboru /etc/init.d a zapsat do něj následující kód.

#!/bin/bash

# /etc/init.d/photo ### BEGIN INIT INFO # Poskytuje: seeed_photo # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Krátký popis: pořizování fotografií initscript # Popis: Tato služba slouží ke správě fotografování ### END INIT INFO případ „$ 1“na začátku) echo „Začít fotit“/home/rxhf/photo.py &;; stop) echo „Přestaňte fotografovat“zabít $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Použití: spuštění servisní fotografie | zastavení" exit 1;; esac exit 0

nastavit oprávnění ke spuštění

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

a vyzkoušet to

sudo /etc/init.d/photo start

Pokud není žádný problém, zastavte jej a přidejte jej do spouštěcí aplikace

sudo /etc/init.d/photo stop

výchozí nastavení fotografie sudo update-rc.d

POZNÁMKA: Pokud chcete spustit bránu po spuštění Raspberry Pi, přidejte do Seeed Wiki počáteční kódy brány do /etc/rc.local, ať to vypadá takto:

#!/bin/sh -e

# # rc.local # # Tento skript je spuštěn na konci každé víceuživatelské úrovně běhu. # Ujistěte se, že skript při úspěchu „opustí 0“nebo jakákoli jiná # hodnota při chybě. # # Chcete -li povolit nebo zakázat tento skript, změňte pouze počet bitů provádění #. # # Ve výchozím nastavení tento skript nedělá nic. # Vytiskněte IP adresu _IP = $ (název hostitele -I) || true if ["$ _IP"]; pak printf "Moje IP adresa je %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 ukončení 0

webová stránka

Web jsme nasadili na CentOS 7. Následující kroky vám ukážou, jak nasadit.

Krok 1. Nainstalujte Python3

sudo yum -y install epel -release

sudo yum -y nainstalovat python36

Krok 2. Nainstalujte Python pip a virtuální prostředí

wget

sudo python36 get-pip.py sudo pip install virtualenv

Setp 3. Klonujte náš web z GitHubu

sudo yum -y nainstalovat git

klon git

Krok 4. Vytvořte a aktivujte virtuální prostředí

virtualenv -p python36 iotea -hb

cd iotea-hb zdrojový bin/aktivovat

Krok 5. Nainstalujte závislé knihovny

pip install pymysql

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

Krok 6. Vytvořte databázi

sudo yum -y nainstalovat mariadb mariabd -server

sudo systemctl povolit mariadb sudo systemctl spustit mariadb mysql -uroot -p

a poté pomocí iotea_hb.sql vytvořte tabulku.

Krok 7. Vytvořte db.ini a zapište do něj tyto kódy

[db]

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

změňte cestu db.ini v db.py

# v db.py

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

Krok 8. Změňte port v app.py a spusťte web:

# v app.py

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

# v terminálu

pip install gunicorn gunicorn -w 5 -b 0,0.0.0:8080 aplikace: app

nyní ve webovém prohlížeči navštivte stránku 127.0.0.1:8080, webovou stránku vidíte, ale data v reálném čase se nezobrazují.

Krok 9. Získejte data loriot

Otevřete jiný terminál, znovu zadejte virtuální prostředí a spusťte aplikaci loriot:

cd iotea-hb

zdrojový koš/aktivujte gunicorn loriot: app

Chvíli počkejte, uvidíte data zobrazená na webových stránkách, nebo můžete změnit wss v loriot.py:

# v loriot.py

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

ws = create_connection ()

Krok 5: Provoz

Můžete navštívit naše webové stránky a zobrazit data v reálném čase:

  • V Ya'an
  • Na ukázku

Doporučuje: