Inhoudsopgave:
- Stap 1: Dingen die in dit project worden gebruikt
- Stap 2: Verhaal
- Stap 3: Hardwareverbinding
- Stap 4: Softwareprogrammering
- Stap 5: Bediening
Video: Seeed IoTea LoRa-oplossing (update 1811): 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Internet+ is inmiddels een populair concept. Deze keer probeerden we internet plus landbouw om theetuin te laten groeien uit internetthee.
Stap 1: Dingen die in dit project worden gebruikt
Hardware onderdelen
- Grove - Kooldioxidesensor (MH-Z16)
- Grove - Digitale lichtsensor
- Grove - Stofsensor (PPD42NS)
- Grove - Zuurstofsensor (ME2-O2-Ф20)
- Bodemvocht- en temperatuursensor
- LoRa LoRaWAN Gateway - 868MHz Kit met Raspberry Pi 3
- Grove - Temperatuur&Humi&Barometer Sensor (BME280)
Software-apps en online services
Microsoft Visual Studio 2015
Stap 2: Verhaal
Op de Mengding-berg ten noordoosten van Ya'an, Sichuan, loopt de bergrug van west naar oost in een zee van groen. Dit is een bekend gezicht voor de 36-jarige Deng, een van de weinige Mengding-theemakers van zijn generatie, met een plantage van 50 mu (= 3,3 hectare) op 1100 meter boven zeeniveau. Deng komt uit een familie van theemakers, maar het voortzetten van de familie-erfenis is geen gemakkelijke taak. “Onze theesoorten worden op grote hoogte in een biologische omgeving verbouwd om de uitstekende kwaliteit te garanderen. Maar tegelijkertijd is de groeidichtheid laag, zijn de kosten hoog en is de knop ongelijkmatig, waardoor het moeilijk is om thee te oogsten. Dat is de reden waarom thee uit de hoge bergen normaal gesproken kleine oogsten zijn en hun waarden niet worden weerspiegeld op de markt. De afgelopen twee jaar heeft Deng geprobeerd de consument bewust te maken van thee uit de hoge bergen om hun waarde te promoten. En toen hij Fan ontmoette, die op zoek was naar een plantage om de IoTea-technologie van Seeed te implementeren, werd een perfecte match gemaakt voor een oplossing.
Stap 3: Hardwareverbinding
De hardware van dit project kan worden opgesplitst in 4 delen: Power, Sensors, Node en Gateway. In het volgende artikel wordt stap voor stap uitgelegd hoe u het kunt voltooien.
Vermogensdeel
Power Part bevat voornamelijk een zonnepaneel en een lithiumbatterij, als je dit project alleen voor demonstratie bouwt, kun je ze negeren. Of u kunt de vorige tutorial volgen om node power te installeren.
Sensoren Onderdeel
In Sensors Part hebben we vanwege de vele sensoren een weerstation gebruikt en ook een acrylbeugel gemaakt om ze te installeren.
Zoals je op de afbeelding hierboven ziet, zit de digitale lichtsensor altijd bovenaan, zodat deze informatie over de verlichting kan verzamelen. De sensoren die warmte zullen genereren, worden in het midden van de acrylbeugel geïnstalleerd, zoals O2-sensor, stofsensor en CO2-sensor. Eindelijk, temperatuur- en vochtigheidssensor aan de onderkant van de acrylbeugel.
Bovendien wordt de bodemtemperatuur- en vochtigheidssensor alleen in de grond geïnstalleerd. Knooppuntdeel
Node Part is een Seeeduino LoRaWan die in een waterdichte doos is geïnstalleerd en via waterverbindingen is aangesloten op stroom en sensoren. Onder hen, stofsensor aansluiten op digitale pin D3 van LoRaWan, CO2-sensor aansluiten op pin D4 & D5, bodemsensor aansluiten op pin D6 & D7, O2-sensor aansluiten op analoge pin A1 en lichtsensor & barometersensor aansluiten op I2C-poort.
OPMERKING: Er moet een weerstand van 10k worden toegevoegd tussen de blauwe (data) kabel van de bodemsensor en de rode (Vcc) kabel.
Seeeduino LoRaWan verzamelt af en toe sensorwaarde en stuurt deze via LoRa naar Gateway. Het gegevensformaat zoals hieronder:
{
[0], /* Luchttemperatuur(℃) */ [1], /* Luchtvochtigheid(%) */ [2], /* Hoogte(m) hoge byte */ [3], /* Hoogte(m) lage byte */ [4], /* CO2-concentratie (PPM) hoge byte */ [5], /* CO2-concentratie (PPM) lage byte */ [6], /* Stofconcentratie (pcs/0.01cf) hoge byte */ [7], /* Stofconcentratie (pcs/0.01cf) laag byte */ [8], /* Lichtintensiteit (lux) hoog byte */ [9], /* Lichtintensiteit (lux) laag byte */ [10], /* O2-concentratie (%) */ [11], /* Bodemtemperatuur (℃) */ [12], /* Bodemvochtigheid (%) */ [13], /* Accuspanning (V) */ [14] /* Sensorfoutcode */ }
Elke bit in de sensorfoutcodebyte heeft een andere betekenis, zoals hieronder:
{
bit0: 1; /* Barometersensorfout */ bit1: 1; /* CO2-sensorfout */ bit2: 1; /* Stofsensorfout */ bit3: 1; /* Lichtsensorfout */ bit4: 1; /* O2-sensorfout */ bit5: 1; /* Bodemsensorfout */ gereserveerd: 2; /* Gereserveerd */ }
Gateway-onderdeel:
Gateway Part is een Raspberry Pi die de Gateway-module RHF0M301-868 en PRI 2 Bridge RHF4T002 heeft aangesloten, deze in een waterdichte doos heeft geïnstalleerd en via waterverbindingen op stroom en USB-camera heeft aangesloten. Omdat het gespecialiseerde firmware gebruikt, volg je Seeed Wiki om het te configureren.
Stap 4: Softwareprogrammering
Als Hardware Connection kan Software Programming ook worden gesplitst, het kan worden gesplitst in 3 delen: Node, Gateway en Website.
Knooppuntdeel
De meeste stuurprogramma's die Node Part nodig heeft, bevinden zich al in de map origin_driver. De volgende bibliotheken moeten handmatig worden geïnstalleerd:
Adafruit_ASFcore
Omdat het project ingewikkeld is, raden we u aan Microsoft Visual Studio te gebruiken in plaats van Arduino IDE. Een plug-in genaamd Visual Micro kan u helpen een Arduino-project te bouwen met behulp van Visual Studio, klik hier voor meer informatie.
Voor een betere leesbaarheid en onderhoudbaarheid gebruiken we dit keer Object-Oriented Programming. Het klassendiagram van dit project ziet er als volgt uit:
Voor die sensoren die al een OOP-stuurprogramma hebben, hebben we het opnieuw verpakt om dit project aan te passen, voor anderen hebben we hun stuurprogramma's herschreven met behulp van OOP. De Sensor-klasse in de middleware-laag wordt gebruikt om interfaces van echte sensoren te verenigen. Een barometersensor kan bijvoorbeeld tegelijkertijd temperatuur, vochtigheid en hoogte verzamelen, dus het heeft 3 interfaces om temperatuur, vochtigheid en hoogte te verkrijgen. Maar ze hebben een verschillende methodenaam, waardoor het programma voor het verkrijgen van sensorwaarde ingewikkelder wordt, net als dit:
barometer->getTemperature();
barometer->getHumidity(); barometer->getAltitude(); // … else_sensor->getSomeValue(); // …
Maar met OOP ziet het er als volgt uit:
voor (auto i = 0; i getValue();
}
We hebben ook een Application-klasse ingepakt, het implementeert de IApplication-interface, de setup() en loop()-methode in IoTea.ino kan de setup() en loop()-methode in het Application-object aanroepen.
OPMERKING: USB Serial wordt ALLEEN gebruikt om fouten op te sporen. Geef na het debuggen commentaar op de initialisatiecode in de setup()-methode.
Gateway-onderdeel:
Het Python-programma van Gateway Part in de thuismap wordt gebruikt om elk uur foto's te maken en deze naar Amazon S3 Server te uploaden. Zorg ervoor dat fswebcam al op uw Raspberry Pi is geïnstalleerd voordat u het gebruikt:
sudo apt-get update && sudo apt-get install fswebcam
Als u foto's wilt uploaden, configureert u uw AWS door de volgende stappen te volgen. Installeer eerst AWS SDK en AWS CLI op uw Raspberry Pi met behulp van deze opdrachten:
sudo pip installeer boto3
sudo pip install awscli
en voer vervolgens AWS CLI uit:
sudo aws configureren
Configureer uw AWS-toegangssleutel-ID, AWS-geheime toegangs-ID en standaardregionaam.
Als u uw foto's niet wilt uploaden, kunt u AWS-configuratiestappen en commentaarcodes over uploaden in photo.py overslaan. Om dit programma uit te voeren na elke keer opstarten van Raspberry Pi, kun je een bestandsnaamfoto maken in /etc/init.d en de volgende code erin schrijven.
#!/bin/bash
# /etc/init.d/photo ### BEGIN INIT INFO # Biedt: seeed_photo # Vereist-Start: $remote_fs $syslog # Vereist-Stop: $remote_fs $syslog # Standaard-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Korte beschrijving: foto's maken initscript # Beschrijving: Deze service wordt gebruikt om het maken van foto's te beheren ### END INIT INFO geval "$1" in start) echo "Begin met het nemen van foto" /home/rxhf/photo.py &;; stop) echo "Stop met het maken van foto" kill $(ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{ print $2 }');; *) echo "Gebruik: servicefoto start|stop" exit 1;; esac uitgang 0
uitvoeringsmachtiging instellen
sudo chmod 777 /etc/init.d/photo
sudo chmod 777 /home/rxhf/photo.py
en test het
sudo /etc/init.d/photo start
Als er geen probleem is, stop het dan en voeg het toe aan de opstarttoepassing
sudo /etc/init.d/fotostop
sudo update-rc.d foto standaardinstellingen
OPMERKING: Als je de gateway wilt opstarten na het opstarten van de Raspberry Pi, voeg dan gateway-startcodes in Seeed Wiki toe aan /etc/rc.local, laat het er als volgt uitzien:
#!/bin/sh -e
# # rc.local # # Dit script wordt uitgevoerd aan het einde van elk runlevel voor meerdere gebruikers. # Zorg ervoor dat het script "0" verlaat bij succes of een andere # waarde bij een fout. # # Om dit script in of uit te schakelen, verandert u gewoon de # uitvoeringsbits. # # Dit script doet standaard niets. # Druk het IP-adres af _IP=$(hostnaam -I) || waar als ["$_IP"]; dan printf "Mijn IP-adres is %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
Website
We hebben de website op CentOS 7 geïmplementeerd. De volgende stappen laten u zien hoe u deze kunt implementeren.
Stap 1. Installeer Python3
sudo yum -y installeer epel-release
sudo yum -y installeer python36
Stap 2. Installeer Python pip en virtuele omgeving
wget
sudo python36 get-pip.py sudo pip install virtualenv
Setp 3. Kloon onze website vanuit GitHub
sudo yum -y install git
git kloon
Stap 4. Creëer en activeer virtuele omgeving
virtualenv -p python36 iotea-hb
cd iotea-hb bron bin/activeren
Stap 5. Installeer afhankelijke bibliotheken
pip installeer pymysql
pip install dbutils pip install flask pip install websocket-client pip install cofigparser
Stap 6. Database maken
sudo yum -y installeer mariadb mariabd-server
sudo systemctl mariadb inschakelen sudo systemctl start mariadb mysql -uroot -p
en gebruik vervolgens iotea_hb.sql om een tabel te maken.
Stap 7. Maak db.ini aan en schrijf deze codes erin
[db]
db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea
verander het pad van db.ini in db.py
# in db.py
#cf.read("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read("/home//iotea-hb/db.ini")
Stap 8. Wijzig poort in app.py en start de website:
# in app.py
#app.run(debug=True, port=6000) app.run(debug=True, port=8080)
# in terminal
pip gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app:app
bezoek nu 127.0.0.1:8080 in uw webbrowser, u kunt de website zien, maar realtime gegevens worden niet weergegeven.
Stap 9. Loriot-gegevens ophalen
Open een andere terminal, voer de virtuele omgeving opnieuw in en start de loriot-app:
cd iotea-hb
bron bin/activeer gunicorn loriot:app
Wacht even, u ziet de gegevens op de website, of u kunt wss wijzigen in loriot.py:
# in loriot.py
#ws = create_connection("wss://cn1.loriot.io/app?token=vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w==")
ws = create_connection()
Stap 5: Bediening
U kunt onze websites bezoeken om realtime gegevens te bekijken:
- in Ya'an
- Voor demonstratie:
Aanbevolen:
Covid-19 Update Tracker met ESP8266: 9 stappen
Covid-19 Update Tracker met behulp van ESP8266: dit is een project dat de huidige gegevens van de uitbraak van het coronavirus in verschillende steden van India in realtime op OLED-display toont. Met deze live statustracker kunt u de realtime covid-19-update van uw district volgen. Dit project is volledig b
De Arduino- en Drive Station-software downloaden die u nodig hebt voor MiniFRC (UPDATE 13-05-18): 5 stappen
De Arduino- en Drive Station-software downloaden die u nodig heeft voor MiniFRC (UPDATE 13-5-2018): MiniFRC is een tweejaarlijkse mini-robotcompetitie die wordt gehouden door FRC-team 4561, de TerrorBytes. Teams bouwen kwartschaalrobots om te strijden op een kwartschaal FRC-veld. In deze tutorial laat ik je zien hoe je alle benodigde software downloadt en installeert
Blu Media Robot (update): 7 stappen
Blu Media Robot (update): blu is een robot die werkt met makeblock-moederbord en framboos voor de elektronica voor de onderdelenlijst die je kunt kopen bij makeblock zoals ik in het begin, nu heb ik een 3D-printer (wanahoa i3 +) en je kunt de ander deel om ze op t
Huishoudelijke apparaten bedienen via LoRa - LoRa in Domotica - LoRa-afstandsbediening: 8 stappen
Huishoudelijke apparaten bedienen via LoRa | LoRa in Domotica | LoRa-afstandsbediening: bedien en automatiseer uw elektrische apparaten vanaf lange afstanden (kilometers) zonder de aanwezigheid van internet. Dit kan via LoRa! Hé, wat is er, jongens? Akarsh hier van CETech. Ook deze print heeft een OLED-display en 3 relais die een
Seeed Studio CAN-BUS V2.0 hacken - Aan de slag: 5 stappen
Seeed Studio CAN-BUS V2.0 Hacking - Aan de slag: deze instructable is bedoeld voor beginners die al de weg weten in Arduino. De eerste kennis van hoe je aan de slag moet, is altijd lastig en tijdrovend in elk project. Maar totdat je de weg weet, zou je bijna altijd willen dat je iemand had om te sh