[PROJEKT] Cyfrowa lista zadań oparta o wyświetlacz e-papier, Raspberry Pi Zero 2 i środowisko Trello

 

Instalacja systemu

Do projektu potrzebna będzie karta pamięci z systemem operacyjnym do Raspberry Pi. W celu przygotowania karty można skorzystać z programu Raspberry Pi Imager, co zostało szczegółowo opisane w artykule: Raspberry Pi Imager – przygotowanie karty SD dla malinki nigdy nie było tak łatwe.

Środowisko graficzne nie będzie w tym projekcie potrzebne, więc aby zaoszczędzić zasoby i zmniejszyć zużycie energii przez malinkę można wybrać system Raspberry Pi OS w wersji Lite. W tym celu należy kliknąć Choose OS.

Rys. 28. Raspberry Pi Imager – ekran główny

A następnie Raspberry Pi OS (other)

Rys. 29. Raspberry Pi Imager – menu wyboru systemu

i w końcu Raspberry Pi OS Lite (32-bit).

Rys. 30. Raspberry Pi Imager – wybór systemu Raspberry Pi OS Lite

Korzystając ze skrótu klawiszowego CTRL+SHIFT+X można od razu skonfigurować dostęp do sieci Wi-Fi.

Rys. 31. Raspberry Pi Imager – konfiguracja sieci Wi-Fi

Konfiguracja Raspberry Pi

Domyślnie interfejs SPI, który będzie potrzebny do komunikacji z wyświetlaczem e-papier jest wyłączony. Aby go włączyć można skorzystać z polecenia

A następnie wybrać Interfacing Options oraz SPI i potwierdzić wybór zaznaczając Yes. Po włączeniu interfejsu należy zrestartować malinkę.

Instalacja sterowników do wyświetlacza e-papier

Do obsługi wyświetlacza e-papier potrzebne będzie kilka bibliotek, które można zainstalować w następujący sposób:

Instalacja biblioteki BCM2835:

Instalacja biblioteki WiringPi:

Pozostałe biblioteki:

Po zainstalowaniu bibliotek należy przejść do katalogu domowego

i sklonować repozytorium

Jeżeli git nie jest zainstalowany to można go zainstalować poleceniem:

Aby sprawdzić czy wyświetlacz działa poprawnie należy wywołać następujące komendy:

Jeżeli wszystko działa poprawnie, na ekranie powinien pojawić się napis „hello world”

Konfiguracja Trello

Aby możliwe było pobieranie zawartości tablicy Trello, należy dodać klucze dostępu do pliku keys.dat.

W celu wygenerowania kluczy należy zalogować się do Trello, a następnie zaakceptować regulamin na stronie https://trello.com/app-key. Po zaakceptowaniu regulaminu na ekranie pojawi się klucz API, który należy skopiować do pierwszej linijki pliku keys.dat.

Rys. 32. Klucz API do pobrania z Trello

Po wygenerowaniu klucza, należy jeszcze wygenerować token użytkownika. W linku poniżej, w miejscu {YourAPIKey} należy wstawić uprzednio wygenerowany klucz API i przejść do utworzonego w ten sposób adresu.

 

Rys. 33. Token dostępu do konta Trello

Token należy skopiować do drugiej linii pliku keys.dat

W trzeciej linii należy umieścić numer tablicy Trello, z której pobierane będą wartości. Link do tablicy ma format tak jak poniżej. Identyfikator tablicy znajduje się w miejscu znaków x.

W czwartej linii należy umieścić nazwę listy kart np. „Do Zrobienia”

Rys. 34. Przykładowa lista w aplikacji Trello

Po uzupełnieniu plik powinien wyglądać w ten sposób:

Rys. 35. Struktura pliku keys.dat

Po dodaniu danych uwierzytelniających do pliku keys.dat, można już sprawdzić działanie tablicy. W tym celu należy uruchomić skrypt update.py

Jeżeli wszystko zostało poprawnie uzupełnione, na wyświetlaczu e-papier powinny wyświetlić się zadania do wykonania pobrane z tablicy Trello.

Rys.36. Złożony zestaw z wyświetloną listą zadań

Cykliczna aktualizacja tablicy za pomocą cron

Ostatnią rzeczą do wykonania jest ustawienie cyklicznego wywoływanie skryptu update.py. Można w tym celu skorzystać w wbudowanego w system Linux programu cron. Najpierw należy się upewnić, że zawarta w skrypcie update.sh ścieżka „~/trelloToDoList/code” jest poprawna. Następnie można przystąpić do dodawania odpowiedniego wpisu w crontab. W tym celu należy wywołać polecenie:

Jeżeli jest to pierwsze wywołanie tej funkcji na tym Linuksie to konieczne będzie wybranie edytora tekstu. Początkującym zalecam skorzystanie z edytora NANO.

Po otwarciu pliku należy dodać linię

Każda z gwiazdek określa czas w jakim momencie ma się wykonać polecenie. Pierwsza gwiazdka odpowiada za minuty, druga za godziny, następna za dzień miesiąca, miesiąc, a ostania za dzień tygodnia. Tak więc wpisując 15 * * * * polecenie wykona się kwadrans po każdej godzinie, a * 18 * * * wykona się codziennie o godzinie 18:00. Jeżeli tak zamiast gwiazdki wpiszemy */5 to polecenie wykona się co 5 minut / godzin / dni itd. W naszym przypadku skrypt będzie wykonywał się właśnie co 5 minut.

Rys. 37. Rozwinięcie systemu zapisu częstotliwości wywołania polecenia w cron-ie (Źródło: wikipedia.org)

Po wpisaniu powyższej linii do pliku, należy go zapisać i zamknąć. W konsoli powinien pojawić się komunikat „crontab: installing new crontab”.

Jako że skrypt update.py odwołuje się do innych plików, nie można go wywołać bezpośrednio z poziomu cron-a, bez przejścia najpierw do lokalizacji, w której znajduje się program. Do tego celu posłuży skrypt powłoki update.sh, który najpierw przechodzi do folderu w którym znajduje się update.py, a następnie go wywołuje. Takie rozwiązanie zapewnia odczytanie plików, do których odwołuje się program i co za tym idzie jego prawidłowe wykonanie.

Jeżeli wszystko zostało zrobione poprawnie, to program powinien już wykonywać się cyklicznie.

Źródła:

https://github.com/abhinuvpitale/Trello-Raspberry-Pi-Zero-API

https://www.waveshare.com/wiki/7.5inch_e-Paper_HAT

https://www.raspberrypi.com/news/build-an-e-paper-to-do-list-with-raspberry-pi

O autorze