Wstęp

Wiele firm bierze udział w wyścigu o klienta. W ostatnich czasach popularne stały się inteligentne zegarki zwane “smartwatchami”. Oprócz dużych firm, na rynek weszły także te mniejsze, oferując nam sprzęt o różnych parametrach. Najdroższe produkty dysponują szybkim procesorem, ekranem dotykowym o dobrych parametrach, a także innymi dodatkami.
Jednak nie każdego stać na taki gadżet, a kupowanie tych najtańszych wiąże się zazwyczaj z problemami wynikającymi z niedopracowanego oprogramowania i z braku wsparcia ze strony producenta.

Istnieje jednak metoda na wejście w posiadanie prostego smartwatcha, a nazywa się ona “zrób to sam”. Zgadza się, wystarczy nam kilka elementów, wśród których znajdzie się Arduino, dzięki którym zbudujemy naszego “Retro Watcha”.

Retro Watch jest projektem open sourcowym bazującym na Arduino i Androidzie. Poniższy tekst będzie opisywał poszczególne elementy i kolejne kroki dzięki którym każdy z was będzie mógł się stać posiadaczem takiego zegarka.

Ogólna struktura

RetroWatch jest prostym system bazującym na platformie Arduino, która jest łatwa w obsłudze i często wykorzystywana przez projektantów, hobbystów, a także użytkowników Androida. Poniżej przedstawiono structure naszego zegarka.

Wyobraźce sobie mały komputer, który nosicie na swoim nadgarstku. Arduino jest w tym przypadku jest mikrokontrolerem i pamięcią, a jedyną metodą wprowadzania jest: jeden przycisk. Bluetooth odpowiedzialny jest za komunikację pomiędzy zegarkiem, a Androidem, natomiast bateria będzie zasilać nasz zegarek. W dalszej części tekstu znajdziecie aplikację przeznaczoną na urządzenia z Androidem. Aplikacja, będzie również odpowiedzialna za przetwarzanie danych, ponieważ Arduino ma ograniczone zasoby.

Przygotowanie zegarka

Pierwszym krokiem będzie przygotowanie poszczególnych modułów, które ostatecznie zostaną połączone i stworzą nam zegarek. Dobierając elementy należy pamiętać o ich rozmiarze, w końcu całość chcemy nosić na ręce. W sieci jest dostępnych bardzo wiele elementów, ale my użyliśmy tych najbardziej popularnych i łatwo dostępnych. Oczywiście nic nie stoi na przeszkodzie, aby poszczególne moduły zamienić, ponieważ kod źródłowy jest udostępniony.

Poszczególne elementy

Arduino

Dostępnych jest wiele płytek, jednak ze względu na rozmiary wybór padł na wersje Arduino Pro Mini. Mówiąc generalnie wersja mini, to nic innego jak Uno R3, tylko w mniejszym formacie. Należy pamiętać, iż dostępne są dwie wersje Pro Mini- 5v i 3.3v. Do naszego projektu została użyta wersja na 3.3v. Decyzja o użyciu tej wersji została podjęta, ze względu na moduł Bluetooth, który działa na 3.3v oraz ze względu na możliwość zasilania naszego zegarka akumulatorkiem LiPol (3.7v). Kolejną różnicą pomiędzy Pro Mini jest szybkość taktowania zegara. Wersja na niższe napięcie posiada zegar 8MHz, natomiast 5 woltowa 16MHz. Dla zegarka 8MHz w zupełności wystarczy.

Największą różnicą pomiędzy Pro Mini, a Uno R3 jest brak USB. W celu wgrania programu do Pro Mini, albo musimy wykorzystać UNO w roli programatora, albo jeśli nie posiadamy UNO to należy skorzystać z kabelka FTDI.

Bluetooth

W tym przypadku użyty został najtańszy model Bluetootha, wersja HC-06. Działa on na napięciu 3.3v. Wersja na płytce uruchomieniowej ma stablizator napięcia, diodę LED informującą o stanie pracy, a także przycisk reset. W przypadku zegarka skorzystaliśmy z gołej płytki HC-06, dzięki czemu oszczędziliśmy miejsce.

Wyświetlacz

Chyba najważniejsza rzecz, która będzie nas informować o wszelkich powiadomieniach. Na rynku dostępnych jest wiele wyświetlaczy, jednak dla uzyskania najlepszego obrazu warto jest wybrać wyświetlacz OLED. Jeżeli chodzi o rozmiar to w tym przykładzie została uzyta wersja o przekątnej 0.96” z interfejsem I2C. Zaletą jak i wadą jest biblioteka, która umożliwia rysowanie kształtów i figur, jednak wymaga sporej pamięci RAM.

