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

LilyGO T-SIM7070G β€” Firmware bench

ESP32-WROVER + SIM7070G (Cat-M / NB-IoT / 2G) Β· 10 sketch Β· tracker, consumi, wake-on-motion
πŸ“‚ Folder GitHub β†’
βœ… Bench validato 🧩 10 firmware πŸ“… 11–14 giu 2026 🧾 ~2104 righe

Cos'Γ¨

Suite di firmware sviluppata al banco sulla dev board LilyGO T-SIM7070G per validare il modem SIMCom SIM7070G (LTE-M / NB-IoT / 2G) come candidato per Visla v2 / Asset Lite. Si va dal primo bring-up rete + decoder H02, ai tracker completi (TCP H02 e MQTT/TLS per-device sul broker Visla), fino alla profilazione consumi e alle logiche di risparmio energetico (adattivo e wake-on-motion).

Gli stessi firmware "gemelli" girano sul T-A7670 (Cat-1) per il confronto diretto Cat-M vs Cat-1 su consumi e copertura.

πŸ”§ Board & pinout
MCU
ESP32-WROVER (NON S3)
Modem
SIM7070G
USB serial
CH9102
PWRKEY
GPIO4
Modem UART
TX=27 RX=26 DTR=25
I2C (GPS+IMU)
SDA=21 SCL=22
IMU INT1
GPIO33 (wake)
BAT ADC
GPIO35

⚠️ Niente PMIC AXP2101 (quello è il 7080G S3). Per i consumi: staccare la batteria, la carica falsa il FNB58.

πŸ”Œ
ConnettivitΓ 
Bring-up rete + decoder + MQTT
πŸ“
Tracker
Firmware tracker completi (H02 + MQTT)
πŸ”‹
Consumi
Profilazione consumi (floor / always-on / duty-cycle)
🧠
Comportamento
Logica movimento e risparmio energetico

I firmware

In ordine cronologico di sviluppo al banco.

ConnettivitΓ 

Decoder test + hotspot dashboard

firmware-decoder-test

Primo bring-up: connette il 7070 al decoder H02 Visla via TinyGSM e apre un hotspot WiFi con dashboard live (RAT 2G/LTE-M/NB-IoT via AT+CPSI?, RSSI, operatore, IP, socket, pacchetti/ACK). Architettura non-bloccante: la dashboard resta raggiungibile anche mentre il modem cerca rete.

TinyGSMH02hotspot 192.168.4.1
11 giu 2026
269 righe
GitHub β†’
Tracker

Bench Tracker v2 (H02/TCP)

firmware-bench-tracker-v2

Il tracker "vero" di riferimento: GPS u-blox SAM-M10Q/MAX-M10S (I2C 0x42), IMU autodetect (QMI8658 / LSM6DS3TR-C), 2Γ— INA219 + DHT11 se T-SimHat. Allarme vibrazione H02 (status bit0 active-low β†’ ALARM_VIBRATION) che percorre la pipeline notifiche Visla end-to-end. Reporting adattivo 10s/60s, arming auto+manuale, config NVS, event log in dashboard.

H02/TCPIMU vibrazioneINA219OTA
13 giu 2026
614 righe
GitHub β†’
ConnettivitΓ 

MQTT/TLS test (HiveMQ)

firmware-mqtt-test

Valida il giro device β†’ MQTT su TLS β†’ broker con payload JSON, su broker pubblico HiveMQ (8883). 1NCE blocca MQTT plain 1883 β†’ qui si usa sempre TLS 8883. Publish visla/test/7070g + subscribe .../cmd per demo downlink.

MQTT/TLS 8883JSON1NCE
13 giu 2026
126 righe
GitHub β†’
Tracker

Tracker MQTT/TLS completo

firmware-mqtt-tracker

Path MQTT "tracker vero": GPS reale + IMU (allarme vibrazione) + presenza LWT, tutto sul broker Visla mqtt.vislagps.com:8883 (TLS Let's Encrypt) con auth per-device (user=IMEI, ACL pattern). Publish visla/<IMEI>/pos, presence online/offline β†’ bridge β†’ stream Redis presence (websocket + DB). Subscribe .../cmd per downlink.

MQTT/TLSauth per-deviceLWT presence
13 giu 2026
418 righe
GitHub β†’
Consumi

Aggressivo (always-on)

firmware-aggressive-7070

Modem sempre connesso (MQTTS TLS), simula movimento continuo: punto sintetico ogni 1s, batch MQTT ogni 10s, niente sleep. Misura il consumo always-on del 7070 (Cat-M) per confronto diretto col gemello A7670.

always-onbenchmark consumi
14 giu 2026
96 righe
GitHub β†’
Consumi

Floor test (baseline)

firmware-floor-test

Tutto al minimo per trovare il baseline irriducibile: WiFi+BLE off, GPS in backup, modem power-off (AT+CPOWD), ESP32 in deep-sleep infinito. Serve a verificare che il modem si spenga davvero e qual Γ¨ il floor della dev board.

deep-sleepAT+CPOWD
14 giu 2026
45 righe
GitHub β†’
Consumi

Low-power duty-cycle

firmware-lowpower-test

Misura il crollo del consumo medio col duty-cycle: un giro (GPS fix β†’ modem β†’ PDP β†’ MQTT/TLS β†’ publish 1 pos β†’ power-off β†’ deep-sleep N s β†’ riavvio) vs il firmware always-on. Confronto target: Seeworld S21L 46mA / G11L SE 83mA.

duty-cyclemedia vs always-on
14 giu 2026
131 righe
GitHub β†’
Comportamento

Adattivo (state machine movimento)

firmware-adaptive

Comportamento "prodotto": macchina a stati basata sul movimento IMU. In movimento β†’ tracking attivo (GPS 1Hz nel buffer, batch MQTT ogni 10s); fermo oltre STILL_TIMEOUT β†’ deep-sleep con risveglio periodico per ricontrollare il movimento. WiFi+BLE off, modem power-off durante lo sleep.

state machineIMU polling
14 giu 2026
156 righe
GitHub β†’
Comportamento

Wake-on-motion (interrupt HW)

firmware-wakeonmotion

Evoluzione dell'adattivo: l'LSM6DS3 genera un impulso su INT1 SOLO al movimento, che sveglia l'ESP32 via ext0. Da fermo l'ESP32 non si sveglia mai β†’ consumo a riposo = floor deep-sleep (dev board ~5mA, su PCB custom <50Β΅A). Richiede il cablaggio INT1 β†’ GPIO33 (RTC-capable). Heartbeat di sicurezza a timer.

ext0 wakeINT1β†’GPIO33LSM6DS3
14 giu 2026
187 righe
GitHub β†’
Comportamento

Wake-on-motion diagnostico

firmware-womtest

Diagnostico di supporto al wake-on-motion: non dorme, tiene l'ESP32 sveglio e stampa in diretta lo stato di INT1 (GPIO33), la magnitudine dell'accelerazione e il flag wake-up dell'IMU. Serve a verificare che l'LSM6DS3 alzi davvero INT1 quando scuoti, isolando il problema dall'ext0/deep-sleep.

diagnosticoINT1 live
14 giu 2026
62 righe
GitHub β†’

πŸ“Œ Note di banco

  • 1NCE blocca MQTT plain 1883 (SMCONN ERROR) β†’ sempre TLS 8883 o HTTP POST.
  • NB-IoT dava TCP "fantasma" β†’ su NB-IoT usare UDP; LTE-M (Cat-M) invece TCP al 100% a Orvieto.
  • Floor reale ~5 mA sulla dev board (CH9102 + LED + regolatore); su PCB Visla custom scenderebbe a Β΅A.
  • Misure consumi col FNB58: staccare la batteria, altrimenti consumo + carica gonfiano i numeri.