Tartalomjegyzék:
- 1. lépés: Felszerelés + beállítás
- 2. lépés: Az áramkör beállítása
- 3. lépés: Arduino kód és villogás
- 4. lépés: Raspberry Pi Code
- 5. lépés: Összerakni
- 6. lépés: A Grafana konfigurálása és az irányítópult megtekintése
- 7. lépés: Csomagolás
Videó: A levegő minőségének követése a Grafana és a Raspberry Pi használatával: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Egy kis IOT projektet kerestem, és egy barátom javasolta, hogy nézze meg ezt az oktatóanyagot:
dzone.com/articles/raspberry-pi-iot-sensor…
Nagyon ajánlom, hogy kövesse az oktatóanyagot, hogy kövesse a Raspberry Pi felügyelethez való beállítását. Ez az oktatóanyag befejezi a további lépéseket egy egyszerű IoT -eszköz tervezésében, amely lehetővé teszi a magas hibatűrést, valamint azt, hogy mennyire hasznos lehet a Raspberry Pi az Arduino -val párosítva.
Kitérek a levegőérzékelők MQ* modelljeinek hatékonyságára és némileg korlátozottságára is. Az MQ* érzékelők olcsók és meglehetősen hatékonyak, és rendkívül könnyen beállíthatók.
Összességében ez segít abban, hogy a lehető legegyszerűbb módon kezdje el csatlakoztatni az Arduino -t az internethez, és megadja az utat a könnyebb lábnyomú modulok használatához (re: ESP8266).
Érezd jól magad!
1. lépés: Felszerelés + beállítás
Felszerelés
- Raspberry Pi és Raspbian telepítve
- Raspberry Pi tápegység
- Arduino Uno/egyenértékű
- Férfi - férfi USB típusú B - A típusú (az Arduino tartozékának kell lennie)
- Bármely MQ* érzékelő (az MQ-2, 4, 5 és 135-öt használtam)
- Vegyes jumper vezetékek
- mini kenyeretábla
Beállít
Ez az oktatóanyag az Arduino és a Raspberry Pi használatának gyengéd bevezetőjeként szolgál - segít megismerni a linux terminált. Mindazonáltal nem feltételezem, hogy sok tapasztalatom lenne az Arduino vagy a Raspberry Pi fejlesztésében - csak a felszerelésre és a kíváncsi hozzáállásra van szüksége.
- Be kell fejeznie az oktatóanyag lépéseit.
- Azt javaslom, hogy használja a Secure Shell (SSH) csatlakozást a Raspberry Pi -vel, mivel ez lehetővé teszi a parancsok egyszerű bevitelét. Az SSH -n keresztüli csatlakozás eltér attól, hogy Windows, Linux vagy Mac rendszert használ. A Linux és a Mac az ssh tekintetében nagyon könnyen használható (az SSH megnyitásának parancsa szó szerint ssh). Nézze meg a Putty for Windows rendszert. Javaslom, hogy nézze meg a képernyőt, hogy megőrizze munkamenetét a projekt során.
- A Python -ot a Raspbianra is telepítenie kell. Amikor befejeztem ezeket a lépéseket, készítettem egy másolatot egy régi SD -kártyáról, amelyet egy korábbi projektben hevertem, és amelyre már telepítve volt a Python. Ha a NOOBS/Raspbian disztribúciója nem rendelkezik Python 3.7 vagy újabb verzióval, nézze meg ezeket a lépéseket a Python forrásból történő fordításához.
- Ismerje meg a git programot, és telepítse, ha még nincs telepítve a Raspbian disztribúciójában.
2. lépés: Az áramkör beállítása
Egy áramkört kell beállítania az Arduino -ban.
Adtam egy vázlatot, amelyet referenciaként használhat.
Az összes MQ-* gázérzékelő szépsége abban rejlik, hogy miután létrejött az 5 voltos és a földi csatlakozás, az Arduino analóg csapjainak bemeneti ellenállása lehetővé teszi az érzékelő megfelelő működését.
Ügyeljen arra, hogy az érzékelő törőlapján található analóg csatlakozás az Arduino -hoz és ne a digitális csatlakozóhoz legyen csatlakoztatva. Ha a tesztelés során nagyon szűk értéktartományba ütközik, azt javaslom, először ellenőrizze itt a kapcsolatot.
3. lépés: Arduino kód és villogás
Az ezt követő lépésben összekapcsoljuk az Arduino táblát a Raspberry Pi -vel. Mielőtt ezt megtennénk, meg kell villannunk az Arduino -t kóddal, hogy leolvassuk az érzékelőt, valamint továbbítsuk az érzékelő adatait a Raspberry Pi -nek. Ezt bármilyen módon megteheti, hogy általában kódot küld az Arduino -nak. Az Arduino IDE -n kívül egy harmadik féltől származó eszközt használtam - ennélfogva az Arduino könyvtárat tartalmazza a tetején. Ez nem szükséges más projekteknél.
Ellenőrizze a másolni/beilleszteni kívánt kódot a szakasz végén.
Mit csinál a kód
A kód úgy van beállítva, hogy négy különböző érzékelőből nyerjen adatokat - ha különböző típusú érzékelőket használ, ésszerű lesz megváltoztatni a soros portról küldött kimeneti jel elnevezését.
A ciklusban ellenőrizzük, hogy a Raspberry Pi kér -e tőlünk adatokat. Ezért egy nagyon egyszerű Master/Slave konfigurációt használunk, ahol a Raspberry Pi folyamatosan kér adatokat az Arduino -tól. Ez sokkal egyszerűbb, mint egy számláló az Arduino kódban, mert könnyebb kipróbálni, hogy mely értékek működnek a Raspberry Pi -ből, ahelyett, hogy új értékeket kellene villannia az Arduino -nak.
Az arduino, miután adatkérést kapott, GET paraméterként formázza a kimenetet - ez a HTTP módszerekhez kapcsolódik, és egyszerűen tervezési választás. Ha kommunikációs sémát tervezne az Arduino -ból a soros porton keresztül, könnyen bármi másra is választhat, amennyiben úgy tervezi, hogy az adatok ésszerűen elkülönüljenek. Azért választottam a GET -et, mert ismerős és robusztus.
Egyszerű tesztelés…
Miután az Arduino villogott és a kód fut, nyissa meg az Arduino IDE soros monitorát. Ha egyetlen "H" karaktert küld (biztosítsa a nagybetűjét!), Megkapja az adatok hasznos terhét. Gratulálok, működik!
Minta, aszinkron MQ-* adatgyűjtő
#befoglalni |
int mq2 = A2; |
int mq4 = A3; |
int mq5 = A4; |
int mq135 = A5; |
int bejövőByte; |
voidsetup () { |
pinMode (mq2, BEMENET); |
pinMode (mq4, INPUT); |
pinMode (mq5, INPUT); |
pinMode (mq135, BEMENET); |
Sorozat.kezdet (9600); |
} |
/* valuePrint kinyomtatja a címke értékét. |
* Csak mellékhatásokat okoz. |
*/ |
voidvaluePrint (String címke, int olvasás) { |
Serial.print (címke); |
Soros.nyomtatás ("="); |
Soros.nyomtatás (olvasás); |
} |
voidloop () { |
// nézd meg, van -e bejövő soros adat: |
ha (Serial.available ()> 0) { |
// olvassa el a soros puffer legrégebbi bájtját: |
// "A Serial.read hívásakor egy bájt eltávolításra kerül a fogadási pufferből, és visszatér a kódjához" |
bejövőByte = Serial.read (); |
// ha nagybetűs H (ASCII 72), olvassa el az értékeket, és küldje el a málna gazdagépének. |
// TODO: ügyeljen arra, hogy az üzenet mindig azonos hosszúságú legyen |
ha (bejövőByte == 72) { |
int mq2Reading = analógRead (mq2); |
int mq4Reading = analógRead (mq4); |
int mq5Reading = analógRead (mq5); |
int mq135Reading = analógRead (mq135); |
Soros.nyomtatás ("?"); |
valuePrint ("mq2", mq2Reading); |
Serial.print ("&"); |
valuePrint ("mq4", mq4Reading); |
Serial.print ("&"); |
valuePrint ("mq5", mq5Reading); |
Serial.print ("&"); |
valuePrint ("mq135", mq135Reading); |
Serial.print ("\ n"); |
} |
} |
// csak másodpercenként olvassa el a sorozatot |
késleltetés (1000); |
} |
Tekintse meg a rawmain.cpp -t, amelyet a GitHub ❤ üzemeltet
4. lépés: Raspberry Pi Code
Most, hogy konfigurálta a Raspberry Pi-t a https://dzone.com/articles/raspberry-pi-iot-sensor… szerint, most futtathatja a Raspberry Client kódot, amely adatokat küld az MQTT-n keresztül az adatbázisunkba. csatlakozik Grafanához.
-
Győződjön meg arról, hogy a málna csatlakozik az internethez, majd hajtsa végre a git clone parancsot a teljes kód másolásához a Raspberry Pi -re. A parancs egy kicsit így fog kinézni:
git klón
-
A raspberry Pi terminálján hajtsa végre a könyvtár módosítását (cd) a "raspberry_client" parancsra:
cd málna_kliens.
-
Virtuális környezetet kell használnia*. Egyszerű. Fuss
python3 -m venv env. Ezzel létrejön egy "env" nevű virtuális környezet, amelyet a függőségek telepítésére használunk.
-
Most be kell lépnünk a virtuális környezetünkbe. Fuss:
source env/bin/active. Most már készen áll a projekt függőségeinek telepítésére.
-
Az imént klónozott csomagban van egy követelmények.txt nevű fájl. Nyissa meg ezt a fájlt; látni fogja, hogy szükségünk van a paho-mqtt és a pyserial csomagokra, valamint azok megfelelő verzióira. Futtatással megtekintheti a fájl tartalmát
macska követelmények.txt. E csomagok telepítéséhez ru
pip install -r követelmények.txt.
- Ezzel befejeződik a konfiguráció.
Szó szerint minden oktatóanyag, amely python -ot használ, megemlíti a Virtual env -t, és még ehhez a kis projekthez is említést teszek. A virtuális környezetek lehetővé teszik a függőségek verzióinak szétválasztását, valamint a python munkafolyamat szétválasztását - Ez egy szép módja a Python -munkaterületek rendbetételének. Ha most először használ virtuális környezetet, olvassa el röviden itt.
Mit csinál a kód…
A client.py fájl egy egyszerű könyvtárkészletet importál, beleértve a saját arduinosensorunkat. A fő funkcióban megkapjuk az értékeket az Arduino -tól, közzétesszük az adatokat az MQTT brókernek, majd alszunk 10 másodpercig.
Az arduinosensor.py fájl segítő módszerek összessége, amelyek körbeveszik a paho.mqtt könyvtárat, valamint néhány hasznos kommunikációs sémát biztosítanak az Arduino hasznos terhével való kommunikációhoz (lásd: parse_payload). Természetesen a kód a fejezet végén található.
Egyszerű kliens, amely soros monitoron keresztül kommunikál egy arduino elemmel. Várhatóan itt találja meg a kódot, amikor nyilvánosságra kerül:
fromimportlibimportimport_module |
importok |
importálási idő |
importőr érzékelő |
defmain (): |
# meghatározott ügyfél megnyitása |
start_time = time.time () |
míg igaz: |
olvasás = arduinosensor.get_values (os.environ.get ('PORT', "/dev/ttyUSB0")) |
arduinosensor.pub ("python_client", hasznos terhelés = olvasás) |
time.sleep (10.0- ((time.time () -start_time) %10.0)) |
if_név _ == "_ fő_": |
fő() |
Tekintse meg a rawclient.py webhelyet, amelyet a GitHub ❤ üzemeltet
5. lépés: Összerakni
Beállítottuk a Raspberry Python kódot, és beállítottuk az Arduino ügyfélkódot. Folytassuk a két entitás összekapcsolásával.
Először csatlakoztassuk az Arduino -t, és állítsuk be a megfelelő konfigurációt:
-
Futtassa a Raspberry Pi terminálon
python -m serial.tools.list_ports. Ez felsorolja az összes USB portot, amelyek támogatják a soros kommunikációt.
-
Most csatlakoztassa az Arduino -t, és várjon körülbelül 2 másodpercet, amíg a Málna felismeri. Beírás
python -m serial.tools.list_ports ismét megmutatja a portokat. Lehet, hogy megjelenik egy további lista is - ha ez valóban így van, akkor ez az új bejegyzés az a bejegyzés, amelyhez az Arduino csatlakozik. Ez valószínűleg a "/dev/ttyUSB0" lesz.
- Próbálja meg futtatni a python kódot a virtuális környezetben a python3.7 client.py futtatásával. Várjon néhány másodpercet (legfeljebb tíz) - ha kivétellel szembesül, ez azt jelenti, hogy módosítanunk kell a málna pi -n lévő portunk értékét. Ha azt látja, hogy a kód egy sort ír ki, amely a következővel kezdődik: "Elküldve a hasznos terhelés után: …", akkor jó lesz folytatni a Grafana utolsó lépését. Tipp: feltétlenül futtassa
képernyő -S python mielőtt elindítaná a python klienst, különben, amikor befejezi a kapcsolatot a málna pi -vel, elveszíti a futó python programot. Technikailag nem kell szigorúan a "python" -t használni utolsó paraméterként, de szeretem ennek megfelelően elnevezni a képernyőmunkáimat.
-
A COM port értékének megváltoztatásához a kód futtatása előtt be kell állítania egy környezeti változót. Ezt a python -m serial.tools.list_ports futtatásakor kapott minden lehetséges kimeneti értéknél ki kell próbálnia. Például, ha a bejegyzések összege kettő volt, és a következők voltak:
- /dev/ttyUSB6
- /dev/acm0
akkor a futtatandó parancsok a következők lennének:
PORT = "/dev/ttyUSB6" python3.7 client.py, és ha ez nem működne, utólag rontanék
PORT = "/dev/acm0" python3.7 client.py
Miután elvégezte ezeket a lépéseket, a kód adatokat küld az influenxdb adatbázis -példányunkhoz, amely a Grafanához való csatlakozáskor lehetővé teszi számunkra, hogy megtekinthessük műszerfalunkat.
6. lépés: A Grafana konfigurálása és az irányítópult megtekintése
Rendben, most az utolsó szakaszon vagyunk! Most a Grafana segítségével létrehozunk egy egyszerű műszerfalat.
- Csatlakozzon a Grafana példányához. Mivel az eredeti dzone cikk lépéseit követte, be kell tudnia jelentkezni rendszergazdai felhasználójával. Menj előre és jelentkezz be.
- A bal oldali ablaktáblán mutasson az „irányítópultok” ikonra - a négy négyzetre. Kattintson a "Kezelés" gombra.
- Az új oldalon kattintson az "Új irányítópult" gombra. Ezután kattintson az "Új panel hozzáadása" gombra.
-
Ez megnyitja a Grafana szerkesztőt. Egy egyszerű nézetet hozunk létre, amely egyetlen mutatót jelenít meg.
- A jobb oldali ablaktáblán módosítsa a panel címét valami értelmesre, például "Konyhai olvasmányok". Egy opcionális Leírást is megadhat.
- A bal alsó sarokban, a "Lekérdezés" alatt egyetlen idősort adunk hozzá. A Grafana itt igazán ragyog, mivel kattintás alapú felületen könnyen létrehozhatunk SQL utasításokat. Az "alapértelmezett" alatt válassza az InfluxDB lehetőséget.
- Most, az "A" olvasásához - a FROM záradékban válassza az "airtestt" mérést. Ha megnézi az eredeti python -kódot az arduinosensor.py get_values függvényében, látni fogja, hogy ezt az airtestt táblázatot definiáljuk a kódon belül.
- Minta esetén menjünk a "SELECT" záradékhoz, és válasszuk az (mq4) mezőt. Eredetileg a műszerfalunk megadja a "mean ()" lehetőséget - kattintson erre a lehetőségre, és válassza az "Eltávolítás" lehetőséget. majd kattintson a pluszjelre, és az "Összesítések" alatt válassza a "differenciált ()" lehetőséget. Ez megmutatja a pontos időpontokat. Választhatunk más mértékeket is, de egyelőre panelünk az mq4 -től eltérő értékeket mutat.
- Kattintson a Mentés gombra a jobb felső sarokban, és kész!
Ha bajba kerül, ellenőrizheti beállításait a mellékelt képernyőképen láthatókkal.
7. lépés: Csomagolás
Ebben az oktatóanyagban egy erős MQTT hálózatot állíthatott be, amely egyetlen csomópontból és közvetítőből áll. Az IOT -adatait a Grafana segítségével is megjeleníthette. Végül ezt az egyszerű rendszer -architektúrát (remélhetőleg) böngészője és számítógépe kényelméből állíthatta össze SSH kapcsolat használatával.
Vannak dolgok, amelyeken javítani szeretnénk.
- A grafikonunkban szereplő érzékelőértékek valójában nem pontos érzékelői leolvasások - ezek az érzékelőnk kimeneti feszültsége. Kalibrálni kell őket, további részletekért olvassa el ezt a blogbejegyzést.
- A málna pi konfigurációnk sokkal könnyebbé tehető az arduino -hoz csatlakoztatott ESP8266 kártya használatával, és a pi teljes eltávolításával. Nézze meg az ESP8266 modul bevezetőjét.
- Érdemes riasztásokat hozzáadni bizonyos eseményekhez. Szerencsére a Grafana lehetőséget kínál erre.
Hagyok még néhány olvasnivalót, hogy elcsábítsam fantáziáját az IOT világával. Várom Önöket a következő tanításban!
További olvasmányok:
Ajánlott:
A gyorsulás változásainak követése a Raspberry Pi és az MMA7455 segítségével Python használatával: 6 lépés
A gyorsulás változásainak követése a Raspberry Pi és az MMA7455 segítségével Python használatával: Nem botlottam, hanem a gravitációt teszteltem. Még mindig működik… Egy gyorsuló űrsikló ábrázolása világossá tette, hogy a sikló legmagasabb pontján lévő óra gyorsabban választ, mint a bázis, a gravitációs idő tágulása miatt. Néhány
AirCitizen - A levegő minőségének ellenőrzése: 11 lépés (képekkel)
AirCitizen - A levegő minőségének ellenőrzése: Sziasztok! Ma megtanítjuk, hogyan reprodukálhatjuk projektünket: AirCitizen az AirCitizenPolytech csapata által!-Az OpenAir / What your air? A projektek, az AirCitizen projekt célja, hogy a polgárok aktívan értékelhessék a minőséget
A polgári infrastruktúrák szerkezeti egészségének nyomon követése vezeték nélküli rezgésérzékelők használatával: 8 lépés
A polgári infrastruktúrák szerkezeti állapotfelügyelete vezeték nélküli rezgésérzékelőkkel: A régi épület és a polgári infrastruktúra romlása halálos és veszélyes helyzethez vezethet. Ezen struktúrák folyamatos ellenőrzése kötelező. A strukturális egészségügyi monitorozás rendkívül fontos módszertan a
Az IoT Made Easy: Távoli időjárási adatok rögzítése: UV és a levegő hőmérséklete és páratartalma: 7 lépés
Az IoT Made Easy: Távoli időjárási adatok rögzítése: UV és a levegő hőmérséklete és páratartalma: Ezen az oktatóanyagon távoli adatokat rögzítünk UV (ultraibolya sugárzás), léghőmérséklet és páratartalom formájában. Ezek az adatok nagyon fontosak lesznek, és felhasználásra kerülnek egy jövőbeni komplett meteorológiai állomáson. A blokkdiagram megmutatja, hogy mit fogunk kapni a végén
Hidegebb levegő! kevesebb pénzért! Légkondicionáló feltöltés !!: 14 lépés (képekkel)
Hidegebb levegő! kevesebb pénzért! Légkondicionáló feltöltés !!: Ezzel a módszerrel jobb hűtést és alacsonyabb energiaköltségeket érhet el. A légkondicionáló úgy működik, hogy összenyom egy gáz halmazállapotú hűtőközeget, amíg le nem sűrűsödik a (sejtette) kondenzátorban a kültéri oldalon. Ez kint hőt bocsát ki. Aztán amikor az