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)

Hack d’un clavier avec port PS/2

L’objectif :

Le but est de réaliser une matrice de clavier relativement grande qui utilise le moins d’entrées / sorties possible sur une carte Arduino par exemple. Le port PS/2 d’un clavier de PC n’utilise que 4 broches sur les 6 de la prise correspondante (+5V, GND, CLK, DATA). Deux de ces lignes (CLK et DATA) sont suffisantes pour faire communiquer un clavier de 105 touches avec un PC. Je vais donc m’atteler à en comprendre le fonctionnement afin de pouvoir réutiliser l’encodeur du clavier.

Les pièces maîtresses :

L’analyse :

Étude des pistes du clavier

Alimentation pour Commodore 64

Afin de remplacer l’alimentation d’origine du Commodore 64 qui avec l’âge risque de détruire l’ordinateur, Electroware en a conçu une nouvelle, disponible sur ce site. Suite à une polémique sur la tension délivrée par cette alimentation, j’ai démonté le Commodore et pris la tension au niveau du processeur. J’obtiens les 5 V attendus. Au niveau du SID 6581, j’obtiens 11,85 V au lieu de 12 V. Pour la fabrication d’un testeur d’alimentation spécifique au Commodore 64, voir cette vidéo.

Entreprises de robotique

Agility Robotics => Cassie
Aldebaran => Nao, Pepper, Plato
Anki => Cozmo
ANYbotics => ANYmal
Awabot : Robotique de service
Axilum Robotics : Robots médicaux
Axyn Robotique : Robots de téléprésence
B2A Technology : Chariots automatiques
Baylo : Chariots robotisés
Blue Frog Robotics => Buddy
Blueye Robotics : Drones sous-marin
Boston Dynamics => BigDog, Atlas…
CamToy => Laïka
Cybedroïd => Leena, Leenby, Alice…
Cybernetix : Robots pour les milieux hostiles
Dextérité Surgical : Spécialisée dans la chirurgie mini-invasive
Drone Volt : Drones
ECA Group : Robots pour milieux extrêmes
Effidence : Solutions de navigation
Fanuc : Automatisation industrielle
Five Elements Robotics : Caddies autonomes
Furhat Robotics : Robotique humanoïde (masques)
Gaumard Scientific : Robots anatomiques
Gostai : Rachat par Aldebaran Robotics en 2012
Haapie : Assistants cognitifs et vocaux
Hahn Group : Automatismes industriels et solutions robotiques
Hanson Robotics => Sophia
Haption : Systèmes à retour d’effort
Hiroshi Ishiguro Laboratories : Robots anthropomorphes
Honda => Asimo
IADYS => Jellyfishbot
iCub : Robot humanoïde de recherche open source
inMoov : Robot humanoïde open source imprimé en 3d
iRobot : Robots-aspirateurs
Isybot : Robots collaboratifs
Jibo : Robot compagnon
Kawasaki Robotics : Robots industriels
Keecker : Robot multimédia
Kuka : Robots industriels
Lego => Mindstorms
Liquid Robotics : Robotique marine
Medtech => Rosa
MIP robotics : Robotique industrielle collaborative
Mobile Industrial Robots : Robots mobiles collaboratifs
Naïo Technologies : Robots agricoles
Navya : Véhicules autonomes
Nexter Robotics : Robots pour la défense et la sécurité
Octinion : Robots agricoles
Octopus Robots : Robots autonomes et intelligents
OnRobot : Robotique collaborative
OpenROV : Drones sous-marin
Optimus Robotics : Matériels de manutention
PAL Robotics => Talos…
Parrot : Drones
Partnering Robotics : Robots dédiés au bien-être
Percipio Robotics : Robots pour micro-préhension
Poppy Project : Robots open source basés sur l’impression 3d
RB3D : Robots d’assistance aux efforts
Recif Technologies : Robots de manipulation de plaquettes de silicium
Rethink Robotics => Baxter…
Robopec : Robotique et développement logiciel
Robotics Industry : Robots autonomes
RobotSwim => Jessiko
Sarrazin Technologies : Robots collaboratifs
Segway Robotics => Loomo
Sepro Group : Robots industriels
Siléane : Robotique industrielle
SoftBank Robotics => Nao, Pepper, Romeo…
Somnox : Robot-coussin
Sony => Aibo
Sphero : Jouets éducatifs
Stanley Robotics : Robots de gestion de parkings
Stäubli : Automatisation industrielle
Subsea Tech : Drones marins et sous-marins
Tecdron Robotics Systems : Plates-formes mobiles terrestres
UBTECH Robotics => Alpha, Lynx…
Universal Robots : Robots collaboratifs
Visio Nerf : Solutions de vision industrielle
Vitirover : Robots agricoles
Volocopter : Appareils volants
Wall-YE : Robots agricoles
Wandercraft : Exosquelettes
Wilkinson Baking Company => BreadBot

