Page
I2C je počítačová zbernica, vyvinutá firmou Philips. Používa sa na pripojenie rôznych periférií, pričom na prenos údajov sa používajú dva vodiče. Komunikácia prebieha tak, že jedno zariadenia hrá úlohu mastera (ovláda ostatné) a ostatné zariadenia hrajú úlohu slave. V našom prípade budeme predpokladať, že master je Arduino. Slave bude obvykle nejaká súčiastka, ktorú ste si kúpili na Ebayi, ale nič nám nebráni použiť aj druhé Arduino.
Pin | Arduino Uno | Arduino Mega |
---|---|---|
SDA serial data | A4 | 20 |
SLC serial clock | A5 | 21 |
V simulátore LTSpice IV som vytvoril simuláciu toho, čo sa deje pri komunikácii. Dátová linka je pripojená cez pull-up rezistor 4,7k na +5 V. To ju drží stále na napätí 5 V a obe strany komunikácie pripájajú línku na GND, keď potrebujú niečo oznámiť druhej strane.
Pripojenie na GND je simulované pomocou napätím ovládaného prepínača, ktorým je možné toto napodobniť. V simulácii najprv jedna strana dvakrát pripojí linku na GND, potom je menšia pauza a potom zase pripája linku dvakrát druhá strana. V červenom grafe je potom znázornená úroveň napätia na samotnej linke.
V súbore i2c_tester.ino
sa nachádza program, ktorý prekontroluje celú I2C zbernicu a vypíše všetky nájdené zariadenia, ktoré dokážu odpovedať týmto protokolom. Tento program je kompletne prevzatý zo stránky arduino.cc.
Môžete použiť aj modernejšiu modifikáciu, ktorú som napísal podľa vzoru, ktorý som našiel na Raspberry Pi
. Táto verzia vypíše nájdené I2C zariadenia v podobe tabuľky. Môžete použiť aj verziu pre OLED displej, ktorú som napísal pre ESP8266.
Zdrojový kód sa nachádza na serveri GitHub.
Dobrým príkladom protokolu je komunikácia s hodinami reálneho času. Tieto moduly sa dajú lacno kúpiť, ale nie je problém si ich aj poskladať z niekoľkých súčiastok. Napríklad v článku o DS1307 na skúšobnom poli si môžete pozrieť príklad takejto komunikácie.
V nasledovnej sérii článkov si postupne vysvetlíme, ako možno zrealizovať I2C komunikáciu medzi dvomi Arduinami.
I2C Arduino - Master odosiela znaky na slave I2C Arduino - Master odosiela binárne dáta na slave I2C Arduino - Kontrola chýb spojenia
16.07.2015