Curiosity
Breakout SparkFun open hardware per il chip u-blox SAM-M10Q: PCB 40.64×40.64 mm con due connettori Qwiic (JST-SH I2C 0x42) + header PTH per UART, antenna patch 15×15mm integrata sul chip e backup battery 3V/1mAh per ~4 ore di hot start dopo unplug. Schematic + Eagle project su GitHub (CC BY-SA), perfetto per riusare il design o per studio layout antenna patch. Per Visla è la via più rapida per bench-test multi-GNSS (GPS+Galileo+GLONASS+BeiDou) senza saldature.
Specs tecniche
| Parametro | Valore |
|---|
| Vendor | SparkFun Electronics (USA, open hardware CC BY-SA) |
| SKU SparkFun | GPS-21834 |
| Prezzo | $51.50 (1pc) — vedi sparkfun.com |
| Chip integrato | u-blox SAM-M10Q (M10 standard precision GNSS) |
| Dimensioni breakout | 40.64 × 40.64 mm (1.6” × 1.6”) |
| Connettori dati | 2× Qwiic JST-SH (I2C addr 0x42) + PTH header 0.1” (UART + I2C + PPS) |
| Antenna | Patch 15×15 mm integrata sul chip — no antenna esterna richiesta |
| Backup battery | 3V/1mAh coin cell onboard — ~4h di hot start dopo power off |
| Voltage input | 3.3V via Qwiic (regolata onboard) |
| Schematic | Open hardware CC BY-SA — disponibile in PDF + Eagle .brd su GitHub |
| Pipeline GLB | kicad-cli pcb export glb dal repo SparkFun — render con materials nativi |
| Compatibilità Visla bench | Qwiic chain con XIAO Expansion Board (I2C bus condiviso) |
🧪 Note dal bench Visla
- ✅ 2× Qwiic = daisy-chain plug-and-play: si attacca al Grove I2C dell’XIAO Expansion Board via cavo Qwiic↔Grove, condivide bus con OLED 0x3C e RTC 0x51 senza conflitti
- ✅ Schematic + Eagle project open source: riusabile come reference layout per Visla v2 production PCB con SAM-M10Q (zero RF tuning, antenna patch integrata sul chip)
- ✅ Backup battery onboard: hot start in <1s anche dopo unplug fino a ~4h — utile per bench-test rapidi senza aspettare cold start 23s
- ✅ Consumo datasheet (chip, VCC 3.0V): tracking continuo multi-GNSS ~10mA (+V_IO 2.3mA), GPS-only 7.5mA, acquisizione 13mA, PSM cyclic 5mA, backup HW 32µA / SW standby 46µA. ⚠️ Il backup vero è µA — al bench il gemello MAX-M10S faceva 8mA per l’overhead board (PWR LED). Inrush fino a 100mA all’avvio. Vedi test consumi
- ✅ Eagle library
u-blox_SAM-M10Q.lbr importabile in KiCad (symbol+footprint del SAM-M10Q) + .brd/.sch reference — già in fornitori/sparkfun-sam-m10q/, base pronta per la sezione GPS del PCB Tag (antenna integrata = zero RF tuning)
- ⚠️ Prezzo single-qty $51.50: alto per essere “solo” un breakout — paghi l’antenna patch integrata + Qwiic + backup battery. Per produzione vai chip nudo (€7.50/q1k)
- ⚠️ Form factor 40.64×40.64 mm: troppo grande per packaging Visla v2 finale, OK solo per bench
⚠️ Gotchas
- Qwiic feeds 3.3V — collegare a 5V Grove brucia il regolatore onboard (rare ma possibile)
- Backup battery CR coin cell: se rimane scollegata >4h il fix torna cold start (~23s)
- I2C address fisso 0x42 (standard u-blox DDC) — non riconfigurabile, conflitto con altri devices same-addr
- 2× Qwiic ports ma stesso bus I2C — daisy-chain, NON multiplexing
📊 Consumi — ufficiali (chip) vs misurati Visla (modulo)
📄 Ufficiali u-blox (chip SAM-M10Q, datasheet R03, VCC 3.0V)
| Stato | Consumo |
|---|
| Tracking multi-GNSS | 10 mA (+2.3 mA V_IO) |
| Tracking GPS-only | 7.5 mA |
| Acquisizione | 13 mA |
| PSM cyclic 1Hz | 5 mA |
| Backup HW / SW standby | 32 µA / 46 µA |
🧪 Misurati Visla (modulo, DPS-150 @3.3V, 2026-06-24, pyubx2 @9600)
| Stato | Misurato | Note |
|---|
| Tracking (fix) | 9.9 mA (33 mW) | combacia col datasheet (~10 mA) ✅ — molto meno del DAN-F10N (19.4 mA) |
| Sleep RXM-PMREQ | 2.2 mA (modulo) | il chip è a µA; i 2.2 mA sono overhead breakout (backup battery in carica + PWR LED). Wake: serve un burst UART (1 byte solo non basta) |
| PSM (OPERATEMODE=1) | ~10.3 mA (no risparmio) | indoor il chip resta in acquisizione a piena potenza e non entra nel cyclic-tracking → i ~5 mA datasheet si vedono solo outdoor con fix pulito. Da rifare al balcone |
⚠️ Gotcha PSM: la Power Save Mode viene rifiutata (ACK-NAK) se BeiDou B1C è abilitato — bisogna prima disattivare BeiDou (CFG_SIGNAL_BDS_ENA=0), poi CFG_PM_OPERATEMODE=1 (il valore 2/PSMCT dell’M8 non esiste sull’M10).
✅ Config tracker applicata (automotive + NAV-PVT + MON-RF + ITFM, RAM+BBR) · ✅ AssistNow Autonomous attivato (CFG_ANA_USE_ANA=1, aopCfg=1). Il SAM ha GLONASS (visto nei GSA), a differenza del DAN-F10N.
📡 Set comandi completo (programmazione M10 SPG 5.10)
Il SAM-M10Q usa lo stesso firmware ROM SPG 5.10 del MAX-M10S → set comandi identico (stesso Interface Description M10-FW500). 3 protocolli su UART/I2C: NMEA (testo), UBX (binario), config interface (chiavi CFG via VALSET/VALGET). Totale: 79 UBX + 26 NMEA = 105 messaggi + ~28 gruppi config (centinaia di chiavi). Tutti elencati sotto con descrizione. Verificato al bench Visla via pyubx2 (23/06/2026, ACK/VALGET sul gemello MAX-M10S).
🛰️ UBX-NAV (0x01) — navigazione · 24 messaggi
| Msg | ID | Descrizione |
|---|
| NAV-PVT | 0x07 | Position + velocity + time (il principale, tutto in uno) |
| NAV-POSLLH | 0x02 | Posizione geodetica (lat/lon/alt) |
| NAV-POSECEF | 0x01 | Posizione in ECEF (X/Y/Z) |
| NAV-VELNED | 0x12 | Velocità in frame NED |
| NAV-VELECEF | 0x11 | Velocità in ECEF |
| NAV-STATUS | 0x03 | Stato navigazione (fix type, flags) |
| NAV-SAT | 0x35 | Info per satellite (CNR, elevazione, azimuth) |
| NAV-SIG | 0x43 | Info per segnale (qualità, correzioni) |
| NAV-DOP | 0x04 | Diluizione di precisione (HDOP/VDOP/PDOP) |
| NAV-COV | 0x36 | Matrici di covarianza (incertezza pos/vel) |
| NAV-ORB | 0x34 | Stato database orbite (effemeridi/almanacco/AOP) |
| NAV-SBAS | 0x32 | Stato correzioni SBAS |
| NAV-SLAS | 0x42 | Stato QZSS L1S SLAS |
| NAV-ODO | 0x09 | Odometro (distanza percorsa) |
| NAV-RESETODO | 0x10 | Reset odometro |
| NAV-CLOCK | 0x22 | Soluzione di clock del ricevitore |
| NAV-EOE | 0x61 | End of epoch (marca fine epoca) |
| NAV-TIMEGPS | 0x20 | Tempo GPS |
| NAV-TIMEGAL | 0x25 | Tempo Galileo |
| NAV-TIMEGLO | 0x23 | Tempo GLONASS |
| NAV-TIMEBDS | 0x24 | Tempo BeiDou |
| NAV-TIMEQZSS | 0x27 | Tempo QZSS |
| NAV-TIMEUTC | 0x21 | Tempo UTC |
| NAV-TIMELS | 0x26 | Info evento leap-second |
⚙️ UBX-CFG (0x06) — configurazione · 18 messaggi
| Msg | ID | Descrizione |
|---|
| CFG-VALSET | 0x8a | Scrive chiavi di config (RAM/BBR/Flash) |
| CFG-VALGET | 0x8b | Legge chiavi di config |
| CFG-VALDEL | 0x8c | Cancella chiavi di config |
| CFG-CFG | 0x09 | Clear / save / load configurazione |
| CFG-RST | 0x04 | Reset ricevitore + clear backup (cold/warm/hot) |
| CFG-PRT | 0x00 | Config porte I/O (UART/I2C/SPI, baud) |
| CFG-MSG | 0x01 | Rate di output per singolo messaggio |
| CFG-RATE | 0x08 | Rate di navigazione/misura (1Hz, 10Hz…) |
| CFG-NAV5 | 0x24 | Motore di navigazione (dynamic model, soglie) |
| CFG-NAVX5 | 0x23 | Motore di navigazione expert |
| CFG-GNSS | 0x3e | Selezione costellazioni (GPS/Gal/GLO/BDS) |
| CFG-NMEA | 0x17 | Configurazione estesa protocollo NMEA |
| CFG-INF | 0x02 | Quali messaggi INF emettere per protocollo |
| CFG-ANT | 0x13 | Controllo antenna (supervisor, alimentazione) |
| CFG-ITFM | 0x39 | Monitor jamming/interferenze |
| CFG-ODO | 0x1e | Odometro + filtro COG a bassa velocità |
| CFG-DAT | 0x06 | Datum geodetico (custom) |
| CFG-BATCH | 0x93 | Configurazione data batching |
📶 UBX-MGA (0x13) — A-GNSS / AssistNow · 9 messaggi
| Msg | ID | Descrizione |
|---|
| MGA-GPS | 0x00 | Assistenza GPS (effemeridi/almanacco/health/UTC/iono) |
| MGA-GAL | 0x02 | Assistenza Galileo |
| MGA-GLO | 0x06 | Assistenza GLONASS |
| MGA-BDS | 0x03 | Assistenza BeiDou |
| MGA-QZSS | 0x05 | Assistenza QZSS |
| MGA-ANO | 0x20 | AssistNow Offline (orbite a lunga validità) |
| MGA-INI | 0x40 | Aiding iniziale (posizione/tempo/clock/frequenza) |
| MGA-DBD | 0x80 | Dump/restore navigation database |
| MGA-ACK | 0x60 | Acknowledge dei messaggi di assistenza |
🔋 UBX-RXM (0x02) · 🩺 UBX-MON (0x0a) · 🔐 UBX-SEC (0x27)
| Msg | ID | Descrizione |
|---|
| RXM-PMREQ | 0x41 | Power management request (backup/standby → 46µA) |
| RXM-MEASX | 0x14 | Misure satellitari (locationing/RRLP) |
| RXM-SFRBX | 0x13 | Subframe di navigazione broadcast (raw) |
| RXM-RLM | 0x59 | Galileo SAR return-link message |
| MON-VER | 0x04 | Versione firmware/hardware |
| MON-HW | 0x09 | Stato hardware |
| MON-HW3 | 0x37 | Stato pin I/O |
| MON-RF | 0x38 | Info catena RF (jamming, AGC, noise) |
| MON-COMMS | 0x36 | Statistiche porte di comunicazione |
| MON-SPAN | 0x31 | Spettro del segnale (analisi banda) |
| MON-GNSS | 0x28 | Selezione GNSS major attiva |
| MON-RXR | 0x21 | Stato ricevitore (sveglio/dorme) |
| MON-PATCH | 0x27 | Patch firmware installate |
| MON-BATCH | 0x32 | Stato buffer data batching |
| SEC-UNIQID | 0x03 | ID univoco del chip |
📋 UBX-LOG (0x21) · UBX-INF (0x04) · UBX-ACK (0x05) · UBX-TIM (0x0d) · UBX-UPD (0x09)
| Msg | ID | Descrizione |
|---|
| LOG-BATCH | 0x11 | Dati batched (posizioni registrate) |
| LOG-RETRIEVEBATCH | 0x10 | Richiede i dati batched |
| INF-DEBUG/ERROR/NOTICE/TEST/WARNING | 0x04/00/02/03/01 | Output informativo ASCII (5 livelli) |
| ACK-ACK / ACK-NAK | 0x01 / 0x00 | Conferma / rifiuto di un comando |
| TIM-TM2 | 0x03 | Time mark (timestamp evento esterno) |
| TIM-TP | 0x01 | Time pulse time data |
| TIM-VRFY | 0x06 | Verifica del tempo sorgente |
| UPD-SOS | 0x14 | Save-on-shutdown (backup stato in flash) |
📜 NMEA standard (21) + PUBX proprietari (5)
| Msg | Descrizione |
|---|
| GGA | Fix data (posizione, n. satelliti, HDOP, quota) — il più usato |
| RMC | Recommended Minimum (pos, velocità, data, status) |
| GLL | Lat/long + tempo + status |
| GNS | GNSS fix data (multi-costellazione) |
| GSA | DOP + satelliti attivi |
| GSV | Satelliti in vista (CNR per satellite) |
| VTG | Course over ground + velocità |
| ZDA | Data e ora |
| GST | Statistiche errore pseudorange |
| GRS | Residui di range |
| GBS | Satellite fault detection |
| GAQ/GBQ/GLQ/GNQ/GPQ/GQQ | Poll di un messaggio standard (6 query) |
| DTM | Datum reference |
| VLW | Distanza ground/water |
| TXT | Trasmissione testo |
| RLM | Return link message (Galileo SAR) |
| PUBX,00 (POSITION) | Posizione lat/long proprietaria |
| PUBX,03 (SVSTATUS) | Stato satelliti |
| PUBX,04 (TIME) | Ora del giorno + clock |
| PUBX,40 (RATE) | Set rate di output NMEA |
| PUBX,41 (CONFIG) | Set protocolli e baud rate |
🗂️ Gruppi config (CFG-* via VALSET, ~30 → centinaia di chiavi)
CFG-PM (power), CFG-SIGNAL, CFG-RATE, CFG-NAVSPG, CFG-MSGOUT, CFG-ANA (AssistNow), CFG-MOT, CFG-ITFM, CFG-ODO, CFG-SBAS, CFG-QZSS, CFG-TP, CFG-SEC, CFG-TXREADY, CFG-NMEA, CFG-INFMSG, CFG-RINV, CFG-HW, CFG-BATCH, CFG-UART1/I2C/SPI (+INPROT/OUTPROT).
🔗 Risorse