[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.
A następnie Raspberry Pi OS (other)
i w końcu Raspberry Pi OS Lite (32-bit).
Korzystając ze skrótu klawiszowego CTRL+SHIFT+X można od razu skonfigurować dostęp do 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.
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}
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”
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.
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.
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