LilyGO TTGO T-Call: ESP32 Powerhouse with Cellular Connectivity
A compact development board leveraging the ESP32's Wi-Fi and Bluetooth, enhanced with a SIM800L module for cellular communication.
The LilyGO TTGO T-Call is a versatile development board designed for makers and engineers who need to integrate Wi-Fi, Bluetooth, and cellular connectivity into their projects. At its core lies the powerful Espressif ESP32 chip, a dual-core microcontroller renowned for its robust processing capabilities and extensive peripheral set. This board is particularly suited for IoT applications requiring remote data transmission or control, where Wi-Fi might be unavailable or insufficient.
The ESP32 SoC at the heart of the T-Call is a dual-core Tensilica LX6 microprocessor running at up to 240 MHz. It integrates Wi-Fi (802.11 b/g/n) and Bluetooth (v4.2 BR/EDR and BLE) radios, making it a complete solution for wireless communication. The T-Call board builds upon this foundation by adding a SIM800L GSM/GPRS module, which allows the device to connect to cellular networks for making calls, sending SMS messages, and transmitting data over GPRS. This combination makes it ideal for projects that need to operate in remote locations or require a fallback communication channel.
Released around 2019, the TTGO T-Call quickly gained popularity for its integrated cellular modem, which was a significant advantage over many other ESP32 boards that required external modules. This integration simplifies hardware design and reduces the overall footprint of projects. It caters to a wide range of users, from students learning about IoT and embedded systems to experienced engineers developing prototypes for commercial applications. Its ease of use, especially with the Arduino IDE, makes it accessible for beginners, while its extensive features appeal to advanced users.
The board's design prioritizes functionality and ease of use. It typically features a USB-to-serial converter for programming and power, a battery connector for portable applications, and accessible GPIO pins. The inclusion of the SIM800L module means that users can experiment with voice calls, SMS notifications, and even basic mobile internet connectivity directly from their development board. This makes it a compelling choice for projects like remote environmental monitoring, asset tracking, or even a basic mobile-connected alarm system.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | ESP32-WROOM-32E |
| Architecture | Dual-core Tensilica LX6 microprocessor |
| Clock speed | Up to 240 MHz |
| Flash / Storage | 4MB (typically) onboard SPI flash |
| RAM / SRAM | 520 KB SRAM |
| Operating voltage | 3.3V |
| Digital I/O pins | ~30 (many shared with peripherals) |
| Analog / ADC | Up to 12-bit ADC channels (ESP32 internal) |
| PWM | Yes, on most GPIO pins |
| Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR & BLE, GSM/GPRS (via SIM800L module) |
| USB | Micro-USB for power and programming (via CP2102 or similar) |
| Power input | 5V via Micro-USB, 3.7V LiPo battery connector |
| Dimensions | Approx. 68mm x 29mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | 3.3V Power Output |
| GND | Ground |
| EN | Enable Pin (Reset) |
| IO34 | Input only GPIO, ADC1_CH6 |
| IO35 | Input only GPIO, ADC1_CH7 |
| IO32 | GPIO, ADC1_CH4 |
| IO33 | GPIO, ADC1_CH2 |
| IO25 | GPIO, DAC_1, ADC1_CH8 |
| IO26 | GPIO, DAC_2, ADC1_CH9 |
| IO27 | GPIO, ADC1_CH10 |
| IO14 | GPIO, SPI_HD_CS |
| IO12 | GPIO, SPI_HD_MOSI, ADC1_CH5 |
| IO13 | GPIO, SPI_HD_MISO |
| IO2 | GPIO, ADC2_CH2 |
| IO15 | GPIO, ADC2_CH3 |
| IO4 | GPIO |
| IO0 | GPIO, Boot selection |
| IO21 | GPIO, I2C SDA |
| IO19 | GPIO, I2C SCL |
| IO22 | GPIO, I2C SCL |
| IO17 | GPIO, UART2 TX |
| IO16 | GPIO, UART2 RX |
| IO5 | GPIO |
| IO18 | GPIO, SPI_VS_SCK |
| IO19 | GPIO, SPI_VS_MISO |
| IO23 | GPIO, SPI_VS_MOSI |
| IO24 | GPIO |
| IO27 | GPIO, ADC1_CH10 |
| IO32 | GPIO, ADC1_CH4 |
| IO33 | GPIO, ADC1_CH2 |
| SIM_TXD | SIM800L TX (connects to ESP32 RX) |
| SIM_RXD | SIM800L RX (connects to ESP32 TX) |
| SIM_PWR | SIM800L Power Control |
| VBAT | Battery Input (3.7V LiPo) |
| 5V | 5V Input (from USB) |
Wiring & circuit basics
Powering the TTGO T-Call requires careful attention to voltage levels. The board can be powered via its Micro-USB port, which typically supplies 5V. This 5V is then regulated down to 3.3V for the ESP32 and other components. A dedicated 3.7V LiPo battery can also be connected to the VBAT header, which is managed by an onboard charging circuit. Ensure that any external components you connect operate at 3.3V logic levels, as applying 5V to GPIO pins can damage the ESP32. If you need to interface with 5V devices, use a logic level shifter.
When connecting external components, it's crucial to use the correct pins. For example, to control an LED, connect it via a current-limiting resistor (typically 220-330 ohms) to a digital GPIO pin (like IO2) and to GND. For I2C communication with sensors like the BME280, connect the sensor's SDA pin to IO21 (or IO19 depending on board revision) and its SCL pin to IO22 (or IO19). Remember to also connect the sensor's VCC to 3.3V and GND to the board's GND.
The SIM800L module requires a stable power supply, especially during transmission. It's recommended to power the module directly from the 5V input or a dedicated battery source capable of providing sufficient current (at least 2A peak recommended), rather than relying solely on the 3.3V rail, to avoid brownouts. The SIM_PWR pin can be used to enable/disable the module. The SIM800L's TX and RX pins connect to the ESP32's UART pins (often UART2, typically IO16/IO17). Ensure correct TX-to-RX and RX-to-TX connections.
Programming & getting started
The LilyGO TTGO T-Call can be programmed using several popular toolchains. The most common is the Arduino IDE, which offers a vast library ecosystem and a relatively gentle learning curve. To use it, install the ESP32 Arduino Core via the Board Manager. Alternatively, MicroPython and CircuitPython provide a Python-based programming environment, which can be easier for those familiar with Python. For more advanced control and bare-metal programming, Espressif's official ESP-IDF framework or PlatformIO integrated with VS Code are powerful options.
To upload your first sketch using the Arduino IDE: select the correct ESP32 board (e.g., 'ESP32 Dev Module'), choose the appropriate COM port, and press the upload button. You may need to hold down the BOOT button while the upload starts if the auto-reset circuit doesn't function correctly. A simple 'Blink' sketch or a basic sketch to print 'Hello World' over Serial Monitor is a good starting point to verify your setup.