J’ai rajouté un capteur de température LM35CZ.
Code source sur Github.
Catégorie : Arduino
Broches de l’Arduino Uno
Broches de l’ATmega 328P
Broches de l’ATtiny 45/85 et 44/84
Broches de l’ATmega 644P
Broches de l’ATmega 1284P
Clavier PS/2 et Arduino (sans bibliothèque dédiée)
Le montage :
Port PS/2
Broche 1 (data) => Broche 4 de l’Arduino
Broche 2 (non connecté)
Broche 3 => GND de l’Arduino
Broche 4 => 5V de l’Arduino
Broche 5 (clock) => Broche 3 de l’Arduino
Broche 6 (non connecté)
Le code Arduino :
/////////////////////////////////////////////////////////////////// const int DATA_PIN = 4; const int CLOCK_PIN = 3; /////////////////////////////////////////////////////////////////// void setup() { pinMode(DATA_PIN, INPUT); // C'est le clavier qui génère l'horloge de synchronisation pinMode(CLOCK_PIN, INPUT); Serial.begin(9600); } /////////////////////////////////////////////////////////////////// void loop() { Serial.println(dataRead(),HEX); } /////////////////////////////////////////////////////////////////// int dataRead() { // La trame est de 11 bits /* Si la pression est maintenue, le code est envoyé environ toutes les 100 ms (make code). Quand la touche est relachée, le clavier envoie le code F0 suivi du code de la touche relachée (break code), sauf pour quelques touches particulières (voir le fichier PDF correspondant ci-dessous). */ byte data = 0; while (digitalRead(DATA_PIN) && digitalRead(CLOCK_PIN)); // 1 bit de start : La ligne de transmission des données est // passée au niveau bas et un signal d'horloge est engendré : while (digitalRead(CLOCK_PIN)); while (!digitalRead(CLOCK_PIN)); // 8 bits de données (bit de poids faible (LSB) en premier) for (int d=0; d<=7; d++) { // Les données sont valables sur le front descendant // du signal d'horloge while (digitalRead(CLOCK_PIN)); data = data | digitalRead(DATA_PIN) << d; while (!digitalRead(CLOCK_PIN)); } // 1 bit de parité while (digitalRead(CLOCK_PIN)); while (!digitalRead(CLOCK_PIN)); // 1 bit de stop while (digitalRead(CLOCK_PIN)); while (!digitalRead(CLOCK_PIN)); return data; } ///////////////////////////////////////////////////////////////////
Les codes obtenus avec le programme Arduino ci-dessus :
Clavier PS/2 (fichier PDF)
La boucle est bouclée :-)
commande deux circuits imprimés du shield 3615 pour Minitel et Arduino pour un petit atelier autour du Minitel.
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.
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)