Badger2040
Po jakimś czasie wracam do elektroniki i może też do pisania. Powrót rozpocząłem od produktu firmy Pimoroni, a mianowicie od badger2040. Jest to bardzo ciekawy kawałek elektroniki wyposażony w mikroprocesor RaspberryPi RP2040 wraz z wyświetlaczem e-ink 296 x 128 pikseli. Całość wykonana jest w formie ciekawej zawieszki na szyję, która może być wykorzystana jako gadżet na warsztatach lub targach. Osobiście chciałem poznać możliwości i sprawdzić czy jestem w stanie wykorzystać go w jakimś ciekawym zastosowaniu.
MikroPython
Ze strony producenta możemy pobrać gotowy obraz z instalacją mikroPythona. Obraz ten wyposażony jest w BadgerOS oraz kilka przykładowych aplikacji, na których bazowałem się w czasie moich eksperymentów. Do pracy z mikroPythonem konieczna jest również instalacja Thonny IDE, dzięki któremu możemy się połączyć z naszym Badgerem i dokonywać zmian w plikach źródłowych.

MikroPython
MikroPython jak i Python są dla mnie zupełną nowością. Pracuję przy wysokopoziomowym C#, gdzie mam już wyrobiony jakiś styl pisania kodu, niestety nie jest to przenośne. Python wymaga dużo więcej kontroli nad formatowaniem niż C#. Jest to zarówno zaleta jak i “wada”. Nie byłem w stanie szybko przestawić się do wykorzystywania tabulatorów jako wyróżników, gdzie kończą się bloki kodu (tak klamerki dla mnie są przyjemniejsze a przynajmniej bardziej naturalne). Poza tym składnia jest nico inna co mocno komplikowało mi życie przy próbach pisania z pamięci co chciałem osiągnąć. Ostatecznie udało mi się osiągnąć swój cel. Choć nie jest to z pewnością piękne i osoba w pełni obeznana z Pythonem wytknie mi masę błędów, jednak nie od razu Rzym zbudowano.
Wyświetlacz e-ink
Obsługa wyświetlacza w Badger2040 i mikroPythonie jest niezwykle prosta. Mamy dostępnych kilka czcionek i podstawowych funkcji graficznych jak rysowanie linii/prostokąta czy też wyświetlenia obrazka. Dla mnie wraz z tą prostotą przyszły problemy. Jak zaprojektować interface użytkownika tak aby oczy nie krwawiły, kiedy się na niego patrzy. Dodając dosyć spory czas odświeżenia ekranu musiałem się nieźle nakombinować jak to wszystko poskładać. Ostatecznie zdecydowałem, że nie będzie klasycznego odliczania czasu co sekundę (przynajmniej na ekranie). A będzie to pasek postępu (tu wykorzystałem częściowy update ekranu) ekran odświeżam co zmianę wielkości paska.
Podsumowanie
Nad tym projektem spędziłem ostatnie 3 tygodnie. Nie liczyłem czasu ale nie było go jakoś specjalnie dużo pewnie wyszło z 1-2h tygodniowo głównie w weekendowy wieczór. Osiągnąłem mój cel i jestem z niego zadowolony. Badger2040 działa tak jak bym tego chciał. Pierwsze starcie z Pythonem za mną. Nie wiem czy się przekonam do tego języka. Myślę, że jeszcze do tego wrócę, w końcu można go również zastosować z ESP32.
Kod źródłowy mojego timera można znaleźć na moim GitHubie
Samego Badgera2040 można kupić zarówno na stronie producenta lub na Allegro za pomocą mojego linku polecającego https://allegro.pl/oferta/badger-2040-modul-z-wyswietlaczem-epaper-i-rp2040-akcesoria-15693543460?utm_medium=afiliacja&utm_source=ctr_2&utm_campaign=805199db-fa73-47e2-b035-a82e7d4ae7c0&utm_content=99ae277c5cda#