Tappa 11
Risoluzione problemi
I guasti tipici di un piccolo bipede, dal più comune al più raro. Il primo sospettato è quasi sempre l’alimentazione.
Salta a:
Si riavvia quando si muove (brownout)
Sintomo: appena parte la camminata il robot si spegne e riaccende, la web app si disconnette, nel monitor seriale compare Brownout detector was triggered.
Causa: sei servo che partono insieme chiedono picchi di 2–3 A; se la tensione crolla per un istante, l’ESP32 si resetta.
- Usa uno step-down da almeno 3 A (meglio 5 A) e cavi in silicone corti e grossi (22 AWG).
- Aggiungi un condensatore elettrolitico 470–1000 µF sul rail 5 V, vicino ai servo (attento alla polarità).
- Controlla la carica delle batterie: sotto ~6,8 V (3,4 V per cella) è ora di ricaricare.
- Verifica che il BMS non vada in protezione: alcuni BMS economici hanno una soglia di corrente troppo bassa.
- Non alimentare i servo dalla USB del computer: non ce la fa.
I servo tremano o ronzano
- Masse non comuni: se il GND dei servo non è collegato a quello del XIAO, il segnale PWM “galleggia”. Rivedi le linee verdi dello schema.
- Contro un fine corsa: un corno montato storto fa spingere il servo contro un blocco meccanico. Rifai la calibrazione a 90° e correggi gli offset.
- Carico al limite: un leggero ronzio da fermi è normale negli MG90S; se è forte, prova la posa
restquando il robot non cammina. - Timer PWM: se hai modificato il firmware e i servo tremano solo con la camera attiva, probabilmente usano il timer LEDC 0 della camera.
- Un servo difettoso (potenziometro sporco) tende a oscillare avanti e indietro: scambialo con quello di scorta.
Non sta in piedi o cade sempre dallo stesso lato
- Calibrazione: in posa
standle gambe devono essere perfettamente verticali e i piedi paralleli al tavolo. Qualche grado di errore basta a farlo cadere. - Segni invertiti: se un giunto si muove al contrario, cambia il segno in
SERVO_DIR[]. Confronta con il viewer dei giunti qui sotto. - IMU montata storta o ruotata: rimappa gli assi in
config.h(IMU_AXIS_*,IMU_SIGN_*) e controlla che, inclinando il robot in avanti, il beccheggio in telemetria cambi nel verso atteso. - Baricentro: batterie e XIAO devono stare dove previsto; un corpo sbilanciato indietro fa cadere all’indietro.
- Pavimento: su superfici troppo lisce i piedi scivolano. Prova i gommini in TPU o un tappetino.
- Camminata troppo ambiziosa: riduci velocità e ampiezza del passo, o riallena la politica con più randomizzazione.
Qualcosa scalda
- Servo caldi: stanno lottando contro qualcosa (fine corsa, attrito, peso). Usa la posa
restnelle pause e controlla la calibrazione. - Step-down caldo: normale se tiepido; se scotta, sei al limite di corrente o c’è un corto parziale. Spegni e controlla.
- XIAO caldo: camera e Wi-Fi insieme lo scaldano parecchio, è normale. Lascia libere le feritoie di ventilazione del corpo; se serve, abbassa risoluzione e fotogrammi del video.
- Batterie calde: non è normale. Spegni subito, togli le celle e leggi la sicurezza del litio.
La camera non parte
- PSRAM disattivata: in Arduino IDE imposta PSRAM → OPI PSRAM. Senza PSRAM non c’è spazio per i fotogrammi e l’inizializzazione fallisce (errore tipo
camera init failed). - Hai una XIAO ESP32S3 Sense? La versione base non ha camera. Controlla che la schedina con camera sia agganciata bene al connettore B2B.
- Scegli la scheda XIAO_ESP32S3 nel Gestore schede, non un ESP32-S3 generico.
- Il video si blocca quando si connettono più persone? Lo stream MJPEG è pesante: meglio passare dal Nido, che lo ridistribuisce.
Audio gracchiante o assente
- Gracchia quando cammina: rumore dei servo sull’alimentazione. Alimenta il MAX98357A con cavi separati direttamente dallo step-down e aggiungi un condensatore da 100 µF vicino al suo VIN.
- Distorce: abbassa
SPEAKER_VOLUMEinconfig.h; controlla che lo speaker sia da 8 Ω. - Nessun suono: verifica BCLK = D6, LRC = D7, DIN = D10. Il pin SD del MAX98357A lasciato libero va bene (canale mono).
- Il microfono è debolissimo: è normale per il PDM della Sense; alza
MIC_GAIN. Il foro del microfono nel frontalino non deve essere coperto. - Su iPhone “Parla” non va: è il limite HTTPS di Safari, vedi Controllo e il Nido.
Non lo trovo sulla rete
- L’ESP32 funziona solo a 2,4 GHz: se il router ha nomi diversi per 2,4 e 5 GHz, usa quello a 2,4.
- Rete e password in
config.hsono sensibili a maiuscole e spazi. - Se non si collega entro qualche secondo il robot apre l’Access Point
Pulcino-XXXX: collegati e usahttp://192.168.4.1. pulcino.localnon risponde? Alcune reti (e Android) non supportano bene mDNS: usa l’IP dal monitor seriale o dalla lista dispositivi del router.- Segnale debole (RSSI sotto −75 dBm in telemetria): avvicinati al router, o controlla che l’antenna del XIAO non sia coperta da batterie e cavi.