Elég sokat foglalkoztam az Arduino Dcc témával, az összes eszközdekóderemet (váltóállító, jelzőállító, kapcsolópult) Arduinoval csináltam. A kapcsolópult egyelőre I2C-n adja át a többi Arduninonak a parancsokat.
Belekezdtem abba, hogy ez Xpress-neten menjen mert az sokkal elegánsabb lenne, de őszintén nem volt eddig elég időm, hogy implementáljam rendesen. Hardveresen igazad van nagyon minimális igénye van, a probléma a szoftveres oldalon van mivel az xpress-net egy elég bonyolult protokoll. Ennek ellenére egypár cseh faszi csinált egy könyvtárat hozzá, későbbiekben én ezzel megyek tovább, de ez elég nagy falat:
https://github.com/kmzbrnoI/z21-arduino
Van egy másik megoldás is amikor egy H-hidas shieldet használnak Arduino Uno-n és azt hiszem a DCC++ könyvtárat, de ha jól tudom az egy teljesértékű vezérlőegység lesz amit csak gépről tudsz irányítani. Ebben nem vagyok 100%-ig biztos mert én mindenképpen egy olyan rendszert szerettem volna, hogy z21-gyel irányítom a vonatokat a külső perifériákat (váltók, jelzők) pedig kapcsolópultról illetve z21 appról is vezérelni tudjam.
Jelenlegi I2C design-om egyetlen hibája, hogy ha a kapcsolópulton állítok valamit az nem jelenik meg az app-ban, erre lenne jó az xpress-net. Jelenleg úgy oldom ezt meg hogy ha az app küld új adatot akkor az felülírja az összes korábban kapcsolópult által állított adatot.