NabazPi étape 4, gestion du bouton sur la tête.

On va commencer par le plus simple, le bouton sur la tête.

Coté hardware

On branche un des 2 fils du bouton sur la broche 9 du connecteur GPIO (GND), et l’autre sur la broche 11 (juste en dessous, GPIO17).

nabazpi-test-bouton

Coté logiciel

On rajoute un fichier dans notre projet, on va le nommer ‘button.js’ pour faire original.

Quelques explications: la pin 17 correspond à la broche 11 du connecteur (en mode ‘gpio’), on configure cette broche en entrée, et on la force à un état haut par défaut (car lorsque l’on va appuyer sur le bouton, elle sera mise à l’état bas). Ensuite c’est assez moche, on boucle et on test toute les 50ms si le bouton est appuyé. On verra plus tard comment optimiser ça (mais au moment ou j’écris ces lignes, la lib wiring-pi ne le permet pas encore).

On lance notre programme et si tout se passe bien, quand on appuie sur le bouton, ‘Hit !’ s’affiche dans la console. Chez moi cela à marché du premier coup, j’avoue que je ne m’y attendait pas.

Voila, on sait déterminer si le bouton est appuyé ou pas.

NabazPi étape 3, le logiciel

Coté logiciel, on a vu dans un posts précédent qu’on allait se baser sur NodeJs, on va donc se préparer un environnement de travail.

Installation de NodeJs

La version de NodeJs disponible dans les dépôts de Raspbian est plutôt ancienne, on va donc en récupérer une plus récente. Malheureusement la version officielle disponible dans les dépôt de NodeJs est compilée pour un processeur ARM plus récent que celui du Raspberry Pi. On pourrait s’amuser à recompiler mais ce serait une perte de temps car cela à déjà été fait. Ça se passe par ici: http://node-arm.herokuapp.com/.

Création du projet

Ensuite on va se créer un dossier vide pour notre projet et l’initialiser avec les librairies qu’il nous faut:

Dans ce répertoire (vide) il faut créer un fichier nommé ‘package.json’ et y mettre le contenu suivant:

Puis lancer la commande suivant pour mettre à jour les dépendances:

Si tout se passe bien vous êtes près à créer un petit programme de test.

Création du programme de test

Créer un fichier nommé ‘blink.js’ et mettez dedans le code suivant: (honteusement pompé des exemples de wiring-pi, mais adapté à notre cas)

Avant de lancer notre programme, il nous reste un dernière chose à faire, libérer la LED verte qui est à coté de la LED ‘power’ du Raspberry Pi. Pour cela il faut lancer la commande suivante (j’ai trouvé ça ici: http://www.raspberrypi.org/forums/viewtopic.php?f=31&t=12530).

Voila, on peut lancer notre test, et vérifier que la LED verte sur la carte du Raspberry clignote bien.

Maintenant qu’on à une base logiciel, on peu passer aux chose sérieuses: gestion du bouton sur la tête.

NabazPi étape 2, le démontage.

C’est parti pour le démontage, on va voir ce qu’il a dans le ventre ce lapin. La coque est simplement retenue par 2 vis. Ensuite on enlève la carte Wifi puis on débranche tous les fils de la carte et on l’enlève. Il y a de la colle partout sur les connecteur, c’est assez long à enlever.

nabaztag-demonte

Voila, on a un beau squelette de Nabaztag avec tout ce que l’on va réutiliser: 2 moteurs courant continu, 2 capteurs de position des oreilles, un bouton poussoir, un haut parleur. Pour l’alimentation je ne sais pas si je la garderais, le transformateur sort 1A max, ça risque d’être un peu faible.

NabazPi étape 1, la réflexion.

Dans cette première étape, je vous met un peu en vrac ce que j’ai trouvé et qui pourrait être intéressant pour le projet.

Rabbity-Pi est un projet un peu similaire, mais pas très actif. Il y a quelques infos sur le matériel contenu dans le Nabaztag. Le projet propose de mettre un Raspberry Pi à la place de la carte du Nabaztag, contrôler des LEDs et le haut parleur, voir même de le transformer en console rétro gamming.

Un autre projet sur instructables.com qui montre l’intégration d’un Teensy dans un Nabaztag (plus récent par contre), contrôle des moteurs, ajout de LEDs, détection du bouton, etc…

Après réflexion,  j’ai décidé de baser le projet NabazPi sur un Raspberry Pi (model A+, qui devrait rentrer), qui devra contrôler des  LEDs, les 2 moteurs des oreilles, et répondre à un appui sur le bouton de sa tête. (au début, je pensais partir sur un Raspberry Pi + un Arduino pour pouvoir contrôler les LEDs en analogique  (15 sorties), mais j’ai trouvé une autre solution pour contrôler un grand nombre de LEDs directement avec le Raspberry, on verra ça dans la partie LED).

Pour la partie logiciel, on trouve beaucoup d’info sur la programmation des pins GPIO en python, ça pourrait être une solution. J’ai aussi pensé m’essayer au language Go (de google), mais il n’est pas simple avec Go de faire un système de plugin, j’ai donc abandonné. Je me suis ensuite intéressé à NodeJs et j’y ai trouvé tout ce que je cherchais: simple, beaucoup de modules disponibles, lib de contrôle du GPIO disponible, lib de contrôle pour les LED disponible, possibilité d’extension facile, BINGO !

Maintenant qu’on sais ce qu’on va faire, on peut commencer à démonter la bête.

Projet NabazPi, c’est parti !

Je me lance dans ce petit projet qui a pour but de ressusciter un Nabaztag V1 qui dort dans son carton depuis pas mal d’années maintenant. On va essayer de le rendre un peu plus intelligent au passage.

Voila une photo de la bête avant customisation:

nabazpi-avant

Son principal défaut c’est de ne pouvoir se connecter qu’en WEP sur un routeur Wifi. Il n’est également pas très intelligent et nécessite un serveur pour pouvoir faire quelque chose (c’est le serveur qui envoi des commandes pour bouger les oreilles, changer la couleur des LEDs ou produire un son).

Le but c’est donc de le rendre autonome (ou presque) et un peu plus sécurisé.

J’essayerais de faire un article pour chaque étape, cela servira peut être à certains.