
ESP32-C6 LCD 0.96 Mini с microSD
Не указан; GNPE — маркировка продавца · ESP32-C6-LCD-0.96 (Mini, USB-C, microSD)
Компактная плата ESP32-C6 с цветным экраном 160×80, USB-C и слотом microSD для небольших интерфейсов и индикаторов.
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает ESP32-C6-LCD-0.96 (Mini, USB-C, microSD)
ESP32-C6 LCD 0.96 Mini объединяет микроконтроллер, маленький цветной экран и слот microSD. Внешний дисплей и отдельный адаптер карты для первых опытов не нужны. Плата подходит для компактных индикаторов состояния, сетевых мини-панелей и простых графических интерфейсов; детализация интерфейса ограничена небольшой площадью экрана.
В названии объявления продавца указан ST7789, однако схема ESP32-C6-LCD-0.96 обозначает экран как ST7735, а исходный код содержит инициализацию ST7735/ST7735S. Схема и код проверены непосредственно в архиве по ссылке из объявления продавца; они совпадают с приведённой копией исходников. Имя файла Display_ST7789.h само по себе не доказывает модель контроллера. Настройки этой карточки относятся именно к схеме и исходникам в документации. Перед использованием на внешне похожей плате нужно сверить исполнение.
Выбранное исполнение No-SD Card означает комплект без карты памяти: сам слот присутствует. Надпись C3 на керамической антенне не обозначает модель процессора; по пояснению продавца это маркировка партии антенны. GNPE показана как марка продавца, а изготовитель платы отдельно не установлен. Номер аппаратной ревизии в доступных источниках не подтверждён; документальная версия карточки привязана к пакету продавца и исходникам commit 971a504.
LCD и microSD делят одну SPI-шину и используют разные CS. Их линии заняты встроенными устройствами; внешнюю периферию подключают к действительно выведенным площадкам. Уровни GPIO — 3.3 В. Входы ESP32-C6 не рассчитаны на прямой сигнал 5 В. Часть выводов влияет на начальную загрузку, поэтому внешняя схема не должна принудительно менять их состояние при включении.
На схеме нет зарядного устройства для аккумулятора, аккумуляторного разъёма, датчика движения, аудиотракта или внешней PSRAM. USB используется для питания, прошивки и последовательной связи через USB Serial/JTAG. Это не универсальный USB-OTG-контроллер. Беспроводные возможности принадлежат ESP32-C6; для Matter/Thread/Zigbee нужна подходящая прошивка и инфраструктура.
Первый пример проверяет заливку экрана и при наличии карты безопасно проверяет её подключение. Он не записывает файлы и не запрашивает форматирование. Полноценный интерфейс LVGL требует настройки аппаратного порта дисплея; одной установки LVGL недостаточно. Пример проверен по API и синтаксису, но не испытан на физической плате.
Документация:
Характеристики
- Микроконтроллер
- ESP32-C6FH4 (по схеме платы)
- Процессор
- Основное ядро RISC-V до 160 МГц; дополнительное малопотребляющее ядро LP до 20 МГц
- Flash
- 4 МБ
- Внутренняя SRAM
- 512 КБ HP SRAM + 16 КБ LP SRAM; это не PSRAM
- PSRAM
- Не предусмотрена в схеме
- Экран
- Цветной LCD, 0.96 дюйма, 160×80 пикселей; без сенсорного слоя
- Контроллер LCD
- ST7735 в схеме; ST7735/ST7735S в инициализации. Название продавца ST7789 с этим не совпадает.
- Карта памяти
- Слот microSD, SPI; в выбранном комплекте карта отсутствует
- Встроенная SPI-шина
- LCD и microSD: SCLK GPIO7, MOSI GPIO6; MISO карты GPIO5, отдельные CS
- Выведенные GPIO
- 9 по схеме: 0, 1, 2, 8, 16, 17, 18, 19, 20. GPIO8 — загрузочный strap; 16/17 также UART0.
- USB
- USB-C; встроенный USB Serial/JTAG на GPIO12/13, без отдельного USB–UART-моста в схеме
- Радиосвязь
- Wi-Fi 6 2.4 ГГц, Bluetooth LE, IEEE 802.15.4; без Bluetooth Classic
- Уровни логики
- 3.3 В
- Аккумулятор
- Зарядка и аккумуляторный разъём в схеме не предусмотрены
- Интерфейс
- SPI, UART, I²C, Wi-Fi, Bluetooth
- Питание модуля
- Питание 5 В от USB-C; логические уровни GPIO 3.3 В. Не подавать 5 В на GPIO/3V3. Альтернативное питание через площадки требует проверки схемы; не подключать несколько источников одновременно.
ПРАКТИКА
Подключение

| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| LCD SCLK | GPIO7 | Встроенное соединение; общая линия тактирования с microSD. |
| LCD MOSI / SDA | GPIO6 | Встроенная SPI-линия данных; общая с MOSI microSD. Надпись SDA здесь не означает I²C. |
| LCD CS | GPIO14 | Отдельный выбор дисплея; активный LOW. |
| LCD DC | GPIO15 | Выбор команды/данных. GPIO15 участвует в strapping; не менять аппаратную обвязку. |
| LCD RESET | GPIO21 | Сброс дисплея, не кнопка сброса ESP32-C6. |
| LCD BL | GPIO3 | Управление подсветкой через транзистор; HIGH включает подсветку в примере. |
| microSD CLK | GPIO7 | Общая SPI-шина с LCD. |
| microSD MOSI | GPIO6 | Общая SPI-шина с LCD. |
| microSD MISO | GPIO5 | Чтение карты; GPIO5 также strapping pin ESP32-C6. |
| microSD CS | GPIO4 | Отдельный CS карты. Держать HIGH, пока карта не выбрана; GPIO4 также strapping pin. |
| BOOT | GPIO9 | Кнопка на землю, активный LOW. Для режима загрузки при отпускании RST нужны GPIO9=LOW и GPIO8=HIGH; внешняя схема не должна тянуть GPIO8 вниз. |
| USB D− / D+ | GPIO12 / GPIO13 | Заняты встроенным USB Serial/JTAG; не использовать как свободные линии во время USB-связи. |
| UART0 TX / RX | GPIO16 / GPIO17 | Выведены по схеме; TX имеет последовательный резистор 499 Ом. |
| 3V3 / USB VCC / GND | Площадки питания платы | 3.3 В / VBUS USB / общая земля. Не путать VBUS с 3V3; физическую ориентацию сверить по распиновке. |
Подходит для ESP32, Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги интегрировать ESP32-C6 LCD 0.96 Mini с microSD в мой проект. Сначала уточни задачу, среду, точное исполнение и фотографию платы. Сверь её с документацией продавца ESP32-C6-LCD-0.96: название объявления ST7789 конфликтует с обозначением ST7735 в схеме и ST7735/ST7735S в инициализации. Не подменяй её Waveshare ESP32-C6-LCD-1.47 или общей платой ESP32. Для документированного исполнения: LCD SCLK=7, MOSI=6, CS=14, DC=15, RST=21, BL=3; microSD SCLK=7, MOSI=6, MISO=5, CS=4. SPI общая. Показанный режим LCD: 160×80, MADCTL 0xA8, смещения 1/26, RGB565, инверсия включена. BOOT=9; встроенный USB занимает 12/13. Питание от USB-C 5 В, GPIO 3.3 В. Не используй неизвестные выводы и не обещай зарядку аккумулятора. Подготовь подключение выбранной внешней периферии, зависимости и полный минимальный пример. Для первых шагов отдели проверку экрана от чтения SD. Удерживай невыбранный CS в HIGH, учитывай загрузочные выводы, проверяй ошибки SPI/SD, не форматируй карту автоматически и не записывай пользовательские файлы без необходимости. Объясни проверку цветов, ориентации, отсутствия карты и режима прошивки. Явно отметь, что проверено по исходникам, что компилировалось и что испытано на реальном устройстве.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Среда / пакет
Arduino IDE 2.x / esp32 by Espressif Systems 3.3.2API приведённого примера сверено с тегом Arduino-ESP32 3.3.2. Установите пакет через менеджер плат.
- Плата
ESP32C6 Dev ModuleВыбор Tools → Board. Это универсальная цель ESP32-C6; встроенный LCD не настраивается ею автоматически.
- USB CDC On Boot
EnabledSerial в примере нужен через встроенный USB Serial/JTAG. Используйте кабель USB-C с передачей данных.
- Flash Size
4MB (32Mb)Соответствует ESP32-C6FH4 и схеме этого исполнения. PSRAM на плате нет; у ESP32C6 Dev Module в пакете 3.3.2 отдельного пункта PSRAM нет.
- Serial Monitor
115200В мониторе отображаются обнаруженный чип, flash и результат проверки SD.
- SPI / LCD / SD
SCLK=7, MOSI=6, MISO=5; LCD_CS=14; SD_CS=4Общая шина, отдельные CS. Порядок аргументов SPI.begin: SCLK, MISO, MOSI.
- LCD control
DC=15, RST=21, BL=3Подсветка включается HIGH. В приведённом примере используется простое управление без PWM.
- Режим LCD
ST7735; 160×80; MADCTL=0xA8; offsets=1,26; RGB565Инициализация по схеме и исходнику исполнения 0.96. Не выбирать ST7789 только из названия объявления.
- Частоты первого теста
LCD 10 MHz; SD 4 MHz; SPI mode 0Консервативные значения примера, а не максимальные частоты платы.
- Безопасный mount SD
SD.begin(4, SPI, 4000000, "/sd", 5, false)Последний false запрещает автоматическое форматирование. Карта необязательна; при ошибке тест LCD продолжается.
Arduino: полный тест LCD и безопасная проверка microSD
cpp// ESP32-C6-LCD-0.96: 160x80 landscape, ST7735 initialization.
// Arduino-ESP32 3.3.2 API; ESP32C6 Dev Module; USB CDC On Boot: Enabled.
// Source pin/initialization reference: spotpear37/ESP32-C6-0.96,
// commit 971a5048d047d471e38127cd2d2933460ca5d30e.
// No third-party libraries. No SD writes or formatting. Not tested on hardware.
#include <Arduino.h>
#include <SPI.h>
#include <SD.h>
#include <initializer_list>
constexpr int LCD_CS = 14, LCD_DC = 15, LCD_RST = 21, LCD_BL = 3;
constexpr int SD_CS = 4, SPI_MISO = 5, SPI_MOSI = 6, SPI_SCLK = 7;
constexpr uint16_t WIDTH = 160, HEIGHT = 80, X_OFFSET = 1, Y_OFFSET = 26;
constexpr uint32_t LCD_HZ = 10000000, SD_HZ = 4000000;
void command(uint8_t cmd, std::initializer_list<uint8_t> bytes) {
SPI.beginTransaction(SPISettings(LCD_HZ, MSBFIRST, SPI_MODE0));
digitalWrite(LCD_CS, LOW);
digitalWrite(LCD_DC, LOW);
SPI.transfer(cmd);
digitalWrite(LCD_DC, HIGH);
for (uint8_t b : bytes) SPI.transfer(b);
digitalWrite(LCD_CS, HIGH);
SPI.endTransaction();
}
void initDisplay() {
digitalWrite(LCD_RST, HIGH); delay(50);
digitalWrite(LCD_RST, LOW); delay(50);
digitalWrite(LCD_RST, HIGH); delay(50);
command(0x11, {}); delay(120); // Sleep out.
command(0x36, {0xA8}); // 160x80 landscape/BGR order.
command(0xB1, {0x01, 0x2C, 0x2D});
command(0xB2, {0x01, 0x2C, 0x2D});
command(0xB3, {0x01, 0x2C, 0x2D, 0x01, 0x2C, 0x2D});
command(0xB4, {0x07});
command(0x21, {}); // Inversion on for this panel.
command(0xC0, {0xA2, 0x02, 0x84});
command(0xC1, {0xC5});
command(0xC2, {0x0A, 0x00});
command(0xC3, {0x8A, 0x2A});
command(0xC4, {0x8A, 0xEE});
command(0xC5, {0x0E});
command(0xE0, {0x0F, 0x1A, 0x0F, 0x18, 0x2F, 0x28, 0x20, 0x22,
0x1F, 0x1B, 0x23, 0x37, 0x00, 0x07, 0x02, 0x10});
command(0xE1, {0x0F, 0x1B, 0x0F, 0x17, 0x33, 0x2C, 0x29, 0x2E,
0x30, 0x30, 0x39, 0x3F, 0x00, 0x07, 0x03, 0x10});
command(0xF0, {0x01});
command(0xF6, {0x00});
command(0x3A, {0x05}); // RGB565.
command(0x29, {}); delay(20); // Display on.
}
void fillScreen(uint16_t rgb565) {
const uint16_t x0 = X_OFFSET, x1 = X_OFFSET + WIDTH - 1;
const uint16_t y0 = Y_OFFSET, y1 = Y_OFFSET + HEIGHT - 1;
command(0x2A, {uint8_t(x0 >> 8), uint8_t(x0), uint8_t(x1 >> 8), uint8_t(x1)});
command(0x2B, {uint8_t(y0 >> 8), uint8_t(y0), uint8_t(y1 >> 8), uint8_t(y1)});
command(0x2C, {});
SPI.beginTransaction(SPISettings(LCD_HZ, MSBFIRST, SPI_MODE0));
digitalWrite(LCD_CS, LOW);
digitalWrite(LCD_DC, HIGH);
for (uint32_t i = 0; i < uint32_t(WIDTH) * HEIGHT; ++i) {
SPI.transfer(uint8_t(rgb565 >> 8));
SPI.transfer(uint8_t(rgb565));
}
digitalWrite(LCD_CS, HIGH);
SPI.endTransaction();
}
bool displayReady = false;
void setup() {
Serial.begin(115200);
const uint32_t started = millis();
while (!Serial && millis() - started < 2000) delay(10);
for (int pin : {LCD_CS, LCD_DC, LCD_RST, LCD_BL, SD_CS}) pinMode(pin, OUTPUT);
digitalWrite(SD_CS, HIGH); // Both SPI devices start deselected.
digitalWrite(LCD_CS, HIGH);
digitalWrite(LCD_BL, LOW);
if (!SPI.begin(SPI_SCLK, SPI_MISO, SPI_MOSI)) {
Serial.println("SPI initialization failed");
return;
}
initDisplay();
fillScreen(0x0000);
digitalWrite(LCD_BL, HIGH);
displayReady = true;
Serial.printf("Chip: %s, flash: %lu bytes\n", ESP.getChipModel(),
static_cast<unsigned long>(ESP.getFlashChipSize()));
if (!SD.begin(SD_CS, SPI, SD_HZ, "/sd", 5, false)) {
Serial.println("SD absent or mount failed; display test continues. No format requested.");
} else if (SD.cardType() == CARD_NONE) {
Serial.println("No SD card detected");
SD.end();
} else {
Serial.printf("SD capacity: %llu MiB\n",
static_cast<unsigned long long>(SD.cardSize() / (1024ULL * 1024ULL)));
}
}
void loop() {
if (!displayReady) { delay(1000); return; }
static uint8_t index = 0;
const uint16_t colors[] = {0xF800, 0x07E0, 0x001F, 0xFFFF, 0x0000};
fillScreen(colors[index]);
index = (index + 1) % 5;
delay(1000);
}
Один полный .ino для документированного исполнения ESP32-C6-LCD-0.96 и Arduino-ESP32 3.3.2; только встроенные SPI и SD. После загрузки экран последовательно заполняется красным, зелёным, синим, белым и чёрным, а Serial сообщает результат SD. Если карты нет, цветовой тест продолжает работу. Проверен синтаксис C++17 и соответствие API и распиновки архиву продавца; сборка под ESP32 и тест на физической плате не выполнялись. При пустом экране сначала проверьте точное исполнение и USB-питание; при сдвиге/неверных цветах — инициализацию именно этой панели. Не подбирайте случайные GPIO. Для принудительной загрузки нужны GPIO9=LOW и GPIO8=HIGH при отпускании сброса: удерживайте BOOT, проверьте, что внешняя схема не тянет GPIO8 вниз, нажмите и отпустите RST, затем отпустите BOOT и повторно выберите появившийся USB-порт.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


