Mikrointerfejs użytkownika dla Pi Zero

Mikrointerfejs użytkownika dla Pi Zero

Prezentowana płytka rozszerza funkcjonalności Raspberry PI Zero (i nie tylko) o graficzny wyświetlacz OLED i czteropolową klawiaturę dotykową oraz umożliwia wyprowadzenie magistrali I2C do urządzeń zewnętrznych.

Podstawowe parametry:
  • wyświetlacz OLED 128×64 ze sterownikiem SSD1306,
  • czteropolowa klawiatura dotykowa z kontrolerem IS31SE5104,
  • komunikacja poprzez interfejs I2C,
  • zasilanie i sygnały GPIO są w standardzie 3,3 V.

Płytka jest zgodna z każdą wersją Raspberry Pi, ale mechanicznie dopasowana jest do Pi Zero, tworząc z nim zgrany zestaw o niewielkich rozmiarach. Sygnały na złączu GPIO, których używa moduł, zestawiono w tabeli 1.

Budowa i działanie

Schemat płytki rozszerzeń pokazano na rysunku 1. Wybrany wyświetlacz OLED 128×64 typu REX012864MXPP3N, pomimo niewielkich rozmiarów (przekątna 0,96”), cechuje się dużą jasnością i czytelnością wyświetlanej treści.

Rysunek 1. Schemat mikrointerfejsu użytkownika

W zależności od podtypu może wyświetlać w kolorze białym, niebieskim, żółtym lub żółto-niebieskim (wyróżnione pierwsze 16 wierszy). Wyświetlacz jest bardzo prosty w aplikacji, wymaga tylko kondensatorów C2, C3 dla pompy ładunkowej, C5, C6, C8, C9 do odsprzęgnięcia zasilania oraz rezystora R11 ustalającego prąd pikseli. Wbudowany sterownik SSD1306 skonfigurowany jest do pracy z interfejsem I2C. Ze względu na popularność wyświetlacza do jego obsługi dostępnych jest sporo gotowych bibliotek (C, Python, Arduino), co znacząco ułatwia pierwsze uruchomienie. Zworami A3C, A3D możliwe jest ustawienie adresu bazowego 0x3C, 0x3D wyświetlacza.

Uzupełnieniem wyświetlacza jest czteropolowa klawiatura dotykowa. Jako jej kontroler został wybrany układ IS31SE5104 ISSI. Jest to jeden z najprostszych w aplikacji, przystępnych cenowo i pewnie działających ze znanych mi układów obsługujących klawiatury dotykowe. Komunikacja U1 z systemem nadrzędnym odbywa się podobnie jak w przypadku wyświetlacza przez magistralę I2C. Zworami A44...A47 można wybrać adres bazowy kontrolera 0x44...0x47. U1 może generować sprzętowe przerwanie po wykryciu dotknięcia pola, jeżeli chcemy wykorzystać sygnał INT, na płytce lutujemy rezystory R6, R9, polaryzujące wyjście INTB U1. Sygnał przerwania dostępny jest na GPIO4. Wyjścia OUT, typu OD, sygnalizujące sprzętowo aktywny dotyk, połączone są równolegle i sterują diodą LD1, gdy którekolwiek z pól jest dotknięte.

Dla ułatwienia połączenia z innymi płytkami uruchomieniowymi lub wyprowadzenia magistrali I2C z Pi, płytka ma dwa złącza I2C, I2CA w standardzie JST PH 2,00 mm i JST SM 1,00 mm zgodnie z wcześniej opisanymi płytkami rozszerzeń I2C. Złącze PI GPIO zostało okrojone do pierwszych 10 pinów, które używane są do zasilania płytki napięciem 3,3 V z Pi oraz doprowadzają magistralę I2C.

UWAGA: w przypadku wykorzystania z innymi płytkami uruchomieniowymi należy pamiętać, że zasilanie i sygnały GPIO są w standardzie 3,3 V. Doprowadzenie wyższego napięcia spowoduje uszkodzenie modułu.

Montaż i uruchomienie

Układ zmontowany jest na niewielkiej dwustronnej płytce drukowanej, rozmieszczenie elementów pokazano na rysunkach 2 i 3. Montaż nie wymaga dokładnego opisu.

Rysunek 2. Schemat płytki PCB z rozmieszczeniem elementów, strona TOP
Rysunek 3. Schemat płytki PCB z rozmieszczeniem elementów, strona BOTTOM

Wyświetlacz polecam zamontować jako element ostatni, po wcześniejszym podklejeniu go do płytki cienką samoprzylepną taśmą dwustronną. Taśmę elastyczną z OLED należy przełożyć przez wyfrezowany otwór w PCB i delikatnie dolutować do pól od spodu płytki unikając jej ostrego zginania. Wyświetlacz jest dosyć kruchy, warto więc zachować ostrożność podczas użytkowania. Płytka montowana jest do Pi za pomocą czterech tulejek M2,5×8. Zmontowaną płytkę pokazano na fotografii 1.

Fotografia 1. Widok zmontowanej płytki

