7 maja 2026

Smartwatch motocyklowy


Zegarek na motocyklu jest bardzo przydatnym urządzeniem. Korzystając z tego środka transportu nie można w prosty sposób sprawdzić czasu spoglądając na zegarek naręczny czy telefon. 8 lat temu zbudowałem do swojego motocykla zegarek, który posiadał dodatkowo pomiar napięcia akumulatora i temperatury powietrza. Tamten projekt, dopasowany wizualnie do licznika motocykla, można zobaczyć tutaj:


Od ponad roku mam nowy motocykl. Jego licznik ma co prawda wbudowany zegarek, ale korzystanie z niego jest niewygodne. Dlatego postanowiłem zbudować nowy zegarek, dopasowany do konsoli nowego pojazdu. Zegarek ten miał mieć sprawdzone już i przydatne funkcje:
  • wyświetlanie bieżącego czasu,
  • wyświetlanie napięcia akumulatora,
  • wyświetlanie temperatury powietrza,
  • alarm o niskiej temperaturze (ślisko),
  • alarm o niskim napięciu (brak ładowania).
Plansza z alarmu o niskim napięciu

Postanowiłem jednak znacznie poszerzyć funkcjonalność nowego urządzenia o obsługę telefonu. Dla niezorientowanych - korzystanie z telefonu na motocyklu jest wybitnie niewygodne. Problemu nie stanowi rozmowa bo do tego używa się wbudowanego w kask zestawu słuchawkowego lub interkomu. Natomiast wyzwaniem jest odebranie/odrzucenie rozmowy czy inicjowanie nowej. Niektórzy motocykliści montują telefon do uchwytu na kierownicy lub baku lecz obsługa dotykowego ekranu w rękawicach to już wyższa ekwilibrystyka. Postanowiłem podejść do tematu inaczej.

Interfejs użytkownika

W moim zegarku do prezentacji informacji zastosowałem okrągły, kolorowy wyświetlacz graficzny, stylistycznie dopasowany do okrągłego licznika głównego. Na ekranie głównym, w centralnym miejscu wyświetlany jest aktualny czas. Powyżej z lewej strony wyświetlana jest temperatura a z prawej napięcie akumulatora. Powyżej wyświetlana jest ikona prezentująca stan baterii telefonu. Na każdym innym ekranie część centralna ekranu wyświetla informacje kontekstowe ale czas pojawia się w górnej jego części. Do obsługi urządzenia służą dwa fizyczne przyciski umieszczone na kierownicy - dostępne kciukiem, dzięki czemu do obsługi nie potrzeba odrywać rąk od kierownicy. Mój smartwatch łączy się za pośrednictwem Bluetooth Low Energy ze smartfonem, dzięki czemu zapewnia dodatkowe przydatne funkcje:
  • odbieranie/odrzucanie przychodzących połączeń telefonicznych,
  • rozłączanie trwającej rozmowy,
  • inicjowanie połączeń poprzez wybór spośród 4 ulubionych/ostatnich numerów telefonów,
  • odczyt przychodzących wiadomości sms/komunikator i nagłówków e-mail.
  • informuje o stanie baterii telefonu i zestawu słuchawkowego
Dodatkowe przyciskami (czerwony i zielony) na kierownicy

Obsługa polega na dłuższym lub krótszym naciskaniu przycisków a ikonki na wyświetlaczu podpowiadają co i jak. W dolnej części ekranu wyświetlają się elementy symbolizujące przyciski i funkcje przez nie obsługiwane. Każdy z dwu przycisków może mieć dwie funkcje dostępne przez krótkie naciśniecie (mała ikonka) i duże naciśnięcie (duża ikonka).

Dla przykładu na ekranie głównym:
  • czerwony krótko - wiadomości tekstowe (liczba określa ile ich czeka na przeczytanie),
  • czerwony długo - ekran nawigacji,
  • zielony krótko - lista ulubionych kontaktów telefonicznych,
  • zielony długo - lista ostatnich połączeń telefonicznych.
Dla przykładu na liście połączeń:
  • czerwony krótko - kursor do góry,
  • zielony krótko - kursor do dołu,
  • czerwony długo - wyjdź do ekranu głównego,
  • zielony długo - wybierz numer.
W trakcie przychodzącego połączenia:
  • zielony - odbierz połączenie,
  • czerwony - odrzuć i powróć do ekranu głównego.
Jeśli jest tylko duża ikonka w obszarze podpowiedzi czas naciśnięcia jest nieistotny.


    

Zaimplementowałem też rozbudowane menu ustawień, które jest dostępne z ekranu głównego - wyjątkowo poprzez jednoczesne naciśnięcie obu przycisków. W menu tym można m.in.:
  • ustawić czas (czas aktualizuje się też z automatycznie ze smartfona),
  • ustawić progi alarmów (napięcie/temperatura),
  • aktywować przypomnienie o braku połączenia z zestawem słuchawkowym.

    


Nawigacja

Dodatkową extra przydatną funkcją jest nawigacja. Telefon można mieć w kieszeni a na ekranie smartwatcha będą się wyświetlać wskazówki nawigacyjne. Nawigację Google należy nastawić i uruchomić na telefonie przed jazdą. Na ekranie wyświetlane są wskazówki nawigacyjne w formie ikonki pod którą wyświetla się dystans. Obok jest wyświetlana krótka wskazówka tekstowa a pod nią informacja ile zostało czasu / dystansu do celu. Jednocześnie na słuchawkach dostajemy wskazówki głosowe nawigacji. Działanie nawigacji można też zakończyć w trakcie. Ale aby ją ustawić lub ponownie aktywować trzeba już użyć ekranu smartfona.

    
Konstrukcja

