Les éditions originales de ces deux ouvrages ont été publiées en anglais par Cambridge University Press en 1989. Le volume de travaux pratiques fut pendant deux ans la bible de Damien De Meulemester (auteur d’un remake de l’Apple 1).
Mémoire de l’Alice 90
La boucle est bouclée :-)
commande deux circuits imprimés du shield 3615 pour Minitel et Arduino pour un petit atelier autour du Minitel.
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)