Miniklawiatura z podświetlaniem

Miniklawiatura z podświetlaniem

Przyciski i diody LED są najprostszym, ale praktycznym i efektywnym interfejsem użytkownika. Minimoduł z czteroprzyciskową klawiaturą z podświetlonymi przyciskami znajdzie wiele różnych zastosowań. Dzięki interfejsowi I2C może być łatwo dołączony do płytek typu Arduino czy Raspberry Pi.

Podstawowe parametry:
  • moduł z czterema przyciskami z niezależnie sterowanym podświetlaniem,
  • komunikacja poprzez interfejs I2C,
  • zasilany napięciami z zakresu 3,0...5,5 V.

Za obsługę miniklawiatury odpowiada ekspander I/O – układ typu PCA9531, który oprócz obsługi dwukierunkowych portów I/O jest rozbudowany o dwa konfigurowane generatory umożliwiające sterowanie częstotliwością migania podłączonych diod LED. Schemat wewnętrzny układu PCA9531 został pokazany na rysunku 1. Takie rozwiązanie umożliwia sprzętowe sterowanie diodami LED bez zbędnego obciążenia procesora sterującego.

Rysunek 1. Schemat wewnętrzny układu PCA9531

Budowa i działanie

Schemat modułu został pokazany na rysunku 2. Porty ekspandera zostały podzielone na dwie grupy. Pierwsza zawiera wyprowadzenia oznaczone LED0...LED3, które zostały skonfigurowane jako wejścia i służą do odczytu stanu przycisków SW1...SW4. Przyciski uzupełnione są w proste filtry RC eliminujące zakłócenia z drgań styków. Wyprowadzenia oznaczone LED4...LED7 sterują wbudowanymi w przyciski diodami LED. W układzie zastosowano popularne przyciski typu TACT-24N-F-Ix firmy NINIGI. W zależności od typu możemy wybrać, odpowiednio do aplikacji, jeden z pięciu kolorów podświetlenia (czerwony, zielony, żółty, niebieski, biały).

Rysunek 2. Schemat modułu miniklawiatury

Zasilanie i magistrala I2C doprowadzone są do złącza I2C w standardzie Grove. Trzy zworki A0...A2 służą do ustawienia adresu bazowego na magistrali, co pozwala na dołączenie ośmiu układów klawiatury na jednej magistrali (tabela 1). Moduł może być zasilany napięciami z zakresu 3,0...5,5 V. Po włączeniu zasilania wszystkie wyprowadzenia I/O są ustawione w stan wysokiej impedancji.

Układ PCA9531 posiada siedem rejestrów sterujących, które zestawiono w tabeli 2.

Zapis do rejestrów odbywa się w taki sposób, jak obrazuje to rysunek 3. Po adresie slave zapisywany jest bajt sterujący, adresujący rejestr do zapisu (B2, B1, B0) oraz określający tryb autoinkrementacji adresu AI (AI=1). Sposób odczytu rejestrów został pokazany na rysunku 4.

Rysunek 3. Procedura zapisu do PCA953
Rysunek 4. Procedura odczytu z PCA9531

Montaż i uruchomienie

Moduł został zmontowany na dwustronnej płytce drukowanej, której schemat wraz z rozmieszczeniem elementów został pokazany na rysunku 5. Sposób montażu jest klasyczny i nie wymaga dokładnego opisu.

Rysunek 5. Schemat płytki PCB wraz z rozmieszczeniem elementów

Do sprawdzenia modułu można użyć Raspberry Pi. Po podłączeniu modułu do zasilania 3,3 V i magistrali I2C należy wpisać polecenie 

i2cdetect -y 1

którym sprawdzamy obecność układu na magistrali (w modelu został ustawiony adres 0x60 – wszystkie zwory A2, A1, A0=0). Efekt został pokazany na listingu 1.

Listing 1. Efekt sprawdzenia działania modułu z użyciem Raspberry Pi

0 1 2 3 4 5 6 7 8 9 a  b c d e f
00: -- 04 -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Dla odczytu stanu przycisków należy w rejestrze LS0 ustawić wyjścia LED0...LED3 (SW1...SW4) w stan wysokiej impedancji LS0=00, za pomocą polecenia 

i2cset -y 1 0x60 0x06 0x00

Odczyt stanu klawiszy z rejestru INPUT wykonujemy poleceniem 

i2cget -y 1 0x60 0x00

Naciśnięty przycisk sygnalizowany jest stanem niskim odpowiadającego bitu 3...0.

Dla sterowania wyjściami z diodami LED (LED7...4) wystarczająca jest ich odpowiednia konfiguracja w rejestrze LS1, tabela 3. Przypisanie diod LED do rejestrów LS jest następujące: 

LS1 [0x06, B7..0] : LD4|LD3|LD2|LD1

Dla sprawdzenia działania ustawiamy wyjścia w stan niski (załączenie LED) poleceniem:

i2cset -y 1 0x60 0x06 0x55

oraz stan wysoki (wyłączenie LED) poleceniem:

i2cset -y 1 0x60 0x06 0x00

W celu konfiguracji migania konieczne jest ustawienie rejestrów PSCx, PWMx, okres migania określony jest wzorem:

BLINK0=(PSC0+1)/152 oraz BLINK1=(PSC1+1)/152

Wypełnienie określa wzór:

BLINK0=PWM0/256 oraz BLINK1=PWM1/256

Dla przykładu ustalamy częstotliwość BLINK0 na 1 Hz (0x97) oraz wypełnienie na 50% (0x80), dla testu konfigurujemy układ następującymi poleceniami:

i2cset -y 1 0x60 0x01 0x97
i2cset -y 1 0x60 0x02 0x80

Ustawiamy sterowanie diod LED z BLINK0:

i2cset -y 1 0x60 0x06 0xAA

Diody powinny migać z częstotliwością 1 Hz. Bez zmiany parametrów PSC/PWM diody można wyłączyć (LSx=00), załączyć (LSx=01) lub zmienić częstotliwość migania (LSx=10/11) tylko przez zapis rejestru LS1, bez potrzeby ponownej konfiguracji układu. Stan LED można sprawdzić podczas odczytu rejestru INPUT na bitach B7...B4.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD0603)
  • R1, R2: 4,7 kΩ
  • R3, R4, R6, R7, R9…R11, R13…R15, R17, R18: 470 Ω
  • R5, R8, R12, R16, R19: 47 kΩ
Kondensatory:
  • C1: 0,1 µF SMD0603
  • C2, C3, C4, C5: 1 nF SMD0603
  • CE1: 10 µF/10 V tantalowy SMD3216
Półprzewodniki:
  • U1: PCA9531PW (SSOP16)
Inne:
  • SW1, SW2, SW3, SW4:  przycisk z podświetleniem TACT-24N-F-Ix Ninigi
Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2021
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów