Indice TinyGS ARTICOLO 5

Troubleshooting

I problemi che ti capiteranno davvero, con le cause vere e i fix che funzionano. Tutti basati su prove sul mio banco.

"Radio failed, code -2"

È l'errore più comune e ha un significato preciso: il modulo LoRa non risponde sul bus SPI. TinyGS scrive un comando, aspetta una risposta, non arriva niente → code -2.

Cause in ordine di probabilità:

  1. Cablaggio incompleto/sbagliato. Nella mia esperienza il pin SCK era staccato (un dupont allentato): senza clock SPI il modulo non legge nulla, risultato code -2. Verifica con tester la continuità di ogni filo
  2. Alimentazione che cede. Il Ra-01 tira picchi di 100+ mA. Se il rail 3.3V dell'ESP32 cala sotto 3.0V durante l'init, il modulo non si avvia. Sintomo subdolo: l'ESP32 boota, il WiFi va, il MQTT si collega, ma il modulo no. Rimedio: condensatore 100µF + 100nF in parallelo su VCC del modulo, oppure alimentatore esterno 3.3V dedicato con GND comune
  3. Board type sbagliata nella Web Panel. Se nel pannello hai selezionato es. "TTGO LoRa v1" ma hai cablato secondo "Heltec V2", alcuni pin SPI coincidono e altri no — TinyGS tenta SPI sul pin sbagliato e non risponde nessuno
  4. MISO e MOSI scambiati. Statisticamente è l'errore di cablaggio più comune. Sigle simili, è facile sbagliarsi. Mio sketch di test (vedi sotto) lo rileva subito
  5. Modulo difettoso o non SX1278. Esistono cloni cinesi venduti come "Ra-01" che in realtà sono SX1262 (diverso protocollo SPI). Verifica la sigla sul chip nero al centro del modulo

Boot loop continuo

L'ESP32 si riavvia ogni 2-3 secondi, magari con messaggi tipo Brownout detector was triggered.

È un problema di alimentazione insufficiente: il Ra-01 tira troppa corrente per il rail 3.3V e l'ESP32 protegge.

  • Scollega temporaneamente il VCC del modulo: se l'ESP32 boota normale, è confermato
  • Aggiungi i condensatori di bypass al modulo
  • Usa un cavo USB di qualità (alcuni cavi telefonici hanno fili da 28 AWG che cadono di 0,5 V sotto carico)
  • Usa una porta USB potente (USB 3 del PC, o alimentatore 5V/2A)
  • Soluzione definitiva: alimentatore 3.3V esterno per il solo modulo, con GND comune con l'ESP32

L'AP "My TinyGS" non appare

Cerchi la rete My TinyGS dal telefono e non c'è.

Cause:

  • skipApStartup() attivo nel codice. Il firmware originale di TinyGS aspetta che fallisca la connessione WiFi salvata prima di attivare l'AP. Se hai appena flashato con flash cancellata, aspetta 30-60 secondi
  • L'ESP32 ricorda una vecchia config WiFi. Il "pio run -t erase" cancella tutto, ma se hai usato altri metodi di flash potrebbe restare la NVS. Soluzione: pio run -e ESP32 -t erase seguito da nuovo upload
  • Il nome AP è cambiato. Se nel portale hai impostato un "Station name" personalizzato, l'AP prende quel nome al posto di "My TinyGS"
  • Banda del telefono: alcuni telefoni di vecchia generazione nascondono le reti aperte (senza password). Prova "Aggiungi rete manualmente" digitando My TinyGS

Alternativa che funziona sempre: configurazione via Improv-Serial dal browser improv-wifi.com (richiede Chrome o Edge per la Web Serial API). Bypassa completamente l'AP.

ESP32-C3: cose da sapere

Se usi un ESP32-C3 mini invece di un ESP32 classico:

  • Serial sull'USB nativa: per vedere Serial.print() devi compilare con -DARDUINO_USB_CDC_ON_BOOT=1 nel platformio.ini, altrimenti i log vanno sull'UART0 hardware che non è collegata
  • Reset del chip dal Python pyserial: la sequenza standard (dtr=True; rts=False) mette l'ESP32-C3 in DOWNLOAD MODE, non in boot da flash. Per resettare per boot normale usa s.dtr=False; s.rts=True; sleep; s.dtr=False; s.rts=False
  • Radio WiFi più debole dell'ESP32 classico. Se sei lontano dal router, il C3 può non agganciare la rete mentre un ESP32 normale sì
  • "AP non visibile" è più frequente sul C3 perché la stack WiFi della libreria si comporta diversamente

Vedo un AP "BaroSat" o simile, non "My TinyGS"

Significa che il nome stazione è stato modificato in una configurazione precedente, e l'AP usa quel nome al posto del default.

In TinyGS l'AP locale prende il thingName della stazione: se hai rinominato la stazione a "BaroSat" dalla Web Panel, dopo il riavvio l'AP si chiamerà "BaroSat", non più "My TinyGS".

Per tornare al default: pio run -e ESP32 -t erase seguito da flash → NVS pulita → default ripristinato.

Sketch diagnostico SPI

Quando non capisci se è cablaggio, alimentazione o modulo guasto, la cosa più rapida è flashare uno sketch minimale che fa una sola operazione SPI: leggere il registro REG_VERSION (0x42) del SX1278. Il chip risponde sempre con 0x12 se è SX1278.

  • Riceve 0x12 → modulo OK, problema è altrove (config TinyGS)
  • Riceve 0x00 → no risposta. Cause: MOSI/MISO scambiati, NSS sempre HIGH, SCK staccato, modulo non alimentato
  • Riceve 0xFF → MISO scollegato (legge sempre HIGH)
  • Riceve altro → modulo presente ma non è SX1278 (probabile SX1262 o altro)

Lo sketch è una trentina di righe di Arduino. Se vuoi te lo passo nella sezione contatti, lo metto su GitHub Gist quando ho un attimo.

"Tutto sembra ok ma non ricevo nessun pacchetto"

Il flusso completo funziona (WiFi, MQTT, radio) ma sul dashboard di tinygs.com non vedi mai un pacchetto.

  • Stazione non registrata: senza registrazione con OTP il backend non ti assegna pass. Vai su tinygs.com/user/addstation
  • Coordinate sbagliate: se nel profilo hai messo lat/lon errate, il backend ti assegna pass che non ti passano sopra
  • Antenna scarsa o male posizionata: dentro casa difficilmente riceverai. Anche all'aperto con stilo da 4 cm la sensibilità è marginale
  • Pazienza: i pass durano ~10 minuti, e per molti satelliti il pacchetto di telemetria viene trasmesso ogni 1-2 minuti. Devi essere in ascolto nel momento giusto. Il primo pacchetto ricevuto può arrivare ore dopo l'attivazione
Home TinyGS