Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Internet+ je danas popularan koncept. Ovaj put smo isprobali Internet i poljoprivredu kako bismo iz čajskog vrta izrasli Internet čaj.
Korak 1: Stvari korištene u ovom projektu
Hardverske komponente
- Grove - Senzor ugljičnog dioksida (MH -Z16)
- Grove - digitalni svjetlosni senzor
- Grove - Senzor prašine (PPD42NS)
- Grove-Senzor kisika (ME2-O2-F20)
- Senzor vlage i temperature tla
- LoRa LoRaWAN pristupnik - 868MHz komplet s Raspberry Pi 3
- Grove - Senzor za temp i Humi i barometar (BME280)
Softverske aplikacije i mrežne usluge
Microsoft Visual Studio 2015
Korak 2: Priča
Na planini Mengding sjeveroistočno od Ya’ana, Sichuan, planinski greben ide od zapada prema istoku u zelenom moru. Ovo je najpoznatiji prizor za 36-godišnjeg Denga, jednog od rijetkih proizvođača čaja Mengding svoje generacije, s plantažom od 50mu (= 3,3 hektara) smještenom na 1100 m nadmorske visine. Deng potječe iz obitelji proizvođača čajeva, no nošenje obiteljskog naslijeđa nije lak zadatak. “Naši čajevi uzgajaju se na velikim nadmorskim visinama u organskom okruženju kako bi se osigurala njegova izvrsna kvaliteta. No, u isto vrijeme, gustoća rasta je niska, troškovi su visoki i pupoljci su neravnomjerni, što otežava berbu čaja. Zato su visokoplaninski čajevi obično male berbe i njihove se vrijednosti ne odražavaju na tržištu.”Posljednje dvije godine Deng pokušava podići svijest potrošača o planinskim čajevima kako bi promicao njihovu vrijednost. A kad je upoznao Fan, koji je tražio plantažu za implementaciju Seeedove IoTea tehnologije, napravljeno je savršeno rješenje.
Korak 3: Povezivanje hardvera
Hardver ovog projekta može se podijeliti na 4 dijela: Napajanje, Senzori, Čvor i Gateway. Sljedeći članak će vam pokazati kako to učiniti korak po korak.
Snažni dio
Power Part uglavnom sadrži solarnu ploču i litijevu bateriju, ako samo napravite ovaj projekt za demonstraciju, možete ih zanemariti. Ili možete slijediti prethodni vodič za instaliranje napajanja čvora.
Dio senzora
U dijelu Senzori, zbog mnogih senzora, koristili smo meteorološku stanicu, a također smo napravili i akrilni nosač za njihovu ugradnju.
Kao što vidite na gornjoj slici, digitalni senzor svjetla uvijek je na vrhu, tako da može prikupljati informacije o osvjetljenju. Senzori koji će generirati toplinu ugrađeni su u sredinu akrilnog držača, poput osjetnika O2, senzora prašine i osjetnika CO2. Konačno, osjetnik temperature i vlažnosti na dnu akrilnog držača.
Osim toga, osjetnik temperature i vlažnosti tla ugrađuje se sam u tlo. Dio čvora
Node Part je Seeeduino LoRaWan koji se instalira u vodootpornu kutiju, spaja se na napajanje i senzore preko vodenih spojeva. Među njima, senzor prašine spojen je na LoRaWan -ov digitalni pin D3, senzor CO2 spojen na pin D4 & D5, osjetnik tla spojen na pin D6 & D7, senzor O2 spojen na analogni pin A1 i senzor svjetla i senzor barometra spojeni na I2C priključak.
NAPOMENA: Između plavog (podatkovnog) kabela osjetnika tla i crvenog (Vcc) kabela potrebno je dodati 10k otpornik.
Seeeduino LoRaWan povremeno prikuplja vrijednosti senzora i šalje ih na Gateway putem LoRa -e. Format podataka kao što je dolje:
{
[0], /* Temperatura zraka (℃)* /[1], /* Vlažnost zraka (%)* /[2], /* Nadmorska visina (m) visoki bajt* /[3], /* Nadmorska visina (m) niski bajt */[4],/ * koncentracija CO2 (PPM) visoki bajt */[5],/ * koncentracija CO2 (PPM) niski bajt */[6],/ * Koncentracija prašine (kom/0,01 cf) visoki bajt */[7],/ *Koncentracija prašine (kom/0,01 cf) niski bajt */[8],/ *Intenzitet svjetla (lux) visoki bajt */[9],/ *Intenzitet svjetla (lux) niski bajt */ [10], /* koncentracija O2 (%)* /[11], /* temperatura tla (℃)* /[12], /* vlažnost tla (%)* /[13], /* napon baterije (V) */ [14]/ *Kôd pogreške senzora */}
Svaki bit u bajtu koda greške senzora ima različito značenje, baš kao u nastavku:
{
bit0: 1; / * Pogreška senzora barometra */ bit1: 1; / * Pogreška senzora CO2 */ bit2: 1; / * Greška senzora prašine */ bit3: 1; / * Pogreška senzora svjetla */ bit4: 1; / * Pogreška osjetnika O2 */ bit5: 1; / * Pogreška osjetnika tla */ rezervirano: 2; /* Rezervirano */ }
Dio pristupnika
Gateway Part je Raspberry Pi koji je priključio Gateway modul RHF0M301–868 i PRI 2 Bridge RHF4T002, instalirao ga je u vodootpornu kutiju i spojio na napajanje i USB kameru putem vodenih spojeva. Budući da koristi specijalizirani firmver, slijedite Seeed Wiki za njegovu konfiguraciju.
Korak 4: Programiranje softvera
Kao hardverska veza, softversko programiranje se također može podijeliti, može se podijeliti na 3 dijela: čvor, pristupnik i web mjesto.
Dio čvora
Većina upravljačkih programa kojima je potreban Node Part već se nalaze u folderu origin_driver. Knjižnice koje slijede moraju se instalirati ručno:
Adafruit_ASFcore
Budući da je projekt kompliciran, preporučujemo da umjesto Arduino IDE -a koristite Microsoft Visual Studio. Dodatak pod nazivom Visual Micro može vam pomoći da osmislite Arduino projekt pomoću Visual Studija, kliknite ovdje za više informacija.
Za bolju čitljivost i održavanje, ovaj put koristimo Objektno orijentirano programiranje. Dijagram klasa ovog projekta izgleda ovako:
Za te senzore već imamo OOP upravljački program, prepakirali smo ga kako bismo prilagodili ovaj projekt, za druge smo njihove upravljačke programe prepisali pomoću OOP -a. Klasa senzora u sloju međuopreme koristi se za ujednačavanje sučelja stvarnih senzora, na primjer, senzor barometra može istovremeno prikupljati temperaturu, vlagu i nadmorsku visinu, pa ima 3 sučelja za stjecanje temperature, vlažnosti i nadmorske visine. Ali oni imaju različit naziv metode, što će program stjecanja vrijednosti senzora zakomplicirati, baš ovako:
barometar-> getTemperature ();
barometar-> getHumidity (); barometar-> getAltitude (); //… drugi_senzor-> getSomeValue (); //…
No, koristeći OOP, to izgleda ovako:
for (auto i = 0; i getValue ();
}
Pakirali smo i klasu Application, koja implementira IApplication sučelje, setup () i loop () metodu u IoTea.ino može pozvati setup () i loop () metodu u Application objektu.
NAPOMENA: USB serijski poslužitelj koristi se SAMO za otklanjanje pogrešaka. Nakon otklanjanja pogrešaka, komentirajte da je inicijalizirani kod u metodi setup ().
Dio pristupnika
Python program Gateway Part u početnoj mapi koristi se za snimanje fotografija i njihovo postavljanje na Amazon S3 Server svakih sat vremena. Prije nego ga upotrijebite, provjerite je li fswebcam već instaliran na vašem Raspberry Pi:
sudo apt-get update && sudo apt-get install fswebcam
Ako želite prenijeti fotografije, konfigurirajte svoj AWS slijedeći korake. Najprije instalirajte AWS SDK i AWS CLI na svoj Raspberry Pi pomoću ovih naredbi:
sudo pip instalirajte boto3
sudo pip install awscli
a zatim pokrenite AWS CLI:
sudo aws konfigurirati
Konfigurirajte svoj ID pristupnog ključa AWS, ID tajnog pristupa AWS -a i zadani naziv regije.
Ako ne volite učitavati svoje fotografije, možete preskočiti korake konfiguracije AWS -a i kodove komentara o prijenosu u photo.py. Za pokretanje ovog programa nakon svakog pokretanja programa Raspberry Pi, možete stvoriti fotografiju naziva datoteke u /etc/init.d i upisati joj sljedeći kod.
#!/bin/bash
# /etc/init.d/photo ### BEGIN INIT INFO # Pruža: seeed_photo # Obavezno-Pokreni: $ remote_fs $ syslog # Obavezno-Zaustavi: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Kratak opis: snimanje fotografija initscript # Opis: Ova se usluga koristi za upravljanje snimanjem fotografija ### END INIT INFO slučaj "$ 1" u početku) odjek "Počni snimanje fotografije" /home/rxhf/photo.py &;; stop) echo "Prestani snimati" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Usage: service photo start | stop" izlaz 1;; esac izlaz 0
postaviti dopuštenje za izvršenje
sudo chmod 777 /etc/init.d/photo
sudo chmod 777 /home/rxhf/photo.py
i isprobajte ga
sudo /etc/init.d/photo start
Ako nema problema, zaustavite ga i dodajte u aplikaciju za pokretanje
sudo /etc/init.d/photo stop
sudo update-rc.d zadane fotografije
NAPOMENA: Ako želite pokrenuti gateway nakon podizanja sustava Raspberry Pi, dodajte početne kodove pristupnika u Seeed Wiki u /etc/rc.local, neka izgleda ovako:
#!/bin/sh -e
# # rc.local # # Ova se skripta izvršava na kraju svake višekorisničke razine izvođenja. # Provjerite hoće li skripta "izaći 0" u slučaju uspjeha ili bilo koje druge # vrijednosti u slučaju pogreške. # # Da biste omogućili ili onemogućili ovu skriptu, samo promijenite # bita izvođenja. # # Prema zadanim postavkama, ova skripta ne radi ništa. # Ispišite IP adresu _IP = $ (naziv hosta -I) || true if ["$ _IP"]; tada printf "Moja 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 izlaz 0
Web stranica
Web stranicu smo postavili na CentOS 7. Sljedeći koraci pokazat će vam kako se primjenjuje.
Korak 1. Instalirajte Python3
sudo yum -y instalirajte epel -release
sudo yum -y instalirajte python36
Korak 2. Instalirajte Python pip i virtualno okruženje
wget
sudo python36 get-pip.py sudo pip instaliraj virtualenv
Setp 3. Klonirajte našu web stranicu s GitHub -a
sudo yum -y install git
git klon
Korak 4. Izradite i aktivirajte virtualno okruženje
virtualenv -p python36 iotea -hb
cd iotea-hb izvor kanta/aktiviranje
Korak 5. Instalirajte ovisne knjižnice
pip install pymysql
pip install dbutils pip install flask pip install websocket-client pip install cofigparser
Korak 6. Stvorite bazu podataka
sudo yum -y instalirajte mariadb mariabd -server
sudo systemctl omogućiti mariadb sudo systemctl pokrenuti mariadb mysql -uroot -p
a zatim upotrijebite iotea_hb.sql za izradu tablice.
Korak 7. Napravite db.ini i upišite mu ove kodove
[db]
db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea
promijenite db.ini putanju u db.py
# u db.py
#cf.read ("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read ("/home // iotea-hb/db.ini")
Korak 8. Promijenite port u app.py i pokrenite web stranicu:
# u app.py
#app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)
# u terminalu
pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app
sada posjetite 127.0.0.1:8080 u svom web pregledniku, možete vidjeti web stranicu, ali se podaci u stvarnom vremenu ne prikazuju.
Korak 9. Nabavite loriot podatke
Otvorite drugi terminal, ponovno uđite u virtualno okruženje i pokrenite aplikaciju loriot:
cd iotea-hb
izvorni spremnik/aktiviranje oružja loriot: app
Pričekajte malo, vidjet ćete podatke prikazane na web stranici ili možete promijeniti wss u loriot.py:
# u loriot.py
#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")
ws = create_connection ()
Korak 5: Operacija
Možete posjetiti naše web stranice kako biste vidjeli podatke u stvarnom vremenu:
- U Ya'anu
- Za demonstraciju