Akumulator

Jedyną opcją zasilenia naszego zegarka jest użycie akumulatora LiPol. W zależności od zastosowanej obudowy, będzie można użyć akumulatorów o różnej pojemności. Dobrym wyjściem jest użycie akumulatora o pojemności do 100mAh, ze względu na rozmiary będzie pasować, jednak jego mała pojemność będzie rzutowała na czas pracy. Należy również pamiętać, że w przypadku spadku zasilania poniżej wartości krytycznej, Arduino się nie uruchomi, a akumulator można zniszczyć. Dlatego też, warto zastanowić się nad zastosowaniem akumulatorów z zabezpieczeniem przed nadmiernym rozładowaniem i przeładowaniem.

Inne

Oczywiście jak w każdym projekcie są inne niezbędne elementy, których będziecie używali. Podstawowym narzędziem będzie lutownica, cyna, kalafonia, przewody, druciki, przełącznik wraz z opornikiem 10k ohm.

Jak to złożyć w całość? Autor projektu proponuje poniższe rozwiązanie:

Przygotowanie Androida

Aplikacja RetroWatch została przygotowana pod Androida 4.3, ponieważ od tej wersji możliwe jest wysyłanie powiadomień z różnych aplikacji. Dla osób nie używających Androida w wersji 4.3 została przygotowana aplikacja nie posiadająca funkcji informującej o powiadomieniach. Źródła można pobrać z Github’a, a gotowe aplikacje są dostępne w sklepie Google Play. Należy wyszukać RetroWatch lub RetroWatch LE. Wersja LE przeznaczona jest na urządzenia z Androidem 4.0+ i ma wyłączoną usługę powiadomień.

Montaż zegarka

Dla osób posiadających doświadczenie z Arduino i przy składaniu układów elektronicznych można przejść od razu do montażu zegarka. Dla osób początkujących wskazane jest złożenie układu z użyciem np. Arduino Uno, a następnie ostateczny montaż z użyciem części zegarka.

Podłączenie modułu Bluetooth

W internecie można znaleźć wiele stron poświęconych podłączeniu modułów bluetooth do Arduino. Każdy z budujących może zmienić nazwę oraz hasło do modułu, tak żeby jego zegarek miał oryginalną nazwę. W przypadku powyższego projektu zastosowano poniższe podłączenie:

BT Arduino
Vcc 3.3v
GND GND
TX RX
RX TX

Z doniesień użytkowników wynika, że te moduły są bardzo czułe na zakłócenia, dlatego proszę pamiętać o dobrym zaizolowaniu ich, aby nie stykały się z resztą zegarka.

Podłączenie wyświetlacza OLED

Wyświetlacz użyty w projekcie komunikuje się z Arduino przez port I2C. Standardowe podłączenie można znaleźć poniżej i wystarczy z niego skorzystać, aby uruchomić wyświetlacz.

OLED Arduino
Vcc Vcc
GND GND
SDA A4 (analog 4)
SCL A5 (analog 5)

Jeśli jednak zakupiliście wyświetlacz z interfejsem SPI, wystarczy przejść na stronę Adafruit.com, gdzie znajduje się tutorial pokazujący podłączenie oraz obsługę takiego wyświetlacza. Co więcej będziecie musieli zmodyfikować kod zegarka, aby współpracował z wyświetlaczem SPI (zmianie ulega tylko część odpowiedzialna za inicjalizację wyświetlacza).

Podłączenie przycisku do Arduino

W przypadku przycisku pozostaje pełna dowolność. Można użyć wersji SMD lub przewlekanej. Należy tylko pamiętać, aby przycisk nie był za duży. W końcu całość chcemy nosić na ręku. Przycisk łączymy z użyciem opornika 10kohm do cyfrowego pinu zdefiniowanego jako “buttonPin” w kodzie programu. Przykładowo autor użył do tego celu pinu 5.

Podłączenie akumulatora

Baterię/akumulator podłączamy do RAW (+) oraz GND (-). Autor zdecydował się na użycie akumulatora Lipo, co dało mu możliwość ładowania go. W tym celu wyprowadził dwa przewody po za zegarek. Należy pamiętać, iż decydując się na podłączenie zewnętrznego źródła zasilania, plus zawsze należy łączyć z wejściem RAW. Inaczej można uszkodzić płytkę.

Podłączenie Arduino z modułem UART

W celu zaprogramowania Arduino należy je połączyć z komputerem przy użyciu konwertera USB serial. Podłączenie sprowadza się do krzyżowego połączenia RX-TX.

USB Serial
Arduino
3.3v Vcc
GND GND
RX
TX
TX RX

