systemypomiarowe.pl

Zbliżenie zmontowanej płytki drukowanej P161002 z układami Microchip w obudowach SMD Wizualizacja płytki z mikrokontrolerem STM32, gniazdem karty SD i modułem GPS Trójwymiarowa wizualizacja płytki z przekaźnikiem, buzzerem i złączami Fragment schematu ideowego ze wzmacniaczem pomiarowym INA326 i przetwornikiem A/C MCP3304 Trójwymiarowa wizualizacja gęsto zmontowanej płytki modułu komunikacyjnego Płyta czołowa urządzenia z opisanymi przyciskami, pokrętłami głośności i głośnikiem Rysunek techniczny płyty czołowej z rozmieszczeniem przycisków i pokręteł Zmontowana płytka z mikrokontrolerem PIC18F2550, złączem USB i potencjometrami montażowymi Kod źródłowy interfejsu TouchGFX dla STM32 w edytorze Visual Studio Code Projekt płytki drukowanej – widok warstw i rozmieszczenia elementów
Strona główna Oferta

Raspberry Pi – frontpanel (moduł rozszerzeń)

Płytka panelu sterującego dla Raspberry Pi.

Schemat blokowy modułu rozszerzeń (frontpanel) dla Raspberry Pi

Rys. Schemat blokowy karty rozszerzeń.

Zainspirowany poprzednimi eksperymentami z Rasperry Pi postanowiłem zaprojektować i wykonać płytkę łączącą w sobie cechy wszystkich poprzednich przykładów. Zaprojektowany interfejs posiada 6 podświetlanych przycisków dołączonych za pomocą układu scalonego MCP23008 do interfejsu I2C. Panel sterujący został wyposażony w wyświetlacz alfanumeryczny LCD. Do sterowania tego wyświetlacza została wykorzystana opisana w innym artykule biblioteka wiringPi posiadająca wbudowane funkcje do obsługi tego typu wyświetlaczy. Do sterowania podświetlania wyświetlacza wykorzystano układ PCA9633. Wyświetlacz posiada podświetlanie RGB dzięki czemu kolor podświetlania możemy zdefiniować w dowolny sposób. Płytka została wyposażona w zegar RTC typy PCF8563 dołączony do interfejsu I2C. Do tego samego interfejsu został również dołączony układ SHT21 będący cyfrowym termometrem i higrometrem. W panelu został wbudowany układ pamięci 24C02 do zapisywania bieżących danych o ustawieniach. Dużym blokiem funkcjonalnym zabudowanym w panelu jest konwerter UART na BlueTooth typu BTM222. Dzięki temu interfejsowi otrzymujemy do dyspozycji nowy kanał komunikacyjny do płytki Raspberry Pi. Do moduły BTM222 została dołączona antena na pasmo 2.4GHz. Dodatkowo ciekawym elementem zamontowanym na płytce panelu sterującego jest odbiornik podczerwieni TSOP4836 który w połączeniu z biblioteką lirc pozwala na ciekawy sposób sterowania komputerkiem Raspberry Pi. Na płytce został także zamontowany buzzer sterowany z interfejsu GPIO komputerka Raspberry Pi. Jak poprzednio napisano na płytce panelu sterującego zamontowano kilka układów dołączonych do wspólnego interfejsu sterującego I2C. Aby komunikować się z nimi potrzebujemy informacji o adresach poszczególnych układów. Zostały one przedstawione w tabelce poniżej.

adres układ uwagi
0x0c PCA9633
0×51 PCF8563
0×52 AT24C02 wg katalogu 0xa2
0×40 SHT21
0×20 MCP23008
Tab. Adresy I2C zastosowanych układów.

Adresy te różnią się od tych podanych w notach katalogowych poszczególnych układów. Bierze się to stąd, że w notach katalogowych ośmiobitowy adres podawany jest wraz bitem read/write zaś w bibliotece wiringPi wykorzystujemy tylko siedem najbardziej znaczących bitów a więc „katalogowy” adres należy podzielić przez 2 np. 0xa2/2=0×52.

Tabelka ilustrująca sposób dołączenia wyświetlacza LCD do interfejsu GPIO.

RS EN D4 D5 D6 D7
GPIO25 GPIO7 GPIO22 GPIO27 GPIO17 GPIO4
Tab. Podłączenie wyświetlacza LCD

