LILYGO T-Deck Pro

  • ESP32-S3
  • 4G
  • LoRa
  • E-Paper
  • GPS

T-Deck Pro

Version History:

Different hardware versions may have incompatible code. Please confirm your hardware version and enter the corresponding git branch.
Hardware differences can be viewed in the corresponding "readme" files and "schematic diagrams".

Name Git Branch Change Schematic Firmware State
T-Deck-Pro V1.0 HD-V1-250326 readme SCH V1 Available
T-Deck-Pro V1.1 HD-V2-250915 readme SCH V2 Available
T-Deck-Pro MAX V1.0 HD-V3-250911 readme SCH V3 Not Available
Product SOC FLASH PSRAM Link
T-Deck Pro ESP32-S3FN16R8 16MB 8MB LILYGO Mall

Table of Contents

Description

LILYGO T-Deck Pro is a highly integrated multi-functional development platform based on the ESP32-S3 chip, supporting 4G communication and LoRa long-distance wireless transmission, equipped with an electronic ink screen (EPD) and touch function, balancing low-power display and interaction. Its hardware modules include GPS positioning, gyroscope sensing, microphone voice input, SD card storage, mechanical keyboard, and self-learning AI IMU, suitable for IoT, outdoor equipment, smart terminals, and other scenarios. You can choose the desired version according to your needs (Version 1 is equipped with audio module PCM512A, Version 2 is equipped with 4G module A7682E), providing flexible configuration to meet diverse needs such as industrial control, environmental monitoring, and portable devices.

Preview

Physical Image

T-Deck Pro

Pinout Diagram

summary

Modules

MCU

  • Chip: ESP32-S3FN16R8 Dual-core LX7 microprocessor
  • PSRAM: 8MB
  • FLASH: 16MB
  • Wireless: Wi-Fi 802.11 b/g/n; Bluetooth 5.0 (LE)
  • Other Notes: For more information, please visit Espressif Official ESP32-S3 Datasheet

Communication Modules

  • 4G Module: A7682E (optional version)
  • LoRa: SX1262 chip, supports 433MHz~920MHz frequency bands
  • GPS: MIA-M10Q GNSS module
  • SIM Card: Supports mobile communication

Display and Input

  • Screen: GDEQ031T10 3.1-inch electronic ink display
  • Resolution: 320×240 pixels
  • Touch: CST328 touch controller
  • Keyboard: TCA8418 mechanical keyboard controller

Sensor System

  • Gyroscope: BHI260AP AI IMU sensor
  • Light Sensor: LTR_553ALS ambient light sensor
  • Microphone: Supports voice input

Audio System

  • Audio Module: PCM512A (optional version)
  • Function: High-quality audio output

Power Management

  • Battery: 3.7V 1500mAh lithium polymer battery
  • Charging Chip: BQ25896/BQ27220
  • USB Power: 5V/500mA Type-C interface

Overview

Component Description
MCU ESP32-S3FN16R8 Dual-core LX7 microprocessor
FLASH 16MB
PSRAM 8MB
4G Module A7682E (Optional)
LoRa SX1262 (433MHz~920MHz)
GPS MIA-M10Q GNSS module
Screen GDEQ031T10 3.1-inch E-Paper Display (320×240)
Touch CST328 Touch Controller
Keyboard TCA8418 Mechanical Keyboard
Gyroscope BHI260AP AI IMU Sensor
Audio PCM512A (Optional)
Light Sensor LTR_553ALS Ambient Light Sensor
Battery 3.7V 1500mAh Lithium Polymer Battery
Battery Management BQ25896/BQ27220 Charging Chip
Storage TF Card Expansion
Wireless 2.4 GHz Wi-Fi & Bluetooth 5 (LE)
Communication SIM Card Support
USB 1 × USB Port and OTG (TYPE-C Interface)
IO Interface 2.54mm pitch 2×20 dual-row expansion IO interface
Expansion Interface 1 × QWIIC Interface
Motor Control IO Level Control
Buttons 1 x RESET Button + 1 x BOOT Button
Power 5V/500mA
Mounting Holes 2 × 2mm mounting holes
Dimensions 120×66×13.5mm

A7682E

Test the functionality of the A7682E using examples/A7682E/test_AT

A7682E is the LTE Cat 1 module that supports wireless communication modes of LTE-FDD/GSM/GPRS/EDGE. It supports maximum 10Mbps downlink rate and 5Mbps uplink rate. A7682E supports multiple built-in network protocols.

Control Via AT Commands

Frequency Bands LTE-FDD B1/B3/B5/B7/B8/B20
GSM/GPRS/EDGE 900/1800 MHz
Supply Voltage 3.4V ~ 4.2V, Typ: 3.8V
LTE Cat 1   (Uplink up to 5Mbps, Downlink up to10Mbps)
EDGE        (Uplink/Downlink up to 236.8Kbps)
GPRS        (Uplink/Downlink up to 85.6Kbps)
Firmware update via USB/FOTA
Support language calls
Support sending and receiving SMS messages
Network protocols (TCP/IP/IPV4/IPV6/Multi-PDP/FTP/FTPS/HTTP/HTTPS/DNS)
RNDIS/PPP/ECM
SSL

Quick Start

Example Support

├─boards  : Some information about the board for the platformio.ini configuration project;
├─docs    : Place some documents;
├─data    : Picture resources used by the program;
├─example : Some examples;
├─firmare : `factory` compiled firmware;
├─hardware: Schematic diagram of the board, chip data;
└─lib     : Libraries used in the project;

PlatformIO

  1. Install Visual Studio Code and Python, then clone or download this project;
  2. Search for the PlatformIO plugin in VisualStudioCode extensions and install it;
  3. After installation, you need to restart "Visual Studio Code".
  4. After opening this project, PlatformIO will automatically download the required third-party libraries and dependencies. The first download process is relatively long, please be patient;
  5. After installing all dependencies, you can open the platformio.ini configuration file, uncomment in example to select a routine, then press ctrl+s to save the .ini configuration file;
  6. In VScode, click :ballot_box_with_check: to compile the project, then insert USB and select COM in VScode.
  7. Finally, click :arrow_right: to download the program to Flash;

Arduino

  1. Install Arduino IDE, choose the version for your system.
  2. Open the "example" directory in the project folder, select the example project folder, and open the file ending with ".ino" to open the Arduino IDE project workspace.
  3. Open the "Tools" menu in the top bar -> Select "Board" -> "Boards Manager", find or search for "esp32", and install the board files by "Espressif Systems". Then return to the "Board" menu and select the board type under "ESP32 Arduino".
  4. Open the menu bar "File" -> "Preferences", find the "Sketchbook location" field, and copy all the library files along with their folders from the "libraries" folder in the project directory to the "libraries" folder in this location.
  5. Select the correct settings in the "Tools" menu as shown in the table below.

ESP32-S3

Setting Value
Board ESP32S3 Dev Module
Upload Speed 921600
USB Mode Hardware CDC and JTAG
USB CDC On Boot Enabled
USB Firmware MSC On Boot Disabled
USB DFU On Boot Disabled
CPU Frequency 240MHz (WiFi)
Flash Mode QIO 80MHz
Flash Size 16MB (128Mb)
Core Debug Level None
Partition Scheme 16M Flash (3MB APP/9.9MB FATFS)
PSRAM OPI PSRAM
Arduino Runs On Core 1
Events Run On Core 1
  1. Select the correct port.
  2. Click the "" in the top right corner to compile. If the compilation is successful, connect the microcontroller to your computer and click "" in the top right corner to upload.

Development Platforms

  1. VS Code
  2. Arduino IDE
  3. ESP-IDF
  4. PlatformIO

Pin Overview

// Serial
#define SerialMon   Serial      // 
#define SerialAT    Serial1     // 
#define SerialGPS   Serial2     // 

// IIC Addr
#define BOARD_I2C_ADDR_TOUCH      0x1A // Touch        --- CST328
#define BOARD_I2C_ADDR_LTR_553ALS 0x23 // Light sensor --- LTR_553ALS
#define BOARD_I2C_ADDR_GYROSCOPDE 0x28 // Gyroscope    --- BHI260AP
#define BOARD_I2C_ADDR_KEYBOARD   0x34 // Keyboard     --- TCA8418
#define BOARD_I2C_ADDR_BQ27220    0x55 // BQ27220
#define BOARD_I2C_ADDR_BQ25896    0x6B // BQ25896

// IIC
#define BOARD_I2C_SDA  13
#define BOARD_I2C_SCL  14

// Keyboard
#define BOARD_KEYBOARD_SCL BOARD_I2C_SCL
#define BOARD_KEYBOARD_SDA BOARD_I2C_SDA
#define BOARD_KEYBOARD_INT 15
#define BOARD_KEYBOARD_LED 42

// Touch
#define BOARD_TOUCH_SCL BOARD_I2C_SCL
#define BOARD_TOUCH_SDA BOARD_I2C_SDA
#define BOARD_TOUCH_INT 12
#define BOARD_TOUCH_RST 45

// LTR-553ALS-WA  beam sensor
#define BOARD_ALS_SCL BOARD_I2C_SCL
#define BOARD_ALS_SDA BOARD_I2C_SDA
#define BOARD_ALS_INT 16

