Përmbajtje:

Shihni Zgjidhjen IoTea LoRa (Përditësimi 1811): 5 hapa
Shihni Zgjidhjen IoTea LoRa (Përditësimi 1811): 5 hapa

Video: Shihni Zgjidhjen IoTea LoRa (Përditësimi 1811): 5 hapa

Video: Shihni Zgjidhjen IoTea LoRa (Përditësimi 1811): 5 hapa
Video: CS50 2014 - Week 9 2024, Nëntor
Anonim
Shihni Zgjidhjen IoTea LoRa (Përditësimi 1811)
Shihni Zgjidhjen IoTea LoRa (Përditësimi 1811)

Internet+ është një koncept popullor tani. Këtë herë ne provuam internetin plus bujqësinë për të bërë kopshtin e çajit të rritet nga çaji i internetit.

Hapi 1: Gjërat e përdorura në këtë projekt

Komponentët e harduerit

  • Grove - Sensori i dioksidit të karbonit (MH -Z16)
  • Grove - Sensor dixhital i dritës
  • Grove - Sensor pluhuri (PPD42NS)
  • Grove-Sensori i oksigjenit (ME2-O2-Ф20)
  • Sensori i lagështisë dhe temperaturës së tokës
  • LoRa LoRaWAN Gateway - Kit 868MHz me Raspberry Pi 3
  • Grove - Sensori Temp & Humi & Barometër (BME280)

Aplikacionet softuerike dhe shërbimet online

Microsoft Visual Studio 2015

Hapi 2: Histori

Në malin Mengding në verilindje të Ya'an, Sichuan, kurrizi malor shkon nga perëndimi në lindje në një det të gjelbër. Kjo është një pamje më e njohur për Dengin 36-vjeçar, një nga shumë pak prodhuesit e çajit Mengding të brezit të tij, me një plantacion prej 50mu (= 3.3 hektarë) të vendosur në 1100m mbi nivelin e detit. Deng vjen nga një familje prodhuesish çaji, por mbajtja e trashëgimisë familjare nuk është një detyrë e lehtë. “Çajrat tanë janë rritur në lartësi të mëdha në një mjedis organik për të siguruar cilësinë e tij të shkëlqyer. Por në të njëjtën kohë, dendësia e rritjes është e ulët, kostoja është e lartë dhe lulëzimi është i pabarabartë, duke e bërë çajin të vështirë për të korrur. Kjo është arsyeja pse çajrat e maleve janë zakonisht të korra të vogla dhe vlerat e tyre nuk reflektohen në treg.”Për dy vitet e fundit, Deng është përpjekur të rrisë ndërgjegjësimin e konsumatorëve për çajin e malit të lartë për të promovuar vlerën e tyre. Dhe kur takoi Fan, i cili po kërkonte një plantacion për të zbatuar teknologjinë IoTea të Seeed, u bë një ndeshje perfekte për një zgjidhje.

Hapi 3: Lidhja e harduerit

Pajisja e këtij projekti mund të ndahet në 4 pjesë: Fuqia, Sensorët, Nyja dhe Gateway. Artikulli i mëposhtëm do t'ju tregojë se si ta përfundoni atë hap pas hapi.

Pjesa e fuqisë

Power Part kryesisht përmban një panel diellor dhe një bateri litiumi, nëse thjesht e ndërtoni këtë projekt për demonstrim, mund t'i injoroni ato. Ose mund të ndiqni tutorialin e mëparshëm për të instaluar fuqinë e nyjeve.

Pjesa e sensorëve

Në Pjesën e Sensorëve, për shkak të shumë sensorëve, ne përdorëm një stacion moti, dhe gjithashtu bëmë një kllapa akrilike për t'i instaluar ato.

Imazhi
Imazhi

Siç mund ta shihni në foton e mësipërme, Sensori dixhital i dritës gjithmonë në krye, në mënyrë që të mund të mbledhë informacione për ndriçimin. Sensorët që do të gjenerojnë nxehtësi janë instaluar në mes të kllapës akrilike, siç janë sensori O2, sensori i pluhurit dhe sensori i CO2. Më në fund, Sensori i Temperaturës dhe Lagështisë në pjesën e poshtme të kllapës akrilike.

Për më tepër, Sensori i Temperaturës dhe Lagështisë së Tokës është i instaluar vetëm në tokë. Pjesa e Nyjes

Imazhi
Imazhi

Node Part është një Seeeduino LoRaWan e cila është instaluar në një kuti të papërshkueshme nga uji, ajo lidhet me energjinë dhe sensorët përmes nyjeve të ujit. Midis tyre, Sensori i Pluhurit lidhet me pinin digjital të LoRaWan D3, Sensori CO2 lidhet me pinin D4 & D5, Sensori i tokës lidhet me pinin D6 & D7, Sensori O2 lidhet me pinin analog A1 dhe Sensori i Dritës dhe Barometri lidhet me portën I2C.

SH NOTNIM: Një rezistencë 10k duhet të shtohet midis kabllit Blue (Data) të Sensorit të Tokës dhe kabllit të Kuq (Vcc).

