Tappa 9
Controllo da iPhone
Nessuna app da installare: è il robot stesso a servire la web app. Apri Safari, scrivi l’indirizzo e guidi.
Collegarsi al robot
Sulla Wi-Fi di casa
Se hai scritto rete e password in config.h, telefono e robot sono sulla stessa rete: apri
http://pulcino.local
Se .local non risponde (alcuni router lo bloccano), usa l’indirizzo IP mostrato nel monitor seriale.
In Access Point
Senza Wi-Fi configurata (o se la connessione fallisce), il robot crea la rete Pulcino-XXXX, password pulcino123. Collegati e apri
http://192.168.4.1
Cambia la password predefinita in config.h se usi il robot in luoghi pubblici.
La web app
In alto il video in diretta, sotto i comandi. I pulsanti di movimento funzionano “finché tieni premuto”: quando stacchi il dito, il robot si ferma. Se la connessione cade, il watchdog lo ferma comunque dopo 1 secondo.
| Pulsante | Cosa fa | Messaggio inviato |
|---|---|---|
| Avanti | Cammina in avanti | {"cmd":"move","vx":0.8,"wz":0} |
| Indietro | Cammina all’indietro | {"cmd":"move","vx":-0.6,"wz":0} |
| Gira ⟲ / ⟳ | Curva sul posto a sinistra / destra | {"cmd":"move","vx":0,"wz":±0.8} |
| Fermo | Si ferma in piedi | {"cmd":"stop"} |
| Saluta | Alza il piede, dice “ciao”, lampeggia | {"cmd":"pose","name":"wave"} |
| Riposo | Gambe larghe, servo scarichi | {"cmd":"pose","name":"rest"} |
Ci sono anche il cursore della velocità, la scelta tra camminata CPG e policy, la tensione della batteria e l’inclinazione del corpo in tempo reale.
Prova qui il gemello digitale
Stessi pulsanti della web app, ma su un robot virtuale: utile per capire cosa aspettarsi prima di provarlo sul tavolo.
Video e audio
- Video: flusso MJPEG da
http://pulcino.local:81/stream(QVGA, circa 10–20 fotogrammi al secondo). Un fotogramma singolo:/capture. - Ascolta: il microfono del robot arriva al telefono via WebSocket
/audio(PCM 16 kHz). Tocca “Ascolta” per avviarlo: iOS richiede un gesto dell’utente per riprodurre audio. - Parla: tieni premuto e la tua voce esce dallo speaker del robot.
Il limite di iOS. Safari concede il microfono solo alle pagine in HTTPS (contesto sicuro). Il robot serve la web app in semplice HTTP, quindi dall’iPhone “Ascolta” funziona ma “Parla” no. La soluzione è il Nido: fa da proxy HTTPS verso il robot e il push-to-talk torna a funzionare.
Aggiungi a Home su iPhone
- Apri la web app in Safari.
- Tocca il pulsante Condividi (il quadrato con la freccia in su).
- Scorri e scegli Aggiungi a Home, poi Aggiungi.
Comparirà l’icona di Pulcino tra le app: si apre a tutto schermo, senza barre del browser, come un’app vera.
L’API in breve
Tutto quello che fa la web app puoi farlo da uno script: basta un WebSocket su ws://pulcino.local/ws e messaggi JSON di testo.
// client → robot
{"cmd":"move","vx":0.8,"wz":0.0} // continua finché arriva stop o scade il watchdog (1 s)
{"cmd":"stop"}
{"cmd":"pose","name":"stand|rest|wave"}
{"cmd":"mode","m":"cpg|policy"}
{"cmd":"speed","v":1.0}
{"cmd":"beep","f":880,"ms":150}
{"cmd":"eyes","l":1,"r":1}
// robot → client, circa 5 volte al secondo
{"t":"tel","roll":0.01,"pitch":-0.02,"vbat":7.9,"mode":"cpg",
"pose":"stand","moving":true,"rssi":-58,"clients":2}
Per movimenti continui rimanda il comando move almeno ogni mezzo secondo. Se in config.h hai impostato API_TOKEN, aggiungi ?token=... all’indirizzo del WebSocket e delle POST. L’elenco completo degli endpoint è nella pagina Firmware e nella specifica.
Esempio minimo in JavaScript (da una pagina servita nella stessa rete):
const ws = new WebSocket("ws://pulcino.local/ws");
ws.onopen = () => ws.send(JSON.stringify({ cmd: "pose", name: "wave" }));
ws.onmessage = (e) => console.log(JSON.parse(e.data));