Malezyjski maker wycisnął 500 dni pracy na baterii z ESP32. Wyświetlacz? Narysowany w przeglądarce.

Większość stacji pogodowych to grube małe klocki, które co kilka tygodni błagają o ładowarkę. WeatherPaper V2 idzie w drugą stronę. Ma 11,6 mm grubości, przylega do ściany jak kawałek matowej dekoracji i działa ponad 500 dni na jednym ładowaniu.
Twórcą jest Jeremy Ngai, hobbysta z Malezji o prostym motto: inżynieria jest fajna, gdy zaczynasz robić to, co lubisz. Natknęliśmy się na tę konstrukcję, zakochaliśmy się w niej i chcieliśmy się nią podzielić, częściowo dlatego, że Lopaka znalazła miejsce w jego zestawie narzędzi.
Swędzenie: V1 była świetna i to był problem
WeatherPaper V1 działała. Wyglądała dobrze. A Jeremy nie mógł jej znieść. Była masywna, żarłoczna na energię, a nieefektywny sprzęt zostawiał miejsce tylko na małą baterię 500 mAh. Dla V2 przybił do ściany jeden bezlitosny cel: ponad rok pracy na baterii.
Wszystko inne wynikło z tej liczby. Przeszedł na 4,2-calowy czarno-biały wyświetlacz e-paper, zamienił generyczną płytkę deweloperską na Seeed Studio XIAO ESP32-C3 z wbudowaną ładowarką i 44 uA w trybie deep sleep oraz zaprojektował własną płytkę PCB, żeby zmniejszyć całość. Bateria urosła z 500 mAh do 1500 mAh. Urządzenie i tak stało się cieńsze.

Część, którą twórcy pomijają: ekran musi dobrze wyglądać
Tutaj e-paper cię karze. Sprzęt może być idealny, firmware może sączyć energię jak mnich, a nic z tego nie ma znaczenia, jeśli wyświetlacz wygląda jak arkusz kalkulacyjny. Rzucasz okiem na WeatherPaper i odczytujesz cztery rzeczy: wskaźnik jakości powietrza, temperaturę odczuwalną, prędkość wiatru i warunki pogodowe. Czyste ikony, rozsądna hierarchia, nic nie krzyczy.
Oznacza to monochromatyczne bitmapy, a na wyświetlaczach embedded bitmapy to miejsce, gdzie kończy się zabawa. Klasyczna droga: narysuj ikonę gdzieś, wyeksportuj ją, przepuść przez image2cpp, skopiuj ścianę liczb szesnastkowych do pliku bitmap.h, wgraj i zmruż oczy na wynik. Źle ustawisz piksel — robisz to jeszcze raz.
Gdzie pasuje Lopaka
Jeremy wskazuje twórcom Lopaka właśnie na ten krok: projektowanie monochromatycznych ikon i wyciąganie ich jako użytecznego kodu. Umieszczasz grafikę na obszarze rysowania o rozmiarze twojego prawdziwego ekranu, przeciągasz rzeczy, aż wyglądają dobrze, i eksportujesz. Żadnych tablic bajtów na ślepo, żadnego zgadywania, czy ta 32-pikselowa ikona wyląduje tam, gdzie myślisz, że wyląduje.
Pasuje do WeatherPaper, bo firmware działa na GxEPD2, jednej z bibliotek, dla których Lopaka generuje kod. Rysujesz układ, wybierasz GxEPD2, kopiujesz wyjście. Gdy Jeremy chce później zamienić ikonę, rysuje ją od nowa, zamiast grzebać w liczbach szesnastkowych.
Jego udokumentowany proces pozostaje hakowalny. Chcesz indeks UV zamiast prędkości wiatru? Zmień jeden klucz JSON. Chcesz własne ikony zamiast jego? Narysuj je od nowa i wrzuć nowe tablice. Wyświetlacz pozostaje twój.
Efekt: robić mniej, celowo
Matematyka baterii to najfajniejsza część. Co 30 minut ESP32 budzi się na około 4,3 sekundy, pobiera pogodę z OpenWeatherMap, odświeża ekran i wraca do głębokiego snu. Jeremy mocno ścisnął to okno budzenia: procesor obniżony do 80 MHz, DHCP pominięte dzięki statycznemu IP, HTTPS zamienione na zwykłe HTTP przy danych publicznych, HTTP Keep-Alive do grupowania żądań.
Zsumuj to, a każdy cykl spala mniej więcej 0,049 mAh. Przy baterii 1500 mAh wychodzi ponad 15 000 godzin, na papierze ponad 600 dni, a po uwzględnieniu strat w realnym świecie komfortowe 500 z hakiem. Całą konstrukcję podchwyciło XDA Developers.
Jego wniosek mówi to najlepiej: najdłuższa praca na baterii wzięła się z robienia mniej, a nie z dodawania więcej. To samo dotyczy wyświetlacza. Najczystszy interfejs e-paper powstaje z zaprojektowania go na obszarze rysowania, a nie z ręcznego kodowania go w liczbach szesnastkowych.

Zbuduj własną
Jeremy udostępnił wszystko jako open source — firmware, pliki Gerber PCB i pliki 3D — w swoim repozytorium WeatherPaper na GitHubie. Jeśli budujesz pod ekran OLED, TFT lub e-paper i wolisz narysować interfejs, zamiast składać go bajt po bajcie, właśnie do tego służy Lopaka. Naszkicuj ekran, wybierz bibliotekę, wypuść kod.
Autorzy
WeatherPaper V2 i zdjęcia autorstwa Jeremy'ego Ngai. Przeczytaj pełny przewodnik budowy na Instructables lub zapoznaj się z plikami źródłowymi na GitHubie.