Curiosity
Waveshare SIM7080G Cat-M/NB-IoT HAT ($32.99): breakout 30.5×65 mm formato HAT Raspberry Pi 40-pin per il chip SIMCom SIM7080G. NB-IoT + Cat-M + GNSS + GSM disabilitato (vs 7070G che ha GPRS). Onboard USB-C con bridge FT232R per testing AT senza RPi. Sul bench Visla bench-validated 2026-06-06 con SIM 1NCE su Vodafone IT roaming — entrambi NB-IoT e Cat-M registrano + HTTP GET ok. Da datasheet board level idle 39 mA, PSM module-only 3.2 µA (alta credibilità su chip + LDO MP1482 minimal). Path alternativo al LilyGO T-SIM7080G per chi vuole modem isolato dall’ESP32.
⚡ Bench 2026-06-20 — mappa comando→consumo pulita (senza RTS→PWRKEY)
Terza sessione, con lo script interattivo sim7080_bench.py che pilota in un colpo solo DPS-150 (alimenta+misura) e modem (UART). Scoperta chiave: il cablaggio RTS→PWRKEY usato nella sessione precedente era una trappola — l’RTS tenuto resettava il SIM7080 ogni ~18s (reboot loop) e gonfiava il floor. Staccato il filo, il modem si pilota a mano col PWRKEY e i numeri diventano puliti e stabili (monitor 0 reboot).
Mappa comando→consumo @ VBAT 3.8V (Cat-M, TIM via 1NCE; include ~2 mA di overhead HAT = LED + level shifter + USB-TTL):
| Stato | Comando | Consumo | Note |
|---|---|---|---|
| PSM deep | CPSMS=1 (post-T3324 ~1min) | ~2.1 mA | dorme tutto il modulo, resta registrato — più basso di RF_OFF |
| RF_OFF | CFUN=0 | 3.5 mA | radio off ma core baseband sveglio |
| IDLE-reg | — | 6.5 mA | registrato, idle-DRX (radio in ascolto) |
| GNSS | CGNSPWR=1 | 13.6 mA (picchi 19) | + GPS in acquisizione |
| TX | SNPING | ~20 mA (picchi 35) | burst di trasmissione |
PSM-observe 120s: floor stabile a 2.1 mA (tuffi a 2.1, picchi periodici a ~4.5 = finestre di paging/DRX). La PSM (2.1 mA) è più bassa di RF_OFF (3.5 mA) perché CFUN=0 tiene il core sveglio mentre la PSM addormenta l’intero modulo. Il chip nudo in PSM è ~3.2 µA da datasheet: i 2.1 mA residui sono l’overhead della HAT.
⚠️ Correzione vs sessione 2026-06-19: il “~9 mA stabile” misurato sotto era gonfiato dal reboot loop dell’RTS→PWRKEY. Senza quel filo, idle reale = 6.5 mA, PSM = 2.1 mA. NON cablare RTS→PWRKEY per svegliare via software: accendi/spegni il modem a mano (PWRKEY è un toggle) e disabilita lo sleep con
CPSMS=0+CEDRXS=0+CSCLK=0per i test attivi.
⚡ Bench 2026-06-19 — DPS-150 (VBAT diretto) + scoperta “firmware non hardware”
Seconda sessione: alimentazione e misura via DPS-150 sul pin VBAT a 3.8V diretto (bypassa il buck → vede il consumo del solo modem), UART via Waveshare USB-TTL sui pin, PWRKEY pilotato via RTS (setRTS = wake software). ⚠️ L’RTS→PWRKEY si è poi rivelato una trappola (reboot loop ogni ~18s che gonfia il floor) — vedi sessione 2026-06-20 sopra per i numeri corretti.
Risultato PSM/sleep su Cat-M (LTE-M, TIM B3, VBAT 3.8V): registrato Cat-M, poi la rete pusha eDRX/PSM → il modem dorme da solo → corrente ~9 mA (min 6.6 mA) per 165s — ⚠️ gonfiato dall’RTS (vero idle 6.5 mA / PSM 2.1 mA, vedi sopra). Conferma comunque che NB-IoT e Cat-M scendono entrambi nei mA bassi (vs Cat-1 A7670 che resta a 38 mA → vedi test consumi).
⚠️ SCOPERTA — “modem muto/garbage” = PSM, NON hardware rotto
Durante il bench ho erroneamente messo 5V sul pin VCC (è il logico 3.3V) e temevo di aver bruciato il translator. NON era così. Il modem appariva “muto/garbage” perché su Cat-M entra in PSM/eDRX entro pochi secondi e l’UART si addormenta — sembra rotto ma sta solo dormendo.
- Prova del firmware-non-hardware: con
AT+CPSMS=0+AT+CEDRXS=0+ wake via RTS→PWRKEY, il modem risponde su entrambi i path (40-pin e 8-pin del VCC incriminato) → il translator ha retto i 5V, nessun danno.- Sintomo ingannevole: se il DPS è spento il modem non assorbe (0 mA) e l’UART dà solo rumore → sembra rotto. Sempre verificare prima che ci sia alimentazione, poi che non sia PSM.
- Per test attivi su Cat-M: disabilita PSM/eDRX subito dopo il boot (
CPSMS=0+CEDRXS=0) o tieni un RTS→PWRKEY per risvegliarlo via software; altrimenti si riaddormenta tra un comando e l’altro (UART instabile 5/10).- VCC va lasciato SCOLLEGATO (lo gestisce il jumper level). I 5V vanno solo su VBAT (3.4–4.2V) o sul pin 5V del 40-pin — mai su VCC.
🔌 Collegamento header 8-pin (per MCU esterno, es. XIAO)

La fila di 8 pin in alto è il modo comodo per collegare un MCU esterno (più semplice del 40-pin RPi). Ordine sulla board: VBAT · GND · VCC · GND · RXD · TXD · DTR · PWR.
📋 VBAT su header — le 3 HAT SimCom Waveshare a confronto (per misure a VBAT diretto, bypassando il buck onboard): A7670E ✅ pinheader VBAT dedicato · SIM7080G ✅ header 8-pin (
VBAT·GND·VCC·GND·RXD·TXD·DTR·PWR) · SIM7070G ❌ solo header 6-pin (5V·GND·RXD·TXD·DTR·PWR), VBAT interno dal buck MP1482 non esposto (da schematico). A VBAT 3.7–4.2V misuri il solo modem; col 5V c’è la perdita del buck (~+65% a basso carico).
🚨 ALERT — leggere prima di cablare
- ❌ MAI 5V sul VBAT → va dritto al modem (max 4.2V) = lo bruci. Il VBAT vuole 3.4–4.2V (LiPo).
- ❌ MAI 5V sul VCC → è il logico 3.3V; 5V → la TXD del modem esce a 5V → frigge l’ingresso RX della XIAO (max 3.3V).
- ✅ I 5V vanno SOLO sul pin
5Vdel 40-pin (lì il buck li abbassa a 3.8V). Non c’è 5V sulla fila degli 8.- ❌ NON alimentare dalla micro-USB del HAT mentre usi questo header → il FT232R litiga sulla TXD del modem → modem muto. Tienila staccata.
- ⚠️ GND sempre obbligatorio condiviso (UART senza massa comune = silenzio).
- ⚠️ PWRKEY è active-LOW: impulso a GND ~1s per accendere (non HIGH). Oppure jumper PWR su B (auto-on).
- ⚠️ Jumper level su 3.3V (mai 5V con MCU 3.3V). SIM 1.8V only (no SIM telefono).
| Pin HAT | Funzione | → XIAO |
|---|---|---|
| VBAT | Alimentazione modem 3.4–4.2V (LiPo) | LiPo ~3.8V — MAI 5V |
| GND | Massa | GND (comune, obbligatorio) |
| VCC | Riferimento logico I/O (3.3V) | 3V3 XIAO (spesso non serve: lo fa il jumper level) |
| GND | Massa | — |
| RXD | UART RX del modem | ← TX = D6 |
| TXD | UART TX del modem | → RX = D7 |
| DTR | Sleep control (HIGH = sleep) | opz. |
| PWR | PWRKEY (accensione, active-LOW) | opz. (o jumper PWR su B) |
Setup consigliato senza batteria (la più semplice): 🔴 5V dell’Expansion → pin 5V del 40-pin del HAT · ⚫ GND ↔ GND · 🟡 D6/TX → RXD · ⚪ D7/RX → TXD · micro-USB HAT staccata · jumper level 3.3V · poi impulso PWRKEY a GND (o jumper PWR=B) per accendere.
🎯 PSM deep test 2026-06-06 — chip CONFERMA +CPSMSTATUS: 1 ✅
Test con config proper per ENTER PSM:
AT+CSCLK=1→ abilita slow clock per sleepAT+CNMI=0,0,0,0,0→ disattiva URC SMSAT+CMER=0,0,0,0,0→ disattiva indication eventsAT+CFUN=0/1→ reapply network modeAT+CPSMS=1,,,"00100001","00000000"→ TAU 30s, Active 0AT+CGATT=0/1→ re-attach network per negotiate PSM- 180s silence observe
Risultato fondamentale: AT+CPSMSTATUS? ha risposto +CPSMSTATUS: 1 = il chip è ENTRATO in PSM ufficiale ✅
PSM observe (180 secondi silence)
| Metric | Valore | Note |
|---|---|---|
| Min | 10.9 mA ⬇️ | Floor irriducibile = board overhead vero |
| Avg | 77.9 mA | Include paging windows |
| Max | 544 mA | RRC paging burst (rete sveglia il chip) |
Cosa significa il min 10.9 mA
Il chip in PSM scende a 3 µA datasheet. I 10.9 mA che vedo sono:
- ~7-8 mA buck MP1482 quiescent + LDO + LED
- ~3 mA TTL FT232RNL idle
- = 10-11 mA irriducibili overhead board
Quando il chip è in PSM vero, risparmia ~14 mA rispetto al floor “idle registered” (33 mA → ~10 mA). Ma per scendere ai 3 µA chip-only servirebbe rimuovere LED + buck + LDO + bridge = sostituire il HAT con BK-SIM7080G core board.
Confronto: vecchio test (no CSCLK) vs nuovo (proper config)
| Test | PSM observe min | PSM entered? |
|---|---|---|
| Prima (no CSCLK + URC active) | 33.8 mA | ❌ “PSM enabled” ma chip non scende |
| Ora (CSCLK=1 + URC off + re-attach) | 10.9 mA ✅ | ✅ +CPSMSTATUS: 1 |
→ La differenza è 3× riduzione del floor semplicemente abilitando CSCLK e silenziando URC.
Dati raw
- PNG:
/shield/waveshare-sim7080g-psm-deep-2026-06-06.png - CSV (8376 samples):
/shield/waveshare-sim7080g-psm-deep-samples-2026-06-06.csv - Script:
test-moduli/waveshare-sim7080g-hat/visla-psm-deep-test.py
🔋 PSM + MQTT bench-test 2026-06-06 — VODAFONE IT CONCEDE PSM ✅
✅ Vodafone IT 1NCE concede PSM su Cat-M
Risposta della rete a AT+CPSMS=1,,,"00100001","00000000":
+CPSMS: 1,,,"00000110","00000000"
La rete ha negoziato e accettato PSM con:
- T3412 Extended (TAU) =
00000110= 6 × 2s = 12 secondi (rete ha ridotto da 30s che ho chiesto) - T3324 (Active timer) =
00000000= 0 secondi (entra in PSM appena idle)
Questo è un risultato cruciale per Visla Tag: Vodafone IT concede PSM via Cat-M su SIM 1NCE → autonomia µA fattibile in produzione.
⚠️ Floor consumi 33 mA — NON sono i µA reali del chip
Durante PSM_OBSERVE (90s silence post-CPSMS) il FNB58 mostra:
- Floor minimo: 33.8 mA (board overhead)
- Avg: 72.54 mA (con spike RRC paging periodici)
- Spike max: 352 mA (negoziazione RRC durante PSM transitions)
Il chip SIM7080G probabilmente scende ai 3.2 µA datasheet, ma il floor del board (MP1482 buck + 3 LED + LDO + TTL FT232 overhead) maschera tutto. Per misurare davvero µA chip-only servirebbe:
- BK-SIM7080G core board (no LDO/LED)
- Modifica Waveshare HAT con dissaldatura LED + ponticello su VBAT pin
- Oppure misura direttamente con PPK2 a livello chip VBAT pin
❌ MQTT a test.mosquitto.org → AT+SMCONN ERROR
Tentato connessione MQTT plain port 1883:
AT+SMCONF="URL","test.mosquitto.org","1883" → OK
AT+SMCONN → ERROR
Cause possibili:
- 1NCE blocca outbound 1883 plain (security policy, suggeriscono TLS 8883)
- DNS resolution fallita (non ho configurato
AT+CDNSCFG) - SMCONN timeout per latency NB-IoT (15s troppo poco)
Da debuggare: provare MQTT TLS su 8883, o broker più vicino (HiveMQ EU, broker self-hosted), o HTTP POST come fallback (validato sopra ✅).
Stats fasi PSM+MQTT test
| Fase | Durata | Avg mA | Min | Max | Note |
|---|---|---|---|---|---|
| PWR_ON | 1.5s | 42.75 | 34.5 | 82.3 | RTS pulse |
| BOOT_REGISTER | 17.0s | 44.74 | 34.3 | 114.8 | RDY + CFUN |
| CHECK_REGISTRATION | 6.0s | 86.58 | 35.5 | 158.1 | AT queries |
| PDP_ACTIVATE | 7.0s | 58.26 | 34.3 | 118.8 | iot.1nce.net ✅ |
| MQTT_CONFIG | 7.5s | 83.20 | 37.8 | 134.6 | SMCONF |
| MQTT_CONNECT | 15.0s | 69.56 | 34.3 | 223.8 | ERROR ❌ |
| PDP_DEACTIVATE | 2.0s | 104.78 | 35.5 | 121.6 | |
| PSM_ENABLE | 13.0s | 60.66 | 30.3 | 138.2 | CPSMS ACCETTATO ✅ |
| PSM_OBSERVE | 90.0s | 72.54 ⚠️ | 33.8 | 352.8 | floor masked by board |
| FORCE_WAKE | 5.0s | 92.65 | 35.5 | 147.7 | RTS pulse + AT |
| SHUTDOWN | 3.1s | 69.89 | 34.0 | 118.6 | CPOWD |
Implicazioni per Visla Tag production
| Aspetto | Implicazione |
|---|---|
| PSM funziona Vodafone IT ✅ | Path produzione fattibile → autonomia mesi su LiPo |
| Board overhead nasconde µA ⚠️ | Per validation finale serve PCB custom o BK-SIM7080G |
| MQTT plain 1883 bloccato 1NCE ⚠️ | Production deve usare TLS:8883 o HTTP POST |
| Latency Cat-M ~200ms ✅ | OK per heartbeat hourly tipo Visla Tag |
Dati raw
- PNG:
/shield/waveshare-sim7080g-psm-mqtt-2026-06-06.png - CSV (5432 samples @ 32Hz):
/shield/waveshare-sim7080g-psm-samples-2026-06-06.csv - Script template:
test-moduli/waveshare-sim7080g-hat/visla-psm-mqtt-test.py
📊 Cycle test FNB58 2026-06-06 — 2 cicli Visla v2 production-like
Setup: FNB58 inline tra Mac e Waveshare USB-TTL (switch 5V) → HAT pin header (no USB-C HAT). PWR_KEY pilotato via RTS del FT232RNL = controllo completo software senza MCU esterno. SIM 1NCE su Vodafone IT Cat-M.
Fasi del ciclo (2× ripetuti)
| Fase | Durata | Avg (mA) | Min | Max | Note |
|---|---|---|---|---|---|
| A — PWRON RTS pulse 1.5s | 1.5s | 74-78 | 35-46 | 100-117 | inrush capacitive |
| B — BOOT+REGISTER | 14s | 44-68 | 34 | 221 | picchi durante RRC registration |
| C — BUSINESS (AT+ping+PDP) | 18.5s | 71-74 | 11-35 | 471 | TX peak NB-IoT/Cat-M |
| D — PWROFF (AT+CPOWD=1) | 2s | 70-79 | 39-45 | 106-116 | clean shutdown |
| E — DEEPSLEEP silence | 30s | 72-75 ⚠️ | 32-35 | 234-540 | NON va sotto floor LDO/LED |
Osservazioni chiave
- TX peak Cat-M raggiunge 471 mA (cycle 1) e 540 mA (cycle 2) — è il burst di trasmissione 0.125W class 5 LTE su VBAT 3.8V
- Floor idle ~34-40 mA = overhead board level (TTL FT232RNL ~15 mA + LDO MP1482 quiescent + 3 LED + bus VBAT translator)
- PHASE_E (DEEPSLEEP) resta a ~74 mA ⚠️ — significa che
AT+CPOWD=1non basta per scendere a µA reali. Il MP1482 buck del HAT continua ad alimentare, e il chip in shutdown viene comunque tenuto in stato “wake-on-UART” da pull-up VBAT - Per veri µA serve
AT+CPSMS=1(PSM enable con timer TAU) prima dello shutdown, oppure rimozione fisica di power (impossibile via software qui) - Stesso ciclo replicato 2 volte mostra ripetibilità ottima (avg±5%)
Cycle averages
Su 2 cicli completi (~134s totale, 4304 sample @ 32Hz):
- Avg corrente totale: ~70 mA
- Energy per ciclo: 70 mA × 67s × 5.1V = ~6.7 mWh ≈ 1.31 mAh @ 5V (sul TTL+HAT)
- Equivalente chip-only: sottraendo ~15 mA overhead TTL → ~55 mA effettivi HAT
- Battery 18650 3500mAh @ ciclo 67s ogni 5min: ~3-4 giorni (con questo cycle, NO PSM)
Per autonomia >30 giorni serve abilitare PSM (AT+CPSMS=1) e ridurre i cicli alla frequenza dettata dalla rete.
Dati raw bench
- PNG overlay:
/shield/waveshare-sim7080g-cycle-bench-2026-06-06.png - CSV samples:
/shield/waveshare-sim7080g-cycle-samples-2026-06-06.csv - Script template:
test-moduli/waveshare-sim7080g-hat/visla-v2-cycle-fnb58.py
⚡ Bench-test Visla 2026-06-06 — connessione confermata 1NCE/Vodafone IT
Setup: HAT standalone (no RPi), USB-C diretto al Mac, SIM 1NCE (ICCID 89882280666225121627) inserita, antenna LTE collegata. Identificazione via FT232R /dev/cu.usbserial-BG00W8YJ @ 115200.
Identificazione modem
| Parametro | Valore restituito |
|---|---|
| Manufacturer | SIMCOM_Ltd |
| Model | SIMCOM_SIM7080 ✅ |
| Firmware | R1951.07 (revision 1951B16SIM7080) |
| IMEI | 860016049515153 |
| ICCID SIM | 89882280666225121627 (prefisso 8988228 = 1NCE) |
| CPIN | READY ✅ |
Test NB-IoT mode (AT+CMNB=2 + CNMP=38)
| Param | Misura | Significato |
|---|---|---|
| Operator | Vodafone IT | roaming attivo via 1NCE |
| Access Tech (act) | 9 | E-UTRAN NB-IoT ✅ |
| CSQ | 20,99 | RSSI -73 dBm = ottimo |
| CEREG | 0,5 | registered roaming ✅ |
| Ping 8.8.8.8 (32B × 3) | 360 / 482 / 347 ms | avg ~396 ms |
Test Cat-M mode (AT+CMNB=1 dopo CFUN=0/1)
| Param | Misura | Significato |
|---|---|---|
| Operator | Vodafone IT | roaming attivo via 1NCE |
| Access Tech (act) | 7 | E-UTRAN Cat-M ✅ |
| CSQ | 13-15 | RSSI -83 dBm = valido |
| CEREG | 0,5 | registered roaming ✅ |
| Ping 8.8.8.8 (32B × 5) | 767 / 190 / 262 / 278 / 215 ms | avg steady ~236 ms |
| Ping 1.1.1.1 (64B × 3) | 586 / 182 / 199 ms | avg steady ~190 ms |
HTTP GET confermato (Cat-M)
AT+SHCONF="URL","http://httpbin.org" → OK
AT+SHCONN → OK (8s connect)
AT+SHREQ="/ip",1 → +SHREQ: "GET",200,32
AT+SHREAD=0,32 → {"origin":"18.184.88.141"}
IP egress 18.184.88.141 = AWS Frankfurt range = NAT 1NCE che routa tutto via Germania.
PDP context attivo
AT+CGDCONT=1,"IP","iot.1nce.net" → OK
AT+CNACT=0,1 → +APP PDP: 0,ACTIVE
AT+CNACT? → +CNACT: 0,1,"100.107.94.9"
IP CGNAT 100.107.94.9 = tipico IoT carrier-grade NAT, non raggiungibile dall’esterno ma supporta egress MQTT/HTTP/CoAP.
🆚 NB-IoT vs Cat-M — quale scegliere
| Aspetto | NB-IoT (act=9) | Cat-M (act=7) |
|---|---|---|
| Throughput UL/DL | 150 / 136 kbps | 1119 / 589 kbps |
| Latency steady | ~350-400 ms | ~190-240 ms ✅ |
| First connect (cold RRC) | rapido | 767 ms (lento RRC setup) |
| Penetrazione segnale | +20 dB (interrato/garage) ✅ | standard LTE |
| PSM/eDRX support | ottimo | ottimo |
| Coverage Italia Vodafone | confermata B20 | confermata |
| Power consumption TX | inferiore | superiore (più data rate) |
| Use case Visla | Tag asset/pet (small payload, deep indoor) | v2 vehicular con voice/audio backhaul |
🔋 Consumi datasheet Waveshare HAT
Dal wiki Waveshare (board level + module level):
| Stato | Board level (con LDO + LED + USB bridge) | Module SIM7080G solo (VBAT=3.8V) |
|---|---|---|
| Idle | 39 mA | 10 mA |
| Sleep | n/a | 1.2 mA |
| PSM | n/a | 3.2 µA ⭐ |
| eDRX (81.92s) | n/a | 0.59 mA |
Overhead board level = 29 mA (idle 39 - module 10): è il LDO MP1482 + RT9193-33 + 3 LED + FT232R + voltage translator.
Per misure µA-level reali PSM serve bypassare LED + alimentare VBAT diretto.
🆚 Confronto vs LilyGO T-SIM7080G (validato bench Visla)
| Aspetto | LilyGO T-SIM7080G | Waveshare HAT |
|---|---|---|
| MCU host | ESP32-S3 integrato | nessuno (solo modem) |
| USB-UART | nativo SIM7080G | FT232R esterno |
| Form factor | 50×25 mm | 65×30.5 mm (HAT) |
| Modem isolato (no MCU rumore) | ❌ no | ✅ sì |
| Plug-and-play AT da Mac | ✅ via USB nativo modem | ✅ via FT232R bridge |
| Test consumi chip-only | difficile (ESP32 rumore) | possibile (separato) |
| Prezzo | ~$32 | $32.99 |
| Idoneo Visla Tag produzione | sì (compatto) | no (form factor RPi) |
| Idoneo bench characterization | medio | alto ✅ |
🛠 Setup per test su Mac (no RPi)
- Jumper PWR → posizione B (PWR tied to power supply, auto-on standalone)
- In posizione A (default RPi) richiede GPIO P4 high → senza RPi non boota
- Voltage level jumper → 3.3V (default, NON spostare a 5V — SIM7080G I/O tolera max 3.3V)
- SIM card 1.8V only — NB-IoT/Cat-M, no SIM telefono 3V regolare
- Antenna LTE obbligatoria, GNSS opzionale per test cellular
- PWR_KEY → tieni premuto ≥1.5 sec dopo USB-C connesso → boot dopo 5-10s, STA LED dovrebbe lampeggiare quando registrato
LED indicators
- 🔴 PWR = power supply 3.8V presente
- 🔴 STA = modem status (acceso fisso = booted)
- 🟢 NET = network status (lampeggio = registrato/data)
Sintassi AT base testata
AT # alive check
AT+CMNB=2 # forza NB-IoT (1=Cat-M, 3=both)
AT+CNMP=38 # LTE only
AT+CGDCONT=1,"IP","iot.1nce.net"
AT+CNACT=0,1 # attiva PDP
AT+SNPING4="8.8.8.8",3,32,1000 # ping
AT+SHCONF="URL","http://... # HTTP setup
AT+SHCONN # HTTP connect
AT+SHREQ="/path",1 # 1=GET 3=POST
AT+SHREAD=0,<bodylen> # leggi body
Specs tecniche complete
| Parametro | Valore |
|---|---|
| Chip embedded | SIMCom SIM7080G (Qualcomm MDM9205) |
| Tecnologie | NB-IoT + Cat-M + GNSS (no GSM/GPRS — quello è 7070G) |
| Bande NB-IoT | B1/B2/B3/B4/B5/B8/B12/B13/B18/B19/B20/B25/B26/B28/B66/B71/B85 |
| Bande Cat-M | B1/B2/B3/B4/B5/B8/B12/B13/B14/B18/B19/B20/B25/B26/B27/B28/B66/B85 |
| GNSS | GPS + GLONASS + BeiDou + Galileo (16 channels, NMEA-0183) |
| Data rate Cat-M | UL 1119 kbps · DL 589 kbps |
| Data rate NB-IoT | UL 150 kbps · DL 136 kbps |
| TX power | Class 5 (0.125W @ LTE) |
| Alimentazione | 5V via USB-C o pin 2/4 GPIO header |
| Logic level | 3.3V default, 5V via jumper |
| USB bridge | FTDI FT232R (qualità alta, no CH340 generico) |
| Connettori antenne | 1× IPEX LTE + 1× IPEX GNSS |
| SIM slot | 1.8V only (NB-IoT/Cat-M) — NO SIM 3V telefono regolare |
| Idle current (board) | 39 mA (datasheet) |
| Idle current (module solo) | 10 mA |
| Sleep current (module) | 1.2 mA |
| PSM current (module) | 3.2 µA ⭐ |
| eDRX current (T=81.92s) | 0.59 mA |
| Form factor | 30.5 × 65 mm (RPi HAT 40-pin) |
| Operating temp | -40°C / +85°C |
| LED indicators | 3 (PWR, STA, NET) |
| Prezzo | $32.99 (1pc), $31.29 (4+) |
✅ Quando usare questa scheda
| Use case | Scelta |
|---|---|
| Bench characterization modem SimCom isolato (vs ESP32 rumore LilyGO) | Waveshare HAT ✅ |
| Visla Tag produzione compatto | LilyGO T-SIM7080G ✅ |
| Sviluppo AT/MQTT/HTTP da Mac/Linux senza RPi | Waveshare HAT ✅ (FT232R plug-and-play) |
| Confronto NB-IoT vs Cat-M coverage | Waveshare HAT ✅ (CMNB switchable rapido) |
| Test consumi PSM/eDRX con FNB58 | Waveshare HAT con LED dissaldati + VBAT diretto |
| Embedded final product | LilyGO o modulo BK-SIM7080G core board |
⚠️ Gotcha noti dal bench
- Autobaud iniziale necessario: i primi byte dopo PWR boot sono garbled (
(U\xa8H\xe8j\xaaH\xf8). Inviare burst di 5-10×AT\r\nper sync — poi parla pulito a 115200. Via pin header servono 10× burst (linea un po’ più rumorosa dei cavi Dupont vs traccia PCB interna) - PWR jumper default è A (RPi mode): senza RPi devi spostare a B per auto-boot
- CFUN=0/1 richiesto per cambio CMNB: senza re-init il cambio NB-IoT↔Cat-M non si applica
- SHREAD body length: parsare il numero da
+SHREQ: "GET",200,Ne passarlo aSHREAD=0,N— senza N esatto restituisce ERROR - CGNAT IP: l’IP assegnato
100.x.x.xnon è raggiungibile da fuori — funziona solo per egress (MQTT publish, HTTP GET, ecc.) - No GSM/GPRS fallback: a differenza del 7070G, questo NON ha 2G — se area senza Cat-M né NB-IoT, niente connessione
📌 Nota importante: cablaggio pin header (NO inversione TX/RX)
Se colleghi un host esterno (XIAO ESP32, STM32, Arduino, Waveshare USB-TTL) al 40-pin GPIO header del HAT invece di usare la USB-C onboard, NON serve invertire TX/RX al connettore. La PCB del HAT fa già l’incrocio internamente seguendo la convenzione Raspberry Pi.
Cablaggio diretto (match labels)
| Host esterno | → | HAT pin header |
|---|---|---|
| TX (host transmit) | → | pin 8 etichettato “TXD” ✅ |
| RX (host receive) | ← | pin 10 etichettato “RXD” ✅ |
| GND | ↔ | pin 6 GND |
I label sul pin header sono dal punto di vista del Pi/host (TXD = host transmit, RXD = host receive). L’incrocio verso il modem (TX host → RX modem) avviene dentro la PCB del HAT, tu non te ne preoccupi.
Regola pratica:
- Su HAT/breakout RPi-compatibile → match labels (TX↔TXD, RX↔RXD), niente inversione
- Su chip modem nudo (es. BK-SIM7080G core board, PCB custom) → inversione manuale (TX↔RX)
⚠️ Importante quando usi pin header
- SCOLLEGA la USB-C del HAT prima di usare il pin header — altrimenti il FT232R onboard compete con l’host esterno sulla TX modem (linea corrotta, modem silent)
- GND obbligatorio condiviso (memo
feedback_uart_modem_gnd_shared.md) - Voltage level jumper su 3.3V se host è XIAO/STM32 (mai 5V su logica 3.3V)
- Alimentazione 5V può venire da pin 2/4 del header o esternamente — non da host MCU 3.3V
Bench-validated 2026-06-06: identico comportamento HTTP GET su path USB-C vs path pin header (stesso CSQ, stesso ping, stessa response IP egress).