|

Przykład użycia TXS0108 – jak poprawnie podłączyć Arduino Uno do OLED

Przykład użycia TXS0108 – jak poprawnie podłączyć Arduino Uno do OLED

Podłączanie wyświetlacza OLED do Arduino Uno wydaje się banalne kilka kabelków, zasilanie, SDA, SCL… i już! Często początkujący łączą 0,96-calowy wyświetlacz OLED 128×64 I2C bezpośrednio do Arduino i… o dziwo, to działa. 😲 Jednak działa trochę na zasadzie „jakoś to będzie” niby wszystko świeci, ale czy na długo? Producent OLEDa zaleca, by logika tego malucha była zasilana napięciem maksymalnie 3,3 V, podczas gdy nasz bohater Arduino Uno nadaje sygnały 5 V. To trochę tak, jakby nakarmić wróbelka pięcioma pączkami naraz, pewnie zje OLED wyświetli obraz, ale może się to źle skończyć. 😉

Dlaczego więc mimo przekroczenia specyfikacji OLED wciąż coś widać na ekranie? Otóż wiele modułów OLED ma wbudowane rozwiązania pozwalające tolerować 5 V np. rezystory na liniach I2C czy wewnętrzny regulator napięcia. Nie oznacza to jednak, że powinniśmy tak robić. Elektronika lubi porządek jeśli specyfikacja mówi 3,3 V, to należy się tego trzymać dla długotrwałej i bezawaryjnej pracy. Jasne, bezpośrednie podłączenie „jakoś tam działa”, tak samo jak wsadzenie gwoździa zamiast przepalonego bezpiecznika też przywróci zasilanie, ale ani to bezpieczne, ani zgodne ze sztuką. 😅

Po co nam konwerter logiczny?

Gdy łączymy układy o różnych poziomach logicznych np. 5 V z Arduino i 3,3 V z OLED, potrzebujemy tłumacza, konwertera poziomów logicznych. Bez niego 5 V sygnały Arduino mogą uszkodzić wejścia wyświetlacza OLED albo w najlepszym wypadku powodować niestabilne działanie. Konwerter chroni także Arduino w razie odwrotnej sytuacji, gdyby peryferium wysłało wyższe napięcie niż 5 V tu akurat nie dotyczy OLED, ale zasada ogólna. Krótko mówiąc: konwerter poziomów to strażnik pilnujący, by każdy sygnał trzymał się swojego dopuszczalnego napięcia. Dzięki niemu układy „dogadują się” bez narażania się na przepięcia i magiczny dym.💨

TXS0108 – nasz bohater, co tłumaczy z 5 V na 3,3 V i odwrotnie

Do poprawnego połączenia Arduino z OLED użyjemy modułu TXS0108 – 8-kanałowego dwukierunkowego konwertera logicznego. Brzmi poważnie, ale zasada działania jest prosta: z jednej strony podajemy napięcie VCCA = 3,3 V (strona „niskonapięciowa” dla OLED), z drugiej VCCB = 5 V (strona „wysokonapięciowa” dla Arduino). TXS0108 automatycznie wykrywa kierunek przepływu sygnału na każdym z kanałów, więc gdy Arduino wysyła dane do OLED, obniży je z 5 V do 3,3 V, a jeśli OLED coś odpowie np. sygnał ACK na I2C, to podbije z 3,3 V do 5 V dla Arduino. Magia? Nie – elektronika! ✨

Dlaczego właśnie TXS0108? Ten układ jest idealny do interfejsów typu open-drain, jak I2C. Oznacza to, że świetnie sobie radzi z liniami danych, które mogą być współdzielone i gdzie sygnał jest wysterowywany tylko w dół do masy, a podciągany rezystorami do plusa. W praktyce – dokładnie tak działa I2C linie SDA i SCL. Co ważne, TXS0108 nie wprowadza opóźnień ani nie zakłóca komunikacji I2C, dzięki czemu Arduino nawet nie „zauważy”, że między nim a wyświetlaczem siedzi tłumacz. 😉

Uwaga: W sprzedaży mamy też podobny konwerter TXB0108 (push-pull). Nie pomyl go z TXS0108. TXB0108 nie nadaje się do magistrali I2C i innych linii open-drain, bo wymaga sygnałów sterowanych w obu stanach logicznych. Do naszego OLEDa koniecznie wybierz TXS0108 (open-drain), w przeciwnym razie komunikacja może nie działać poprawnie.

Elementy potrzebne do podłączenia

Zanim zabierzemy się do pracy, przygotujmy sobie następujące elementy:

  • Arduino Uno R3 – mikrokontroler 5 V np. kompatybilna wersja Uno R3 z CH340
  • Wyświetlacz OLED 0,96″ 128×64 px I2C, biały –taki jak w naszej ofercie logika 3,3 V
  • Moduł konwertera logicznego TXS0108 – 8-kanałowy, dwukierunkowy
  • Płytka prototypowa (breadboard) 400 pól – wygodnie ogarnie zasilanie i linie I2C, a przewody nie będą tańczyć kankana po biurku 😉
  • Kilka przewodów połączeniowych – najlepiej męsko-męskich do wpięcia w Arduino i moduły

Mając powyższe, możemy przejść do właściwego podłączenia zestawu.🛒

Schemat podłączenia Arduino, TXS0108 i OLED