Jak wcześniej zostało napisane zastosowany wyświetlacz LCD posiada wbudowane podświetlanie za pomocą diod RGB. Do sterowania podświetlaniem zastosowano układ PCA9633. Za kolor R odpowiedzialny jest rejestr o adresie 0×05, za kolor G rejestr o adresie 0×04 zaś za kolor B rejestr 0×03. Za podświetlanie klawiatury jest odpowiedzialny rejestr o adresie 0×02. Do odczytu stanu klawiatury zastosowany został układ MCP23008. Wyjście przerwania z tego układu zostało dołączone do lini GPIO24. Po odczytaniu zmiany stanu na tej linii program uruchomiony na Raspberry Pi powinien odczytać z układu MCP który z przycisków został wciśnięty.
Układ do odbioru sygnałów z pilotów zdalnego sterowania za pomocą podczerwieni został dołączony do lini GPIO18. Bibliotekę lirc należy skonfigurować w taki sposób aby uwzględniała tą informację.
O module BTM222 i sposobie jego dołączenia nie ma nic do opisywania. Moduł ten jest dołączony do lini RXD oraz TXD. Linia RESET modułu BTM222 została dołączona do wyprowadzenia GP7 układu MCP23008.
Buzzer został dołączony do lini GPIO23 płytki Raspberry Pi. Na płytce zostało zamontowane złącze dołączone do interfejsu SPI Raspberry Pi. Jeżeli ktoś potrzebuje jeszcze dołączyć jakieś układy z interfejsem I2C to znajduje się tam również złącze na które zostały doprowadzone sygnały interfejsu I2C.

Wyświetlacz LCD z podświetleniem RGB w module frontpanel

Rys. Wygląd zaprojektowanego frontpanela dla Raspberry Pi.

Schemat ideowy modułu frontpanel dla Raspberry Pi

Rys. Schemat ideowy frontpanelu.

Zmontowany moduł frontpanel z wyświetlaczem LCD

Rys. Wygląd zmontowanego i uruchomionego frontpanelu.

Raspberry Pi z dołączonym modułem rozszerzeń

Rys. Jeszcze jeden widok: RPi i frontpanel.

Płytka drukowana.

Na bazie schematu została zaprojektowana dwustronna płytka drukowana na której umieszczono wszystkie elementy i złącza.

Projekt dwustronnej płytki drukowanej frontpanelu w programie KiCad

Rys. Wygląd zaprojektowanej płytki drukowanej.

Aplikacja – LCD

Uruchamianie frontpanelu rozpocząłem od uruchomienia wyświetlacza LCD. W tym celu należy zainstalować bibliotekę wiringPi zgodnie z instrukcją opisaną w rozdziale dotyczącym wyprowadzeń GPIO. Żeby wyświetlacz zadziałał napisałem aplikację w języku C. Należy konfigurować wykorzystane linie GPIO. Można tego dokonać wykorzystując funkcję lcdInit z następującymi parametrami:
fd3 = lcdInit (2,16,4,6,11,3,2,0,7,0,0,0,0);
Parametry to kolejno:
2 – liczba wierszy wyświetlacza
16 – liczba znaków w wierszy
4 – szerokość interfejsu danych
6 – numer wyprowadzenia wiringPi dla RS
11 – wyprowadzenie dla EN
3 – wyprowadzenie dla D0
2 – wyprowadzenie dla D1
0 – wyprowadzenie dla D2
7 – wyprowadzenie dla D3
pozostałe zera to kolejne D4 do D7. fd3 jest to wskaźnik do wyświetlacza wykorzystywany w następnych funkcjach. W konfiguracji tego wyświetlacza należy zwrócić uwagę na oznaczenia kolejnych linii GPIO. W rozdziale dotyczącym portu GPIO oznaczenia linii były zgodne z dokumentacją RasperryPi. Oznaczenia dla programowania z wykorzystaniem biblioteki wiringPi są jednak inne. Wydając polecenie gpio readall otrzymamy tabelę gdzie w kolejnych kolumnach znajdują się:
– numer wyprowadzenia dla biblioteki wiringPi
– numer wyprowadzenia zgodny z dokumentacją RasperryPi
– funkcja danego portu
– wartość logiczna na wejściu

Wynik polecenia gpio readall – rozkład wyprowadzeń GPIO Raspberry Pi

Rys. Stany logiczne na złączach P1 i P5.

Kolejne funkcje to:
lcdPosition (fd3, 0, 0);
Powyższa funkcja ustawia kursor dla wyświetlaczafd3 w wierszu 0 na pozycję 0.
lcdPuts (fd3, „ jakiś tekst „);
Ta funkcja wyświetla tekst z cudzysłowu na wyświetlaczu fd3. Powyżej przedstawione funkcje są w stanie wyświetlić tekst na wyświetlaczu.

Interfejs I2C

Do obsługi szyny I2C wykorzystano opisaną wcześniej bibliotekę wiringPi. Jej instalacja i konfiguracja została opisana w innym dokumencie – sterowanie modułem sterownika LED – RGB.
Po poprawnym połączeniu frontpanelu i wydaniu polecenia skanującego interfejs I2C
sudo i2cdetect -y 1
Powinniśmy otrzymać coś takiego:

Wynik polecenia i2cdetect – wykrywanie urządzeń na magistrali I2C

Rys. Efekt działania funkcji i2cdetect.

Interfejs GPIO dla zdalnego sterowania.

Moduł zdalnego sterowania został opisany w innym artykule.

Niebawem będzie ciąg dalszy


Opisany frontpanel powstał od schematu, przez płytkę drukowaną, po oprogramowanie obsługi. Dokładnie w takim zakresie realizujemy projekty elektroniczne dla klientów – łącznie z doborem wyświetlacza, projektem PCB i obudową.



Copyright ©2026 systemypomiarowe.pl.