logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak programować ESP8266 NodeMCU V3 z OLED 0.96 128x64 SSD1306 przez USB?

p.kaczmarek2 19 Cze 2024 14:41 1551 3
REKLAMA
  • Moduł NodeMCU V3 z ESP8266 i wyświetlaczem OLED.
    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:
    Płyta NodeMCU V3 z wyświetlaczem OLED i portem USB-C
    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:
    Płytka NodeMCU V3 z wyświetlaczem OLED i portem USB-C.
    Wymiary:
    Płytka NodeMCU V3 z wyświetlaczem OLED 0.96
    Po podłączeniu zasilania uruchamia się program "hello world":
    Moduł NodeMCU V3 z ESP8266 i wyświetlaczem OLED.
    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ą:
    Zrzut ekranu kreatora projektu w PlatformIO
    Następny etap to biblioteka dla wyświetlacza SSD1306. Oczywiście jest gotowiec:
    Fragment interfejsu PlatformIO z biblioteką ESP8266 i ESP32 OLED
    Instalujemy:
    Okno dialogowe dodawania zależności projektu w PlatformIO z wybraną biblioteką SSD1306 dla wyświetlaczy OLED.
    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++
    Zaloguj się, aby zobaczyć kod

    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++
    Zaloguj się, aby zobaczyć kod

    Rezultat:




    Mamy też gotowe funkcje do rysowania okręgów:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    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++
    Zaloguj się, aby zobaczyć kod

    Rezultat:




    Wśród funkcji pomocniczych mamy możliwość np. przerzucenia bądź odbicia ekranu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Pozwala to też lepiej dopasować naszą grafikę do dwóch kolorów wyświetlacza:
    NodeMCU V3 z wyświetlaczem OLED i portem USB-C, pokazujący pasek ładowania. Płytka NodeMCU V3 z wyświetlaczem OLED 0.96 cala, podłączona przez USB-C.

    Można też rysować bitmapy w formacie jeden bit na piksel (zapalony lub zgaszony):
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Pierwsze dwa argumenty to pozycja, potem mamy wymiary. Przykładowa bitmapa:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    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ę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • REKLAMA
  • REKLAMA
  • #3 21126848
    dktr
    Poziom 25  
    Cytat:
    Dodatkiem do tego modułu powinien być jeszcze czujnik obecności HW-MS03 użyty do wyłączania wyświetlacza gdy nikogo nie ma


    Dodaj optyczny miernik odległości - GY-VL53L0XV2, działa bardo dobrze do odległości 1.5 m mam takie coś zainstalowane przy monitorze i mierzę sobie czas obecności przy komputerze i wysyłam powiadomienia gdy siedzę dłużej jak 1h bez przerwy.

    Jak programować ESP8266 NodeMCU V3 z OLED 0.96 128x64 SSD1306 przez USB?
REKLAMA