ESP8266 a OLED displej 0.96

Zápisník experimentátora

Hierarchy: 0.96in 128x64 SPI OLED LCD Display

Tento článok popisuje pripojenie OLED displeja ku ESP8266. Na Internete nájdete dosť veľa otázok, ako pripojiť tento displej. Ale nie je to žiadna veda. Treba si len skontrolovať, či máte SPI alebo I2C verziu displeja a zapojiť to podľa toho. V tomto článku sa pripája SPI verzia displeja, pretože je rýchlejšia.

Použité diely

V článku sú použité nasledovné diely:

  • NodeMCU 0.9 {linkESP8266} - Ale radšej si kupujte verziu 1.0.
  • 7pin 0.96 in SPI OLED 128x64 White {linkOled} - Podstatné je, aby bol displej označený ako SPI. Tieto sú výrazne rýchlejšie než I2C verzie. Predávajú sa v troch farebných modifikáciách. Bielej, modrej a dvojfarebnej. Displej znesie napätie 5 V.
  • Breadboard {linkBreadboard} - Používam dva miniatúrne, pretože NodeMCU 0,9 sa na normálny breadboard nezmestí. Dva miniatúrne ale majú svoju výhodu pri zapájaní, čo je pekne vidno na tretej fotografii.

Na otestovanie som napísal jednoduchý príklad, ktorý animuje nápis od jedného okraja k druhému a na displeji je aj vykreslená mierka, aby bolo dobre vidno rozmery oblasti, do ktorej sa kreslí.

Na prepojenie pinov som použil drôtené prepojky, ktoré sa nachádzajú pod displejom, preto som priložil fotografie s displejom aj bez neho, aby bolo dobre vidno zapojenie. Fialové prepojky sú dátové a ostatné prepojky slúžia na pripojenie napájania. Prtetože doska NodeMCU má napájanie na pravej strane a displej na ľavej, musel som si trochu pomôcť dvojicami prepojok. Výsledok ale vyzerá veľmi dobre.

Prepojenie medzi pinmi je nasledovné.

NodeMCU OLED
D0 D0
D1 D1
D2 RES
D3 DC
D4 CS
GND GND
3V3 VCC

Pretože toto zapojenie používa softvérové ovládanie SPI, použil som nasledovný konštruktor z knižnice U8g2. Knižnicu si nainštalujete prostredníctvom správcu knižníc.

#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ D0, /* data=*/ D1, /* cs=*/ D4, /* dc=*/ D3, /* reset=*/ D2);

Kreslenie pomocou knižnice je triviálne. Pretože ESP8266 má dostatok RAM, môžeme všetko kresliť v jednom bloku.

void setup() {
  u8g2.begin();
  u8g2.setFont(u8g2_font_ncenB10_tr);
  //u8g2.setFont(u8g2_font_helvB10_tr);
}

void loop() {
  for (int i = 12; i < 64; i++) {
    drawFrame(i);
    delay(10);
  }
  for (int i = 63; i >= 12; i--) {
    drawFrame(i);
    delay(10);
  }
}

void drawFrame(int y) {
  u8g2.clearBuffer();          // clear the internal memory

  u8g2.drawStr(0, y, "Arduino Slovakia"); // write something to the internal memory
  for (int j = 0; j <= 128; j += 2)
    u8g2.drawLine(j, 0, j, (j % 10 == 0 ? 2 : 1));
  for (int j = 0; j <= 64; j += 2)
    u8g2.drawLine(0, j, (j % 10 == 0 ? 2 : 1), j);

  u8g2.sendBuffer();          // transfer internal memory to the display
}

Zdrojový kód

Zdrojový kód k obrázkom sa nachádza na serveri GitHub.


26.12.2016


Menu