Files
MeshCore/variants/wio-tracker-l2
mikecarper fb73e3afac Add automatic red and black night mode for color screens
Default to one hour after sunset through sunrise, using fresh cached GPS or recent direct RF neighbor locations. Provide saved CLI and WebConfig controls with a small integer solar approximation and no additional framebuffer.
2026-10-25 14:41:14 -07:00
..
2026-10-08 10:01:28 +07:00

MeshCore for Seeed Wio Tracker L2 Pro

MeshCore port for the Seeed Studio Wio Tracker L2 Pro (pre-release hardware; pin map may change on production units).

Hardware

Component Detail
MCU module Wio-S3: ESP32-S3, 16 MB flash (QIO), 8 MB PSRAM (OPI)
LoRa SX1262, 862-930 MHz (SCK 4, MISO 5, MOSI 6, CS 21, RST 7, BUSY 8, DIO1 9, DIO2 = RF switch, TCXO 1.8 V)
GNSS Quectel L76K (GPS/BeiDou/GLONASS/QZSS), UART: module TX to GPIO 18, module RX from GPIO 17, 9600 baud
Display 3.2" 320x240 NV3031B on quad-SPI (SCLK 42, IO0-3 = 41/40/39/38, CS 46), 75 MHz
Touch GT911 capacitive, I2C 0x5D
Backlight LP5814 LED driver, I2C 0x2C
I/O expander TCA9535, I2C 0x21 - gates power/reset for GNSS, LCD, touch, SD, speaker amp, battery ADC, Grove
Battery ADC ADS1115, I2C 0x48, AIN0 through x2 divider
USB-C detect AW35615 CC controller, I2C 0x22 (charge detection)
Audio ES8311 codec (speaker, alert tones) + ES7243E mic ADC (unused) on I2S
I2C bus SDA 47, SCL 48
Buttons User/Boot = GPIO 0; Wake/lock button on expander P00
SD card SDIO 1-bit: CLK 2, CMD 3, D0 1 - offline map tiles, logs

Firmware flavors

Env What it does
Wio_Tracker_L2_companion_radio_ble Phone companion. Standard display UI, MeshCore app over BLE (pairing PIN 123456), on-screen Bluetooth toggle page.
Wio_Tracker_L2_companion_radio_usb Standard display companion over USB-C serial.
Wio_Tracker_L2_repeater Standalone mesh repeater.
Wio_Tracker_L2_room_server Standalone room/BBS server.

Build & flash

# from the MeshCore repo root
pio run -e Wio_Tracker_L2_companion_radio_ble

# bootloader mode if needed: hold User/Boot, tap RST, release - then:
pio run -e Wio_Tracker_L2_companion_radio_ble -t upload

The board enumerates as a native USB-CDC port (auto-reset via 1200-bps touch is enabled). For the BLE companion build, pair from the MeshCore app with the PIN shown on the device screen.

Port notes

  • Everything hangs off the TCA9535 expander. WioTrackerL2Board::begin() replays Seeed's power-up sequence; order and delays matter (especially the 500 ms LCD reset settle). If the expander probe fails, the firmware still runs but GPS/display/battery reads are dead.
  • Battery is read via the ADS1115 at +/-4.096 V FSR and mapped through a LiPo discharge curve.
  • GNSS: GPS+BeiDou+GLONASS are enabled at start ($PCAS04,7). A watchdog resets the module if it tracks 4+ strong satellites for minutes without producing a fix. Raw NMEA can be logged to SD for diagnosis. The GNSS rail starts off. The board-local provider powers it only while GPS is enabled, including scheduled wake periods, and releases the UART pads before cutting power so they cannot back-power the receiver.
  • Power: CPU drops to 80 MHz while the screen sleeps; the speaker amp and I2S clocks run only while a tone plays; the GNSS and Grove rails are gated; idle Bluetooth switches to slow advertising.
  • Display orientation: offset_rotation=1 (landscape). If a unit shows the UI upside-down, use 3 in WioTrackerL2Display.h.
  • Pin map follows Seeed's Wio Tracker L2 firmware and display support work. These pre-release assignments remain subject to hardware revision changes.