Lekce 23
Používaní skeneru sběrnice I²C

Serial Monitor - ikona

Úvod

Jak jsme popsali v části věnované I²C komunikaci, musí mít každé zařízení připojené ke sběrnici s tímto způsobem komunikace, určenou jednoznačnou adresu. Bohužel je to jedna z oblastí, kde občas dokumentace k některým čidlům chybí. Abychom tuto adresu mohli u jednotlivých periférií zjistit nebo jen ověřit, ukážeme si, jak naskenovat a zobrazit adresy všech zařízení připojených na sběrnici I²C.

Použité komponenty

  • modul Arduino
  • USB kabel
  • libovolné I²C zařízení (např. LCD displej s I²C řadičem)
  • vodiče typu „samec-samice“

Princip

Jak bylo řečeno, každé zařízení s I²C sběrnicí má adresu I²C, kterou používá k přijímání příkazů nebo odesílání zpráv. Pojďme si ukázat, jak najít adresu na příkladu I²C převodníku pro LCD displej. Princip hledání je poměrně jednoduchý, ale zato účinný. Postupně jsou na sběrnici I²C oslovovány adresy z daného rozsahu. Pokud je na sběrnici přítomna nějaká periférie dané adresy, odpoví. Pokud volání skončí chybou, periférie dané adresy na sběrnici není.

Dále vytvořený program bude zobrazovat 7-bitové adresy nalezených zařízení v hexadecimální podobě. Každé nalezené zařízení na sběrnici I²C bude vypsáno na sériový monitor. Pro možné vyzkoušení funkčnosti programu je možné jednotlivé I²C zařízení zapojovat a odpojovat i za běhu programu.


Postup experimentu

Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu. Spojení mezi displejem I²C LCD1602 a modulem Arduino znázorňuje následující tabulka. V tomto příkladu je sice použit displej s I²C převodníkem, ale jak jsme si říkali v popisu I²C sběrnice, vývody SDA a SCL jsou podstatou komunikace na všech I²C perifériích. A protože modul Arduino UNO využívá komunikace I²C jen na pinech A4 a A5, je i připojení na straně modulu Arduino vždy shodné s následující tabulkou.

Blokové schéma

Blokove schema

Elektronické schéma

Elektronicke schema
I²C LCD1602 modul Arduino
UNO Mega
SDA A4 20
SCL A5 21
UCC 5V 5V
GND GND GND

Krok 2: V prostředí mBlock vytvoříme následující program. Zatímco v předchozích programech byly programy někdy i vcelku rozsáhlé, zde díky rozšíření MAXI Starter kit jde dva programové bloky.


ikona vysvetleni Vysvětlení kódu

V programu jsme využili programový blok, který je do prostředí mBlock přidán díky rozšíření MAXI Starter kit. Tento jediný programový blok skenuje sběrnici I²C a hledá připojená zařízení, pokud nějaké zařízení nalezeno, je jeho adresa vypsána v sériovém monitoru. To je vše! 😎


Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem tlacitko nahrat.

Krok 4: Nyní modul Arduino odpojíme od prostředí mBlock pomocí tlačítkem tlacitko odpojit. USB kabel modulu Arduino ale od počítače neodpojujeme!

Krok 5: Spustíme na počítači aplikaci Serial Monitor. V Serial Monitoru vybereme port, na které je náš modul Arduino (např. COM5) připojen a nastavíme komunikační rychlost na hodnotu 115200 baudů. Na závěr se tlačítkem „Connect“ připojíme k modulu Arduino. Objeví se okno sériového monitoru, ve kterém bychom měli vidět seznam všech zařízení připojených ke sběrnici I²C i s jejich adresou v hexadecimální podobě.

okno serioveho monitoru