Facilitar la comunicación sordo‑ciego usando 1Sheeld y Arduino
Componentes y suministros
- 1Sheeld × 1
- Arduino UNO × 1
- LCD estándar Adafruit 16×2 blanco sobre azul × 1
- Potenciómetro rotatorio (genérico, 10k) × 1
Sobre el proyecto
Básicamente, este proyecto aborda un problema de comunicación entre personas sordo‑ciegas.
La única forma de comunicación de una persona ciega sería hablando y escuchando, mientras que una persona sorda solo puede escribir y ver, ¡así que usemos eso!
Ciego → Sordo: Hablar → Texto → Mostrar
Sordo → Ciego: Escribir → Texto → Voz
Ahora traduzcamos eso a hardware.
Paso 1: Configuración hardware




- Arduino Uno (o compatible)
- LCD (para este tutorial uso 16×2)
- Smartphone
- Potenciómetro (10k sirve)
Paso 2: Conexiones






Para usar 1Sheeld, primero debes descargar la librería 1Sheeld y añadirla a tu Arduino. También necesitas descargar la app 1Sheeld en tu móvil e instalarla. Puedes conseguirlo en: 1sheeld.com/downloads.
Sigue este tutorial para conectar 1Sheeld a Arduino y subir el código: 1sheeld.com/tutorials/getting-started.
El circuito puede parecer un poco liado pero es un circuito LCD simple:
- LCD RS → pin digital 12
- LCD Enable → pin digital 11
- LCD D4 → pin digital 5
- LCD D5 → pin digital 4
- LCD D6 → pin digital 3
- LCD D7 → pin digital 2
- LCD R/W → GND
- LCD VSS → GND
- LCD VCC → 5V
- Extremos resistencia 10k → +5V y GND
- Cursor (wiper) → LCD VO (pin 3)
Ahora la comunicación funciona así:
Ciego → Sordo: Reconocimiento de voz → Texto → LCD
Sordo → Ciego: Teclado → Texto → Texto‑a‑voz
Básicamente, el reconocimiento de voz convierte la voz en texto que se envía a la LCD para que la persona sorda lo vea. Texto‑a‑voz toma el texto del teclado y lo convierte en voz para que la persona ciega lo oiga.
Debes elegir los escudos Reconocimiento de Voz, Teclado, Texto‑a‑Voz y SMS desde la app 1Sheeld en tu móvil. Usando el escudo SMS podremos enviar mensajes a un contacto lejano. Aquí hay un video demostrando cómo funciona.
Paso 3: Software
#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 = ""; // escribe aquí el número de teléfono
int patternOne[6] = {1000, 2000, 1000, 2000, 1000, 2000};
int patternOneSize = 6;
void setup() {
OneSheeld.begin();
VoiceRecognition.start();
lcd.begin(16, 2);
}
Básicamente, añadimos las librerías que usaremos e inicializamos variables. Ten en cuenta que usaremos un sensor de vibración y las variables patternOne y patternOneSize están relacionadas con él. También usaremos el escudo SMS para comunicación a larga distancia, por eso la variable phoneNum guardará el número al que enviar el SMS.
// Ciego → Sordo
if (VoiceRecognition.isNewCommandReceived()) {
String msg1 = VoiceRecognition.getLastCommand();
// Contacto lejano: si el usuario dijo "sms" primero
if (msg1.substring(0, 3) == "sms") {
String msg1f = msg1.substring(3);
SMS.send(phoneNum, msg1f);
TextToSpeech.say("sms sent");
delay(4000);
}
// Contacto cercano
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);
}
}
}
Aquí ves dos casos: contacto lejano y cercano. Para contactos lejanos, la persona ciega debe decir «SMS» primero. De lo contrario, solo se muestra en la LCD. También hay dos casos para la LCD: si el mensaje supera 16 caracteres, debe ir a la segunda fila, ya que solo imprime 16 por fila.
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();
}
}
Esta parte es un poco compleja. Esta función se llama cuando se usa el teclado. Hace dos cosas: primero, toma cada carácter que ingresas por el teclado y construye el mensaje que se enviará después; segundo, verifica si quieres enviar el mensaje ahora. Me di cuenta de que no puedo usar bien la tecla Enter del teclado del escudo, así que usé este código para enviar: si pulso la tecla «s» tres veces seguidas. Por supuesto, puedes cambiarlo a otra tecla. Y como antes, para contacto lejano, escribe SMS primero.
El resto del código es autoexplicativo. Espero que te guste y si tienes preguntas, comenta abajo.
BlindToDeaf.ino
Esquemáticos

Proceso de manufactura
- Integración I2C Fluida entre Arduino y Raspberry Pi 2 para Proyectos IoT con Sensores
- Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
- Proyecto HMI Interactivo con Nextion, Arduino Mega y Múltiples Sensores
- Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
- Construye un Cubo LED 4x4x4 con Arduino Uno y 1Sheeld – Proyecto LED Interactivo
- Control Arduino UNO desde Python 3 – Envío de Comandos y Demo LED
- Medición Precisa de Radiación Solar con Arduino UNO y Shield Ethernet
- Sistema Radar Compacto con Arduino Nano, Sensor HC-SR04 y Pantalla 1.8"