Seeeduino LoRaWan mbledh vlerën e sensorëve herë pas here dhe i dërgon në Gateway nëpërmjet LoRa. Formati i të dhënave si më poshtë:

{

[0], /* Temperatura e ajrit (℃)* /[1], /* Lagështia e ajrit (%)* /[2], /* Lartësia (m) bajt i lartë* /[3], /* Lartësia (m) bajt i ulët */[4],/ * përqendrim CO2 (PPM) bajt i lartë */[5],/ * përqendrim CO2 (PPM) bajt i ulët */[6],/ * Përqendrim pluhuri (copë/0.01cf) bajt i lartë */[7],/ *Përqendrimi i pluhurit (copë/0.01cf) bajt i ulët */[8],/ *Intensiteti i dritës (luks) bajt i lartë */[9],/ *Intensiteti i dritës (luks) bajt i ulët */ [10], /* Përqendrimi i O2 (%)* /[11], /* Temperatura e tokës (℃)* /[12], /* Lagështia e tokës (%)* /[13], /* Tensioni i baterisë (V) */ [14]/ *Kodi i gabimit të sensorit */}

Çdo bit në bajtin e Kodit të Gabimit të Sensorit ka një kuptim ndryshimi, ashtu si më poshtë:

{

bit0: 1; / * Gabim i sensorit të barometrit */ bit1: 1; / * Gabim i sensorit CO2 */ bit2: 1; / * Gabim në sensorin e pluhurit */ bit3: 1; / * Gabim i Sensorit të Dritës */ bit4: 1; / * Gabim i sensorit O2 */ bit5: 1; / * Gabim i Sensorit të Tokës */ i rezervuar: 2; / * Rezervuar */}

Pjesa e Portës

Imazhi
Imazhi

Gateway Part është një Raspberry Pi e cila lidh modulin Gateway RHF0M301–868 dhe PRI 2 Bridge RHF4T002, është instaluar në një kuti të papërshkueshëm nga uji dhe lidhet me energjinë dhe kamerën USB përmes nyjeve të ujit. Për shkak se përdor firmware të specializuar, ju lutemi ndiqni Wiki të shikuara për ta konfiguruar.

Hapi 4: Programimi i softuerit

Si Lidhje Hardware, Programimi i Softuerëve gjithashtu mund të ndahet, mund të ndahet në 3 pjesë: Nyja, Porta dhe Faqja e internetit.

Pjesa e Nyjes

Shumica e drejtuesve që kërkonte Node Part tashmë janë të përfshira në dosjen Orig_driver. Bibliotekat e mëposhtme duhet të instalohen me dorë:

Adafruit_ASFcore

Për shkak se projekti është i ndërlikuar, ne ju rekomandojmë të përdorni Microsoft Visual Studio në vend të Arduino IDE. Një shtojcë e quajtur Visual Micro mund t'ju ndihmojë të krijoni një projekt Arduino duke përdorur Visual Studio, klikoni këtu për më shumë informacion.

Për lexueshmëri dhe mirëmbajtje më të mirë, ne përdorim këtë herë Programimin e Orientuar nga Objekti. Diagrami i klasës i këtij projekti duket si më poshtë:

Imazhi
Imazhi

Për ata sensorë që tashmë kanë drejtues OOP, ne e ripaketuam atë për të përshtatur këtë projekt, për të tjerët, ne rishkruam drejtuesit e tyre duke përdorur OOP. Klasa Sensor në shtresën e mesme përdoret për të unifikuar ndërfaqet e sensorëve të vërtetë, për shembull, një sensor barometri mund të mbledhë temperaturën, lagështinë dhe lartësinë në të njëjtën kohë, kështu që ka 3 ndërfaqe për të marrë temperaturën, lagështinë dhe lartësinë. Por ata kanë emrin e metodës së ndryshimit, e cila do ta bëjë programin e marrjes së vlerës së sensorëve më të komplikuar, ashtu si kjo:

barometër-> getTemperature ();

barometër-> getHumidity (); barometër-> getAltitude (); //… tjetër_sensor-> getSomeValue (); //…

Por duke përdorur OOP, duket kështu:

për (auto i = 0; i getValue ();

}

Ne gjithashtu kemi paketuar një klasë të Aplikacionit, ajo zbaton ndërfaqen IApplication, metoda e konfigurimit () dhe loop () në IoTea.ino mund të thërrasë metodën setup () dhe loop () në objektin Application.

SHENIM: Seriali USB përdoret për të korrigjuar VETYM. Pas korrigjimit, ju lutemi komentoni kodin e inicializuar në metodën e konfigurimit ().

Pjesa e Portës

Programi Python i Gateway Part në dosjen kryesore përdoret për të marrë fotografi dhe ngarkuar ato në serverin Amazon S3 çdo orë. Para se ta përdorni, sigurohuni që fswebcam të jetë instaluar tashmë në Raspberry Pi tuaj:

sudo apt-merrni përditësim && sudo apt-get instaloni fswebcam

Nëse dëshironi të ngarkoni fotografi, konfiguroni AWS tuaj duke ndjekur hapat. Së pari, instaloni AWS SDK dhe AWS CLI në Raspberry Pi tuaj duke përdorur këto komanda:

sudo pip instaloni boto3

sudo pip instaloni awscli

dhe pastaj, drejtoni AWS CLI:

sudo aws konfiguroni

Konfiguroni ID -në tuaj të AWS Access Key, AWS Secret Access Access dhe emrin e rajonit të paracaktuar.

Nëse nuk ju pëlqen të ngarkoni fotot tuaja, mund të kaloni hapat e konfigurimit të AWS dhe të komentoni kodet në lidhje me ngarkimin në photo.py. Për të ekzekutuar këtë program pasi të keni nisur Raspberry Pi çdo herë, mund të krijoni një fotografi të emrit të skedarit në /etc/init.d dhe t'i shkruani kodin e mëposhtëm.

#!/bin/bash

# /etc/init.d/photo ### FILLONI INFO INFO # Siguron: seeed_photo # Kërkohet-Filloni: $ remote_fs $ syslog # Kërkohet-Ndaloni: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Përshkrim i shkurtër: marrja e fotografisë initscript # Përshkrimi: Ky shërbim përdoret për të menaxhuar marrjen e fotografive ### END INIT INFO rasti "$ 1" në fillim) jehonë "Filloni të bëni fotografi" /home/rxhf/photo.py &;; stop) jehonë "Ndaloni marrjen e fotografisë" vrasin $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) jehonë "Përdorimi: fillimi i fotografisë së shërbimit | ndalimi" dalja 1;; dalja esac 0

caktoni lejen e ekzekutimit

sudo chmod 777 /etj/init.d/foto

sudo chmod 777 /home/rxhf/photo.py

dhe testojeni atë

sudo /etc/init.d/foto fillimi

Nëse nuk ka problem, ndalojeni dhe shtojeni në aplikacionin e fillimit

sudo /etc/init.d/foto stop

standartet e fotografisë sudo update-rc.d

SH NOTNIM: Nëse doni të filloni portën pas nisjes së Raspberry Pi, shtoni kodet fillestare të portës në Seeed Wiki në /etc/rc.local, le të duket si:

#!/bin/sh -e

# # rc.local # # Ky skenar ekzekutohet në fund të secilit nivel përdorimi të shumë përdoruesve. # Sigurohuni që skenari të "dalë nga 0" në sukses ose ndonjë vlerë tjetër # në gabim. # # Për të aktivizuar ose çaktivizuar këtë skript, thjesht ndryshoni # bitët e ekzekutimit. # # Si parazgjedhje ky skript nuk bën asgjë. # Shtypni adresën IP _IP = $ (emri i hostit -I) || e vërtetë nëse ["$ _IP"]; pastaj printf "Adresa ime IP është %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 dalja 0

Faqe interneti

Ne vendosëm uebfaqen në CentOS 7. Hapat e mëposhtëm do t'ju tregojnë se si të vendosni.

Hapi 1. Instaloni Python3

sudo yum -y instaloni epel -release

sudo yum -y instaloni python36

Hapi 2. Instaloni Python pip dhe mjedisin virtual

wget

sudo python36 get-pip.py sudo pip instaloni virtualenv

Setp 3. Klononi faqen tonë të internetit nga GitHub

sudo yum -y install git

git klon

Hapi 4. Krijoni dhe aktivizoni një mjedis virtual

virtualenv -p python36 iotea -hb

cd iotea-hb bin/aktivizo burimin

Hapi 5. Instaloni bibliotekat e varura

pip instalo pymysql

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

Hapi 6. Krijoni një bazë të dhënash

sudo yum -y instaloni mariadb mariabd -server

sudo systemctl aktivizoni mariadb sudo systemctl filloni mariadb mysql -uroot -p

dhe pastaj përdorni iotea_hb.sql për të krijuar një tabelë.

Hapi 7. Krijoni db.ini dhe shkruani këto kode në të

[db]

db_port = 3306 db_user = rrënjë db_host = localhost db_pass = db_name = iotea

ndryshoni rrugën e db.ini në db.py

# në db.py

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

Hapi 8. Ndryshoni portën në app.py dhe filloni uebfaqen:

# në app.py

#app.run (debug = E vërtetë, port = 6000) app.run (debug = E vërtetë, port = 8080)

# në terminal

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

tani vizitoni 127.0.0.1:8080 në shfletuesin tuaj të internetit, mund të shihni faqen e internetit, por të dhënat në kohë reale nuk shfaqen.

Hapi 9. Merrni të dhëna loriotike

Hapni një terminal tjetër, futeni përsëri në mjedisin virtual dhe filloni aplikacionin loriot:

cd iotea-hb

bin binar/aktivizo gunicorn loriot: aplikacioni

Prisni për një kohë, do të shihni të dhënat e shfaqura në faqen në internet, ose mund të ndryshoni wss në loriot.py:

# në loriot.py

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

ws = krijo_lidhje ()

Hapi 5: Funksionimi

Ju mund të vizitoni faqet tona të internetit për të parë të dhënat në kohë reale:

  • Në Ya'an
  • Për Demonstrim

Recommended: