Mały projekt zegarka, który pobiera dane z serwera NTP po czym wyświetla czas na wyświetlaczu OLED. Używamy WeMos D1 mini do łączenia się z siecią Wi-Fi, uzyskiwania czasu NTP i wyświetlania go na module OLED.
Aby zbudować ten projekt, potrzebujesz WeMos D1 mini lub pochodne która posiadają mikroukład ESP8266 oraz moduł wyświetlacza OLED.
Co nam będzie potrzebne:
– WeMos D1 mini / NodeMcu do nabycia tu
– Moduł wyświetlacza OLED 0.96 cala 128X64 do nabycia tu
– Arduino IDE
– przewody do połączenia całości
Opis połączeń:
Zegarek z NTP |
|
PIN ESP | PIN LCD |
GND | GND |
3,3V | Vcc |
GPIO5 | SCL |
GPIO4 | SDA |
Kod programu:
Do pobrania tu Zegarek NTP
Jest parę zmian które musisz dokonać przed wgraniem:
- w pliku credentials.h ustawić dane swojej sieci
char mySSID[]="nazwa sieci";
char myPASSWORD[]="hasło do sieci";
- w pliku zegarek-ntp.ino ustawić swoją strefę czasową, poniższa dla Polski
const char* TZ_INFO = „CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00”;
Źródło: hxxps://www.youtube.com/watch?v=r2UAmBLBBRM
Jeszcze przydało by się dodać jedną zmienną, aby ESP nie emitowało WiFi o nazwie „FaryLink-xxxx”. W tym celu dodajemy
WiFi.mode(WIFI_STA);
zaraz przed
WiFi.begin(ssid, password);
Kod tego zegarka jest bardzo podstawowy i bardzo niedopracowany. Nie powinien on być w ogóle publikowany. Takie moje zdanie.
Zaprezentuj nam lepszą wersję.
Dziś jest poniedziałek i na wyświetlaczu tak wyświetla. Nie ma „Error”.
Zmieniłem bibliotekę i wszystko ładnie działa, ale przy zmianie daty z 10/02/24 (sobota) na 11/02/24 pojawił się napis Error zamiast niedziela. O co chodzi?
Nie wiem co tam masz u siebie zobacz w kodzie co powinno być w obszarze niedzieli. Może w samym kodzie jest kuku.
Posiadam wyświetlacz OLED 1,3″ I2C SH1106 Niebieski
Co muszę zmienić w kodzie, by poprawnie działał wyświetlacz?
Biblioteki pod twój wyświetlacz.
Witam, w OLED 128×28 przy wyświetlaniu tylko hh:mm:ss trzeba coś zmieniać w kodzie? Pytam jako amator . Dziękuję za odp.
Od linii ~158 poniżej tekstu //display on OLED
Doskonały przykład zastosowania modułu WeMos i wyświetlacza OLED.
Ja miałem wersję OLED z interfejsem SPI i zmieniłem definiowanie na:
#define OLED_MOSI D7
#define OLED_CLK D5
#define OLED_DC D3
#define OLED_CS D8
#define OLED_RESET D0
U8X8_SSD1306_128X64_NONAME_4W_SW_SPI u8x8(/* clock=*/ OLED_CLK, /* data=*/ OLED_MOSI, /* cs=*/ OLED_CS, /* dc=*/ OLED_DC, /* reset=*/ OLED_RESET);