Aplikacja działa po kontrolą RTOS i realizuje trzy wątki – pokazano je na rysunku 13:
- Sensor Thread. Ten wątek odczytuje dane ze wszystkich sensorów.
- BLE Thread. Ten wątek realizuje połączenie z aplikacją smartfonu poprzez Bluetooth i przesyła dane.
- Console Thread. Ten wątek periodycznie odczytuje dostępne dane z sensorów i wysyła je przez USB (emulacja UART) do konsoli, w której można je analizować.
Po kliknięciu na identyfikator modułu zostaje wyświetlone okno pokazane na rysunku 15 zawierające:
- pomiary temperatury, wilgotności i ciśnienie z czujnika BME280,
- dane z czujnika BNO055 (akcelerometr, żyroskop oraz magnetometr),
- natężeniem oświetlenia z czujnika AMS TSL25711FN,
- stan diod LED : niebieskiej i pomarańczowej z płytki modułu oraz niebieskiej z modułu BLE.
Klikając na ikony diod LED można je zdalnie, cyklicznie zaświecać i gasić. Aplikacja ma też drugi ekran, na którym są wyświetlane dane odczytywane z czujników w postaci wykresu, jak na rysunku 16. Można na nim obserwować tendencje zmian mierzonych parametrów.
W module wyświetlacza użyto kolorowej matrycy TFT o rozdzielczości 176×220 pikseli, sterowanej przez specjalizowany sterownik Ilitek ILI9225. Wybrane właściwości ILI 9225 wymieniono niżej:
- Sterowanie matrycą kolorowego wyświetlacza o rozdzielczości 175×220 pikseli.
- Wbudowana pamięć obrazu RAM.
- Interfejsy komunikacyjne: Intel 8080 z magistralą o szerokości 8, 9, 16 lub 18 bitów; Motorola 68000 z magistralą o szerokości 8, 9, 16 lub 18 bitów; szeregowy SPI.
- Funkcja adresowania obszaru okna (definiowany obszar prostokąta) w pamięci obrazu RAM.
- Możliwość programowej zmiany orientacji wyświetlanej informacji na ekranie.
- Zasilanie napięciem z zakresu 2,5…3,3 V.
- Wbudowany układ pompy ładunkowej do uzyskiwania podwyższonego napięcia zasilającego drivery sterujące pikselami matrycy.
- Programowo sterowany układ generowania poziomu napięcia zasilającego drivery.
- Układ generowania przebiegów czasowych. Źródłem sygnału zegarowego jest wbudowany oscylator RC z możliwością ustalania częstotliwości pracy przez dołączany rezystor zewnętrzny.
- Liczniki adresujące pamięć obrazu RAM.
- Układy interfejsów komunikacyjnych.
Moduły wyświetlacza z wbudowanymi sterownikami mogą komunikować się z mikrokontrolerami przez magistrale równoległe lub szeregowe. W systemach, w których jest niezbędna szybka wymiana dużych ilości danych (np. animacje graficzne) warto rozważyć stosowanie interfejsu równoległego. Jest to jednak kłopotliwe, ponieważ wymaga użycia wielu linii portów i realizacji dużej linii połączeń. W wielu wypadkach do komunikacji z wyświetlaczem wystarczy szybki interfejs szeregowy. W wyświetlaczu do modułu Aris Edge S3A3 wybrano interfejs SPI złożony z linii:
- LCD_SCLK – linia zegara taktującego przesyłaniem danych.
- LCD_CS – linia wyboru aktywnego układu na magistrali SPI.
- LCD_DC – linia sterująca przeznaczeniem zapisywanych danych. Dla DC=„L” dane są zapisywane w rejestrach sterujących, a dla DC=„H” dane są zapisywane w pamięci obrazu.
Na rysunku 19 pokazano przykład przebiegów elektrycznych na magistrali podczas zapisu rejestru sterującego daną. Jak widać, wymaga to transferu dwóch bajtów: indeksu rejestru (komendy) i następnie danej wpisywanej do rejestru zaadresowanego przez pierwszy bajt. Przebiegi sterujące dla wszystkich możliwych transferów danych można znaleźć w dokumentacji sterownika. Interfejs jest uzupełniony o linię zerowania LCD_RESET# i linię LCD_BL sterującą jasnością podświetlania panelu TFT. Linia LCD_BL jest sterowania przebiegiem PWM, jak na rysunku 20. Wyprowadzenia sygnałów magistrali sterującej SPI i sygnałów dodatkowych pokazano na rysunku 21.
Wbudowany w wyświetlacz rezystancyjny, 4-przewodowy panel dotykowy obsługuje specjalizowany sterownik SX8676. Analogowe sygnały z wyprowadzeń panelu X+, X–, Y+ i Y– są mierzone przez wbudowane przetworniki analogowo-cyfrowe. Zmierzone wartości podlegają cyfrowej obróbce i po tym procesie można je odczytywać z układu przez interfejs I2C. Na rysunku 22 pokazano fragment schematu z układem sterownika panelu, a na rysunku 23 sposób dołączenia linii interfejsu I2C i sygnałów dodatkowych do wyprowadzeń modułu wyświetlacza.
Tomasz Jabłoński, EP