Spisu treści:
- Krok 1: Czym jest I²C i dlaczego to lubimy?
- Krok 2: Przyjrzyjmy się bliżej
- Krok 3: I²C i ZIO
- Krok 4: Jaka jest maksymalna długość kabla?
- Krok 5: Jak podłączyć wiele urządzeń do tej samej magistrali?
- Krok 6: Co to jest zakończenie I2C?
Wideo: Przedstawiamy I2C z modułami Zio i Qwiic: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Robin Sharma powiedział: „Niewielkie codzienne ulepszenia z biegiem czasu prowadzą do oszałamiających wyników”. Możesz pomyśleć: „Aw, kolejny post I2C?”. Cóż, z pewnością istnieją tysiące informacji, jeśli chodzi o I2C. Ale bądźcie czujni, to nie jest kolejny artykuł o I2C. Qwiic Connect System i tablice peryferyjne Zio to zdecydowanie przełomy w grze I²C!
Wstęp
Jeśli tworzysz projekty elektroniczne i robisz niesamowite rzeczy, być może zdałeś sobie sprawę, że gdy Twoje projekty stają się większe, Twoja tablica prototypowa zaczyna wyglądać jak jama węża (trochę niechlujna, prawda?).
Ponadto, jeśli masz wiele projektów, spędzasz mnóstwo czasu na przełączaniu przewodów z projektu do projektu.
Jesteśmy twórcami, więc rozumiemy walkę. Naszym najnowszym wkładem w społeczność BHP jest modułowy system prototypowania o nazwie ZIO, wykorzystujący system połączeń Qwiic. Qwiic to bardzo wygodny sposób komunikacji programowalnej płytki drukowanej z czujnikami, siłownikami i płytkami zaciskowymi za pośrednictwem I²C.
Krok 1: Czym jest I²C i dlaczego to lubimy?
I²C jest najszerzej stosowaną magistralą multi-master, co oznacza, że do tej samej magistrali można podłączyć różne chipy. Jest używany w wielu aplikacjach między urządzeniem nadrzędnym i podrzędnym lub wieloma urządzeniami nadrzędnymi i podrzędnymi. Od mikrokontrolerów, przez smartfony, po aplikacje przemysłowe, zwłaszcza do urządzeń wideo, takich jak monitory komputerowe. Można go łatwo zaimplementować w wielu projektach elektronicznych (a ostatnio jeszcze łatwiej dzięki złączu Qwiic).
Gdybyśmy mieli opisać I²C dwoma słowami, prawdopodobnie użylibyśmy prostoty i elastyczności.
Jedną z największych zalet I²C nad innymi protokołami komunikacyjnymi jest to, że jest to interfejs dwuprzewodowy, co oznacza, że potrzebuje tylko dwóch przewodów sygnałowych, SDA (Serial Data Line) i SCL (Serial Clock Line). Może nie jest to najszybszy protokół, ale jest dobrze znany z tego, że jest bardzo elastyczny, co pozwala na elastyczność w zakresie napięcia magistrali.
Inną istotną cechą, która sprawia, że ten autobus jest atrakcyjny, jest wspólnota między panem a niewolnikiem. Do tej samej magistrali można podłączyć wiele urządzeń i nie ma potrzeby zmiany okablowania między urządzeniami, ponieważ każde urządzenie ma unikalny adres (master wybiera urządzenie do komunikacji).
Krok 2: Przyjrzyjmy się bliżej
Więc jak działa I²C? Wcześniej wspomnieliśmy, że jedną z najważniejszych cech jest naddatek napięcia, jest to możliwe, ponieważ I²C wykorzystuje otwarty kolektor (znany również jako otwarty dren) zarówno dla linii komunikacyjnych SDA, jak i SCL.
SCL to sygnał zegarowy, synchronizujący transfer danych między urządzeniami na magistrali I²C i generowany przez mastera. Podczas gdy SDA przenosi dane do wysyłania lub odbierania z czujników lub innych urządzeń podłączonych do magistrali.
Wyjście na sygnał jest połączone z masą, co oznacza, że każde urządzenie jest narzucone jako niskie. Aby przywrócić wysoki sygnał, obie linie są podłączone do dodatniego napięcia zasilającego przez rezystor podciągający, który ma zostać zakończony.
Dzięki modułom ZIO, które zapewniamy, wszystkie nasze tablice zaciskowe zawierają niezbędny rezystor podciągający.
I²C podąża za protokołem wiadomości w celu komunikacji urządzenia nadrzędnego z urządzeniami podrzędnymi. Dwie linie (SCL i SDA) są wspólne dla wszystkich urządzeń podrzędnych I²C, wszystkie urządzenia podrzędne na magistrali słuchają wiadomości.
Protokół wiadomości jest zgodny z formatem pokazanym na załączonym obrazku:
Na pierwszy rzut oka może się to wydawać skomplikowane, ale mamy dobrą wiadomość. Podczas korzystania z Arduino IDE dostępna jest biblioteka Wire.h, aby uprościć całą konfigurację protokołu komunikatów I²C.
Warunek startu jest generowany, gdy linia danych (SDA) spada do niskiego poziomu, podczas gdy linia zegara (SCL) nadal jest wysoka. Podczas konfigurowania projektu na interfejsie Arduino tak naprawdę nie musimy się martwić o wygenerowanie warunku startowego, zostanie on zainicjowany określoną funkcją (Wire.beginTransmission(slaveAddress)).
Ponadto funkcja ta inicjuje również transmisję z określonym adresem urządzenia podrzędnego. Aby wybrać urządzenie podrzędne do komunikacji na wspólnej magistrali, urządzenie nadrzędne przekazuje adres do urządzenia podrzędnego w celu komunikacji. Po ustawieniu adresu do komunikacji z odpowiednim urządzeniem podrzędnym, następuje komunikat de z bitem odczytu lub zapisu, w zależności od wybranego trybu.
Salve daje odpowiedź z potwierdzeniem (ACK lub NACK), a inne urządzenia podrzędne na szynie dyskontują resztę danych aż do zakończenia komunikatu i zwolnienia szyny. Po ACK, sekwencja wewnętrznego rejestru adresowania urządzeń podrzędnych kontynuuje transmisję.
Po wysłaniu danych komunikat transferu kończy się warunkiem zatrzymania. Aby zakończyć transmisję, linia danych zmienia się na wysoki, a linia zegara pozostaje wysoka.
Krok 3: I²C i ZIO
Doszliśmy do wniosku, że najlepiej będzie zaprojektować wszystkie powyższe informacje w rozmowie między mistrzem (czyli Zuino, nasz mikro) a niewolnikami (czyli tablicami rozdzielczymi ZIO).
W tym podstawowym przykładzie używamy czujnika odległości ZIO TOF i wyświetlacza ZIO OLED. TOF podaje informacje o odległości, podczas gdy ZIO Oled wyświetla dane. Zastosowane komponenty i urządzenia:
- ZUINO M UNO - Mistrz
- Wyświetlacz OLED ZIO - Slave_01
- Czujnik odległości ZIO TOF - Slave_02
- Kabel Qwiic - łatwe połączenie z urządzeniami I²C
Oto jak łatwo połączyć płytki ze sobą za pomocą Qwiic, bez płytki stykowej, dodatkowych kabli nedded lub pinów ZUINO. Szeregowa linia zegara i danych urządzenia ZUINO jest automatycznie podłączana do dalmierza i OLED za pomocą złącza Qwiic. Dwa pozostałe kable to 3V3 i GND.
Po pierwsze, spójrzmy na potrzebne informacje, aby skomunikować się z masterem z niewolnikami, musielibyśmy znać unikalne adresy.
Urządzenie: czujnik odległości ZIO
- Numer części: RFD77402
- Adres I2C: 0x4C
- Łącze do arkusza danych
Urządzenie: Wyświetlacz ZIO OLED
- Numer części: SSD1306
- Adres: 0x3C
- Łącze do arkusza danych
Aby znaleźć unikalny adres dla urządzeń podrzędnych, otwórz dostarczony arkusz danych. W przypadku dalmierza adres znajduje się w sekcji Interfejs modułu. Każdy czujnik lub komponent ma inny arkusz danych z różnymi dostarczonymi informacjami. Czasami znalezienie go w 30-stronicowym arkuszu danych może być trudne (wskazówka: otwórz narzędzie wyszukiwania w przeglądarce PDF i wpisz „adres” lub „identyfikator urządzenia”, aby szybko wyszukać).
Teraz, gdy znany jest unikalny adres dla każdego urządzenia, aby odczytać/zapisać dane, należy zidentyfikować adres rejestru wewnętrznego (również z arkusza danych). Patrząc na arkusz danych czujnika odległości ZIO, adres do uzyskania odległości odpowiada 0x7FF.
W tym konkretnym przypadku naprawdę nie potrzebujemy tych informacji do korzystania z czujnika, ponieważ biblioteka już to robi.
Następny krok, ręce na kod. ZUINO M UNO jest kompatybilny z Arduino IDE, co znacznie ułatwia konfigurację. Biblioteki potrzebne do tego projektu to:
- Drut.h
- Adafruit_GFX.h
- Adafruit_SSD1306.h
- SparkFun_RFD77402_Arduino_Library.h
Wire.h to biblioteka arduino, dwie biblioteki Adafruit są używane dla OLED, a ostatnia jest używana dla czujnika odległości. Sprawdź ten samouczek, jak połączyć biblioteki *.zip z Arduino IDE.
Patrząc na kod, najpierw należy zadeklarować biblioteki oraz adres dla OLED-a.
W setup() rozpoczyna się transmisja i wyświetlany jest tekst dotyczący funkcjonalności czujnika odległości.
Loop() wykonuje pomiary odległości, a OLED je drukuje.
Sprawdź przykładowy kod źródłowy na github link.
Korzystanie z obu tablic typu breakout jest pod każdym względem całkiem proste. Po stronie sprzętowej złącze Qwiic sprawia, że konfiguracja sprzętu jest szybsza i o wiele mniej brudna niż posiadanie płytki stykowej i przewodów połączeniowych. A jeśli chodzi o oprogramowanie układowe, użycie odpowiednich bibliotek do komunikacji I2C, czujnika i wyświetlacza znacznie upraszcza kod.
Krok 4: Jaka jest maksymalna długość kabla?
Maksymalna długość zależy od rezystorów podciągających stosowanych w SDA i SCL oraz pojemności kabla. Rezystory określają również prędkość magistrali, im niższa prędkość magistrali, tym dłuższy limit kabla. Pojemność kabla ogranicza liczbę urządzeń na magistrali, a także długość kabla. Typowe zastosowania ograniczają długość przewodu do 2,5-3,5 m (9-12 stóp), ale występują różnice w zależności od użytego kabla. Dla porównania, maksymalna długość w aplikacjach I2C wykorzystujących ekranowane skrętki 22 AWG wynosi około 1 m (3 stopy) przy 100 kbodów, 10 m (30 stóp) przy 10 kbodów.
Istnieje kilka witryn, takich jak mogami lub WolframAlpha, które pozwalają oszacować długość kabla.
Krok 5: Jak podłączyć wiele urządzeń do tej samej magistrali?
I2C to magistrala szeregowa, w której wszystkie urządzenia są podłączone do wspólnej magistrali. Dzięki złączu Qwiic różne tablice zaciskowe można łączyć jedna po drugiej za pomocą złącza Qwiic. Każda płyta ma co najmniej 2 złącza Qwiic.
Stworzyliśmy różne tablice, aby rozwiązać niektóre ograniczenia Qwiic i I2C. Płytka adaptera Zio Qwiic służy do łączenia za pośrednictwem urządzeń Qwiic bez złącza Qwiic, przy użyciu kabla męskiego złącza Qwiic do płytki stykowej. Ta prosta sztuczka stwarza nieograniczone możliwości.
Aby połączyć różne urządzenia w sieci magistrali lub drzewa, wymyśliliśmy koncentrator Zio Qwiic.
Wreszcie, Zio Qwiic MUX umożliwia połączenie dwóch lub więcej urządzeń korzystających z tego samego adresu.
Krok 6: Co to jest zakończenie I2C?
I2C jest wymagane do zakończenia, więc linia może swobodnie dodawać inne urządzenia. Może to być nieco mylące, ponieważ termin terminacji jest powszechnie używany do opisu rezystorów podciągających szynę (aby zapewnić stan domyślny, w tym przypadku do dostarczania prądu do obwodu). W przypadku płyt Zuino wartość rezystora wynosi 4,7 kΩ.
Jeśli terminacja zostanie pominięta, nie będzie żadnej komunikacji na magistrali – master nie będzie w stanie wygenerować warunku startu, więc wiadomość nie zostanie przesłana do slave.
Aby uzyskać więcej informacji i możliwości Zio, sprawdź najnowsze produkty Zio. Celem tego artykułu jest wyjaśnienie podstaw komunikacji I²C i sposobu jej działania ze złączem Zio i Qwiic. Czekajcie na więcej aktualizacji.
Zalecana:
Ramię robota z modułami Zio, część 3: 4 kroki
Ramię robota z modułami Zio Część 3: Ten wpis na blogu jest częścią serii Zio Robotics. Wprowadzenie W naszym poprzednim blogu zamieściliśmy samouczki z części 1 i 2 dotyczące sterowania ramieniem robota za pomocą modułów Zio. Część 1 koncentrowała się głównie na automatycznym kontrolowaniu pazura ramienia robota
Ramię robota z modułami Zio, część 2: 11 kroków
Ramię robota z modułami Zio Część 2: W dzisiejszym samouczku wykorzystamy wszystkie 4 serwomechanizmy i kontroler bezprzewodowy PS2 do sterowania ramieniem robota. Ten wpis na blogu jest częścią serii Zio Robotics. samouczek, jak sterować robotem
Przedstawiamy LoRa™!: 19 kroków
Przedstawiamy LoRa™ !: LoRa™ = bezprzewodowa telemetria danych dalekiego zasięgu i odnosi się do radykalnego podejścia do dwukierunkowej bezprzewodowej modulacji danych w widmie rozproszonym VHF/UHF, które zostało niedawno opracowane & znak towarowy (™) przez Semtech - dawno ugruntowaną (1960) międzynarodową amerykańską
Przedstawiamy 'Deodorino' - Arduino sterowane podczerwienią w pustym sztyfcie z dezodorantem. Kliknij na 1 zdjęcie: 7 kroków
Przedstawiamy 'Deodorino' - Arduino sterowane podczerwienią w pustym sztyfcie z dezodorantem. Kliknij na 1 zdjęcie: Teraz aż do szczegółów
Zaszyfruj swoje dane osobowe Przedstawiamy Truecrypt!: 8 kroków
Zaszyfruj swoje dane osobowe.. Przedstawiamy Truecrypt!: Cóż, możesz się zastanawiać, czym do cholery jest Truecrypt? Cóż, Truecrypt to program, który pozwala zaszyfrować mnóstwo danych i jest to bardzo łatwe do zrobienia. Więc podążaj dalej. Metody szyfrowania obejmują AES-256, Serpent i Twofish (kombinacja th