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 .. figure:: data/nabaztag_chassis_back.jpg .. figure:: data/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 .. figure:: data/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. .. figure:: data/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 .. code-block:: bash 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) .. code-block:: bash apt-get install sphinx Afin de garantir de ne pas perdre de donnée on installe dans crontab une tache de sauvegarde .. code-block:: bash 0 0 * * * /root/backup.sh >> /var/log/backup.log 2>&1 .. code-block:: bash crontab -e .. code-block:: bash cd vi backup.sh .. code-block:: bash #!/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 .. code-block:: bash chmod +x backup.sh mkdir /media/iomega vi /etc/fstab .. code-block:: bash 192.168.1.17:/nfs/public/frederic /media/iomega nfs defaults 0 0 0 on installe le nfs .. code-block:: bash apt-get install nfs-common reboot