RisalDash RisalDash

Qoʻllanma · Displeylar · Ulash

ESP32’ga displeyni qanday ulash kerak

Deyarli har qanday havaskor displey ham Arduino (5 V), ham ESP32 (3.3 V) bilan ishlaydi — ESP32 esa grafika, sensor va Wi-Fi uchun qulayroq. Amalda toʻrt turga duch kelasiz: monoxrom OLED, rangli TFT, sensorli TFT va E-Ink panel. Quyida — har biri qanday ulanadi va uni yoqadigan birinchi qatorlar.

DispleylarOLEDTFTSensorliE-InkESP32
ESP32 va Arduino uchun toʻrt tur displey: OLED, rangli TFT, sensorli TFT va E-Ink
Toʻrt ekran — toʻrt vazifa. Shina, rang, tezlik va quvvat boʻyicha tanlang.

Hali tanlayapsizmi? Qoʻshni qoʻllanma ularni yonma-yon solishtiradi — OLED vs TFT vs E-Paper vs Nextion. Bu sahifa esa amaliy yarmi: har biri uchun sxema va ishlaydigan sketch.

TurChiplarShinaRangYangilanishNima uchun
OLEDSSD1306 · SH1106I²Cmonotezsoat, holat, mini-UI
Rangli TFTST7789 · ILI9341 · ST7735SPI65ktezpanel, grafik, rasm
Sensorli TFTILI9341 + XPT2046SPI (+tach)65ktezaqlli uy, pult
E-InkWaveshare · GDEHSPImono / ozsekinnarx yorligʻi, taxta, soat

1. OLED (SSD1306 / SH1106) — ikki sim, chin qora

Klassik 0.96" OLED I²C orqali ishlaydi, shu bois faqat ikki signal simi — SDA va SCL hamda quvvat kerak. Yuqori kontrast (piksel chindan oʻchadi, orqa yoritish yoʻq), juda kam quvvat va arzon narx. 128×64 piksel bir necha qator matn yoki kichik grafikaga yetadi — soat, ob-havo va Wi-Fi/IP holati uchun ideal. SH1106 — deyarli toʻliq oʻxshashi (ustun siljishini kutubxona oʻzi hisobga oladi).

OLED SSD1306 ESP32’ga I²C orqali ulangan: SDA, SCL, 3V3 va GND
Ikki sim va quvvat. ESP32’da standart I²C — SDA = GPIO21, SCL = GPIO22. BoardLab’da yigʻilgan.
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 oled(128, 64, &Wire);   // I2C, address 0x3C (SH1106 is near-identical)

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.clearDisplay();
  oled.setTextSize(2);
  oled.setTextColor(SSD1306_WHITE);
  oled.setCursor(0, 0);
  oled.println("24.7 C");
  oled.display();                        // push the frame to the panel
}

2. Rangli TFT (ST7789 / ILI9341 / ST7735) — SPI orqali toʻliq rang

Rangli TFT SPI orqali 65 000 rang va jonli grafik, menyu hamda rasmlar uchun yetarli yangilanish beradi — haqiqiy panel kerak boʻlganda asosiy ish oti. U I²C’dan koʻra koʻproq pin talab qiladi (SCK, MOSI, DC, CS, RES + orqa yoritish), yoritish esa doim tok tortadi, ammo evaziga toʻliq UI. Asosiy kutubxona — TFT_eSPI, pinlar bir marta User_Setup.h’da beriladi. Arzon modullar koʻpincha SCK/MOSI’ni SCL/SDA deb belgilaydi — bu oʻsha SPI, faqat chalgʻituvchi belgi.

Rangli TFT ST7789 ESP32’ga SPI orqali ulangan: SCL, SDA, RES, DC, orqa yoritish, 3V3 va GND
SPI displey: klok, data, DC va RES GPIO’da; orqa yoritish 3V3’ga.
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();               // SPI pins are set once in User_Setup.h

void setup() {
  tft.init();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_CYAN, TFT_BLACK);
  tft.setTextSize(3);
  tft.drawString("24.7 C", 20, 20);      // a full 65k-colour UI
}

3. Sensorli TFT (ILI9341 + XPT2046) — bosiladigan ekran

Sensor qatlamini qoʻshsangiz, TFT boshqaruv paneliga aylanadi: aqlli uy, termostat, qoʻl pultlari. Bilishga arzigulik nuqta: displey va XPT2046 tach kontrolleri bitta SPI shinasini boʻlishadi (SCK/MOSI/MISO); tach chipiga faqat oʻz T_CS (chip-select) va ixtiyoriy T_IRQ (uzilish) kerak. Shu bilan pin soni meʼyorida qoladi. Mashhur Cheap Yellow Display aynan shu: ESP32 + 2.8" ILI9341 + XPT2046 bitta platada.

Sensorli TFT ILI9341 ESP32’da: displey va XPT2046 tach bitta SPI shinasida, alohida T_CS va T_IRQ
Ikkala chip uchun bitta SPI shinasi — faqat T_CS va T_IRQ qoʻshimcha.
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();               // screen + XPT2046 touch share one SPI bus

void loop() {
  uint16_t x, y;
  if (tft.getTouch(&x, &y)) {            // T_CS + T_IRQ report the press
    tft.fillCircle(x, y, 4, TFT_CYAN);   // draw where the finger landed
  }
}

4. E-Ink (E-Paper) — quvvat faqat oʻzgarganda

E-Ink — avtonomlik chempioni: tok faqat rasm yangilanayotganda kerak, soʻng tasvir bepul turadi — va u toʻgʻridan-toʻgʻri quyoshda ham xuddi qogʻozdek oʻqiladi. Narx yorligʻi, xona taxtachasi, taqvim va bitta batareyada oylab ishlaydigan sekin soatlar uchun ideal. Kamchiligi — tezlik: toʻliq yangilanish yuz millisekunddan bir necha soniyagacha davom etadi va koʻpincha miltillaydi, shuning uchun animatsiya mumkin emas. SPI orqali deyarli TFT kabi ulanadi, ustiga panel mikrokontrollerga qaytaradigan BUSY chizigʻi. Keng tarqalgan kutubxona — GxEPD2.

E-Paper panel ESP32’ga SPI orqali ulangan: DIN, CLK, CS, DC, RST va BUSY kirishi
SPI hamda panel qayta chizilayotganda ushlab turadigan BUSY pini.
#include <GxEPD2_BW.h>
// 2.9" panel, pins: CS=5, DC=2, RST=4, BUSY=27
GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> epd(GxEPD2_290(5, 2, 4, 27));

void setup() {
  epd.init();
  epd.setFullWindow();
  epd.firstPage();
  do {
    epd.fillScreen(GxEPD_WHITE);
    epd.setCursor(10, 40);
    epd.print("+23 C");                  // then it holds the image on zero power
  } while (epd.nextPage());
}

Kavsharlashdan oldin

Ikki narsa eng koʻp asab tejaydi. Birinchi — mantiq darajasi: ESP32 GPIO’si 3.3 V, koʻp modullarga bu mos, ammo Arduino’dan faqat 5 V displeyni teskari yoʻnalishda ulash ehtiyot talab qiladi. Ikkinchi — pinlar: rangli yoki sensorli ekran GPIO’ning yarmini egallashi mumkin, shuning uchun ularni ulashdan oldin rejalashtiring — ayniqsa displey allaqachon koʻp qismini olgan «hammasi bir joyda» platalarda. Avval BoardLab’da ulashni chizib, qaysi pinlar boʻsh qolishini koʻring.

Ekran sxemasini vizual yigʻing va sensorlarga qaysi GPIO qolishini koʻring.