Il documento Bluetooth LE doc-a-thon presso ITP Camp - 💡 Fix My Ideas

Il documento Bluetooth LE doc-a-thon presso ITP Camp

Il documento Bluetooth LE doc-a-thon presso ITP Camp


Autore: Ethan Holmes, 2019

Il documento Bluetooth LE doc-a-thon presso ITP Camp

Sono attualmente a New York per l'ITP Camp di quest'anno, 4 settimane di unconference e playground tecnologico per persone impegnate. Organizzato ogni giugno presso l'ITP, riunisce un gruppo eterogeneo di produttori, artisti, musicisti e creativi di ogni tipo - per fare cose, ascoltare relatori all'avanguardia in tecnologia e arte e collaborare con persone che normalmente non si incontrerebbero .

È anche un posto dove fare le cose per cui non sei riuscito a trovare il tempo e probabilmente non lo farei altrimenti, ed è stato questo il motivo per cui la settimana scorsa mi sono seduto insieme a Tom Igoe, Don Coleman, Sandeep Mistry, Guan Yang, JB Kim e altri, per un doc-a-thon Bluetooth lungo due giorni.

Tutti noi abbiamo lavorato con i dispositivi Bluetooth LE - insieme a Don e Sandeep sto scrivendo un libro per Make: su Bluetooth LE, cellulari e sensori, mentre Guan e JB hanno una startup che costruisce dispositivi Bluetooth LE - ma siamo tutti d'accordo che iniziare a usare Bluetooth LE era molto più difficile di quello che dovrebbe essere, e che un sacco di grandi persone lavoratrici stavano facendo cadere sul pavimento (o peggio ancora fatto di nuovo) perché la gente non sapeva che esistesse. Abbiamo deciso di sederci e fare qualcosa al riguardo.

Quindi, come parte del nostro doc-a-thon, abbiamo raccolto documentazione, video ed esempi di codice che speravamo avrebbero fatto proprio così.

In che modo Bluetooth LE è diverso?

Bluetooth LE è molto diverso dal classico Bluetooth, infatti praticamente l'unica cosa che è la stessa è il nome.

Tom Igoe e Don Coleman danno una panoramica di Bluetooth Low Energy.

Probabilmente sei abituato a pensare alle radio come una sorta di connessione seriale che funziona in modo simile a una chiamata telefonica tra due telefoni: una volta stabilita una connessione, ogni persona parla mentre l'altra ascolta e viceversa. Rimangono connessi, anche se nessuno dei due sta dicendo nulla, finché uno non riaggancia e la chiamata è terminata.

In sistemi come questi, i dati vengono trasferiti usando una coda e quando i dati vengono letti dal ricevitore, vengono cancellati dalla coda, proprio come le parole che raggiungono le orecchie al telefono, sono fuori dal canale di comunicazione. In effetti è così che funziona il Bluetooth "classico".

Bluetooth LE è molto diverso. Invece di comunicare tramite una connessione punto-punto come un telefono, una radio Bluetooth LE agisce come una bacheca della comunità, con ogni radio che funge da scheda o lettore di schede.

Se la tua radio è una bacheca, chiamata periferica periferica nel linguaggio Bluetooth LE, pubblica i dati sulla sua bacheca per consentire a tutti gli utenti della comunità di leggere. Se la radio è un lettore, chiamato dispositivo centrale in termini Bluetooth LE, può leggere da una qualsiasi delle schede (i dispositivi periferici) che contengono informazioni di cui si preoccupa.

Se non ti piace l'analogia, puoi anche pensare ai dispositivi periferici come ai server in una transazione client-server. Allo stesso modo, i dispositivi centrali sono i clienti del mondo Bluetooth LE perché leggono le informazioni dalle periferiche.

Ma mi piacciono le connessioni seriali?

La maggior parte (forse tutte?) Delle schede breakout della radio Bluetooth LE disponibili ai produttori in questo momento - il RedBearLab BLE mini e l'Adafruit Bluefruit LE per esempio - fingono di apparire come dispositivi seriali per semplicità e presentano un servizio UART all'utente. In effetti queste radio stanno "simulando" la comunicazione seriale vecchio stile sopra il paradigma della bacheca sottostanti. È un hack, e in realtà non è un buon trucco.

Mentre semplifica le cose dal lato Arduino delle cose, utilizzando la radio in questo modo si sta annullando la parte "a basso consumo" di Bluetooth LE. Le radio saranno costantemente attive e se il progetto è basato sulla batteria, questo è un grosso problema.

Tom Igoe e Don Coleman parlano di servizi e Bluetooth LE.

