Skip to main content
Device Type:misc
Electrical Standard:Global
Board:esp32

LILYGO T3 LoRa32 V1.6.1

LILYGO T3 LoRa32 V1.6.1

Model reference: T3 LoRa32 V1.6.1

Manufacturer: LILYGO

Product Description

The LILYGO T3 LoRa32 V1.6.1 is a development board featuring an ESP32 microcontroller with integrated WiFi, Bluetooth, and a Semtech SX1276/SX1278 LoRa radio transceiver. It includes a 0.96" OLED display and is designed for IoT applications requiring long-range wireless communication.

Key Features

  • ESP32 dual-core processor @ 240MHz
  • 4MB Flash memory
  • SX1276/SX1278 LoRa radio (433MHz or 868/915MHz variants)
  • 0.96" OLED display (128x64)
  • WiFi 802.11 b/g/n
  • Bluetooth Classic and BLE
  • Micro-USB connector
  • LiPo battery connector with charging circuit
  • SD card slot
  • Onboard CP2104 USB-to-UART bridge

GPIO Pinout

LoRa SX127x Pins

FunctionGPIO
SPI CLKGPIO5
SPI MOSIGPIO27
SPI MISOGPIO19
CSGPIO18
RSTGPIO23
DIO0GPIO26
DIO2GPIO32

Display (OLED)

FunctionGPIO
SDAGPIO21
SCLGPIO22
RSTGPIO16

Other Pins

FunctionGPIO
ButtonGPIO0
LEDGPIO25
Battery ADCGPIO35

Basic Configuration

Minimum configuration required for the LILYGO TTGO T3 LoRa32 V1.6.1:

esphome:
name: "t3-lora32"

esp32:
board: esp32dev
cpu_frequency: 240MHZ
framework:
type: esp-idf

logger:

api:

ota:
platform: esphome

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password

# SPI bus for LoRa radio
spi:
clk_pin: GPIO5
mosi_pin: GPIO27
miso_pin: GPIO19

# I2C for OLED display
i2c:
sda: GPIO21
scl: GPIO22

LoRa Radio Configuration

Complete configuration with LoRa modulation:

# LoRa Radio Configuration (SX1276/SX1278)
sx127x:
dio0_pin: GPIO26
cs_pin: GPIO18
rst_pin: GPIO23
pa_pin: BOOST
pa_power: 10
bandwidth: 125_0kHz
crc_enable: true
frequency: 433920000
modulation: LORA
rx_start: true
sync_value: 0x12
preamble_size: 8
spreading_factor: 7
coding_rate: CR_4_6
on_packet:
then:
- lambda: |-
ESP_LOGD("lora", "Received packet RSSI: %.2f dBm, SNR: %.2f dB, Data: %s",
rssi, snr, format_hex(x).c_str());

# Example button to send LoRa packet
button:
- platform: template
name: "Send LoRa Packet"
on_press:
then:
- sx127x.send_packet:
data: [0xDE, 0xAD, 0xBE, 0xEF, 0xCA, 0xFE, 0xBA, 0xBE]

FSK Modulation

Configuration for FSK modulation in packet mode:

# FSK Radio Configuration (SX1276/SX1278)
sx127x:
dio0_pin: GPIO26
cs_pin: GPIO18
rst_pin: GPIO23
pa_pin: BOOST
pa_power: 10
bitrate: 4800
bitsync: true
crc_enable: true
frequency: 433920000
modulation: FSK
packet_mode: true
payload_length: 8
rx_start: true
sync_value: [0x33, 0x33]
preamble_size: 4
preamble_detect: 2
on_packet:
then:
- lambda: |-
ESP_LOGD("fsk", "Received packet: %s", format_hex(x).c_str());

# Example button to send FSK packet
button:
- platform: template
name: "Send FSK Packet"
on_press:
then:
- sx127x.send_packet:
data: [0xC5, 0x51, 0x78, 0x82, 0xB7, 0xF9, 0x9C, 0x5C]

OOK Modulation with Remote Transmitter/Receiver

Configuration for OOK modulation in continuous mode using the remote transmitter and receiver components:

# OOK Radio Configuration (SX1276/SX1278)
sx127x:
cs_pin: GPIO18
rst_pin: GPIO23
frequency: 433920000
modulation: OOK
packet_mode: false
bitsync: false
rx_start: true
bandwidth: 50_0kHz
rx_floor: -85
pa_pin: BOOST
pa_power: 10

# Remote receiver on DIO2
remote_receiver:
pin:
number: GPIO32
allow_other_uses: true
mode:
input: true
output: true
pullup: true
open_drain: true
filter: 50us
dump: raw
idle: 1ms
tolerance: 100us

# Remote transmitter on DIO2 (shared with receiver)
remote_transmitter:
pin:
number: GPIO32
allow_other_uses: true
mode:
input: true
output: true
pullup: true
open_drain: true
eot_level: false
carrier_duty_percent: 100%
on_transmit:
then:
- sx127x.set_mode_standby
- remote_transmitter.digital_write: false
- sx127x.set_mode_tx
on_complete:
then:
- sx127x.set_mode_standby
- remote_transmitter.digital_write: true
- sx127x.set_mode_rx

# Example button to transmit OOK signal
button:
- platform: template
name: "Transmit OOK"
on_press:
then:
- remote_transmitter.transmit_raw:
code: [614, -614, 600, -614, 614, -614, 601, -614]

OLED Display Configuration

Configuration to use the onboard 0.96" OLED display:

# OLED Display
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
reset_pin: GPIO16
address: 0x3C
lambda: |-
it.printf(0, 0, id(font), "T3 LoRa32");
it.printf(0, 16, id(font), "V1.6.1");
it.printf(0, 32, id(font), "%.1f dBm", id(wifi_signal_db).state);

font:
- file: "gfonts://Roboto"
id: font
size: 14

sensor:
- platform: wifi_signal
id: wifi_signal_db
name: "WiFi Signal"
update_interval: 60s

Battery Monitoring

Configuration to monitor LiPo battery voltage:

sensor:
- platform: adc
pin: GPIO35
name: "Battery Voltage"
attenuation: 12db
filters:
- multiply: 2.0 # Voltage divider correction
update_interval: 60s

SD Card

The board includes an SD card slot on the following pins:

FunctionGPIO
CSGPIO13
MOSIGPIO15
MISOGPIO2
CLKGPIO14