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
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
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.
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