V
Visla Hardware
Portal R&D
πŸ› οΈ R&D Visla β€” bench firmware Β· giugno 2026 Β· πŸ₯‡ board winner Visla Tag

LilyGO T-SIM7080G S3 β€” Firmware bench

ESP32-S3 + SIM7080G (NB-IoT / Cat-M) + AXP2101 Β· 15 sketch Β· bring-up, tracker, low-power
πŸ“‚ Folder GitHub β†’
βœ… PoC end-to-end β†’ GKE 🧩 15 firmware πŸ”‹ 16.4 mA Β· ~5 gg πŸ“‘ NB-IoT B20 βˆ’65 dBm

Cos'Γ¨

Suite di firmware sul modem SimCom SIM7080G (NB-IoT / Cat-M), board winner per il Visla Tag battery-powered (ESP32-S3 + AXP2101, datasheet PSM 3.2 Β΅A). Dal bring-up del PMIC (senza cui il modem Γ¨ morto) ai tracker completi β€” H02 su TCP raw fino al decoder GKE in produzione, e ora il MQTT/TLS per-device β€” passando per la profilazione consumi in duty-cycle.

I tracker sono i gemelli di quelli del T-SIM7070G e del T-A7670: stessa logica, hardware diverso, per scegliere la radio giusta del Tag.

πŸ“„ Scheda modulo completa (pinout, bench consumi, PoC GKE) β†’
πŸ”§ Board & pinout
MCU
ESP32-S3 (8MB PSRAM)
Modem
SIM7080G
PMIC
AXP2101
Modem UART
RX=4 TX=5
PWRKEY / DTR
41 / 42
PMU I2C
SDA=15 SCL=7
GPS+IMU I2C
SDA=21 SCL=45
Rete EU
NB-IoT B20

⚠️ AXP2101 init obbligatorio (enableDC3 o modem off). Lo STEMMA QT onboard Γ¨ UART, non I2C β†’ GPS/IMU sul bus 21/45.

16.4 mA
duty-cycle 30s β†’ ~5 gg con LiPo 2000mAh (βˆ’60% vs continuous)
~60-90s
cold-start β†’ posizione su Redis GKE (dominato da reg NB-IoT)
βˆ’65 dBm
NB-IoT B20 Voda IT (CSQ 25) β€” antenna +24 dB vs Waveshare HAT
3.2 Β΅A
PSM datasheet β€” target autonomia Visla Tag (da validare)
πŸ”§
Bring-up
AXP2101, passthrough, I2C scan
πŸ”¬
Sensori
IMU + GPS + T-SimHat
πŸ”‹
Consumi
Duty-cycle + PSM (autonomia Tag)
πŸ“
Tracker
HTTP, H02/TCP→GKE, MQTT/TLS
πŸ”Œ
ConnettivitΓ 
WiFi AP debug dashboard

I firmware

In ordine cronologico di sviluppo al banco. ⭐ = nuovo.

Bring-up

Blink diagnostic

blink-diagnostic

Diagnostico minimale: solo blink LED + log USB-CDC, zero PMIC e zero modem. Se vedi log e il LED lampeggia β†’ ESP32-S3 vivo, il problema Γ¨ solo PMIC/modem. Primo sketch di recovery dopo un brick AXP.

blinkno-PMUrecovery
06 giu 2026
26 righe
GitHub β†’
Bring-up

Passthrough SAFE

modem-passthrough-basic

Passthrough USB-CDC ↔ modem con XPowersLib usato SOLO per abilitare BLDO1 (il level shifter critico ESP32↔modem). Nessun disable, nessuna manipolazione raw rischiosa: la via sicura per parlare AT col SIM7080G.

passthroughBLDO1AT
06 giu 2026
67 righe
GitHub β†’
Bring-up

Passthrough + AXP2101 fix

modem-passthrough-fix-pmic

Passthrough con AXP2101 configurato correttamente: la chiave del bring-up del modem. Senza enableDC3() il rail del modem Γ¨ OFF β†’ modem morto. Qui si fissa la sequenza PMU (DC3 + BLDO1 + BLDO2) che poi tutti gli sketch riusano.

AXP2101DC3rail modem
06 giu 2026
135 righe
GitHub β†’
Bring-up

I2C scan multi-bus

i2c-scan-sensors