Przed podłączeniem do Pi na płytce należy ustalić adresy wyświetlacza i kontrolera, pamiętając, że jednocześnie może być wlutowana tylko jedna zwora A44...A47 ustalająca adres U1 oraz A3C lub A3D ustalająca adres. Domyślnie ustawione powinny być A44 i A3C.

Uruchomienie układu wymaga drobnej konfiguracji Pi. Najlepiej sprawdzić, czy dysponujemy aktualną wersją oprogramowania. W razie konieczności należy zaktualizować system do najnowszej wersji oraz upewnić się, czy załączona jest obsługa magistrali I2C. Jeżeli nie jest zainstalowany pakiet i2c-tools, należy go pobrać, bo niezbędny jest do szybkiego sprawdzenia modułu:

sudo apt-get install i2c-tools

Po zainstalowaniu w pierwszej kolejności sprawdzamy w konsoli prawidłowe działanie I2C:

sudo i2cdetect -y 1

Prawidłową detekcję wyświetlacza (0x3c) oraz kontrolera (0x44) pokazano na rysunku 4.

Rysunek 4. Sprawdzenie adresów magistrali I2C

Układ pod adresem 0x04 to procesor z interfejsu Grove Pi Zero niewchodzący w skład mikrointerfejsu, a podłączony do mojego Pi Zero. Dla sprawdzenia działania OLED mogę polecić bibliotekę Adafruit Python Library dostępną w repozytorium:

https://github.com/adafruit/Adafruit_Python_SSD1306.git, którą należy pobrać i zainstalować wraz z bibliotekami zależnymi:

sudo apt install -y python3-dev

sudo apt install -y python-imaging python-smbus i2c-tools

sudo apt install -y python3-pil

sudo apt install -y python3-pip

sudo apt install -y python3-setuptools

sudo apt install -y python3-rpi.gpio

Przed uruchomieniem przykładów w katalogu Examples warto ustawić w każdym z plików rozdzielczość 128×64, zgodną z zastosowanym wyświetlaczem, co pokazano na rysunku 5, komentując linię:

# 128x32 display with hardware I2C:

#disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)

oraz usuwając komentarz z linii:

# 128x64 display with hardware I2C:

disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

Teraz można już przetestować wyświetlacz jednym z przykładów z katalogu Examples np.

python3 stats.py

Rysunek 5. Zmiana rozdzielczości wyświetlacza

Dla sprawdzenia działania kontrolera klawiatury dotykowej użyjemy narzędzia z pakietu i2c-tools. W większości przypadków układ zadziała już po włączeniu zasilania na domyślnej konfiguracji; każde dotkniecie pola zasygnalizowane jest zaświeceniem LD. Mapę rejestrów IS31SE5104 pokazano w tabeli 2, natomiast dokładne znaczenie poszczególnych bitów znajdziemy w dokumentacji układu.

Przerwanie na wyprowadzeniu INTB (aktywny stan niski) generowane jest po każdej detekcji dotyku, kasowane jest (stan wysoki) zgodnie z ustawieniami rejestru 0x04 lub po każdym odczycie rejestru zmiany stanu 0x03. Przykładową konfigurację (4 pola aktywne, normalna czułość) wraz z odczytami przy aktywacji pól wykonujemy następującymi poleceniami:

• konfiguracja IS31SE5104 (wszystkie pola aktywne, normalna czułość)

i2cset -y 1 0x44 0x00 0x00

i2cset -y 1 0x44 0x01 0xFF

• odczyt stanu pola

i2cget -y 1 0x44 0x02 np. 0x01 (aktywny dotyk, pole QT1)

• odczyt zmiany stanu pola

i2cget -y 1 0x44 0x03 np. 0x0d (stan zmieniły pola QT4, QT3, QT1)

Jeżeli wszystko działa bez zarzutu, można moduł zastosować we własnej aplikacji.

Adam Tatuś, EP

adam.tatus@ep.com.pl

Wykaz elementów:
Rezystory: (SMD0603, 1%)
  • R1…R5: 510 Ω
  • R6, R7, R8: 2,2 kΩ
  • R9: 100 Ω
  • R10: 10 kΩ
  • R11: 1 MΩ
Kondensatory:
  • C1, C2, C7: 0,1 μF SMD0603
  • C3…C6, C8: 2,2 μF SMD0603
  • C9: 10 μF SMD0603
  • CE1: 10 μF SMD3216 tantalowy
Półprzewodniki:
  • LD1: LED SMD0603
  • DISP: wyświetlacz OLED 128×64, 30 pin, REX012864MXPP3N
  • U1: IS31SE5104 SO16
Inne:
  • A44…A47, A3C,A3D: zwora 0 Ω SMD0402
  • PI: WE610310243021 2,54 mm SMT Bottom Entry 10 pin
  • I2C: Złącze JST 4 pin 1 mm, kątowe
  • I2CA: Złącze JST 4 pin 2 mm, kątowe
Artykuł ukazał się w
Czerwiec 2020
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik wrzesień 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio wrzesień 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje wrzesień 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich sierpień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów