11.1. Perché Bluetooth¶
Il networking porta la camera su una rete Wi-Fi o Ethernet, così da poter dialogare con qualsiasi cosa raggiungibile da lì. Un laptop in fondo al corridoio, un server su un altro continente, un telefono in roaming sulla rete cellulare. Questa portata ha però dei prerequisiti. Deve esistere una rete. Un access point deve essere a portata, devono essere disponibili delle credenziali, un router deve essere disposto ad assegnare un indirizzo alla camera. Inoltre la camera deve mantenere la radio (o la porta Ethernet) attiva abbastanza da sostenere il collegamento.
Il Bluetooth copre il caso opposto: corto raggio, nessuna infrastruttura, basso consumo. La camera e un telefono nella stessa stanza si scambiano dati tramite un collegamento radio diretto, senza nulla in mezzo. Nessun access point, nessun router, nessuna necessità che l’uno o l’altro lato sia su una qualsiasi rete. La radio resta per lo più spenta tra brevi raffiche di attività, così che una batteria che a malapena sopravviverebbe un giorno su Wi-Fi può durare mesi.
11.1.1. Quando il Bluetooth è lo strumento giusto¶
I casi comuni su una camera:
Un telefono o un tablet si accoppia con la camera. Un utente nelle vicinanze apre un’app sul proprio telefono e configura la camera, ne legge lo stato o scarica i risultati, senza dover prima mettere entrambi i dispositivi sulla stessa rete Wi-Fi. La maggior parte dei telefoni parla Bluetooth Low Energy in modo nativo, quindi per l’utente l’esperienza è «apri l’app, premi connetti», non «prima entra in questa rete».
Un dispositivo indossabile o un sensore comunica con la camera. Una fascia cardiaca, un termometro, un beacon, un interruttore a contatto: sono tutti dispositivi alimentati a batteria progettati attorno al Bluetooth Low Energy. La camera si connette come client, ne legge i valori e integra i dati in tutto ciò che sta già facendo.
La camera pubblica un piccolo feed di stato. Livello della batteria, ultimo oggetto rilevato, frame rate: pochi numeri esposti per qualunque cosa nelle vicinanze voglia leggerli. L’accoppiamento è opzionale; per dati non sensibili la camera può pubblicizzare i valori direttamente, senza alcuna connessione.
Due camere (o una camera e un microcontrollore) condividono dati senza una rete. Entrambi i lati si conoscono a vicenda; entrambi i lati sono nello stesso edificio; non c’è motivo per cui i byte debbano salire fino al cloud e tornare giù per attraversare la stanza.
11.1.2. Quando invece il networking è lo strumento giusto¶
I compromessi del Bluetooth sono sbagliati per diversi casi comuni:
Controparti fuori portata. Nella pratica il Bluetooth Low Energy raggiunge un paio di metri, e nella migliore delle ipotesi decine di metri in spazio libero. Qualunque cosa dall’altra parte di un edificio, dall’altra parte della città o attraverso internet richiede Wi-Fi o Ethernet.
Collegamenti ad alta larghezza di banda. Nella pratica il Bluetooth Low Energy offre da decine a poche centinaia di kilobit al secondo. Lo streaming di frame o qualsiasi video significativo richiede il Wi-Fi.
Comunicazione di gruppo molti-a-molti su infrastruttura condivisa. Una stanza piena di dispositivi che dialogano tutti con un unico server, o una mesh di camere che condividono risultati: quel modello è ciò per cui è costruita una rete IP.
11.1.3. Low Energy, non classic¶
Nell’uso comune «Bluetooth» copre due stack radio distinti. Il Classic Bluetooth è quello presente nelle cuffie wireless, nell’audio in auto e nei collegamenti di tastiere/mouse: una radio di qualità voce-e-audio, uno stack relativamente complesso e un consumo energetico apprezzabile. Il Bluetooth Low Energy (BLE) è un protocollo separato e più recente che condivide il nome del marchio e la banda a 2,4 GHz ma poco altro. È costruito attorno a raffiche radio brevi e poco frequenti per mantenere minuscolo il consumo medio, e attorno a un modello dati chiave/valore anziché allo streaming audio.
MicroPython sulla camera supporta solo il BLE. Il Classic Bluetooth non fa affatto parte dell’API. «Bluetooth» qui sotto significa BLE.
11.1.4. Cosa cambia rispetto al modello di networking¶
Il BLE ha lo stesso stack a cinque livelli del networking, ma i livelli superiori si comportano diversamente:
Non esiste un’astrazione del tipo «apri un socket e invia byte». Il BLE è costruito attorno a un piccolo database chiave/valore che un lato ospita e l’altro lato legge, scrive o a cui si abbona. La camera pubblica valori con un nome (un livello di batteria, una temperatura, un registro di comando); il peer li legge o li osserva.
Non esiste l’indirizzamento per nome. I dispositivi si identificano pubblicizzando (advertising) una breve trasmissione che descrive chi sono; i peer eseguono una scansione (scan) alla ricerca di quelle trasmissioni e ne scelgono una a cui connettersi.
La radio è per lo più inattiva. Entrambi i lati concordano al momento della connessione su quanto spesso svegliarsi e dialogare. Nel frattempo, entrambi tornano a dormire.
Queste tre differenze sono ciò che allontana il resto dell’API BLE dal modello a socket.