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.

PulsanteCosa faMessaggio inviato
AvantiCammina in avanti{"cmd":"move","vx":0.8,"wz":0}
IndietroCammina all’indietro{"cmd":"move","vx":-0.6,"wz":0}
Gira ⟲ / ⟳Curva sul posto a sinistra / destra{"cmd":"move","vx":0,"wz":±0.8}
FermoSi ferma in piedi{"cmd":"stop"}
SalutaAlza il piede, dice “ciao”, lampeggia{"cmd":"pose","name":"wave"}
RiposoGambe 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

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

  1. Apri la web app in Safari.
  2. Tocca il pulsante Condividi (il quadrato con la freccia in su).
  3. 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));