Scan I2C su entrambi i bus β€” PMU (15/7) + bus sensori cablato (21/45 o T-SimHat 21/22) β€” per identificare i chip presenti (AXP2101, QMI8658, INA219, MAX-M10S). Mappa l'hardware prima di costruirci sopra.

I2C scandual-bus
08 giu 2026
99 righe
GitHub β†’
Bring-up

Sensori interni

test-internal-sensors

Test dei sensori interni senza T-SimHat: temperatura interna ESP32-S3 + telemetria di carica/batteria dall'AXP2101 (VBAT, corrente, stato charging). Baseline della board nuda.

temp internaAXP telemetria
08 giu 2026
103 righe
GitHub β†’
Bring-up

Brute-force GPIO scan

test-qwiic-direct

Scan brute-force su tutte le coppie di GPIO liberi del breakout per trovare il bus I2C giusto, senza assumere il pinout Qwiic. È così che si è confermato che i sensori vivono su IO21/IO45 (lo STEMMA QT onboard è UART, non I2C!).

GPIO scanSTEMMA=UART
08 giu 2026
112 righe
GitHub β†’
Sensori

IMU 6-axis read

test-imu-read

Lettura IMU 6 assi (accel+gyro+temp) via Qwiic cablato (3V3→DC1, GND, SDA→IO21, SCL→IO45). Conferma il cabling e il chip prima di usarlo per l'allarme vibrazione.

IMUIO21/IO45
08 giu 2026
167 righe
GitHub β†’
Sensori

IMU + GPS bus condiviso

test-imu-gps-qwiic

IMU + GPS MAX-M10S sullo stesso bus I2C cablato (SDA=IO21 SCL=IO45). Valida la catena Qwiic completa (GPS @0x42 + IMU @0x6A) che alimenta poi tracker e duty-cycle.

MAX-M10SIMUQwiic chain
08 giu 2026
226 righe
GitHub β†’
Sensori

T-SimHat β€” tutti i sensori

test-simhat-sensors

Test completo del T-SimHat INA219 stackato: QMI8658 IMU 6-axis + 2Γ— INA219 (corrente/tensione) + DHT11. Bus HatWire 21/22. Per misurare i consumi onboard e prototipare le feature sensori.

T-SimHatQMI86582Γ— INA219
08 giu 2026
228 righe
GitHub β†’
Consumi

Duty-cycle 30s

visla-v2-dutycycle-30s

Bench autonomia: wake β†’ GPS poll + IMU read β†’ ESP32 deep-sleep 27s β†’ ripete. Misurato col FNB58: 16.4 mA medi (sleep 14, peak 71) β†’ βˆ’60% vs continuous, ~5 giorni con LiPo 2000mAh. Bottleneck = MAX-M10S in continuous tracking (~12 mA).

16.4 mAdeep-sleep5 giorni
08 giu 2026
238 righe
GitHub β†’
Consumi

Duty-cycle + PSMOO (GPS backup)

visla-v2-dutycycle-30s-psmoo

Tentativo di abbattere i 14 mA di floor mandando UBX-RXM-PMREQ al MAX-M10S (backup mode) prima del deep-sleep. Esito bench: ❌ 50.7 mA (PEGGIO del continuous) β€” PMREQ ignorato / auto-wake. Documentato per la prossima sessione di debug (power-gate del rail Qwiic via AXP).

PSMOOUBX-RXM-PMREQ❌ 50.7 mA
08 giu 2026
261 righe
GitHub β†’
Tracker

Prototype v2 (HTTP uplink)

visla-v2-prototype

Prototipo "prodotto": PMU + modem boot + GPS Qwiic + IMU β†’ JSON β†’ HTTP POST. Forza Cat-M con fallback NB-IoT. Primo giro completo device β†’ uplink (test su httpbin), base di tutti i tracker successivi.

HTTP POSTGPS+IMUJSON
08 giu 2026
419 righe
GitHub β†’
Tracker

GPS SimCom + H02 β†’ GKE πŸ₯‡

firmware-test-1-gps-simcom-only

PoC end-to-end VALIDATO in produzione: GPS nativo del SIM7080G (CGNSPWR/CGNSINF) β†’ pacchetto H02 via TCP raw β†’ decoder GKE Visla (decoder-lb β†’ Gx02FrameDecoder β†’ Redis). NB-IoT B20 Voda IT su 1NCE, cold-start ~60-90s. È la prova che la pipeline Visla funziona su questa board.

H02/TCPGNSS modemGKE end-to-end
09 giu 2026
240 righe
GitHub β†’
ConnettivitΓ 

WiFi AP + dashboard debug

firmware-test-2-wifi-debug

GPS SimCom + H02 con WiFi AP "visla-lilygo" e dashboard web live (http://192.168.4.1): stato modem, rete, GPS, socket TCP. Per debuggare la connettivitΓ  dal telefono senza seriale.

WiFi APdashboardH02
10 giu 2026
689 righe
GitHub β†’
Tracker

Tracker MQTT/TLS completo ⭐

firmware-mqtt-tracker

PORT del miglior MQTT tracker del 7070G su questa board: GPS u-blox dedicato (Qwiic 21/45) + IMU allarme vibrazione + presenza LWT + batch store-and-forward + diagnostica radio CPSI/CEREG, sul broker Visla mqtt.vislagps.com:8883 (TLS, auth per-device). Logica tracker identica al 7070; aggiunge bring-up AXP2101, doppio bus I2C e preferenza NB-IoT. È l'upgrade TLS sul roadmap (vs il TCP raw del test-1).

MQTT/TLS 8883GPS+IMUbatchNB-IoTβœ… validato 17 giu
17 giu 2026
443 righe
GitHub β†’

βœ… firmware-mqtt-tracker β€” validato al banco (17 giu 2026)

Cosa fa: ogni device pubblica la propria traccia GPS (batch store-and-forward) + allarmi vibrazione IMU sul broker Visla in MQTT/TLS autenticato per-device (visla/<IMEI>/pos), con presenza online/offline (LWT) e diagnostica radio (RAT, RSRP, banda, cella) in ogni messaggio. Flashato sul 7080G S3 reale (IMEI 860016049553337).

βœ… AXP2101 + rail modem (DC3) β€” bring-up ok
βœ… Registrazione NB-IoT Vodafone IT + PDP (1NCE)
βœ… MQTT/TLS 8883 authed β€” broker accetta la credenziale per-device
βœ… Publish heartbeat OK (342 B) su NB-IoT
βœ… Bridge GKE: presence online β†’ stream Redis
βœ… Device registrato in DB (id 182, claim token 7080S3MQ)
βœ… Auto-reconnect rete/PDP nel loop sui drop NB-IoT/PSM (reconnect <11s, no piΓΉ stuck)
βšͺ️ GPS/IMU da cablare (Qwiic 21/45) β†’ finora solo heartbeat, niente fix
βšͺ️ Su NB-IoT il TLS-MQTT Γ¨ pesante: valutare lo stack SMCONF nativo

Firmware v2.3-7080-rc Β· heartbeat stabili ogni 15s Β· presence online sul bridge GKE.

πŸ“Œ Note di banco

  • AXP2101 init Γ¨ MANDATORY: senza enableDC3() il rail del modem Γ¨ OFF. Sequenza provata: DC3=3.0V + BLDO1/BLDO2=3.3V. ⚠️ Mai scrivere bit raw a 0x80 (rischio brick: DC1 alimenta l'ESP32).
  • Factory DC3=3.0V β†’ registra NB-IoT B20 (segnale forte 800 MHz), NON Cat-M B3 in EU. Cat-M dove disponibile Γ¨ molto piΓΉ reattivo per TLS/MQTT.
  • Lo STEMMA QT onboard Γ¨ UART, non I2C: GPS/IMU vanno cablati sul bus IO21/IO45 (o T-SimHat 21/22).
  • Per il MQTT/TLS su NB-IoT, se PubSubClient+TLS flappa, il fallback robusto Γ¨ lo stack MQTT nativo del modem (AT+CSSLCFG="CONVERT" + SMCONF/SMCONN/SMPUB), come gli esempi ufficiali LilyGO.
  • Per battery puro il path piΓΉ economico resta TCP raw H02 (~30 B/msg vs ~80 del MQTT) β€” il MQTT/TLS Γ¨ l'upgrade di sicurezza sul roadmap.
  • Misure consumi col FNB58: staccare la batteria. PSMOO sul MAX-M10S non ha funzionato (50.7 mA) β†’ da debuggare con power-gate del rail Qwiic via AXP.