Configurer des capteurs à ultrasons et infrarouges pour réaliser des touches de clavier
virtuel est un projet intéressant qui permet d'interagir avec un ordinateur sans contact
physique. Voici un guide détaillé pour vous aider à mettre en place ce système.
Matériel Nécessaire
1. Microcontrôleur avec capacité HID (Human Interface Device) :
Arduino Leonardo, Arduino Micro, ou Arduino Nano 33 sont recommandés car ils peuvent
émuler un clavier USB.
2. Capteurs à ultrasons :
Par exemple, HC-SR04.
3. Capteurs infrarouges :
Par exemple, un module récepteur IR ou un capteur de distance IR comme le Sharp
GP2Y0A21YK0F.
4. Câbles de connexion :
Pour réaliser les branchements entre les capteurs et le microcontrôleur.
5. Breadboard :
Pour des connexions temporaires et faciliter le prototypage.
6. Résistances :
Selon les besoins des capteurs IR (souvent 220Ω ou 10kΩ).
Schéma de Connexion
Capteur à Ultrasons (HC-SR04)
1. VCC : Connecté au 5V de l’Arduino.
2. GND : Connecté au GND de l’Arduino.
3. Trig : Connecté à un pin digital de l’Arduino (par exemple, D9).
4. Echo : Connecté à un autre pin digital de l’Arduino (par exemple, D10).
Capteur Infrarouge (Sharp GP2Y0A21YK0F)
1. VCC : Connecté au 5V de l’Arduino.
2. GND : Connecté au GND de l’Arduino.
3. Signal : Connecté à un pin analogique de l’Arduino (par exemple, A0).
Programmation de l’Arduino
Bibliothèques Nécessaires
Keyboard.h : Pour émuler les frappes clavier (disponible sur les cartes Arduino compatibles
HID).
Ultrasonic.h : Facilite l'utilisation des capteurs à ultrasons (optionnel, vous pouvez aussi
coder manuellement).
Exemple de Code Arduino
#include <Keyboard.h>
// Définition des pins pour le capteur à ultrasons
const int trigPin = 9;
const int echoPin = 10;
// Définition du pin pour le capteur IR
const int irPin = A0;
// Seuils pour détecter les touches
const int seuilUltrason = 10; // en cm
const int seuilIR = 300; // valeur analogique, à calibrer
// Variables pour le debounce
unsigned long dernierTemps = 0;
const unsigned long intervalle = 500; // 500 ms
void setup() {
// Initialisation des pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(irPin, INPUT);
// Initialisation de la communication clavier
[Link]();
// Initialisation de la communication série pour le débogage
[Link](9600);
}
void loop() {
unsigned long currentTime = millis();
// Détection avec le capteur à ultrasons
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2; // distance en cm
// Lecture du capteur IR
int valeurIR = analogRead(irPin);
// Débogage
[Link]("Distance Ultrasons: ");
[Link](distance);
[Link](" cm, Valeur IR: ");
[Link](valeurIR);
// Détection de la touche via ultrasons
if (distance < seuilUltrason && (currentTime - dernierTemps) > intervalle) {
[Link]('A'); // Remplacez 'A' par la touche désirée
delay(100);
[Link]();
dernierTemps = currentTime;
}
// Détection de la touche via IR
if (valeurIR < seuilIR && (currentTime - dernierTemps) > intervalle) {
[Link]('B'); // Remplacez 'B' par la touche désirée
delay(100);
[Link]();
dernierTemps = currentTime;
}
delay(100);
}
Explications du Code
Initialisation :
Les pins des capteurs sont configurés en entrée ou sortie selon le besoin.
La bibliothèque Keyboard.h est initialisée pour permettre l’émulation des touches.
Lecture des Capteurs :
Ultrasons : Envoie une impulsion et calcule la distance basée sur le temps de retour de
l’écho.
IR : Lit la valeur analogique proportionnelle à la distance ou à la présence d’un objet.
Détection des Touches :
Si la distance détectée par les ultrasons est inférieure au seuil défini, une touche est émue.
De même, si la valeur lue par le capteur IR est en dessous du seuil, une autre touche est
émise.
Debounce :
Un délai minimal entre les frappes est maintenu pour éviter des répétitions non désirées.
Calibration des Capteurs
1. Capteur à Ultrasons :
Mesurez des distances connues et ajustez le seuil (seuilUltrason) en conséquence.
2. Capteur IR :
Effectuez des mesures dans l’environnement d’utilisation prévu.
Ajustez le seuil (seuilIR) en fonction des valeurs lues lorsque l’objet est présent ou absent.
Mapping des Touches
Vous pouvez mapper différentes distances ou gestes à différentes touches. Par exemple :
Proximité 10-20 cm : Touche 'A'
Proximité 21-30 cm : Touche 'B'
Détection IR faible : Touche 'C'
Pour cela, modifiez le code en ajoutant des conditions supplémentaires :
if (distance < 10 && (currentTime - dernierTemps) > intervalle) {
[Link]('A');
delay(100);
[Link]();
dernierTemps = currentTime;
}
else if (distance >= 10 && distance < 20 && (currentTime - dernierTemps) > intervalle) {
[Link]('B');
delay(100);
[Link]();
dernierTemps = currentTime;
}
Conseils et Bonnes Pratiques
1. Utilisation d’un Microcontrôleur Compatible HID :
Assurez-vous d’utiliser un Arduino qui supporte l’émulation HID (comme Leonardo, Micro, ou
Nano 33).
2. Filtrage et Détection Stable :
Implémentez des filtres logiciels (comme une moyenne mobile) pour lisser les lectures des
capteurs.
Utilisez des mécanismes de debounce pour éviter les fausses détections.
3. Gestion de l’Alimentation :
Vérifiez que tous les capteurs reçoivent la tension appropriée.
Certains capteurs IR peuvent nécessiter des résistances supplémentaires pour stabiliser les
signaux.
4. Sécurité et Tests :
Testez votre configuration dans un environnement contrôlé pour éviter des actions non
désirées sur votre ordinateur.
Implémentez des conditions d’arrêt ou des boutons de réinitialisation si nécessaire.
5. Optimisation du Code :
Réduisez les délais (delay) pour une réactivité accrue, en utilisant par exemple des
techniques de programmation non bloquantes avec millis().
Ressources Supplémentaires
Documentation Arduino HID : Arduino Keyboard Library
Tutoriels Vidéo : Recherchez sur YouTube des tutoriels sur "Arduino virtual keyboard with
ultrasonic and IR sensors".
Communautés en Ligne : Forums comme Arduino Forum ou Stack Overflow peuvent offrir
de l’aide supplémentaire.
Conclusion
En suivant ce guide, vous devriez être en mesure de configurer des capteurs à ultrasons et
infrarouges pour créer un clavier virtuel. Ce système permet une interaction sans contact,
ouvrant la voie à des applications innovantes dans la domotique, la robotique, ou les
interfaces utilisateur avancées. N’hésitez pas à ajuster les seuils, les mappings de touches
et à expérimenter avec différents types de capteurs pour répondre au mieux à vos besoins
spécifiques.