// Gyroscope
#define BOARD_GYROSCOPDE_SCL BOARD_I2C_SCL
#define BOARD_GYROSCOPDE_SDA BOARD_I2C_SDA
#define BOARD_GYROSCOPDE_INT 21
#define BOARD_GYROSCOPDE_RST -1

// SPI
#define BOARD_SPI_SCK  36
#define BOARD_SPI_MOSI 33
#define BOARD_SPI_MISO 47

// Display
#define LCD_HOR_SIZE 240
#define LCD_VER_SIZE 320
#define DISP_BUF_SIZE (LCD_HOR_SIZE * LCD_VER_SIZE)

#define BOARD_EPD_SCK  BOARD_SPI_SCK
#define BOARD_EPD_MOSI BOARD_SPI_MOSI
#define BOARD_EPD_DC   35
#define BOARD_EPD_CS   34
#define BOARD_EPD_BUSY 37
#define BOARD_EPD_RST  -1

// SD card
#define BOARD_SD_CS   48
#define BOARD_SD_SCK  BOARD_SPI_SCK
#define BOARD_SD_MOSI BOARD_SPI_MOSI
#define BOARD_SD_MISO BOARD_SPI_MISO

// Lora
#define BOARD_LORA_SCK  BOARD_SPI_SCK
#define BOARD_LORA_MOSI BOARD_SPI_MOSI
#define BOARD_LORA_MISO BOARD_SPI_MISO
#define BOARD_LORA_CS   3
#define BOARD_LORA_BUSY 6
#define BOARD_LORA_RST  4
#define BOARD_LORA_INT  5

// GPS
#define BOARD_GPS_RXD 44
#define BOARD_GPS_TXD 43
#define BOARD_GPS_PPS 1

// A7682E Modem
#define BOARD_A7682E_RI     7
#define BOARD_A7682E_ITR    8
#define BOARD_A7682E_RST    9
#define BOARD_A7682E_RXD    10
#define BOARD_A7682E_TXD    11
#define BOARD_A7682E_PWRKEY 40

// PCM5102A
#define BOARD_I2S_BCLK 7
#define BOARD_I2S_DOUT 8
#define BOARD_I2S_LRC 9

// Boot pin
#define BOARD_BOOT_PIN  0

// Motor pin
#define BOARD_MOTOR_PIN 2

// EN
#define BOARD_GPS_EN  39  // enable GPS module
#define BOARD_1V8_EN  38  // enable gyroscope module
#define BOARD_6609_EN 41  // enable 7682 module
#define BOARD_LORA_EN 46  // enable LORA module

// Mic
#define BOARD_MIC_DATA        17
#define BOARD_MIC_CLOCK       18
// -------------------------------------------------

Screen Refresh Methods

Refresh process explanation: (Refresh time: the entire process from when the screen has action to when the image stabilizes)

Refresh Type Visual Performance Usage Recommendation
Full Refresh Accompanied by multiple flashes Basic refresh mode
Fast Refresh Flashes once Requires full refresh after ≤5 consecutive operations
Partial Refresh No flashing Requires full refresh after ≤5 consecutive operations

Note: After 5 consecutive operations of fast refresh and partial refresh, a full refresh must be performed to eliminate ghosting accumulation.

FAQ

  • Q. I still don't know how to set up the programming environment after reading the above tutorial. What should I do?
    A. If you still don't understand how to set up the environment after reading the above tutorial, you can refer to the LilyGo-Document documentation for setup instructions.

  • Q. Why does Arduino IDE prompt me to upgrade library files when I open it? Should I upgrade or not?
    A. Choose not to upgrade library files, as different versions of library files may not be compatible with each other, so upgrading is not recommended.

  • Q. What should I do if ghosting appears on the e-paper display?
    A. After 5 consecutive uses of fast refresh or partial refresh, a full refresh must be performed to eliminate ghosting.

  • Q. Why does my board keep failing to program?
    A. Please hold the "BOOT" button and try downloading the program again.

Projects

Resources

Dependent Libraries

zinggjm/GxEPD2@1.5.5
jgromes/RadioLib@6.4.2
lewisxhe/SensorLib@^0.2.0
mikalhart/TinyGPSPlus @ ^1.0.3
vshymanskyy/TinyGSM@^0.12.0
lvgl/lvgl @ ~8.3.9
lewisxhe/XPowersLib @ ^0.2.4
adafruit/Adafruit TCA8418 @ ^1.0.1
adafruit/Adafruit BusIO @ ^1.14.4
olikraus/U8g2_for_Adafruit_GFX@^1.8.0
adafruit/Adafruit GFX Library@^1.11.10
esphome/ESP32-audioI2S#v3.0.12