Jeffrey Cross
Jeffrey Cross

Le doc-a-thon Bluetooth LE au Camp ITP

Le doc-a-thon Bluetooth LE au Camp ITP

Je suis actuellement à New York pour le camp ITP de cette année, un terrain de jeu technologique et non-conférence de 4 semaines pour les personnes occupées. Tenu tous les mois de juin à ITP, il rassemble un groupe varié de créateurs, d'artistes, de musiciens et de créatifs de toutes sortes: pour créer des œuvres, entendre des conférenciers à la pointe de la technologie et de l'art et collaborer avec des personnes qu'ils ne rencontreraient pas normalement. .

C'est aussi un endroit où faire des choses pour lesquelles vous n'avez pas réussi à trouver le temps et qui ne le serait probablement pas autrement. C'est pourquoi je me suis assis la semaine dernière - avec Tom Igoe, Don Coleman, Sandeep Mistry, Guan Yang, JB. Kim et les autres, pour un doc-a-thon Bluetooth LE de deux jours.

Nous travaillons tous avec des périphériques Bluetooth LE - avec Don et Sandeep, je suis en train d'écrire un livre pour Make: sur Bluetooth LE, téléphones portables et capteurs, tandis que Guan et JB ont une start-up en train de créer des périphériques Bluetooth LE - mais nous avons tous convenu. que commencer à utiliser Bluetooth LE était bien plus difficile qu’il ne le devrait et que beaucoup de travail formidable était fait, jadis (ou pire encore) parce que les gens ne savaient pas qu’il existait. Nous avons décidé de nous asseoir et de faire quelque chose à ce sujet.

Ainsi, dans le cadre de notre doc-a-thon, nous avons rassemblé de la documentation, des vidéos et des exemples de code que nous espérions réaliser.

En quoi Bluetooth LE est-il différent?

Bluetooth LE est très différent du Bluetooth classique, en fait, la seule chose qui est identique est le nom.

Tom Igoe et Don Coleman donnent un aperçu de Bluetooth Low Energy.

Vous êtes probablement habitué à considérer les radios comme une sorte de connexion série fonctionnant de la même manière qu'un appel téléphonique entre deux téléphones: une fois la connexion établie, chaque personne parle comme l'autre écoute et vice-versa. Ils restent connectés, même si rien ne dit rien, jusqu'à ce que l'un d'eux raccroche et que l'appel soit terminé.

Dans de tels systèmes, les données sont transférées à l’aide d’une file d’attente et, lorsque le destinataire les lit, elles sont effacées de la file d’attente. Dès que mes paroles parviennent à vos oreilles par téléphone, elles sont hors du canal de communication. Effectivement, voici comment fonctionne le Bluetooth «classique».

Bluetooth LE est très différent. Au lieu de communiquer via une connexion point à point, comme un téléphone, une radio Bluetooth LE agit comme un babillard communautaire, chaque radio jouant le rôle de panneau ou de lecteur du tableau.

Si votre radio est un tableau d'affichage (appelé périphérique dans le langage Bluetooth LE), elle affiche des données sur son tableau pour que toutes les personnes de la communauté puissent les lire. Si votre radio est un lecteur (appelé périphérique central en termes de Bluetooth LE), elle peut lire à partir de n’importe quelle carte (les périphériques) contenant des informations qui la gênent.

Si vous n'aimez pas cette analogie, vous pouvez également considérer les périphériques comme des serveurs dans une transaction client-serveur. De même, les périphériques centraux sont les clients du monde Bluetooth LE car ils lisent des informations à partir des périphériques.

Mais j'aime les connexions série?

La plupart (peut-être toutes?) Des cartes de dérivation de radios Bluetooth LE actuellement disponibles pour les fabricants (RedBearLab BLE mini et Adafruit Bluefruit LE, par exemple) prétendent ressembler à des périphériques série par souci de simplicité et présentent un service UART à l'utilisateur. Effectivement, ces radios «simulent» une communication série à l'ancienne sur le paradigme du babillard électronique sous-jacent. C’est un hack, et en fait pas un bon hack.

Bien que cela simplifie les choses du côté Arduino, en utilisant la radio de cette manière, vous niez la partie «basse énergie» de Bluetooth LE. Les radios resteront allumées en permanence, et si votre projet est basé sur une batterie, c’est un gros problème.

Tom Igoe et Don Coleman parlent de services et de Bluetooth LE.