W konstrukcji urządzenia wykorzystałem 3 gotowe moduły:
  • okrągły wyświetlacz LCD TFT 240x240 sterowany poprzez interfejs SPI ze sterownikiem GC9A01,
  • płytkę rozwojową ESP32-S3 SuperMini,
  • moduł przetwornicy/ładowarki USB (12/24>>5V).
Schemat urządzenia

Aby połączyć te moduły w zwartą całość zaprojektowałem płytkę drukowaną (a raczej 3 płytki), która została wykonana w chińskiej fabryce. Po pocięciu trzy płytki tworzą razem pudełkową konstrukcję w której na górze znajduje się wyświetlacz. Na jednej ściance znajduje się zasilacz/ładowarka a na drugiej moduł procesora ESP32. Dodatkowo na płytce procesora umieściłem też zegar czasu rzeczywistego PCF8563 wraz z bateryjką podtrzymującą oraz czujnik temperatury DS18B20. Na płytce tej znajduje się też 5-pinowe gniazdo służące do podłączenia zasilania (12V z instalacji motocykla "po stacyjce") oraz przyłącze modułu przycisków (zamontowanego dogodnie na kierownicy).

Płytka urządzenia (przed podziałem na 3 części) 
Te trzy płytki są ze sobą połączone (zlutowane na stałe) za pośrednictwem kątowych złącz pinowych. Dodatkowe połączenie stanowi 4 płytka z miedziowanego laminatu, która jest ścianką dolną i jednocześnie pokrywą.

   

Urządzenie zostało zaprojektowane tak, aby pasowało do okrągłej obudowy wykonanej z czarnego plastikowego dekla od farby w sprayu. W dekielku tym wycięto okrągły otwór/okienko w który wkleiłem od środka szybkę wykonaną z pleksi. Użyłem elastycznego, czarnego kleju do naprawy GSM. Obudowa ma przykręcony metalowy wspornik który służy do przymocowania smartwatcha do licznika motocykla. W dolnym deklu przez otwory dostępne jest nie tylko gniazdo przyłączeniowe do zasilania i przycisków ale również gniazdo USB modułu zasilacza, które można wykorzystać do zasilania np. kamerki sportowej zamontowanej na kierownicy (włącza się wtedy automatycznie po przekręceniu stacyjki - jak rejestrator w aucie).

  

  

Oprogramowanie

Oprogramowanie składa się z dwóch części. Zasadniczy program na procesor ESP32-S3 został napisany w środowisku Arduino z wykorzystaniem dedykowanych bibliotek:
  • "RTClib.h" - Real Time Clock PCF8563
  • <OneWire.h> - One Wire Bus
  • <DallasTemperature.h> - DS18B20 temperature sensor
  • <BLEDevice.h> -BLE device lib
  • <BLEUtils.h> - BLE utils lib
  • <BLEServer.h> - BLE server lib
  • "SPI.h" - SPI Bus
  • "Adafruit_GFX.h" - Adafruit Display lib
  • "Adafruit_GC9A01A.h" - Adafruit GC9A01A lib
Dużo czasu zajęło testowanie oprogramowania nawigacji w warunkach bojowych, urządzenie było jeszcze w fazie prototypu zbudowanego na płytce stykowej.


Program musi jednocześnie obsługiwać:
  • wyświetlacz (interfejs ISP)
  • zegar czasu rzeczywistego PCF8563 (interfejs I2C)
  • czujnik temperatury DS18B20 (interfejs 1-wire)
  • pomiar napięcia pokładowego 12V (ADC poprzez dzielnik napięcia)
  • klawiaturę (dwa przyciski na osobnych pinach)
  • komunikację Bluetooth Low Energy
Obsługa wyświetlacza jest dość prosta, chociaż zaprojektowanie przejrzystego i funkcjonalnego interfejsu użytkownika zajęło trochę czasu. Prezentowane informacje są stylistycznie i kolorystycznie dopasowane do licznika motocykla. Wspomogłem się gotowymi symbolami graficznymi oraz cyferkami, które przygotowałem w programie graficznym i wkompilowałem do kodu. Jestem zadowolony z uzyskanego efektu. Wisienką na torcie jest animacja z logo, która wyświetla się po uruchomieniu systemu :-)


Sporym wyzwaniem była komunikacja z telefonem. Do tego powstała osobna apka na smartfona, której napisanie zleciłem znajomemu programiście urządzeń mobilnych. Niestety dopracowanie szczegółów i ustabilizowanie komunikacji zajęło najwięcej czasu. Komunikacja BT-LE polega bowiem na wystawianiu ograniczonych ilościowo i czasowo porcji danych. Sporym wyzwaniem było przysyłanie ze smartfona ikonek nawigacyjnych - opracowany został specjalny autorski algorytm kompresji, który grafiki 96x96 (1152 bajtów) kompresuje kilkukrotnie.

Testy urządzenia wykazały jego ogromną użyteczność. Nie trzeba się zatrzymywać aby sprawdzić: czy sms który nadszedł jest istotny, czy odbierać przychodzące połączenie. Do tego nawigacja, która nie jest aż tak wygodna jak mapa, ale jest naprawdę użyteczna. Niestety prace nad urządzeniem trwały z dużymi przerwami ponad rok. Koszty wykonania nie były wysokie ale wymagały sporej części pracy mechanicznych. Obecnie zabrałbym się za to inaczej są już bowiem dostępne gotowe i przystępne cenowo moduły wyświetlacza z wbudowanym procesorem. Zastosowanie takiego gotowego modułu zminimalizowało by prace mechaniczne a w pracach programistycznych można się znacznie wspomóc AI - ja większość kodu pisałem samodzielnie...

Na temat tej konstrukcji rozpocząłem wątek na forum DIY portalu elektroda.pl


Brak komentarzy:

Prześlij komentarz