blog.ijacek007.cz

Blog o všem trochu jinak.

Dnes si ukážeme využití velmi praktické sběrnice I2C, která pomocí dvou datových kabelů dovede napojit na mikrokontrolér až 127 dalších zařízení, jejichž komunikace může být pomalejší.

Sběrnici I2C vyvinula firma Philips a umožnuje propojít až 128 zařízení, které nevyžadují rychlý přenos dat. Vždy je tvořena jedním hlavním prvkem, kterému se nemusí definovat adresa a poté připojenými periferiemi, které jsou v režimu slave a jsou řízené hlavním prvkem označeným jako master. Připojené slave zařízení tedy nic nedělají a neposílají žádné data sběrnici, dokud je o to master nepožádá. Prvek master musí mít vždy unikátní adresu a pro správnou komunikaci nesmí být na sběrnici připojeny dva nebo více modulu se stejnou adresou. Pro tuto komunikaci se na arduinu Uno a Nano využívají analogové piny A5 a A4 a jakmile je přiřadíme i2c komunikaci, nemůžeme je již v zapojení využít na nic jiného. U desek ESP8266 je zapojení pro sběrnici i2c vyvedeno na pinech D2 a D1.


obrázek arduino esp8266 I2C lcd

Proč používat I2C sběrnici, když nepotřebujeme nebo nechceme připojovat více zařízení? Síla sběrnice není v počtu připojených modulů, ale v jednoduchosti komunikace a také v množství modulů, které jdou pomocí této sběrnice připojit. Mnohdy totiž existují již připravené knihovny, které pracují s adresou konkrétního modulu a tak Vám stačí jen připojit modul ke sběrnici, použít knihovnu a můžete vesele komunikovat. Je také možné díky změně adresy připojit více stejných modulu a měřit tak více jediným kontrolérem. Na sběrtnici i2c můžete připojit například LCD displeje od klasických 20×4, oled, ampérmetru, snímače tlaku, rozšířené paměti či mnohých dalších.


obrázek arduino esp8266 I2C lcd bmp180

Na druhém schématku je vidět, jak probíhá zapojení více zařízení. V tuto chvíli je k kontroléru připojený LCD displey a tlakový snímač BMP180. U obou připojených modulů nemáme aktuálně možnost změnit adresu I2C na které tyto moduly mají poslouchají a tak nemůžeme zapojit více stejných čidel do obvodu. Měli by totiž stejnou I2C adresaci. K připojení více stejných modulů do zapojení tedy potřebujeme moduly, na kterých je možné I2C adresu změnit. To se zpravidla dělá propojením pinů na samotné destičce s čidlem. Například jak je tomu u modulu INA219 pro měření proudu. Tento modul má na sobě dvojicí plošek, jejíž spájením můžeme adresu změnit. Tím pádem dostáváme možnost připojit až 4 měřící moduly a každý bude využívat jinou adresaci.

Princip změny adresace by jsme měli. Jak ale zjistíme, že je čidlo či modul správně připojené a jakou má vlastně adresu? Adresu každého I2C modulu by jste měli najít v dokumentaci, kde najdete i postup, jak ji změnit pokud modul změnu umožňuje. Pokud si však nejste jisti, doporučuji výborný program přímo ze stránek Arduino, který naleznete zde. Program projde všech 128 možných adres a pokud najde modul na konkrétní adrese, vypíše údaje na sériové lince.


obrázek Arduino I2C scanner

Jak je vidět na adrese 0×3c je připojen LCD z našeho příkladu a na adrese 0×77 je připojen modul tlaku BMP180. Ještě jedna drobnost dle dokumentací by v zapojení měly být ještě dva odpory. Nicméně pokud máte čidla připojené hned vedle kontroléru jsou dle mého zjištění téměř nepotřebné proto je ve svých obvodech nepoužívám.

Mohlo by Vás zajímat

Přehledný popis I2C (česky)

Arduino I2C Scanner


Štítky článku elektronika | programovani |
Autor Ijacek.007 05.08.2018 Opravil(a) sokorka zobrazeno 70x
Předchozí článek Wi-Fi teploměr s ldc teplotou vlhkostí a indikátorem Wi-Fi signálu.
Měření tlaku pomocí BMP180 Další článek


gravatar

Vložit komentář

Nick *:
WWW:
Email * (nezobrazuje se ):
Gravatar:
Pamatuj si mě:
Komentář článku *:
Opiš následující text: *

* - vyžadované údaje. RSS kanál s komentáři