Wyświetlacz.
Początkowo myślałem o wyświetlaczu LCD/OLED, obecnie kosztują one ~30zł i mają sporo gotowych bibliotek do obsługi. Ze względów estetycznych (i chęci eksperymentu) wybrałem wyświetlacz e-papier 1.54" waveshare o rozdzielczości 200x200px. Niestety taki wyświetlacz jest 2x droższy od LCD/TFT i w jego cenie można kupić kilkucalowy kolorowy wyświetlacz TFT. Jednak tutaj cena była drugorzędna, liczył się efekt. Sporym zaskoczeniem było dla mnie istnienie wyświetlaczy e-papier 3-kolorowych (biały-czarny-czerwony). Ponieważ wyświetlacz 3-kolorowy był droższy od 2-kolorowego o ~3zł wybrałem 3-kolorowy.
Pierwszy raz miałem styczność z wyświetlaczem e-papier, po wyjęciu go z opakowania pierwsze wrażenie - rozmazany/rozciapany obraz lekko czerwonawy i dziwna ramka wokół pola wyświetlania.



Efekt na szczęście zniknął po odświeżeniu zawartości wyświetlacza z wykorzystaniem przykładowego kodu:
https://www.waveshare.com/wiki/File:1.54inch_e-paper_module_b_code.7z
Komunikacja z modułem wyświetlacza odbywa się po SPI. Moduł po wyświetleniu obrazu nie potrzebuje zasilania do utrzymania wyświetlanej zawartości.

Gdy statyczny obraz jest dość długo na wyświetlaczu (tygodnie), zmniejsza się kontrast/wyrazistość obrazu, pozostają także "duchy" po starym obrazie, które znikają po kilkukrotnym odświeżeniu. Odświeżanie trwa dość długo i w tym modelu wyświetlacza nie jest możliwe odświeżanie części zawartości.
Wybór wyświetlacza okazał się trafiony, ale warto pamiętać, że na takim wyświetlaczu linia jedno-pikselowa jest praktycznie nieczytelna, na wyświetlaczu LCD/OLED taki problem nie występuje. Podczas przesyłania danych czerwone piksele przykrywają czarne, poniżej schemat adresowania poszczególnych punktów na wyświetlaczu:

Elektronika, energooszczęność
Początkowo myślałem o wykorzystaniu małego energooszczędnego ATtiny lub PIC, jednak ograniczenie czasowe spowodowało wybór tego co miałem czyli gotowej płytki arduino pro mini z ATmega328. Również nie wypalił plan napisania wszystkiego niskopoziomowo i z pełną kontrolą np. w Atmel Studio. Wykorzystałem Arduino i gotowe biblioteki: https://github.com/adafruit/Adafruit_BMP085_Unified dla BMP180 (wiedziałem że zadziałają gdyż testowałem je tutaj). Biblioteka została dodana poprzez: Szkic->Zarządzaj bibliotekami->Menadżer bibliotek, następnie wyszukujemy frazę "BMP085" i wybieramy "Adafruit BMP085 Unified by Adafruit".


Aby ograniczyć pobór mocy zostały zdemontowane rezystory ograniczające prąd LED na płytce oraz stabilizator, został wyłączony fusebit detektora niskiego napięcia BW 2.7V. Pomiar napięcia to dzielnik 200kom+100kom z zasilaniem odłączanym na czas uśpienia.

Większość czasu mikrokontroler przebywa w uśpieniu, czekając na kolejne wybudzenia od WTD. Została wykorzystana biblioteka low-power: https://github.com/rocketscream/Low-Power Obsługa wyświetlacza oraz czcionki całkowicie w oparciu o przykładowy kod od Waveshare: https://www.waveshare.com/wiki/File:1.54inch_e-paper_module_b_code.7z
Nie wiem ile urządzenie będzie działało na baterii 3V CR2032 o pojemności ~220mAh. Pobierany prąd podczas uśpienia to ~30uA, a wyświetlacz podczas odświeżania pobiera nawet 15mA. Jeżeli pojemność CR2032 okaże się zbyt mała, można pomyśleć np. o 2xAAA i lepszej obudowie.
Tak wygląda schemat połączeń płytek:

Oprogramowanie.
Oprogramowanie początkowo było wytwarzane w C++ w Atmel Studio. Dość szybko zauważyłem, że nie zdążę i przerzuciłem się na Arduino. Kod programu jest fatalny, to główna przyczyna umieszczenia tematu w dziale nie dokończone DIY. Debugowanie odbywało się z wykorzystaniem UART podobnie jak wgrywanie kolejnych wersji. Po uzyskaniu finalnej wersji została wybrana opcja kompilacji do pliku bez bootloadera: Szkic->eksport skompilowanego programu. Kod wynikowy wgrany po ISP. Kod programu znajduje się w kilku plikach, mocno bazuje na kodzie udostępnionym przez producentów, kod jest do pobrania poniżej, ale bardziej jako ciekawostka niż coś do naśladowania

Montaż i obudowa.
Płytki arduino mini pro i wyświetlacza e-papier oraz BMP180 na GY-68 zostały połączone kynarem i taśmą dwustronną.



Pierwszym pomysłem na obudowę był druk 3D, później wygięta przezroczysta plexa, oba pomysły zostały zredukowane do pudełka po tic-tac oddanego do pomalowania w trybie ekspresowym znajomemu modelarzowi. Jeżeli będziecie używać wyświetlacze e-papier to uważajcie na gumę, która przyciąga wszelkie zanieczyszczenia, które trudno później odczepić.




Sukces.
Mimo że nie do końca jestem zadowolony z tego co siedzi w środku urządzenia to udało się je przekazać w terminie i wszystkie zakładane funkcjonalności działały





Fajne!