Schemat ideowy klawiatury pokazano na rysunku 1. Jest sercem jest mikrokontroler ATmega32U4 (U1) z wgranym bootloaderem Arduino Leonardo, co znacząco ułatwia dostosowanie aplikacji do własnych potrzeb przy wykorzystaniu wbudowanej biblioteki USB HID Keyboard oraz biblioteki IRremote.
Układ obsługuje 11 przycisków, odpowiedzialnych za kursor (LEFT, RIGHT, UP, DN, OK, ESC) oraz funkcje związanie z obsługa odtwarzacza (INFO, REV, FF, STOP, PLAY). Płytka zawiera odbiornik podczerwieni IR. Przyciski są dołączone bezpośrednio do wyprowadzeń U1. Interfejs USB jest doprowadzony do złącza USB SIP5, a stąd za pomocą typowego przewodu do portu USB urządzenia. Mikrokontroler U1 jest taktowany z użyciem rezonatora XT (16 MHz). Na płytce pozostawiono także dostęp do interfejsu szeregowego wyprowadzonego na złącze UART oraz zamontowano złącze programatora ISP i pomocniczą diodę świecącą LD. Złącze ISP może być wykorzystane po zaprogramowaniu układu jako dodatkowe GPIO do sterowania lub monitorowania układów współpracujących. Obwód R7/C9 umożliwia dołączenie masy układu do metalowej obudowy dla wyrównania potencjałów.
Klawiaturę zmontowano na niewielkiej, dwustronnej płytce drukowanej. Sposób montażu jest typowy i nie wymaga opisywania. Schemat montażowy płytki pokazano na rysunku 2.
Po poprawnym zmontowaniu konieczne jest zaprogramowanie ATmega32U4 bootloaderem. W tym celu za pomocą programatora np. STK500 wgrywamy plik z katalogu //hardware/arduino/avr/bootloaders/caterina/Leonardo-prod-firmware-2012-12-10.hex lub nowszy, jeżeli jest dostępny oraz ustawiamy fusebity: L=0xFF, H=0xD8, E=0xCB. Jeżeli wszystko przebiegło pomyślnie, w systemie pojawi się urządzenie Arduino Leonardo, do którego można wgrać załączony w materiałach szkic Media_PI_KBD.ino. Szkic realizuje funkcje sterujące Openeleca wymienione w tabeli 1.
Ze względu na ograniczoną liczbę przycisków, niektóre funkcje realizowane są „podwójnie”. Na przykład, kolejne naciśnięcia PLAY cyklicznie zmieniają funkcję Play/Pause, funkcja Page Up/Down jest realizowana po dłuższym przytrzymaniu klawiszy UP/DN. Przy współpracy z pilotem (w modelu pilot uniwersalny Marcus), do którego obsługi wykorzystana jest biblioteka IRremote autorstwa Kena Shirriffa (github.com) i po zdefiniowaniu dekodowanych kodów RC5, dostępnych jest więcej funkcji wywoływanych bezpośrednio, między innymi: płynne przewijanie, regulacja głośności. Szkic jest udostępniony w materiałach na ftp w wersji źródłowej i skompilowanej, i może być dostosowany do własnych potrzeb poprzez zmianę przyporządkowania przycisków i kodów RC5.
Adam Tatuś, EP
- R1, R7: 100 Ω (SMD 0805)
- R2: 1 kΩ (SMD 0805)
- R3, R4: 22 Ω (SMD 0805)
- R5: 10 kΩ (SMD 0805)
- R6: 2,2 kΩ (SMD 0805)
- C1, C2: 10 µF (SMD 0805)
- C3, C9: 0,1 µF (SMD 0805)
- C4…C6: 1 µF (SMD 0805)
- C7, C8: 22 pF (SMD 0805)
- IR: TSOP4836 (odbiornik podczerwieni, Vcc=3 V)
- LD: dioda LED SMD 0805
- U1: ATmega32U4MU (QFN44)
- ISP: złącze IDC6
- UART: złącze SIP3
- USB: złącze SIP5
- XT: 16 MHz (rezonator kwarcowy SMD)
- INFO, ESC, LEFT, RIGHT, UP, DN, FF, REV, PLAY, STOP, OK: przycisk PB6149 bez podświetlania