LinkedIn YouTube Facebook
Szukaj

Wstecz
SoM / SBC

[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

sudo raspi-config

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

sudo reboot

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:

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60/
sudo ./configure
sudo make
sudo make check
sudo make install

Instalacja biblioteki WiringPi:

sudo apt-get install wiringpi
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v

Pozostałe biblioteki:

sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev

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

cd ~

i sklonować repozytorium

git clone https://github.com/mikrokontrolerpl/trelloToDoList

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

sudo apt-get install git

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

cd ~/trelloToDoList/code
python3 epd_test.py

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.

https://trello.com/1/authorize?expiration=never&scope=read,write,account&response_type=token&name=ServerToken&key={YourAPIKey}

 

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.

https://trello.com/b/xxxxxx/do-zrobienia

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

cd ~/trelloToDoList/code
python3 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:

crontab -e

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ę

*/5 * * * * bash ~/trelloToDoList/code/update.sh

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

Autor: Adam Kita