Imaginez un exemple où vous souhaitez contrôler une LED connectée à une carte Arduino à partir de notre téléphone via Bluetooth LE. Si nous utilisons une connexion série, cette connexion sera ouverte en permanence, mais elle ne sera utilisée que périodiquement - lorsque nous envoyons un 1 ou un 0 en direct à la carte Arduino pour allumer ou éteindre le voyant.

Vous pouvez également réduire considérablement la consommation d’énergie de votre projet en utilisant Bluetooth LE comme il est censé être utilisé et en mettant en place un service personnalisé pour la radio connectée à l’Arduino afin d’annoncer sa capacité à allumer ou éteindre le voyant.

Pour revenir à notre exemple de tableau d'affichage, nous créons un tableau (le service) auquel est associé un post-it (caractéristique caractéristique du langage Bluetooth LE) que nous pouvons tous les deux lire, nous permettant de savoir si le voyant est allumé ou éteint. , ou écrivez à, ce qui nous permet de contrôler la DEL.

Construire un service personnalisé

Malheureusement, jusqu'à récemment, la construction de services personnalisés pour Bluetooth LE était en réalité assez compliquée et pas pour les âmes sensibles. Cependant, cela devient de plus en plus simple, car il existe maintenant plusieurs bons outils pour faire le gros du travail lourd pour vous.

À la lumière de cela, nous avons décidé d’examiner une plate-forme - la radio nRF8001 de Nordic Semiconductor - et de définir une chaîne d’outils complète vous permettant de créer un service personnalisé pour la radio et d’utiliser ce service à partir d’un projet Arduino. Nous avons choisi cette radio parce qu’elle est facilement disponible et que la bibliothèque dispose d’un bon soutien.

La première chose que vous devez faire avec le nRF8001 est d’installer le studio nRFGo de Nordic. Bien que nRFGo soit une application MS Window, il fonctionne parfaitement sur Mac sous OS X avec Wine. Cette application est l’outil dont vous avez besoin pour créer le fichier de configuration des services Bluetooth LE que la radio annoncera. En tant que produit accessoire, elle crée également un fichier d’en-tête services.h dont vous aurez besoin dans le cadre de votre projet Arduino.

Le «commutateur intelligent»

Câblage de notre exemple d’interrupteur intelligent.

Nous voulions créer quelque chose avec plusieurs services. Nous avons donc décidé de construire un interrupteur d'éclairage «intelligent» où vous ne pouvez pas simplement allumer ou éteindre la lumière via Bluetooth LE, mais obtenir le statut actuel de l'interrupteur d'éclairage (qui peut également fonctionner indépendamment). contrôler la lumière) et être averti lorsque l'interrupteur a été basculé.

Contrôler une lumière via Bluetooth LE.

La bonne chose à propos de cet exemple est sa simplicité, au-delà de la carte Arduino et de la radio nRF8001 - nous avons décidé d'utiliser la carte opto-adhésive Adafruit Bluefruit LE - vous n'avez en réalité besoin que de quelques fils, résistances et autres pièces disponibles sur le marché.

Construire le fichier de configuration services.h à l’aide de nRFGo Studio est probablement la partie la plus délicate de toute la chaîne d’outils. Nous avons passé beaucoup de temps à trouver le moyen le plus simple de vous permettre d’inclure le fichier services.h généré dans votre projet Arduino, au lieu de avoir à l'inclure dans la bibliothèque Arduino nRF8001.

Alors que cela signifiait une demande d'extraction pour le responsable de la bibliothèque et quelques modifications manuelles au fichier services.h, à la fin, nous avons réussi à le faire fonctionner, ce qui signifie que vous travaillez entièrement dans l'IDE Arduino une fois que vous avez généré la configuration de vos services. .

Plus de détails, ainsi que tout le code source des exemples de projets, sont disponibles sur Github dans la documentation et les exemples de code que nous avons mis en place pendant le doc-a-thon.

Conclusion

Il existe maintenant un grand nombre de périphériques Bluetooth LE disponibles dans le commerce, allant des dispositifs portables aux verrous, des drones aux ampoules - et bien sûr, il y a toujours l'iBeacon désormais omniprésent - mais il existe également un nombre croissant de cartes de développement qui permettent d'exploiter ces périphériques disponibles dans le commerce de votre projet Arduino (ou le devenir) deviennent également plus simples. Espérons que notre doc-a-thon sera utile pour accélérer ce processus, et compte tenu de toutes les contributions de Github, elles sont bien sûr très bienvenues.

Part

Laisser Un Commentaire