دليل · شاشات · توصيل
كيف توصّل شاشة بـ ESP32
تعمل معظم شاشات الهواة مع Arduino (5 فولت) وESP32 (3.3 فولت) معًا — وESP32 هو المضيف الأفضل للرسوم واللمس وWi-Fi. عمليًّا ستقابل أربعة أنواع: OLED أحادية اللون، وTFT ملوّنة، وTFT لمسيّة، ولوحة E-Ink. إليك بالضبط كيف يُوصَّل كلٌّ منها وأوّل أسطر الكود لتشغيله.
ما زلت تختار؟ الدليل الشقيق يقارنها وجهًا لوجه — OLED مقابل TFT مقابل E-Paper مقابل Nextion. وهذه الصفحة هي النصف العمليّ: التوصيل وكود يعمل لكلٍّ منها.
| النوع | الشرائح | الناقل | اللون | التحديث | الأنسب لـ |
|---|---|---|---|---|---|
| OLED | SSD1306 · SH1106 | I²C | أحادي | سريع | ساعات، حالة، واجهات صغيرة |
| TFT ملوّنة | ST7789 · ILI9341 · ST7735 | SPI | 65k | سريع | لوحات، رسوم بيانيّة، صور |
| TFT لمسيّة | ILI9341 + XPT2046 | SPI (+لمس) | 65k | سريع | منزل ذكيّ، أجهزة تحكّم |
| E-Ink | Waveshare · GDEH | SPI | أحادي / قليل | بطيء | لافتات بطاريّة، ملصقات، ساعات |
١. OLED (SSD1306 / SH1106) — سلكان، وأسود حقيقيّ
شاشة OLED الكلاسيكيّة 0.96" تتكلّم I²C، فتحتاج فقط سلكَي إشارة — SDA وSCL إضافةً إلى الطاقة. تباين عالٍ (البكسل مُطفأ فعلًا، بلا إضاءة خلفيّة)، واستهلاك ضئيل، وثمن زهيد. تكفي 128×64 بكسل لبضعة أسطر نصّ أو رسم صغير — مثاليّة للساعات والطقس وسطر حالة Wi-Fi/IP. وSH1106 بديل شبه مطابق (إزاحة أعمدة صغيرة تعالجها المكتبة تلقائيًّا).
#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
} ٢. TFT ملوّنة (ST7789 / ILI9341 / ST7735) — لون كامل عبر SPI
تمنحك TFT الملوّنة عبر SPI 65٬000 لون وتحديثًا سريعًا
بما يكفي للرسوم الحيّة والقوائم والصور — حصان العمل حين تريد لوحة حقيقيّة. تكلّف أطرافًا أكثر من I²C
(SCK وMOSI وDC وCS وRES + الإضاءة الخلفيّة)، والإضاءة تسحب تيّارًا دائمًا، لكن المقابل واجهة كاملة. المكتبة
المعتمدة هي TFT_eSPI، وتُضبط الأطراف مرّة واحدة في User_Setup.h. غالبًا تُسمّي
الوحدات الرخيصة SCK/MOSI بـ SCL/SDA — هو نفسه SPI، لكن طباعة مربكة.
#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
} ٣. TFT لمسيّة (ILI9341 + XPT2046) — شاشة تلمسها
أضِف طبقة لمس فتصير TFT سطح تحكّم: لوحات منزل ذكيّ، منظّمات حرارة، أجهزة تحكّم يدويّة. النقطة الجديرة بالمعرفة: الشاشة ومتحكّم اللمس XPT2046 يتقاسمان ناقل SPI نفسه (SCK/MOSI/MISO)؛ لا تحتاج شريحة اللمس سوى T_CS الخاصّ بها وT_IRQ اختياريّ (مقاطعة). هكذا يبقى عدد الأطراف معقولًا. وCheap Yellow Display الشهيرة هي هذا تمامًا: ESP32 + ILI9341 مقاس 2.8" + XPT2046 على لوحة واحدة.
#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
}
} ٤. E-Ink (E-Paper) — تسحب الطاقة عند التغيّر فقط
E-Ink بطلة الاستقلاليّة: تسحب التيّار فقط أثناء تحديث الصورة، ثمّ تحتفظ بالصورة مجّانًا — وتُقرأ بوضوح تحت الشمس المباشرة كالورق. مثاليّة لملصقات الأسعار ولافتات الغرف والتقاويم والساعات البطيئة التي تعمل شهورًا من خليّة واحدة. العيب هو التحديث: يستغرق التحديث الكامل من مئات الأجزاء من الثانية إلى ثانيتين وكثيرًا ما يومض، فلا مجال للحركة. يُوصَّل عبر SPI شبيهًا بـ TFT، مع خطّ BUSY تُرجعه اللوحة إلى المتحكّم. المكتبة الشائعة هي GxEPD2.
#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());
} قبل اللحام
أمران يوفّران أكثر المتاعب. أوّلًا مستوى المنطق: طرف ESP32 هو 3.3 فولت، ومعظم الوحدات مناسبة، لكن شاشة 5 فولت فقط من Arduino في الاتجاه العكسيّ تحتاج انتباهًا. ثانيًا الأطراف: قد تحجز شاشة ملوّنة أو لمسيّة نصف أطراف GPIO، فخطّطها قبل التوصيل — خصوصًا في لوحات «الكلّ في واحد» حيث تملك الشاشة أصلًا أغلب المشبك. ارسم التوصيلات في BoardLab أوّلًا لترى الأطراف المتبقّية.
وصّل شاشتك بصريًّا، ثمّ انظر أيّ أطراف GPIO تبقى للحسّاسات.