Sprawdzenie całości

Nadszedł czas na sprawdzenie całości. Jeśli podłączymy moduł FTDI (USB to UART, w lewym górnym rogu zdjęcia) do komputera PC i zaświeci się dioda informująca o zasilaniu układu możemy przejść do wgrywania programu. Poniższe zdjęcia pokazują kolejne kroki, prowadzące do złożenia zegarka w całość.

Kompilacja programu i jego wgranie

Pliki źródłowe można pobrać z GitHub’a.

GitHub – strona projektu RetroWatch

Wystarczy klinąć na “Download ZIP”, następnie rozpakować i kod źródłowy będzie prawie gotowy do wgrania.

Instalacja sterowników graficznych

W celu poprawnego działania, wyświetlacz potrzebuje biblioteki umożliwiającej rysowanie bitmap, kształtów oraz czcionek. W tym celu należy pobrać ze strony Adafruit bibliotekę Adafruit_SSD1306, Adafruit-GFX-Library. Tak jak poprzednio klikamy na “download ZIP”, rozpakujemy, a zawartość folderu przenosimy do katalogu Arduino/libraries.

Istnieje pewien problem, polegający na tym, że biblioteki Adafruit’a wchodzą w konflikt z biblioteką Robot_xxx. W celu poprawnej kompilacji kodu należy wykonać kopie biblioteki Robot_xxx, a następnie usunąć ją z folderu “libraries”.

Bitmapy

Należy skopiować plik zawierający bitmapy użyte w projekcie. W tym celu kopiujemy bitmap.h do folderu RetroWatchArduino znajdującego się w folderze Arduino/hardware/libraries/RetroWatch. Jeśli takiego folderu nie znaleźliście wystarczy go stworzyć.

Modyfikacja źródła

W celu wprowadzenia modyfikacji do programu należy otworzyć RetroWtchArduino.ino. Następnie szukamy pinów, do których podłączony jest moduł bluetooth oraz przycisk. Jeśli podłączyliśmy tak samo jak autor nie musimy nic zmieniać. Jeśli nie, wystarczy zmienić piny w programie.

Reszty programu nie warto zmieniać, ponieważ mogą później się pojawić problemy z kompilacją kodu.

Kompilacja

Jeśli robiliśmy wszystko zgodnie z instrukcjami wgranie powinno przebiec bez problemów. Gdyby jednak z jakiegoś powodu IDE wyrzuciło błąd, należy się zapoznać co było przyczyną braku możliwości skompilowania i spróbować usunąć go. Po poprawnym skompilowaniu można nacisnąć przycisk “Upload” i czekać na wgranie kodu do Arduino. Pamiętajcie, aby nacisnąć przycisk reset przed rozpoczęciem wgrywania programu. Inaczej jest spora szansa na to, że program wam wyrzuci błąd.

Jeżeli wszystko zrobiliśmy dobrze, po podłączeniu zasilania powinno się pojawić logo RetroWatch oraz Adafruita (użyty został OLED od Adafruita). Jeżeli nic się nie wyświetliło należy zresetować Arduino, a jeśli po resecie nadal nic się nie wyświetla, trzeba sprawdzić połączenia, może gdzieś się coś odłączyło, albo jest zimny lut. Po przejściu przez ekran powitalny powinien się pojawić zegarek z godziną “00:00”. Ten moment oznacza, że wszystko jest ok.

Teraz czas na sprawdzenie łączności bluetooth. W telefonie przechodzimy do ustawień i włączamy bluetooth. Telefon po chwili powinien wyszukać nasz zegarek. Jeśli się tak stało możemy przejść do parowania naszego urządzenia (standardowe hasło to 1234).

Aplikacja na Androida

Źródła programu są dostępne na GitHubie. Jeśli ktoś zechce zmienić bądź coś dodać do programu, autor nie ma nic przeciwko. Tak jak wspomniane było wcześnie, w Google Play są dostępne dwie aplikacje. Jedna, RetroWatch przeznaczona jest na telefony/tablety z Androidem 4.3+ oraz druga-RetroWatch LE na urządzenia z Androidem 4.0+.

Kiedy połączyliśmy się z naszym zegarkiem, odpalamy aplikację i wybieramy drugie menu (Notification access) i zezwalamy na dostęp do powiadomień (Notification). Następnie z menu wybieramy “Choose device” i szukamy naszego zegarka. Jeśli wszystko będzie dobrze, na ekranie telefonu powinien się pojawić napis “connected”. Po połączeniu wybieramy z menu “data transfer to watch” i na zegarku powinna się pojawić aktualna godzina.

