Innholdsfortegnelse:
- Trinn 1: Ting som brukes i dette prosjektet
- Trinn 2: Historie
- Trinn 3: Maskinvaretilkobling
- Trinn 4: Programvareprogrammering
- Trinn 5: Drift
Video: Sett IoTea LoRa -løsning (oppdatering 1811): 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
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.
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
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
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:
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:
(OPPDATERING - DET ER EN LETT UTGAVE) USB SPILLKONTROLLER FOR PC: 10 trinn (med bilder)
(OPPDATERING - DET ER EN LETT UTGAVE) USB SPILLKONTROLLER FOR PC: EN SPILLKONTROLL FOR ALLE SPILL (Nesten)
Blu Media Robot (oppdatering): 7 trinn
Blu Media Robot (oppdatering): blu er en robot som jobber med makeblock hovedkort og bringebær for elektronikken for delelisten du kan kjøpe fra makeblock som meg i begynnelsen, nå har jeg en 3d -skriver (wanahoa i3 +), og du kan laste ned annen del for å skrive dem ut på t
Orange Pi Plus 2 - Armbian (på SD -kort eller 16 GB minne!) - Oppdatering: 6 trinn
Orange Pi Plus 2 - Armbian (på SD -kort eller innebygd 16 GB minne!) - Oppdatering: Hei alle sammen! Dette er min første instruks og engelsk er ikke mitt morsmål, så vær så snill ikke vær hard mot meg. Til å begynne med, Orange Pi Plus 2 er en fantastisk liten enhet akkurat som en Raspberry Pi, men raskere! For Raspberry Pi er det en stor kommune
Kortsortering for en handelskortmaskin (oppdatering 2019-01-10): 12 trinn (med bilder)
Kortsortering for en handelskortmaskin (oppdatering 2019-01-10): Kortsortering for en handelskortmaskin Endringsloggen finner du i det siste trinnet. Bakgrunnen Jeg forklarte allerede motivasjonen til prosjektet mitt i kortmater-artikkelen. Men kort sagt, barna mine og jeg har samlet meg et stort mengde handelskort
Så IoTea LoRa -løsning (med Azure, oppdatering 1812): 5 trinn
Seeed IoTea LoRa Solution (with Azure, Update 1812): Microsoft Azure er en skytjeneste som gir kraftigere og mer stabil datakraft. Denne gangen prøvde vi å sende IoTea -dataene våre til den