Najlepiej zerknąć na schemat połączeń przygotowaliśmy go, aby wszystko było klarowne. Warto go mieć pod ręką podczas łączenia kabelków. Poniżej opisujemy krok po kroku najważniejsze połączenia:

  1. Zasilanie konwertera: Połącz pin VCCA modułu TXS0108 z wyjściem 3,3 V Arduino. Pin VCCB konwertera połącz z 5 V Arduino. To zapewni odpowiednie napięcia odniesienia dla obu stron niskonapięciowej (3,3 V) i wysokonapięciowej (5 V).
  2. Zasilanie wyświetlacza: Podłącz pin VCC wyświetlacza OLED do 3,3 V Arduino. Masa GND wyświetlacza do GND Arduino. Uwaga: Wspólna masa jest konieczna wszystkie urządzenia muszą mieć wspólny punkt odniesienia napięć.
  3. Linie danych przez TXS0108: Podłącz piny interfejsu I2C zgodnie z ich rolami:
    • SDA dane wyświetlacza podłącz do jednego z kanałów strony A konwertera TXS0108 np. A7. Odpowiadający mu pin strony B B7 połącz do pinu SDA Arduino. W Arduino Uno pin SDA to A4 to standardowa linia SDA.
    • SCL zegar wyświetlacza do innego kanału strony A konwertera np. A8, a odpowiadający B8 do pinu SCL Arduino. W Uno pin SCL to A5.
      Dzięki temu sygnały SDA/SCL „przechodzą” przez konwerter, który zmniejszy napięcie z 5 V do 3,3 V w stronę OLED i odwrotnie w stronę Arduino.
  4. Pin OE Output Enable konwertera: Aby konwerter TXS0108 działał, włącz go podając stan wysoki na pin OE. Najprościej połączyć OE z pinem 3,3 V VCCA wtedy moduł będzie zawsze aktywny. Gdy OE jest w stanie wysokim, konwerter aktywnie przekazuje sygnały; stan niski na OE powodowałby odcięcie sygnałów.

Po wykonaniu tych połączeń sprawdź jeszcze raz, czy wszystko trafiło na właściwy pin. Szczególnie kontroluj zasilania zamiana 5 V z 3,3 V lub podpięcie czegoś do złego pinu może sprawić, że układ się nie odezwie w najlepszym wypadku, albo ulegnie uszkodzeniu w najgorszym. W elektronice panuje żart, że układy scalone działają na dym jak dym ucieknie, to koniec. Dbajmy, by żaden dymek nie uciekł z naszego OLEDa! 😅

Kod programu – czas ożywić wyświetlacz

Sprzęt podłączony zgodnie ze sztuką, więc możemy przejść do programu. Na szczęście obsługa wyświetlacza OLED 128×64 I2C na Arduino jest dobrze opisana w bibliotekach, np. U8g2 lub Adafruit SSD1306. Jeśli masz już zainstalowaną odpowiednią bibliotekę, napisanie prostego kodu testowego to kwestia kilku linijek. Poniżej zamieszczamy przykładowy kod, który inicjalizuje wyświetlacz i wyświetla na nim logo oraz wymiarowanie w sam raz, by upewnić się, że wszystko działa poprawnie.

Po wgraniu kodu do Arduino i zresetowaniu układu, nasz wyświetlacz powinien ożyć i pokazać to, co zaprogramowaliśmy. 🎉 Jeśli widzisz na OLEDzie nasze logo to gratulacje, wszystko działa jak należy, a Twój OLED właśnie przeżywa mniej stresu niż w połączeniu „na skróty”! Teraz możesz bez obaw rozwijać projekt, wiedząc że komunikacja I2C odbywa się zgodnie z zaleceniami producenta.

Podsumowanie

W tym wpisie pokazaliśmy, jak poprawnie i bez ryzyka podłączyć Arduino Uno do wyświetlacza OLED, korzystając z konwertera poziomów logicznych TXS0108. Choć kusi prostota bezpośredniego połączenia pamiętaj, że elektronika bywa pamiętliwa. Dziś coś działa „mimo wszystko”, ale za miesiąc może odmówić posłuszeństwa w najmniej oczekiwanym momencie. Stosując konwerter, działasz zgodnie ze sztuką inżynierską i oszczędzasz sobie kłopotów.

Na dodatek TXS0108 to niedrogie urządzenie, a potrafi oszczędzić komponenty warte znacznie więcej. To trochę jak z parasolką można biegać w deszczu bez niej, ale po co ryzykować przemoknięcie, skoro można się zabezpieczyć? 😉 Podobnie tutaj zaopatrzenie się w konwerter to mała inwestycja dla świętego spokoju.

Mamy nadzieję, że podobał Ci się ten poradnik w nieco humorystycznym wydaniu. Teraz już wiesz, że Arduino i OLED mogą żyć w zgodzie niczym dobrana para wystarczy zapewnić im odpowiednie warunki do komunikacji. Powodzenia w Twoich projektach i pamiętaj: nie zasilaj 3,3-woltowych przyjaciół kawą o napięciu 5 V! ☕🤭 Miłej zabawy z elektroniką!

Produkty powiązane z artykułem


Prezentowaną w artykule elektronikę znajdziesz oczywiście w naszym sklepie 👉 sklep.msalamon.pl 👈Zapraszamy również na nasze social media, gdzie na bieżąco informujemy o nowych produktach oraz o najciekawszych promocjach 😎👇


Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *