Mon Jarvis

Dans le cadre de la découverte du raspberry pi j’ai souhaité hacker mon lapin nabaztag afin d’intégrer un raspberry dedans et ainsi pouvoir réutiliser mon lapin.

Objectif du projet

  • protéger mon raspberry (oui cela fait une jolie boite)
  • pouvoir réutiliser le nabaztag
  • fournir une interface “visuel” au raspberry

Démontage du lapin

Une fois démonter la lapin et lui avoir enlever sa carte on obtient

_images/nabaztag_chassis_back.jpg
_images/nabaztag_chassis_front_tm.jpg

il est assez facile de démonter le lapin. En effet aucun élément que je souhaite récupérer est soudé au lapin il suffit donc d’enlever quelques vis et les connectiques pour que cela puisse être réalisé.

Plan du montage

L’objectif est de pouvoir:

  • piloter les motors des oreilles
  • piloter les détecteurs de positions des oreilles
  • piloter le bouton de la tête du lapin
_images/nabaztag_bb.png

Pour connaitre la position des oreilles un système ingénieux a été utilisé. Le motor d’ oreille fait tourner une roue dentée sur laquelle une dent manque. Les dents passent devant une lumière ... lumière détectée par un photorecepteur. Si on suit le temps entre deux dents on est capable d’identifié la dent manquantes ... et donc la position de l’oreille.

Il faudra donc à chaque démarrage du lapin identifier la position de la dent manquante pour remettre les oreilles droites et identifier la position des oreilles.

Il faut noter que sur ce montage nous pouvons rajouter des leds ... et qu’il faudra voir par la suite voir comment inverser la polarité des connectiques au niveau des motors pour faire tourner les oreilles dans les deux sens.

De plus on connectera via la prise jack l’haut parleur du lapin ... ainsi le lapin pourra permettre l’écoute de la radio et l’emission de message.

Au niveau de la connectique de l’oreille gauche nous avons

couleur système connexion
marron détecteur (+)
rouge détecteur (-)
orange détecteur PIN17
jaune détecteur (-)
vert    
bleu    
violet moteur PIN18
gris moteur (-)

Pour pouvoir controller les oreilles sans abimer le raspberry nous allons utiliser le module SN754410

Note

le fait d’utiliser des pins 3.3v pour faire marcher un moteur abime le raspberry ... il faut mieux utiliser un module SN754410 qui permet en plus de faire fonctionner 2 moteurs dans les 2 sens

Le circuit intégré SN754410 estun quadruple demi pont en H permettant de controler facilement un moteur pas à pas à deux bobines.

Il permet ainsi de controler un courant de 1A sous une tension de 4.5V à 36V pour alimenter les bobines des moteurs pas à pas, des moteurs à courant continu, des relais, des bobines.

Les entrées sont compatibles des niveau TTL et bas-niveau CMOS.

_images/sn754410-connections.jpg
Pin Name Fonction Notes
1 1,2 EN Activation Moteur 1 En mettant cette pin au 0V (LOW ou GND), cela coupera l’alimentation du moteur et en la mettant au 5V (HIGH), cela activera l’alimentation du moteur.
2 1A Moteur 1 Forward Un 5V (HIGH) sur cette pin permettra au moteur de tourner dans une direction. La vitesse peut être contrôllé à l’aide d’une PWM.
3 1Y Moteur 1 Power Cette pin doit être connecté à l’une des broches du moteur à courant continu.
4 Masse Masse Cette pin doit être connecté à la masse.
5 Masse Masse Cette pin doit être connecté à la masse.
6 2Y Moteur 1 Power Cette pin doit être connecté à l’une des broches du moteur à courant continu.
7 2A Moteur 1 Reverse Un 5V (HIGH) sur cette pin permettra au moteur de tourner dans direction inverse.La vitesse peut être contrôllé à l’aide d’une PWM.
8 VCC2 Moteur Power Source Cette pin permet d’alimenter vos moteur (max 36V)
9 3,4 EN Moteur 2 Enable En mettant cette pin au 0V (LOW ou GND), cela coupera l’alimentation du moteur et en la mettant au 5V (HIGH), cela activera l’alimentation du moteur.
10 3A Moteur 2 Forward Un 5V (HIGH) sur cette pin permettra au moteur de tourner dans une direction.La vitesse peut être contrôllé à l’aide d’une PWM.
11 3Y Moteur 2 Power Cette pin doit être connecté à l’une des broches du moteur à courant continu.
12 Masse Masse Cette pin doit être connecté à la masse.
13 Masse Masse Cette pin doit être connecté à la masse.
14 4Y Moteur 2 Power Cette pin doit être connecté à l’une des broches du moteur à courant continu.
15 4A Moteur 2 Reverse Un 5V (HIGH) sur cette pin permettra au moteur de tourner dans direction inverse.La vitesse peut être contrôllé à l’aide d’une PWM.
16 VCC1 Logic Power Alimentation du circuit (+5V)

Installation et utilisation de Jarvis

Il suffit de partir sur une installation stable de raspbian.

Nous allons d’abord installer tous les modules nécessaires pour la gestion des oreilles et du programme

apt-get install espeak
apt-get install python-pip
pip install --upgrade RPi.GPIO
pip install apscheduler==2.1.2
pip install flask
apt-get install python-espeak
apt-get install python-alsaaudio

j’installe aussi codiad, sphinx et owncloud (cf autres articles)

apt-get install sphinx

Afin de garantir de ne pas perdre de donnée on installe dans crontab une tache de sauvegarde

0 0 * * * /root/backup.sh >> /var/log/backup.log 2>&1
crontab -e
cd
vi backup.sh
#!/bin/bash

    # variable global
    DST=/media/iomega
    SRC=/var/www/
    OPTIONS=""
    TEST_MOUNT=/media/iomega

    cd

    echo "Backup start $(date)"
    START=$(date +%s)

    # gestion point montage
    if [ ${#TEST_MOUNT} -gt 0 ]; then
            umount -f $TEST_MOUNT
            mount $TEST_MOUNT
            if grep -qs $TEST_MOUNT /proc/mounts; then
               echo $TEST_MOUNT "'s mounted"
            else
               echo "$TEST_MOUNT's not mounted"
               exit
            fi
    fi
    tar -cvf jarvis$(date +%a).tar $SRC
    rm $DST/sdb1/jarvis$(date +%a).tar
    mv jarvis$(date +%a).tar $DST/sdb1

    FINISH=$(date +%s)
    echo "total time: $(( ($FINISH-$START) / 60 )) minutes, $(( ($FINISH-$START) % 60 )) seconds"
    echo "Backup end $(date)"

on rend le fichier executable et ajoute /media/iomega

chmod +x backup.sh
mkdir /media/iomega
vi /etc/fstab
192.168.1.17:/nfs/public/frederic   /media/iomega nfs   defaults    0 0 0

on installe le nfs

apt-get install nfs-common
reboot