OPEN-SMART 1,8″ LCD 128×64 ST7567 s ESP8266

Tentokrát jsem vyzkoušel malý monochromatický grafický displej OPEN-SMART 1,8″ LCD 128×64 s řadičem ST7567. Rozlišením připomíná běžné malé OLED displeje, místo OLED technologie ale používá klasický LCD panel.

Na displeji mě zaujal hlavně nízký odběr – bez podsvícení jsem naměřil pouze 0,6 mA. Můj kus jsem získal s demontovaným podsvícením a při běžném okolním světle je obraz velmi dobře vidět, takže podsvícení nakonec ani nepotřebuji.

Pro první test jsem displej připojil k desce LOLIN D1 mini s ESP8266 a ovládal ho pomocí knihovny U8g2.

LCD OPEN-SMART 1,8″

Základní parametry

Displej používá řadič ST7567 a komunikuje pomocí čtyřvodičového SPI. Napájení i logické úrovně jsou 3,3 V, takže se k ESP8266 hodí bez nutnosti převodníku úrovní.

ParametrHodnota
TypMonochromatický LCD
Úhlopříčka1,8″
Rozlišení128 × 64 bodů
ŘadičST7567
Komunikace4vodičové SPI
Napájení3,3 V
Logické úrovně3,3 V
Rozměry modulu47,6 × 37 mm
PodsvíceníBílé

Standardní verze modulu obsahuje bílé podsvícení, které se zapíná připojením vývodu LED na GND.

Vývody displeje

Na modulu jsou vyvedené všechny signály potřebné pro SPI komunikaci.

VývodFunkce
GNDZem
3V3Napájení 3,3 V
SCKHodinový signál SPI
SDIDatový vstup displeje – MOSI
DCPřepínání mezi příkazem a daty
CSVýběr displeje
RSTReset displeje
LEDPodsvícení

Displej pouze přijímá data, takže signál MISO zde není potřeba.

Zadní strana LCD

Připojení k ESP8266

Pro test jsem použil LOLIN D1 mini ESP8266. Je to 3,3 V deska, takže ji můžeme s displejem propojit přímo.

Pro datovou komunikaci jsem využil hardwarové SPI ESP8266.

Zapojení je následující:

LCDESP8266 GPIOKlasické označení D1 mini
GNDGNDG
3V33,3 V3V3
SCKGPIO14D5
SDIGPIO13D7
CSGPIO15D8
DCGPIO5D1
RSTGPIO4D2
LEDGNDvolitelné podsvícení

U mojí verze D1 mini jsou přímo na desce vytištěná čísla GPIO, proto v programu používám přímo čísla 14, 13, 15, 5 a 4. U jiných verzí desky se častěji setkáme s označením D1 až D8.

Zkušební zapojení

Podpora ESP8266 v Arduino IDE

Pokud ještě ESP8266 v Arduino IDE nemáme, musíme nejprve nainstalovat jeho podporu.

Do Soubor → Předvolby… → Další URL pro manager desek přidáme:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

Potom ve správci desek vyhledáme esp8266 a balík nainstalujeme.

Pro D1 mini potom vybereme desku:

LOLIN(WEMOS) D1 R2 & mini

Tato varianta je přímo součástí ESP8266 Arduino Core.

Knihovna U8g2

Pro ovládání displeje jsem použil knihovnu U8g2, kterou lze jednoduše nainstalovat přes správce knihoven Arduino IDE.

Výhodou je, že knihovna obsahuje přímo podporu varianty ST7567 OS12864, takže není potřeba upravovat ovladač nebo hledat nějakou speciální knihovnu. Oficiální seznam podporovaných displejů U8g2 obsahuje ST7567 OS12864.

V programu používám konstruktor:

U8G2_ST7567_OS12864_F_4W_HW_SPI

4W_HW_SPI znamená použití čtyřvodičové komunikace přes hardwarové SPI.

Zkušební program

Pro první test stačí na displeji zobrazit několik textů, rámeček a čáru. Tím se zároveň ověří komunikace a základní funkce displeje.

///////////////////////ST7567_LCD_TEST fw v.0.1 //////////////////////////////
///////////////////////16.8.2026 /////////////////////////////////////////////
///////////////////////www.michaluvbrloh.cz//////////////////////////////////

#include <Arduino.h>      //základní funkce Arduino
#include <SPI.h>          //hardwarová SPI komunikace
#include <U8g2lib.h>      //ovládání grafického LCD

const byte LCD_CS = 15;       //CS displeje - GPIO15
const byte LCD_DC = 5;        //data/příkaz - GPIO5
const byte LCD_RST = 4;       //reset displeje - GPIO4

// SCK  = GPIO14
// MOSI = GPIO13

U8G2_ST7567_OS12864_F_4W_HW_SPI displej(
  U8G2_R2,
  LCD_CS,
  LCD_DC,
  LCD_RST
);

/////////////////////////////po spuštění///////////////////////////////////////////////////////////////////////////////////////
void setup()
  {
    displej.begin();                   //inicializace displeje
    displej.setContrast(0);            //nastavení kontrastu

    vypisTest();                       //zobraz testovací obrazovku
  }

/////////////////////////////hlavní smyčka/////////////////////////////////////////////////////////////////////////////////////
void loop()
  {
    //testovací obraz zůstává stále zobrazený
  }

/////////////////////////////test displeje/////////////////////////////////////////////////////////////////////////////////////
void vypisTest()
  {
    displej.clearBuffer();             //vymaž obrazovou paměť

    displej.drawFrame(0, 0, 128, 64);  //rámeček kolem displeje

    displej.setFont(u8g2_font_7x14B_tf);
    displej.drawStr(17, 18, "ST7567 TEST");

    displej.setFont(u8g2_font_6x10_tf);
    displej.drawStr(13, 34, "LOLIN D1 mini");

    displej.drawHLine(10, 41, 108);    //vodorovná čára
    displej.drawStr(26, 55, "Displej OK!");

    displej.sendBuffer();              //odešli obraz do displeje
  }

Po nahrání programu se zobrazí rámeček a několik řádků textu.

Testovací výpis

Kontrast

Při prvním spuštění je důležité správné nastavení kontrastu. Mně fungovala hodnota:

displej.setContrast(0);

Pokud by byl displej příliš tmavý, světlý nebo byla vidět téměř celá plocha, stojí za to právě tuto hodnotu změnit.

Kontrast je vhodné nastavit až podle konkrétního kusu displeje a podmínek, ve kterých bude používán.

Otočení obrazu

Po prvním spuštění jsem měl obraz vzhůru nohama. U8g2 naštěstí umožňuje orientaci změnit přímo při vytvoření objektu displeje.

Původní nastavení:

U8G2_R0

jsem nahradil za:

U8G2_R2

U8G2_R2 otočí obraz o 180°. Pokud je displej v projektu namontovaný opačně, stačí použít zpět U8G2_R0.

Není tedy potřeba ručně přepočítávat souřadnice jednotlivých prvků.

Zobrazení grafiky

Protože jde o grafický displej, nejsme omezeni pouze na předem dané textové znaky. Knihovna U8g2 umí kromě velkého množství fontů kreslit například čáry, rámečky, kružnice nebo bitmapové obrázky.

Například rámeček přes téměř celý displej vytvoří:

displej.drawFrame(0, 0, 128, 64);

Vodorovnou čáru:

displej.drawHLine(10, 41, 108);

A text:

displej.setFont(u8g2_font_6x10_tf);
displej.drawStr(10, 20, "Ahoj");

Při rozlišení 128 × 64 bodů je už dost prostoru například pro jednoduchá menu, hodnoty ze senzorů, grafy, ikony nebo stavové obrazovky.

Podsvícení

Modul je z výroby vybaven bílým podsvícením, které lze zapnout připojením pinu LED na zem.

Při testování jsem ale zjistil, že za běžného osvětlení je LCD pěkně čitelné i bez něj. Jelikož má můj displej podsvícení demontované, vůbec ho řešit nebudu.

Závěr

OPEN-SMART 1,8″ LCD s řadičem ST7567 se podařilo s ESP8266 rozchodit bez větších problémů. Stačí několik vodičů, 3,3 V napájení a knihovna U8g2, která má pro tento displej přímo připravenou podporu.

Displej nabízí rozlišení 128 × 64 bodů, takže na něm lze kromě textu zobrazovat i jednoduchou grafiku. Při testu jsem narazil jen na potřebu nastavit kontrast a otočit obraz o 180°, obojí ale U8g2 řeší jedním příkazem.

Příjemným překvapením pro mě byla hlavně dobrá čitelnost bez podsvícení. Pokud nebude zařízení používané ve tmě, nemusí být podsvit vůbec potřeba.

Tento LCD modul zakoupíte na Laskakit.cz, přímý odkaz je ZDE.

Další díly ze začátečnické série o modulech najdete ZDE.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *