LilyGO T-SIM7070G β Firmware bench
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.
- 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.
I firmware
In ordine cronologico di sviluppo al banco.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
π 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.