Faciliter la communication sourd-aveugle avec 1Sheeld et Arduino
Composants et fournitures
- 1Sheeld (×1)
- Arduino UNO (×1)
- Écran LCD standard Adafruit 16×2 blanc sur bleu (×1)
- Potentiomètre rotatif générique 10k (×1)
- Smartphone (pour 1Sheeld)
À propos du projet
Ce projet résout un problème de communication entre une personne aveugle et une personne sourde.
La personne aveugle ne peut communiquer que par la parole et l'écoute, tandis que la personne sourde ne peut que taper et lire. Utilisons cela !
- Aveugle → Sourd : Parole → Texte → Affichage
- Sourd → Aveugle : Saisie → Texte → Voix
Traduisons cela en matériel.
Étape 1 : Configuration matérielle




- Arduino Uno (ou autre)
- LCD (ici 16×2)
- Smartphone
- Potentiomètre (10k convient)
Étape 2 : Connexions






Pour utiliser 1Sheeld, téléchargez d'abord la bibliothèque 1Sheeld et ajoutez-la à votre Arduino. Téléchargez aussi l'application 1Sheeld sur votre smartphone et installez-la. Disponible sur : 1sheeld.com/downloads
Suivez ce tutoriel pour brancher 1Sheeld sur Arduino et téléverser le code : 1Sheeld Getting Started
Le circuit peut sembler un peu désordonné mais c'est un circuit LCD simple :
- LCD RS → broche numérique 12
- LCD Enable → broche numérique 11
- LCD D4 → broche numérique 5
- LCD D5 → broche numérique 4
- LCD D6 → broche numérique 3
- LCD D7 → broche numérique 2
- LCD R/W → masse
- LCD VSS → masse
- LCD VCC → 5V
- Résistance 10k : extrémités → +5V et masse
- Curseur → broche VO du LCD (broche 3)
La communication se déroule ainsi :
- Aveugle → Sourd : Reconnaissance vocale → Texte → LCD
- Sourd → Aveugle : Clavier → Texte → Synthèse vocale
La reconnaissance vocale convertit la voix en texte affiché sur le LCD pour la personne sourde. La synthèse vocale prend le texte du clavier et le convertit en voix pour la personne aveugle.
Vous devez activer les shields Reconnaissance vocale, Clavier, Synthèse vocale et SMS dans l'application 1Sheeld sur votre smartphone. Le shield SMS permet d'envoyer des messages à un contact distant. Voici une vidéo de démonstration :
Maintenant que vous avez une idée de ce qu'on fait, passons au code.
Étape 3 : Logiciel
#define CUSTOM_SETTINGS
#define INCLUDE_VOICE_RECOGNIZER_SHIELD
#define INCLUDE_TEXT_TO_SPEECH_SHIELD
#define INCLUDE_KEYBOARD_SHIELD
#define INCLUDE_SMS_SHIELD
#define INCLUDE_TERMINAL_SHIELD
#define INCLUDE_VIBRATION_SHIELD
#include <OneSheeld.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
String msg;
int sent = 0;
int i = 0;
String phoneNum = ""; // écrire le numéro de téléphone ici
int patternOne[6] = {1000, 2000, 1000, 2000, 1000, 2000};
int patternOneSize = 6;
void setup() {
OneSheeld.begin();
VoiceRecognition.start();
lcd.begin(16, 2);
}
On inclut les bibliothèques utilisées et on initialise quelques variables. Notez qu'on utilise un capteur de vibration, les variables patternOne et patternOneSize y sont liées. On utilise aussi le shield SMS pour communiquer à distance, d'où la variable phoneNum qui contiendra le numéro de téléphone destinataire.
// Aveugle vers Sourd
if (VoiceRecognition.isNewCommandReceived()) {
String msg1 = VoiceRecognition.getLastCommand();
// Contact distant si l'utilisateur a dit "sms" en premier
if (msg1.substring(0, 3) == "sms") {
String msg1f = msg1.substring(3);
SMS.send(phoneNum, msg1f);
TextToSpeech.say("sms sent");
delay(4000);
}
// Contact proche
else {
if (msg1.length() > 16) {
lcd.clear();
lcd.setCursor(0, 0);
for (int i = 0; i <= 16; i++) {
lcd.print(msg1[i]);
}
lcd.setCursor(0, 1);
for (int j = 16; j <= msg1.length() - 1; j++) {
lcd.print(msg1[j]);
}
} else {
lcd.clear();
lcd.print(msg1);
}
}
}
On voit ici deux cas : contact distant et contact proche. Pour un contact distant, la personne aveugle doit dire « SMS » en premier. Sinon, le message s'affiche juste sur le LCD. Il y a aussi deux cas pour le LCD : s'il faut passer à la deuxième ligne quand le message dépasse 16 caractères (le LCD n'affiche que 16 caractères par ligne).
void MsgBuild(char pC) {
i++;
if (sent < 2) {
if (pC == 'S') {
sent += 1;
msg += pC;
} else {
sent = 0;
msg += pC;
}
} else if (sent = 3) {
i = i - 3;
msg.remove(i);
msg.toLowerCase();
}
}
Cette partie est un peu délicate. Cette fonction est appelée quand le clavier est utilisé. Elle fait deux choses : d'abord, elle prend chaque caractère saisi au clavier pour construire le message qui sera envoyé ; ensuite, elle vérifie si vous voulez envoyer le message maintenant. Je n'ai pas pu utiliser correctement la touche Entrée du clavier du shield, alors j'ai utilisé ce code pour envoyer le message : si j'appuie 3 fois de suite sur la touche « s ». Bien sûr, vous pouvez changer pour une autre touche. Et comme avant, pour un contact distant, tapez « SMS » en premier.
Le reste du code est explicite. J'espère que ça vous plaira et si vous avez des questions, commentez ci-dessous.
BlindToDeaf.ino
Schémas

Processus de fabrication
- Intégration I2C fluide entre Arduino et Raspberry Pi 2 pour projets IoT de capteurs
- Capteur CO2 K30 : Surveillance en temps réel de la qualité de l'air intérieur
- Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
- Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
- Intégrer un capteur d'empreintes capacitif DFRobot (ID809) avec Arduino ou ESP8266
- Station météo interactive Nextion HMI avec Arduino Mega et capteurs
- Bras robotique 6 DoF piloté par Nunchuk Wii – Kit Arduino Mega
- Construire un Cube LED 4x4x4 avec Arduino Uno et 1Sheeld – Projet LED Interactif
- Contrôle Arduino UNO depuis Python 3 – Communication Série et Démo LED