Több Arduinos csatlakoztatása - Adatok átvitele

Előfordulhat, hogy több Arduinót szeretne csatlakoztatni. Erre számos lehetőség kínálkozik. Az I2C interfészen keresztüli kapcsolat nagyon kényelmes. Itt megtudhatja, hogyan kell ezt megtenni.

csatlakoztatása

Az I2C az integrált áramkört jelenti, és I-Square-C vagy I-To-C kiejtést jelent. Ez egy szabvány, amelyet eredetileg a Philips fejlesztett ki különböző IC-k (integrált áramkörök) közötti kommunikációra. Egy IC-nek, a masternek kell átvennie a különféle perifériás IC-k irányítását. Ez az eljárás master-slave busz néven ismert.

Az I2C-nek csak két adatvonalra van szüksége: SCL-re, soros órára (Serial Clock Line) és SDA-ra, a soros adatvonalra (Serial Data Line). Szerencsére az Arduino tábla már fel van szerelve vele. Az SDA tű a 4 analóg bemenet, az SCL tű az 5 analóg bemenet. Ezenkívül az Arduino UNO R3 csapjai a digitális csapok bal oldalán is előkerülnek. Ezek azonban ugyanazok a csatlakozások, mint az A4 és az A5.

Mint említettük, az I2C egy master-slave rendszer. Ez azt jelenti, hogy az egyik Arduino táblának mesterré kell válnia. Az összes többi Arduino tábla megkapja a saját címét.

Csatlakoztasson több Arduinót: kapcsolási rajz

Alapvetően az összes Arduion kártya összeköti az A4 és A5 érintkezőket, valamint a GND-t. Ezenkívül két ellenállást kell csatlakoztatni az SDA és az SCL vonalak húzóerejeként.

Az Arduinos mind külön tápegységeken vagy USB-tápegységen keresztül, vagy erőteljes külső tápegységgel szállítható. Azt tanácsolom, hogy ne használja az Arduino tápegységét, mivel a dióda itt egy amperre korlátozza a maximális áramot. Sok Arduinos segítségével gyorsan túlléphet rajta. Mindazonáltal elengedhetetlen a helyes polaritás biztosítása az ilyen típusú műveletekkel!

Csatlakoztasson több Arduinót: Master Code

Az I2C interfész használatához a Wire könyvtárat integrálni kell: a include Wire volt az Arduino elődje, és az I2C funkcionalitás ebben a könyvtárban található. A kód alapvetően két fő funkcióból áll: az adatok küldéséből és az adatok fogadásából.

A hurokban van egy for hurok. Minden egyes futtatással egy másik csatlakoztatott Arduino tábla kommunikálódik. A for ciklusban a sendData függvényt hívják meg először. Paraméterként megkapja a célcímet, a fogadó táblát és 0 és 255 közötti értéket. Ez egy minta adat, amelyet a címzett ki tud értékelni.

Ezután a kapottData függvény meghívásra kerül. A célcím újra átkerül. Magában a funkcióban először egy kérést küldünk a fogadó táblának. (A főnek el kell küldenie ezeket a kéréseket a csatlakoztatott Arduinosnak, hogy az adatokat vissza lehessen küldeni.) Most két adatcsomagot kérünk. Mindegyiknek a 0 és 255 közötti értéktartományban kell lennie (azaz BYTE). Átkerülnek egy többdimenziós tömbbe, amely később felhasználható a programban. Itt csak példaként kell érteni. Mindkét adatcsomag továbbításra kerül a soros interfészre, és a soros monitoron ellenőrizhető.

Most nézzük meg, hogy néz ki a másik oldalon: A slave modulokban.

Csatlakoztasson több Arduinos: slave kódot

Ahogy az várható volt, ez a kód meglehetősen passzív, és várja a mester üzenetét. Két esemény kapcsolódik a beállításhoz:

Az adatok beérkezésekor a fogadási esemény függvény meghívásra kerül. Ebben a beérkezett adatokat egyszerűen beírják az x változóba. A 13. érintkező LED-je ekkor pontosan olyan gyakran villog, mint az x változó. Ismét csak példaértékű.

A requestEvent függvény akkor kerül végrehajtásra, amikor a master adatokat kér. Két adatot ír egy tömbbe: a saját címét és az aktuális értéket az analóg 0 tűn. Mivel ez az érték 0 és 1023 közötti tartományban van, négyre osztják, hogy átvigyék a 0 és 255 közötti céltartományba (BYTE).

Fontos, hogy minden rabszolga Arduino táblának saját címe legyen. Négy rabszolga Arduinót csatlakoztattam ide, és számoztam őket 2-től 5-ig.

Egyébként 112 Arduino táblát könnyedén össze kell tudni kapcsolni és kezelni.

És most nagyon érdekelne, hogy mit csinálsz vele. Írjátok ezt nyugodtan a kommentekbe:-)

Összegzésként elmondható, hogy valóban nagyon izgalmas vita folyik arról, hogy a master és a slave kifejezések továbbra is megfelelőek-e. Én személy szerint érthetőnek és nagyon szórakoztatónak találom az olykor erősen polarizáló megjegyzéseket.