Aplikacja ma pewne ograniczenia, jednak autor postarał się, aby do zegarka można było wysłać różne informacje. Największą zaletą jest filtracja wiadomości wysyłanych do zegarka. Polecamy zapoznanie się z każdą z czterech zakładek w programie, dzięki czemu będziecie wiedzieć co możecie wysłać do zegarka.

Lista wiadomości (Message list) : Wiadomości są informacjami zebranymi przez aplikację. Każda wiadomość jest standardowo nieaktywna z wyjątkiem awaryjnych wiadomości. Nieaktywne pozycje nie są wysyłane do zegarka. Status wiadomości można zmienić dotykając je.

Filtry (Filters): Aplikacja RetroWatch kontroluje każdą informację przy użyciu filtrowania. W tej zakładce można dodawać, edytować czy usuwać filtry. Można np. usunąć wiadomości, które nie są wysyłane.

Zakładka RSS (RSS): Każdy może dodać i odczytywać kanały RSS. Przykładowo jeśli dodamy kanał pogodowy można zmodyfikować filtr, tak, aby do zegarka wysyłany był tylko alarm o zjawiskach pogodowych. W sieci dostępnych jest wiele kanałów RSS, także każdy może znaleźć coś dla siebie.

Kontrola zegarka (Watch control): W tej zakładce można zmienić styl zegarka i aplikacji. Jeśli dodacie konto Gmail w tej zakładce, nieprzeczytane wiadomości zostaną dołączone do listy wiadomości, które później zostaną przesłane do zegarka. Użytkownik może również zmienić styl zegarka i format wyświetlanej godziny.

Aplikacja RetroWatch zbiera trzy rodzaje informacji:

Powiadomienia (Notification): Są to powiadomienia, które pojawiają się na pasku w Androidzie. Aplikacja używa usługi systemowej do zbierania informacji o powiadomieniach (opcja dostępna tylko w Androidzie 4.3+). W przypadku niższej wersji Androida należy pobrać aplikacje RetroWatch LE. Wersja LE nie posiada funkcji zbierania informacji o powiadomieniach.

Informacje systemowe (System info): Informacje takiej jak, poziom naładowania akumulatora, siła sygnału RF(LTE,3G), status WiFi. Jeśli zarejestrujecie konto Gmail, aplikacja poinformuje was o liczbie nieprzeczytanych wiadomości e-mail.

Kanały RSS (RSS): Po wpisaniu adresu URL, aplikacja co jakiś czas odczytuje dane z kanału RSS.

RetroWatch

Urządzenie zmienia tryby w kółko według poniższego schematu.

Ekran początkowy: Moment w którym wyświetlane jest logo podczas uruchomienia zegarka.

Zegarek: Wyświetla godzinę. Użytkownik może zmienić styl zegarka poprzez aplikację na Androida. Obecnie można wybrać tryb analogowy, cyfrowy lub mieszany. Jeśli użytkownik przyciśnie przycisk wyświetlacz przejdzie do wiadomości awaryjnych. W przypadku kiedy w ciągu 10min zegarek nie odbierze żadnych danych przechodzi w tryb bezczynności.

Awaryjne wiadomości: Wyświetlane są po naciśnięciu przycisku, bądź kiedy awaryjna wiadomość zostanie zaktualizowana. Jeśli użytkownik naciśnie ponownie przycisk lub minie 10s kolejna wiadomość zostanie wyświetlona.

Normalne wiadomości: Normalne wiadomości są wyświetlane po zakończeniu wiadomości awaryjnych lub po naciśnięciu przycisku. Kolejna wiadomość będzie pokazana po naciśnięciu przycisku lub po 5s. Kiedy ostatnia wiadomość zostanie wyświetlona, na ekranie zostaje wyświetlony zegar.

Tryb bezczynności: Tryb bezczynności jest aktywowany kiedy przez 10min nie są wysyłane żadne dane do zegarka. Na wyświetlaczu pokazana jest godzina (hh:mm) oraz ikona. Okres aktualizacji zostaje zmieniony, dzięki czemu urządzenie oszczędza energię. Jeśli użytkownik naciśnie przycisk lub dostanie nową wiadomość wyświetlacz przechodzi do trybu zegarka.

Specyfikacja RetroWatch

Obudowa

Kiedy jesteśmy pewni, że wszystko działa poprawnie, pozostaje nam w jakiś sposób wykonać obudowę, tak żeby mieć możliwość noszenia zegarka na ręku. Autor pozostawia wszystkim pełną dowolność w wykonaniu obudowy. Poniżej, jak autor poradził sobie z zapakowaniem całości w zegarek.

Przydatne linki

Filmik demonstrujący działanie zegarka

Demo