Installer Processing 3 sous Debian 10

Les sites officiels : Processing et Debian

Dans la console :

Si le répertoire processing n’existe pas déjà, je le crée :
sudo mkdir /usr/share/processing

Je télécharge la version 64 bits (à adapter) :
cd Téléchargements
wget -c http://download.processing.org/processing-3.5.4-linux64.tgz

Je décompresse l’archive et l’installe à l’endroit voulu :
tar -zxvf processing-3.5.4-linux64.tgz
sudo mv processing-3.5.4 /usr/share/processing

Je télécharge l’icône processing et l’installe à l’endroit voulu :
wget http://entropie.org/3615/download/processing.png
sudo mv processing.png /usr/share/processing

Pour effacer une version précédente de Processing (x à adapter) :
sudo rm -rf /usr/share/processing/processing-3.x.x

Pour intégrer le programme au menu de Xfce, je crée un fichier processing-3.desktop dans le répertoire /usr/share/applications :
cd /usr/share/applications
sudo nano processing-3.desktop

[Desktop Entry]
Type=Application
Name=Processing 3
Comment=Un environnement de développement pour le langage Processing
Exec=/usr/share/processing/processing-3.5.4/processing
Icon=/usr/share/processing/processing.png
Terminal=false
Categories=Development;

NXC et Geany sous Debian 9

NXC est un langage de programmation spécifique au robot Lego Mindstorms NXT. Il est basé sur le NBC, un langage assembleur.

Dans la console :
sudo apt-get install nbc

Paramétrer Geany pour pouvoir compiler aussi bien des fichiers nxc que nbc (Construire > Définir les commandes de construction) :
nbc -S=usb -d %e.n*c

Enregistrer les fichiers sources au format nxc, puis compiler (touche F8). Le transfert sur la brique NXT se fait dans la foulée. Par conséquent, si la brique NXT n’est pas allumée, Geany indique « Compilation échouée », ce qui ne veut pas dire que le code est erroné : Une erreur dans le code entraîne un message d’erreur en rouge au moment de la compilation.

Installer Sweet Home 3D (version 6) sous Debian 9

Seule la version 5.3 de Sweet Home 3D est disponible dans les dépôts de Debian 9, d’où cet article.

Le site officiel : Sweet Home 3D

Dans la console :

Si le répertoire SweetHome3D n’existe pas déjà, je le crée :
sudo mkdir /usr/share/SweetHome3D

Je télécharge SweetHome3D (64 bits) depuis cette adresse :
http://www.sweethome3d.com/fr/download.jsp

Je décompresse l’archive et l’installe à l’endroit voulu :
cd Téléchargements
tar -zxvf SweetHome3D-6.1.2-linux-x64.tgz
sudo mv SweetHome3D-6.1.2 /usr/share/SweetHome3D

Pour effacer une version précédente de SweetHome3D (x à adapter) :
sudo rm -rf /usr/share/SweetHome3D/SweetHome3D-6.x.x

Pour intégrer le programme au menu de Xfce, je crée un fichier SweetHome3D-6.desktop dans le répertoire /usr/share/applications :
cd /usr/share/applications
sudo nano SweetHome3D-6.desktop

[Desktop Entry]
Type=Application
Name=Sweet Home 3D 6.1.2
Comment=Logiciel d’aménagement d’intérieur
Exec=/usr/share/SweetHome3D/SweetHome3D-6.1.2/SweetHome3D
Icon=/usr/share/SweetHome3D/SweetHome3D-6.1.2/SweetHome3DIcon.png
Terminal=false
Categories=Graphics;2DGraphics;3DGraphics;