Immagina un esempio in cui desideri controllare un LED collegato a una scheda Arduino dal nostro telefono tramite Bluetooth LE. Se usiamo una connessione seriale, quella connessione rimarrà aperta continuamente, ma verrà utilizzata solo periodicamente, quando invieremo un 1 o uno 0 via etere sulla scheda Arduino per accendere o spegnere il LED.

In alternativa, puoi ridurre fortemente il consumo energetico del tuo progetto utilizzando Bluetooth LE come dovrebbe essere usato e implementando un servizio personalizzato per la radio collegata ad Arduino per pubblicizzare la sua capacità di accendere o spegnere il LED.

Ritornando all'esempio della nostra bacheca elettronica stiamo creando una scheda (il servizio) che ha una nota post-it allegata (nota come caratteristica nel linguaggio di Bluetooth LE) che possiamo leggere entrambi, facendoci sapere se il LED è acceso o spento o scrivere per permetterci di controllare il LED.

Costruire un servizio personalizzato

Sfortunatamente fino a poco tempo fa la creazione di servizi personalizzati per Bluetooth LE era in realtà abbastanza complicata e non per i deboli di cuore. Tuttavia sta diventando più semplice perché ora ci sono molti buoni strumenti per fare la maggior parte del lavoro pesante per te.

Alla luce di ciò, abbiamo deciso di guardare a una piattaforma, la radio nRF8001 di Nordic Semiconductor, e di individuare una toolchain completa che consentisse di creare un servizio personalizzato per la radio e di usufruire di tale servizio da un progetto Arduino. Abbiamo scelto questa particolare radio perché è prontamente disponibile e c'è un buon supporto per le biblioteche.

La prima cosa che devi fare quando si ha a che fare con nRF8001 è installare nRFGo Studio di Nordic, e mentre nRFGo è un'applicazione di MS Window, funziona bene sul Mac sotto OS X usando Wine. Questa applicazione è lo strumento necessario per creare il file di configurazione per i servizi Bluetooth LE che la radio pubblicizzerà e, come prodotto per prodotto, crea anche un file di intestazione services.h di cui avrai bisogno come parte del tuo progetto Arduino.

Il "interruttore intelligente"

Cablando il nostro esempio di interruttore luminoso intelligente.

Volevamo costruire qualcosa con più servizi, quindi abbiamo deciso di costruire un interruttore "intelligente" in cui non potevi accendere o spegnere la luce tramite Bluetooth LE, ma ottenere lo stato corrente dell'interruttore della luce (che poteva anche essere indipendente controllare la luce) e ricevere una notifica quando l'interruttore è stato attivato.

Controllo di una luce tramite Bluetooth LE.

La cosa bella di questo esempio è quanto sia semplice, oltre alla scheda Arduino e alla radio nRF8001, abbiamo deciso di utilizzare la scheda breakout Adfruit Bluefruit LE: in realtà servono solo pochi fili, resistori e altre parti comunemente disponibili.

Costruire il file di configurazione services.h usando nRFGo Studio è probabilmente la parte più difficile dell'intera toolchain, e abbiamo trascorso molto tempo a capire il modo più semplice per consentire di includere il file services.h generato all'interno del progetto Arduino, invece di dovendo includerlo nella libreria Arduino nRF8001.

Mentre ciò significava una richiesta di pull per il manutentore della libreria, e alcune modifiche manuali al file services.h, alla fine abbiamo funzionato, e questo significa che lavori interamente all'interno dell'IDE di Arduino una volta che hai generato la configurazione dei servizi .

Maggiori dettagli e tutto il codice sorgente per i progetti di esempio sono disponibili su Github come parte della documentazione e degli esempi di codice che abbiamo inserito durante il doc-a-thon.

Conclusione

Esiste ora un numero enorme di dispositivi Bluetooth LE standard, che vanno dagli indossabili alle serrature, dai droni alle lampadine, e naturalmente c'è sempre l'ormai onnipresente iBeacon, ma c'è anche un numero crescente di schede di sviluppo che significano l'utilizzo di anche questi dispositivi standard dal tuo progetto Arduino (o diventarne uno) diventano più semplici. Speriamo che il nostro doc-a-thon si dimostrerà utile per accelerare tale processo, e dato che è tutto su Github, i contributi sono ovviamente molto graditi.



Si Può Essere Interessati

Il nostro soggiorno è ora un laboratorio familiare

Il nostro soggiorno è ora un laboratorio familiare


Progetto Hands Hands

Progetto Hands Hands


Video musicale di fantascienza animato realizzato con cornici ricamate

Video musicale di fantascienza animato realizzato con cornici ricamate


Il viaggio Hobby-to-Business delle industrie acrobatiche

Il viaggio Hobby-to-Business delle industrie acrobatiche