Avec l’iPhone 6, Apple a supprimé une fonction qui existait depuis un moment : le capteur Nike+. Il est en effet utilisable depuis l’iPhone 3GS sans le récepteur, mais si l’application existe toujours sous iOS 8 avec les iPhone 4S, 5 et 5S, l’iPhone 6 n’est plus compatible. J’en ai profité pour tester un truc qui traînait dans mes cartons depuis des années : réutiliser le capteur.
On va essayer de faire simple : le capteur communique avec son récepteur en utilisant une technologie proche du Bluetooth LE, dans la bande des 2,4 GHz. Techniquement, il transmet juste des informations pendant une dizaine de secondes dès qu’il est sollicité, sans se préoccuper de qui les reçoit. Pour les recevoir, la solution la plus simple consiste à utiliser l’adaptateur de SparkFun. Il s’agit d’un adaptateur série/USB qui peut recevoir le récepteur destiné aux iPod nano, vu qu’il utilise une liaison série classique. Il existe d’autres solutions, mais c’est la plus simple (à défaut d’être la moins onéreuse).
Lire les données est trivial, on trouve des programmes dans divers langages sur le Net. Mais je voulais faire un truc amusant, à défaut d’être utile. J’ai donc couplé le Nike+ et un Nabaztag/tag. L’idée est simple : faire réagir le Nabaztag/tag quand on active le capteur Nike+.
Pour le Nabaztag, j’ai galéré un peu avec mon serveur maison OpenJabNab, mais j’ai trouvé une solution simple : activer l’API Violet. En gros, vous aurez besoin d’un lapin, de l’IP du serveur (ou de son URL), du numéro de série du lapin (son adresse MAC) et de son token pour l’API Violet. Ensuite, il suffit d’ouvrir une URL avec les bons paramètres pour (par exemple) faire bouger ses oreilles.
http://nabzpi.local./ojn/FR/api?token=742fa6c4073a54edbb75eb922a8c89f8&sn=0019db9dbaa6&posleft=16&posright=16
Ici, on a donc l’adresse locale de mon serveur (http://nabzpi.local.
), il faut entrer le token de l’API, le numéro de série et la position des oreilles, avec une valeur entre 0 et 16. Attention, certains lapins ont une oreille qui ne marche pas, ça ne vient pas nécessairement de l’API…
Pour le fonctionnement, j’ai fait simple : un petit programme en python (récupéré là) qui attend simplement un mouvement du capteur. Quand il envoie des données, le programme va simplement changer la position des oreilles avec une position aléatoire toutes les 15 secondes. Le capteur lui-même arrête de se signaler toutes les 10 secondes. J’ai fait une vidéo simple qui montre que les oreilles bouges. Je peux éventuellement le partager, mais c’est vraiment crade au niveau du code, je connais très peu python.
Techniquement, ça montre que ça fonctionne. Après, on peut imaginer utiliser le capteur pour se localiser, comme une balise iBeacon. Attention à un truc : la batterie du capteur a une durée de vie limitée, j’y reviendrais.
Cool, je dois justement faire revivre mon lapin prochainement !