Skip to content

Commit 3f0ed28

Browse files
authored
Add Heltec LoRa 32 V3 docs (#1330)
1 parent b357751 commit 3f0ed28

File tree

2 files changed

+242
-0
lines changed

2 files changed

+242
-0
lines changed
28.9 KB
Loading
Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
---
2+
title: Heltec WiFi LoRa 32 V3
3+
date-published: 2025-11-17
4+
type: misc
5+
standard: Global
6+
board: esp32
7+
---
8+
9+
![Heltec WiFi LoRa 32 V3](heltec-wifi-lora-32-v3.webp "Heltec WiFi LoRa 32 V3")
10+
11+
Model reference: WiFi LoRa 32 V3
12+
13+
Manufacturer: [Heltec Automation](https://heltec.org/project/wifi-lora-32-v3/)
14+
15+
## Product Description
16+
17+
The Heltec WiFi LoRa 32 V3 is a development board featuring an ESP32-S3 microcontroller with integrated WiFi,
18+
Bluetooth, and a Semtech SX1262 LoRa radio transceiver. It includes a 0.96" OLED display and is designed for
19+
IoT applications requiring long-range wireless communication.
20+
21+
### Key Features
22+
23+
- ESP32-S3 dual-core processor @ 240MHz
24+
- 8MB Flash memory
25+
- SX1262 LoRa radio (433MHz or 868/915MHz variants)
26+
- 0.96" OLED display (128x64)
27+
- WiFi 802.11 b/g/n
28+
- Bluetooth 5 (LE)
29+
- USB-C connector
30+
- LiPo battery connector with charging circuit
31+
- Onboard CP2102 USB-to-UART bridge
32+
33+
## GPIO Pinout
34+
35+
### LoRa SX1262 Pins
36+
37+
| Function | GPIO |
38+
|----------|------|
39+
| SPI CLK | GPIO9 |
40+
| SPI MOSI | GPIO10 |
41+
| SPI MISO | GPIO11 |
42+
| CS | GPIO8 |
43+
| RST | GPIO12 |
44+
| BUSY | GPIO13 |
45+
| DIO1 | GPIO14 |
46+
47+
### Display (OLED)
48+
49+
| Function | GPIO |
50+
|----------|------|
51+
| SDA | GPIO17 |
52+
| SCL | GPIO18 |
53+
| RST | GPIO21 |
54+
55+
### Other Pins
56+
57+
| Function | GPIO |
58+
|----------|------|
59+
| Button | GPIO0 |
60+
| LED | GPIO35 |
61+
| Battery ADC | GPIO1 |
62+
| Vext Control | GPIO36 |
63+
64+
## Basic Configuration
65+
66+
Minimum configuration required for the Heltec WiFi LoRa 32 V3:
67+
68+
```yaml
69+
esphome:
70+
name: "heltec"
71+
72+
esp32:
73+
variant: esp32s3
74+
flash_size: 8MB
75+
cpu_frequency: 240MHZ
76+
framework:
77+
type: esp-idf
78+
79+
logger:
80+
hardware_uart: UART0
81+
82+
api:
83+
84+
ota:
85+
platform: esphome
86+
87+
wifi:
88+
ssid: !secret wifi_ssid
89+
password: !secret wifi_password
90+
91+
# SPI bus for LoRa radio
92+
spi:
93+
clk_pin: GPIO9
94+
mosi_pin: GPIO10
95+
miso_pin: GPIO11
96+
97+
# I2C for OLED display
98+
i2c:
99+
sda: GPIO17
100+
scl: GPIO18
101+
frequency: 400kHz
102+
```
103+
104+
## LoRa Radio Configuration
105+
106+
```yaml
107+
# LoRa Radio Configuration (SX1262)
108+
sx126x:
109+
dio1_pin: GPIO14
110+
cs_pin: GPIO8
111+
busy_pin: GPIO13
112+
rst_pin: GPIO12
113+
pa_power: 3
114+
bandwidth: 125_0kHz
115+
crc_enable: true
116+
frequency: 433920000
117+
modulation: LORA
118+
rx_start: true
119+
hw_version: sx1262
120+
rf_switch: true
121+
sync_value: [0x14, 0x24]
122+
preamble_size: 8
123+
spreading_factor: 7
124+
coding_rate: CR_4_6
125+
tcxo_voltage: 1_8V
126+
tcxo_delay: 5ms
127+
on_packet:
128+
- lambda: |-
129+
ESP_LOGD("lora", "Received packet RSSI: %.2f dBm, SNR: %.2f dB, Data: %s",
130+
rssi, snr, format_hex(x).c_str());
131+
132+
# Example button to send LoRa packet
133+
button:
134+
- platform: template
135+
name: "Send LoRa Packet"
136+
on_press:
137+
then:
138+
- sx126x.send_packet:
139+
data: [0xDE, 0xAD, 0xBE, 0xEF, 0xCA, 0xFE, 0xBA, 0xBE]
140+
```
141+
142+
## FSK Modulation Configuration
143+
144+
```yaml
145+
# FSK Radio Configuration (SX1262)
146+
sx126x:
147+
dio1_pin: GPIO14
148+
cs_pin: GPIO8
149+
busy_pin: GPIO13
150+
rst_pin: GPIO12
151+
pa_power: 3
152+
bandwidth: 78_2kHz
153+
crc_enable: true
154+
frequency: 433920000
155+
modulation: FSK
156+
rx_start: true
157+
payload_length: 0
158+
hw_version: sx1262
159+
bitrate: 4800
160+
rf_switch: true
161+
sync_value: [0x33, 0x33]
162+
preamble_size: 4
163+
preamble_detect: 2
164+
tcxo_voltage: 1_8V
165+
tcxo_delay: 5ms
166+
on_packet:
167+
then:
168+
- lambda: |-
169+
ESP_LOGD("fsk", "Packet RSSI: %.2f dBm, SNR: %.2f dB, Data: %s",
170+
rssi, snr, format_hex(x).c_str());
171+
172+
button:
173+
- platform: template
174+
name: "Send FSK Packet"
175+
on_press:
176+
then:
177+
- sx126x.send_packet:
178+
data: [0xC5, 0x51, 0x78, 0x82, 0xB7, 0xF9, 0x9C, 0x5C]
179+
```
180+
181+
## OLED Display Configuration
182+
183+
Configuration to use the onboard 0.96" OLED display:
184+
185+
```yaml
186+
# OLED Display
187+
display:
188+
- platform: ssd1306_i2c
189+
model: "SSD1306 128x64"
190+
reset_pin: GPIO21
191+
address: 0x3C
192+
lambda: |-
193+
it.printf(0, 0, id(font), "Heltec V3");
194+
it.printf(0, 16, id(font), "WiFi LoRa 32");
195+
it.printf(0, 32, id(font), "%.1f dBm", id(wifi_signal_db).state);
196+
197+
font:
198+
- file: "gfonts://Roboto"
199+
id: font
200+
size: 14
201+
202+
sensor:
203+
- platform: wifi_signal
204+
id: wifi_signal_db
205+
name: "WiFi Signal"
206+
update_interval: 60s
207+
```
208+
209+
## Battery Monitoring
210+
211+
Configuration to monitor LiPo battery voltage:
212+
213+
```yaml
214+
sensor:
215+
- platform: adc
216+
pin: GPIO1
217+
name: "Battery Voltage"
218+
attenuation: 12db
219+
filters:
220+
- multiply: 2.0 # Voltage divider correction
221+
update_interval: 60s
222+
```
223+
224+
## Power Management
225+
226+
The Vext pin (GPIO36) controls power to external peripherals. Set it LOW to enable power:
227+
228+
```yaml
229+
switch:
230+
- platform: gpio
231+
pin: GPIO36
232+
id: vext
233+
name: "Vext Control"
234+
inverted: true
235+
restore_mode: ALWAYS_ON
236+
```
237+
238+
## Links
239+
240+
- [Product Page](https://heltec.org/project/wifi-lora-32-v3/)
241+
- [Pinout Diagram](https://resource.heltec.cn/download/WiFi_LoRa_32_V3/HTIT-WB32LA(F)_V3.png)
242+
- [Schematic](https://resource.heltec.cn/download/WiFi_LoRa_32_V3/HTIT-WB32LA(F)_V3_Schematic_Diagram.pdf)

0 commit comments

Comments
 (0)