Ipari és terepi buszok
Ipari kommunikációs rendszerek működése, felépítése és alkalmazása.
Ipari kommunikáció – alapfogalmak
Az ipari és beágyazott rendszerekben az eszközök közötti adatcserét különböző buszrendszerek biztosítják. Ezek határozzák meg, hogy a mikrovezérlők, szenzorok és ipari vezérlők milyen módon, milyen sebességgel és milyen megbízhatósággal kommunikálnak egymással.
A busz kiválasztása mindig kompromisszum a vezetékek száma, adatsebesség, bővíthetőség és zajtűrés között. Ipari környezetben elsődleges szempont a stabil és determinisztikus működés.
Buszok feladatai
A buszrendszerek feladata, hogy különböző elektronikai egységek – például mikrovezérlők, szenzorok, aktuátorok és ipari vezérlők – között strukturált adatkommunikációt biztosítsanak. Egy busz nem csupán adatvezeték, hanem meghatározott kommunikációs szabályokat, időzítést és jelalakot is tartalmaz.
A buszok alkalmazási területtől függően eltérő felépítésűek lehetnek. Vannak egyszerű, pont–pont kapcsolatok, valamint több eszközt kiszolgáló, címzett kommunikációra képes rendszerek. A megfelelő busz kiválasztása meghatározza a rendszer megbízhatóságát, sebességét és bővíthetőségét.
Gyakran használt busztípusok
Kötési alapelvek
A buszrendszerek helyes működéséhez nemcsak a logikai protokoll, hanem a fizikai kötés is kritikus. Fontos szempont a közös földelés, a megfelelő tápfeszültség, valamint a vezetékek hossza és árnyékolása.
Több eszközt kiszolgáló buszoknál (például I2C vagy CAN) ügyelni kell a lezárásokra, felhúzó ellenállásokra és a címzések helyes beállítására. Ipari környezetben a zajvédelem és a megbízhatóság elsődleges szempont.
I2C Alapú Terepi Adatgyűjtő és Gateway Rendszer
Bevezetés
A projekt célja egy egyszerű, gateway-alapú terepi adatgyűjtő rendszer megvalósítása. A rendszer egy BMP180 szenzor segítségével hőmérséklet- és légnyomásadatokat mér, amelyeket az Arduino Mega dolgoz fel.
Az Arduino I2C slave módban továbbítja az adatokat a Raspberry Pi Zero 2W felé, amely gateway szerepet tölt be. A Raspberry Pi a beérkezett adatokat internetkapcsolaton keresztül továbbítja a ThingSpeak felhőplatformra REST API használatával.
A projekt bemutatja a master–slave kommunikáció működését, a terepi adatgyűjtés alapelveit, valamint az IoT-alapú felhőintegráció gyakorlati megvalósítását.
Haznált berendezések
Raspberry Pi Zero 2W
A Raspberry Pi egy mini pc amin telepítve van egy Linux operációs rendszer, ez az eszköz segítségével jelenítsük meg a mért adatokat a Thingspeaken, még hozzá úgy, hogy a pythonban megírt kódot futtatjuk rajta.
Arduino Mega
Az Arduino Mega mint slave lesz ebben a projektben, a lényeges különbség a raspberry és a mega között az az, hogy mig a pi egy mini pc OP rendszerrel, addig a Mega csak egy vezérlő egység.
BMP180
A bmp180 egy hőmérséklet és légnyomás mérő szenzor. Ez küldi a mért adatot a Mega arduinóra
Bekötés
BMP -> Arduino
- BMP:VCC -> MEGA:VIN
- BMP:GND -> MEGA:GND
- BMP:SDA -> MEGA:SDA (pin 20)
- BMP:SCL<-> MEGA:SCL (pin 21)
Arduino -> Raspberry Pi Zero 2W
- Arduino: SCL -> Pi: GPIO3 Serial Clock
- Arduino: SDA -> Pi: GPIO2 Serial Data
- Arduino: GND -> Pi: GND
Kód feltöltés és rendsszerindítás
-
A rendszer működéséhez két különálló szoftverkomponens szükséges:
- Arduino firmware szerepe
- - Az Arduino Mega mikrovezérlő firmware-je:
A firmware feltöltése az Arduino IDE segítségével történik USB kapcsolaton keresztül.
Távoli élérés ( pi )
Hogy a raspberry pi-n kódot futtassunk, csatlakoznunk kell SSH segítségével.
Az SSH egy titkosított hálózati protokoll, amely lehetővé teszi a Raspberry Pi parancssoros elérését egy másik számítógépről.
- A csatlakozás a következő képpen történik:
Csatlakozáskor a rendszer kéri az általunk megadott jelszót.
I2C engedélyezése
Nagyon fontos hogy miután csatlakoztunk engedélyeznünk kell az I2C-t hogy működőképes legyen a dolog ezt megtehetjük a következő képpen:
- Szintén a terminálba (power-shell):
Kiválasztjuk az Interface options-t
↓I2C
↓Enable
És kész is vagyunk.
Raspberry Pi alkalmazás
- A Raspberry Pi-n futó Python program:
Kód bemutatása
A rendszer működéséhez két különálló program szükséges: az Arduino firmware (slave adatgyűjtő) és a Raspberry Pi-n futó Python gateway alkalmazás.
Arduino – I2C Slave firmware
Az Arduino Mega feladata a BMP180 szenzor adatainak kiolvasása és azok továbbítása I2C slave módban. A Raspberry Pi masterként kezdeményezi az adatlekérdezést.
Fontosabb működési elemek:
- Szenzor inicializálás induláskor
- I2C slave cím beállítása
- Adatküldés a request eseményben
Kódrészlet
// I2C kérés kezelése
void requestEvent() {
Wire.write((byte*)&temperature, 4);
Wire.write((byte*)&pressure, 4);
}
A slave eszköz minden lekérdezéskor 8 byte adatot küld vissza: 4 byte hőmérséklet és 4 byte nyomás érték.
Raspberry Pi – Gateway alkalmazás
A Raspberry Pi I2C masterként működik, lekérdezi az Arduino által küldött adatcsomagot, majd HTTP POST kéréssel továbbítja azt a ThingSpeak felhőplatformra.
I2C adatfogadás
data = bus.read_i2c_block_data(0x08, 0, 8)
temperature = struct.unpack('<f', bytes(data[0:4]))[0]
pressure = struct.unpack('<f', bytes(data[4:8]))[0]
A <f formátum biztosítja a little-endian float értékek helyes dekódolását.
Adatküldés a felhőbe
payload = {
"api_key": API_KEY,
"field1": temperature,
"field2": pressure
}
requests.post(THINGSPEAK_URL, data=payload)
A rendszer 15 másodperces ciklusidővel működik, így megfelel a ThingSpeak ingyenes csomagjának korlátozásainak.
Rendszer működési foólyamata
Szenzor mér
↓
Arduino adatot tárol
↓
Raspberry Pi lekérdez
↓
Adat dekódolás
↓
HTTP POST a felhőbe
↓
Grafikon frissítés
Felhő alapú adatvizualizáció
A gateway alkalmazás HTTP POST kéréssel továbbítja a mért adatokat a ThingSpeak szerverére, ahol azok strukturált csatornában kerülnek tárolásra. A platform automatikus grafikonrajzolást biztosít, így a hőmérséklet- és nyomásváltozás valós időben követhető.
A felhő alapú megjelenítés lehetővé teszi a távoli monitorozást, az adatok archiválását, valamint későbbi elemzését.