commande deux circuits imprimés du shield 3615 pour Minitel et Arduino pour un petit atelier autour du Minitel.
Auteur/autrice : ES
Poppy Ergo Jr
import random import time from pypot.dynamixel.conversion import XL320LEDColors #------------------------------------------------------ # CREATION DU ROBOT #------------------------------------------------------ from pypot.creatures import PoppyErgoJr poppy = PoppyErgoJr() #------------------------------------------------------ # INITIALISATION DU ROBOT #------------------------------------------------------ for m in poppy.motors : # Boucle sur les six moteurs m.compliant = False m.led = 'green' position_1 = {'m1': 0, 'm2': -110, 'm3': 66, 'm4': 0, 'm5': 34, 'm6': 20} # safe_power_up poppy.goto_position(position_1, 2, wait=True) # 2 secondes pour prendre la position #------------------------------------------------------ # FONCTION animation #------------------------------------------------------ def animation(moteur, angleMin, angleMax, forceMax) : moteur.goal_position = random.randint(angleMin,angleMax) if abs(moteur.present_load) > forceMax : print (moteur.present_load) for m in poppy.motors : m.compliant = True m.led = 'off' for i in range(5) : moteur.led = 'red' time.sleep(0.5) moteur.led = 'off' time.sleep(0.5) time.sleep(1) #------------------------------------------------------ # BOUCLE #------------------------------------------------------ while 1 : for m in poppy.motors : m.moving_speed = random.randint(5,20) # 5,20 à 5,30 m.compliant = False m.led = XL320LEDColors(random.randint(2,8)).name animation(poppy.m1,-90,90,50) animation(poppy.m2,-110,0,30) animation(poppy.m3,0,60,30) animation(poppy.m4,-90,90,30) animation(poppy.m5,-40,40,20) animation(poppy.m6,-60,60,10) if random.randrange(4) == 1 : time.sleep(random.randrange(5))
Les circuits imprimés sont arrivés
Les circuits imprimés du shield 3615 pour Minitel et Arduino sont arrivés aujourd’hui. J’ai soudé les différents composants du shield : tout est fonctionnel. Pour ceux que ça intéresse, j’ai deux circuits imprimés de cette série en stock (sans les composants donc). Tarif unitaire : 16 € avec les frais de port.
L’intérieur du Minitel
Je m’apprête à rentrer dans le dur du sujet…
DANGER : 25000 volts, même si le Minitel est débranché !
Tweeter avec un Minitel
Le matériel à mettre en oeuvre : Le minitel, le câble DIN-USB, une Arduino Uno, le shield 3615, un Raspberry Pi.
On crée un compte Twitter puis une application Twitter depuis cette adresse : https://apps.twitter.com.
On règle les permissions.
On récupère les clés qui sont dans les 4 zones rouges. Elles seront utilisées ultérieurement dans le fichier Python minitel.py.
Le programme minitel.py utilise Twython.
Il faut donc installer (sudo apt-get install) :
pour Python 2.7 : python-twython / python-oauth / python-oauth2client / python-oauthlib / python-requests-oauthlib
pour Python 3 : python3-twython / python3-oauth / python3-oauth2client / python3-oauthlib / python3-requests-oauthlib
Pour que le programme minitel.py se lance dès qu’on allume le Raspberry Pi, on ajoute la ligne suivante dans le fichier /etc/rc.local :
su -l pi -c "python /home/pi/3615/minitel.py &"
Dans le fichier /boot/cmdline.txt , il faut enlever « console=ttyAMA0,115200 ».
Enfin, pour pouvoir tweeter, le Raspberry Pi doit être à l’heure sinon on a en retour le message « Twitter API returned a 401 (Unauthorized), Timestamp out of bounds. ». J’ai donc ajouté une horloge temps réel sur le Raspberry Pi : http://www.nagashur.com/wiki/doku.php?id=raspberry_pi:ds3231_rtc_horloge
Pour consulter l’heure et la date contenue dans le module :
sudo hwclock
Pour mettre à l’heure le Raspberry Pi manuellement :
sudo date -s "2017-06-18 17:10" sudo hwclock -w
Pour ce qui concerne l’interface Minitel gérée par l’Arduino, le programme qui utilise Minitel1B_Soft est ici.
Enfin, il reste à relier le shield 3615 au Raspberry Pi :
TX0′ du shield > RXD du Raspberry Pi (broche 10)
RX0′ du shield > TXD du Raspberry Pi (broche 8)
GND du shield > GND du Raspberry Pi (broche 6)
Fabrication du câble Minitel-Shield
Se procurer le matériel suivant :
- Minitel 1B avec une prise péri-informatique disposant d’une sortie alimentation sur la broche 5 (type Cu5 / Cu; / Cu< / Bu0 et suivants).
- Cordon USB A mâle – USB B mâle.
- Fiche Din mâle 5 contacts à 45° avec collier serre-câble.
- Gaine thermorétractable transparente 1,2 mm avant retreint.
Le principe : On coupe le connecteur USB B du cordon et on le remplace par la fiche Din.
Pour tout comprendre, partons de la documentation du Minitel :
Les numéros de broches sont positionnés de la même manière pour la fiche DIN mâle vue côté soudures.
Concernant le connecteur USB A, nous avons :
Etant donnés les choix faits au niveau du shield 3615 :
D- vers broche 8 de l’Arduino
D+ vers broche 9 de l’Arduino
Etant donnée la ligne de code suivante dans les exemples de la bibliothèque Minitel1B_Soft :
Minitel minitel(8, 9); // RX, TX
Il faudra souder, pour avoir un câble croisé :
- Le fil vert à la broche 1 de la fiche DIN
- Le fil noir à la broche 2 de la fiche DIN
- Le fil rouge à la broche 5 de la fiche DIN
- Le fil blanc à la broche 3 de la fiche DIN
Projet à base d’un ATmega 1284P
Le Minitel est relié à un microcontrôleur ATmega 1284P qui est lui même relié à un Raspberry Pi. J’utilise la bibliothèque Minitel1B_Hard.
Résolution du problème lié à la bibliothèque SD (Arduino 1.0.5) sur l’ATmega1284P
Pour utiliser la bibliothèque SD standard avec l’ATmega1284P, il faut modifier le fichier Sd2PinMap.h que l’on trouve dans le répertoire du logiciel Arduino à cette adresse (sur ma Debian 8) :
/usr/share/arduino/libraries/SD/utility/Sd2PinMap.h :
On tapera dans la console : sudo geany sd2PinMap.h (pour éditer le fichier en mode administrateur)