Przedstawię tutaj kolejną płytkę z ESP8266, będzie to NodeMCU V3 w wersji z wyświetlaczem OLED 0.96" o rozdzielczości 128x64 oraz portem USB-C. Wyświetlacz tutaj jest podzielony na dwa kolory, górne 48 pikseli to kolor niebieski, a dolne 16 pikseli to kolor żółty. Sam ESP posiada aż 4MB pamięci Flash. Wyświetlacz podłączony jest za pomocą interfejsu I2C na pinach D6/GPIO14 (SDA) i D5/GPIO12 (SCL).
Płytkę tę można kupić nawet za 25 zł.
Przyjrzyjmy się grafikom z dokumentacji:
Na pokładzie jest LDO 3.3V zapewniający zasilanie dla ESP oraz konwerter USB na UART pozwalający łatwo programować całość bez zewnętrznych elementów. Zasadniczo potrzebujemy dodatkowo tylko kabelek USB (no i komputer) i można rozpoczynać programistyczną przygodę.
Wyprowadzenia:
Wymiary:
Po podłączeniu zasilania uruchamia się program "hello world":
Kopia tego programu jest dostępna na moim repozytorium:
https://github.com/openshwprojects/FlashDumps/tree/main/IoT/ESP8266
Programowanie w PlatformIO
Do prezentacji używam darmowego środowiska PlatformIO które już przewinęło się w niektórych tematach:
Zegar na ESP12 i wyświetlaczu MAX7219 - tutorial - część 1, ArduinoOTA, podstawy
Jak programować płytkę Wemos D1 (ESP8266) w kształcie Arduino? ArduinoOTA w PlatformIO
Wemos D1 "Arduino" i DHT11 - prosta stacja pogody z wykresami na stronie WWW
Zakładam, że czytelnik zna jakieś tam podstawy tego środowiska, ale i tak będę starał się pokazywać dużo.
Od czego by tu zacząć... może od utworzenia projektu. Nie miałem tej konkretnej płytki ale wybrałem podobną:
Następny etap to biblioteka dla wyświetlacza SSD1306. Oczywiście jest gotowiec:
Instalujemy:
Przy okazji można przejrzeć przykłady dostępne z sieci, są jednak one czasem nieco rozwinięte. Poniżej umieszczam ode mnie uproszczony całkiem kod, który już coś wyświetla:
Kod: C / C++
Warto tu zwrócić uwagę na to, że nie mamy kontroli nad kolorem. Ten wyświetlacz po prostu jest na stałe dwukolorowy.
UWAGA: moje przykłady nie mają podłączonego ArduinoOTA, chociaż jeśli byśmy mieli na poważnie robić jakieś projekty na tej płytce, to jak najbardziej polecam dać sobie tę opcję. Aktualizacja przez WiFi bardzo ułatwia użytkowanie płytki.
Ale nie tylko tekst jest nam dane tworzyć. Można też rysować kształty:
Kod: C / C++
Rezultat:
Mamy też gotowe funkcje do rysowania okręgów:
Kod: C / C++
Rezultat:
Omawiana biblioteka posiada też kilka nieco bardziej zaawansowanych funkcjonalności. Dostępny jest przykładowo gotowy pasek ładowania wraz z estetycznie zaokrąglonymi bokami:
Kod: C / C++
Rezultat:
Wśród funkcji pomocniczych mamy możliwość np. przerzucenia bądź odbicia ekranu:
Kod: C / C++
Kod: C / C++
Pozwala to też lepiej dopasować naszą grafikę do dwóch kolorów wyświetlacza:
Można też rysować bitmapy w formacie jeden bit na piksel (zapalony lub zgaszony):
Kod: C / C++
Pierwsze dwa argumenty to pozycja, potem mamy wymiary. Przykładowa bitmapa:
Kod: C / C++
Podsumowanie
Bardzo fajny moduł. Gdzie się podziały te czasy, kiedy to musiałem sobie ułatwiać debugowanie programu na mikrokontrolerze poprzez miganie specjalnie dodaną diodą LED czy tam nawet wysyłaniem tekstu na UART... tutaj mamy pełny wyświetlacz, który swoja drogą też nieźle się prezentuje. Małym zaskoczeniem dla początkujących może być to, że nie można zmienić jego kolorów ale i tak jest nieźle. Narzekać mogę chyba jedynie na lokalizację portu USB, troszkę niewygodnie jest on umiejscowiony w sytuacji gdy np. chcemy utworzyć dla tego modułu obudowę na drukarce 3D... ale o takiej obudowie dopiero pomyślę. Zresztą, można podnieść wyświetlacz.
Cena również mi się podoba. Wolę ten produkt od, przykładowo, Arduino R4 WiFi.
Czy widzicie jakieś zastosowanie dla tej płytki, może ktoś wykonywał w oparciu o nią już projekty? Zapraszam do dyskusji.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.