Portfólió

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.

I2C SPI UART CAN MODBUS PROFIBUS

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étvezetékes busz (SDA, SCL), amely lehetővé teszi több periféria csatlakoztatását egyetlen vezérlőhöz. Lassabb, de egyszerű és kevés vezetéket igényel, ezért szenzoroknál gyakori.
Gyors, szinkron soros kommunikáció, külön chip select vezetékkel. Előnye a nagy adatsebesség, hátránya a több szükséges vezeték.
Aszinkron, pont–pont kommunikáció RX és TX vonalon. Egyszerű felépítésű, gyakran használják debugolásra, soros monitorhoz vagy Bluetooth modulokhoz.
Ipari és járműipari környezetben elterjedt, nagy zajtűrésű buszrendszer. Több eszköz kommunikálhat rajta, prioritásos üzenetkezeléssel.
Ipari kommunikációs protokoll, amely gyakran RS-485 fizikai rétegen működik. PLC-k és ipari eszközök közötti adatcserére használják.
Széles körben alkalmazott ipari busz, amely megbízható és determinisztikus kommunikációt biztosít automatizálási rendszerekben.

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

pi

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

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

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 (slave adatgyűjtő)
- Raspberry Pi gateway alkalmazás (Python)

- Arduino firmware szerepe

- Az Arduino Mega mikrovezérlő firmware-je:
- inicializálja a BMP180 szenzort
- I2C slave módban várakozik
- kérés esetén 8 byte adatcsomagot küld (2 × float)

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:
Windows power shell-ből indítjuk: pl( ssh roland@192.168.1.10 )
ssh

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):
- sudo raspi-config

Kiválasztjuk az Interface options-t

I2C

Enable

És kész is vagyunk.

Raspberry Pi alkalmazás

A Raspberry Pi-n futó Python program:
- masterként lekérdezi az Arduino-t I2C buszon
- dekódolja a beérkező bináris adatot
- HTTP POST kéréssel továbbítja a ThingSpeak szerverre

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:

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.