Monitor nawyków

Miałem przyjemność poprowadzenia warsztatu wprowadzającego w budowanie urządzeń z wykorzystaniem Raspberry Pico i języka Micropython. Pretekstem do zajęć było skonstruowanie prostego urządzenia wspomagającego budowanie pozytywnych nawyków - wciśnięcie prawego dolnego przycisku po realizacji monitorowanej czynności wysyła informację do serwisu Pixe.la, a na ekranie wyświetla się kolorowy kwadrat. Im więcej razy danego dnia się powtórzy czynność tym ciemniejszy kolor kwadratu. Nawigując z pomocą joysticka możliwe jest sprawdzenia statusu z ostatnich 5 dni.

Lista komponentów potrzebnych do realizacji

Narzędzia:

Przygotowanie środowiska dla Rasberry Pico i Micropython-a

  1. Pobierz firmware z micropythonem (plik u2f)

https://micropython.org/download/RPI_PICO2_W/

  1. Wciśnij i przytrzymaj przycisk na pico i podłącz go do komputera - zawartość pico powinna pokazać się jako nowy dysk
  2. Skopiuj plik .u2f na dysk pico - urządzenie powinno się zrestartować (zniknie dysk). Od tego momentu jest gotowe na programowanie z pomocą Micropython-a.
  3. Zainstaluj Thonny
  4. Uruchom Thonny. W View zaznacz wyświetlanie panelu z plikami (“Files” - powinien być zaznaczony “ptaszkiem”)

  1. Wejdź w Tools -> Options -> Interpreter. Z rozwijanej listy wybierz “MicroPython (Raspberry Pi Pico)”

  1. Edytor powinien teraz automatycznie wykryć podpięte Pico - będzie widoczne w prawym dolnym rogu edytora.

  1. Po wybraniu Pico w panelu z plikami powinno pokazać się to urządzenie (zawartość na początku może być pusta), a w sekcji “Shell” powinien pokazać się ekran powitalny interpretera MicroPython.

Uruchomienie wyświetlacza Waveshare 19653

  1. Połącz Pico z ekranem uważając na orientację pinów (ułatwia to oznaczenie na ekranie pokazujące po której stronie powinien znaleźć się port usb pico). Jeśli dysponujesz ekspanderem i jest ci wygodniej z nim pracować wepnij Pico i ekran w ekspander.

  1. Pobierz oprogramowanie od Waveshare

https://files.waveshare.com/wiki/common/Pico_code.7z

  1. Rozpakuj pobrane archwium .7z
  2. Odszukaj katalog Pyhon/Pico-LCD-0.96
  3. Otwórz zawarty w nim plik pico-lcd-0.96.py w Thonny. Zawiera on podstawowe funkcje do obsługi ekranu i proste demo.

  1. Uruchom ten kod z pomocą zielonego przycisku “Play”. Powinno to uruchomić to program demonstacyjny - wyświetli on ekran powitalny, następnie siatkę kwadratów po której możemy poruszać się z pomocą joysticka (z kolei przycisk A umożliwi zamalowanie kwadratu, B wyczyści ekran).

  1. Program można zatrzymać czerwonym przyciskiem “Stop”

  1. Skopiuj zawartość tego pliku pico-lcd-0.96.py i wklej go do pliku LCD_0inch96.py na urządzeniu (trzeba go utworzyć)

Pixela

Pixela to serwis na którym będzie przechowywany graf z danymi - to z nim będzie się łączyć monitor nawyków.

https://pixe.la/

  1. Załóż konto w Pixe.la
curl -X POST https://pixe.la/v1/users -d '{"token":<HASŁO>, "username":<NAZWA_UŻYTKOWNIKA>, "agreeTermsOfService":"yes", "notMinor":"yes"}'

Podmień to co jest w sekcji token i username na własne wartości (np. "token": "tomojesuperhaslo").

W wyniku tej operacji powinien się wyświetlić komunikat w stylu:

{"message":"Success.","isSuccess":true}
  1. Stwórz graf
curl -X POST https://pixe.la/v1/users/<NAZWA_UŻYTKOWNIKA>/graphs -H 'X-USER-TOKEN:<HASŁO>' -d '{"id":"<NAZWA_GRAFU>","name":"<NAZWA_GRAFU>","unit":"commit","type":"int","color":"shibafu"}'
  1. Graf możesz obejrzeć poprzez stronę

https://pixe.la/v1/users/<NAZWA_UŻYTKOWNIKA>/graphs/<NAZWA_GRAFU>

  1. Wartości można wstawiać poprzez:
curl -X POST https://pixe.la/v1/users/<NAZWA_UŻYTKOWNIKA>/graphs/<NAZWA_GRAFU> -H 'X-USER-TOKEN:<HASŁO>' -d '{"date":"<YYYYMMDD>","quantity":"1"}'
  1. Odczytać wartość z konkretnego dnia:
curl -X GET https://pixe.la/v1/users/<NAZWA_UŻYTKOWNIKA>/graphs/<NAZWA_GRAFU>/<YYYYMMDD> -H 'X-USER-TOKEN:<HASŁO>'

Wgranie kodu do monitora nawyków

  1. Pobierz kod monitora:

https://github.com/Pshemas/habit_tracker

  1. Przenieś wszystkie pliki na Pico
  2. Utwórz plik .pixela i uzupełnij go danymi do Twojego grafu w serwisie Pixela. Zawartość powinna przestrzegać schematu:
PUT_PIXELA_USER_TOKEN_HERE
PUT_PIXELA_USERNAME_HERE
https://pixe.la/v1/users
PUT_PIXELA_GRAPH_NAME_HERE
  1. Utwórz plik .wifi i wprowadź w nim dane sieci wifi do którego urządzenie ma mieć dostęp.
PUT_WIFI_NAME_HERE
PUT_WIFI_PASSWORD_HERE

W tym momencie urządzenie powinno już działać po wystartowaniu.

Montaż

  1. Wydrukuj obudowę. Pliki z modelami są w podanym wyżej repozytorium na Github-ie.
  2. Użyj lutownicy aby wtopić wkładki M3 w otwory w górnej części obudowy:

Wkładki powinny być krótkie o zewnętrznej średnicy 4.2mm.

  1. Wklej małe przyciski na górną część obudowy.
  2. Pico połączone z ekranem umieść w dolnej części obudowy.
  3. Nałóż nakładkę na joystick.
  4. Nałóż górną część obudowy i skręć całość śrubami M3 12mm.

… zrobione :) .

Użytkowanie

Nawigacja po kwadratach odbywa się z pomocą joysticka. Górny prawy przycisk służy do odświeżenia danych (synchronizacji z serwerem Pixela), dolny do dodania +1 w dniu wciśnięcia przycisku.

W górnej części ekranu można zobaczyć wyniki aktualnie podświetlonego kwadratu, w dolnym status.

Modyfikacje

Kod do tej aplikacji nie jest “piękny”. Ma też celowo zostawione pewne “mankamenty” - do wyeliminowania przez uczestników warsztatów. Z rzeczy, które można zrobić:

Obrazek(-ki):

Joonas Sild, @Unsplash