Connecter une Sphero & un RaspberryPI
Introduction
En ce moment, pour les besoins dâune prĂ©sentation sur lâIOT pour Devoxx France 2015, avec Laurent Huet (@lhuet35), je âjoueâ avec MQTT, Mosca, CylonJS et des objets connectĂ©s: des faux pour des simulation avec Paho, mais aussi des vrais comme le Wiced mais aussi la Sphero. Câest mon RaspberryPI qui sert de âhubâ (le lien avec les objets et le broker de messages). Et quand jâai voulu connecter le RPI et la Sphero, ça nâa pas fonctionnĂ© du 1er coup, donc je vous donne ma recette.
Pré-requis
Nous partons du principe que:
- vous avez un raspberrypi avec une raspbian installée
- quâil est connectĂ© Ă votre rĂ©seau
- quâil a un dongle bluetooth v4 âaux fessesâ
En ce qui me concerne, je me connecte Ă mon jouet uniquement en ssh Ă partir dâun mac, donc câest assez facile, pour les autres utilisez Putty ou un client SSH.
Support du bluetooth
Connectez vous en ssh à votre raspberrypi, pour moi ça sera comme ceci : ssh pi@192.168.0.16
Puis tapez les commandes suivantes:
sudo apt-get install --no-install-recommends bluetooth
- puis pour vérifier que ça foncionne :
sudo service bluetooth status
, si rien ne se passe, re-bootez et relancezsudo service bluetooth status
(en ce qui me concerne ça a marché du 1er coup)
(tips tirĂ© dâici: http://www.raspberrypi.org/learning/robo-butler/bluetooth-setup.md)
Outils pour se connecter Ă la Sphero
Il va falloir installer Gort : https://github.com/hybridgroup/gort, le plus simple câest de tĂ©lĂ©charger le binaire pour arm : https://s3.amazonaws.com/gort-io/0.3.0/gort_0.3.0_linux_arm.tar.gz que vous âdĂ©-tarrezâ dans un rĂ©pertoire de travail sur votre raspberrypi (ie: /things
).
Donc vous aurez un executable gort
dans votre répertoire (faites un chmod a+x gort
) qui est codé en go.
Ensuite il vous faut aussi la dépendance python-gobject, donc tapez la commande suivante: sudo apt-get install python-gobject
Et normalement on est bon.
Connexion Ă la Sphero
Obtenir lâadresse de la Sphero
Dâabord: Tapez la boule (pour la mettre en marche)
Ensuite, il faut chercher la boule ⊠Tapez ./gort scan bluetooth
, vous obtiendrez quelque chose comme ceci:
pi@raspberrypi ~/mqttdemo/things $ ./gort scan bluetooth
Scanning ...
00:23:68:6A:22:92 WindowsCE
68:86:E7:02:44:2E Sphero-RRY
Vous lâaurez devinez, lâadresse de la Sphero, câest 68:86:E7:02:44:2E
(le device WindowsCE, Ă mon avis câest le tĂ©lĂ©phone de mon voisin)
Si ça ne fonctionne pas avec gort
: essayez hcitool scan
Ă la place
âPairerâ la Sphero et le RaspberryPi
Il suffit de taper : sudo ./gort bluetooth pair 68:86:E7:02:44:2E
(nâoubliez pas le sudo
et 68:86:E7:02:44:2E
est lâadresse de ma Sphero pas la votre). Vous obtiendrez quelque chose comme ceci:
pi@raspberrypi ~/mqttdemo/things $ sudo ./gort bluetooth pair 68:86:E7:02:44:2E
Release
New device (/org/bluez/2387/hci0/dev_68_86_E7_02_44_2E)
Si ça ne fonctionne pas avec gort
: essayez sudo bluez-simple-agent hci0 68:86:E7:02:44:2E scan
Ă la place.
Et maintenant la connexion!
Tapez ceci : sudo ./gort bluetooth connect 68:86:E7:02:44:2E
. Si tout va bien vous devriez obtenir ceci:
pi@raspberrypi ~/mqttdemo/things $ sudo ./gort bluetooth connect 68:86:E7:02:44:2E
Connected /dev/rfcomm0 to 68:86:E7:02:44:2E
Press CTRL-C to disconnect
TADA!!!, la boule est connectée!
Maintenant avant dâallez plus loin, faites CTRL-C
pour vous déconnecter.
Un peu plus loin avec CylonJS
Installer CylonJS et le driver pour la Sphero
Lâobjectif, câest de jouer avec la Sphero, donc nous allons utiliser CylonJS (http://cylonjs.com/).
Dans votre répertoire de travail, créez un fichier package.json
avec le contenu suivant:
{
"name": "play-with-sphero",
"dependencies": {
"cylon": "^0.22.1",
"cylon-sphero": "^0.18.0"
}
}
Faites : npm install
Créer un script pour interagir avec la Sphero
Alors le but nâest pas de vous expliquer le fonctionnement, mais juste de vĂ©rifier que la Sphero et le RaspberryPi dialoguent bien ensembles.
Toujours dans le mĂȘme rĂ©pertoire, crĂ©ez un fichier sphero.js
avec le code suivant:
Remarque:
Pour obtenir le port de connexion de la sphero (sphero: { adaptor: 'sphero', port: '/dev/rfcomm0' }
), vous devez lancer la commande (dans votre répertoire de travail) :
sudo node_modules/.bin/cylon-ble-scan
Qui vous donnera les infos nécessaires (/dev/rfcomm0
dans mon cas)
En gros, une fois lancé, la Sphero va changer de couleur au démarrage et bouger un chouilla, et une fois que vous la secouez un peu, ça affichera des données dans votre console.
Lancer tout ça
Nous allons utiliser la commande screen
pour pouvoir lancer des commandes en tĂąche de fond (si vous nâavez pas screen : sudo apt-get install screen
)
# Connexion Ă la Sphero
Tapez screen
, une fois que vous obtenez le prompt Ă nouveau, tapez la commande sudo ./gort bluetooth connect 68:86:E7:02:44:2E
# Discuter avec la Sphero
Une fois la connexion bluetooth obtenue, faites ctrl+a
puis c
pour âcrĂ©erâ un autre Ă©cran (une autre sortie tty) et lancez: node sphero.js
et jonglez avec votre Sphero.
Si tout va bien il devrait se passer des choses.
Voilà ! La suite ça sera pour plus tard (aprÚs Devoxx). Et amusez vous bien.
Tweet