Comunicación para personas sordociegas con 1Sheeld / Arduino
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Acerca de este proyecto
Básicamente, este proyecto aborda un problema de comunicación para sordos ciegos.
La única forma de comunicación de la persona ciega sería a través del habla y el oído, mientras que la persona sorda solo puede escribir y ver, ¡así que usemos eso!
De ciegos a sordos:
- Hablar → Texto → Mostrar
De sordos a ciegos:
- Escriba → Texto → Voz
Ahora traduzcamos eso en hardware.
Paso 1:configuración del hardware
- Arduino Uno o cualquier
- LCD (para este tutorial estoy usando el de 16 * 2)
- Teléfono inteligente
- Potenciómetro (10k bastará)
Paso 2:Conexiones
Para poder usar 1Sheeld, primero debe descargar la biblioteca 1Sheeld y agregarla a su Arduino. Además, debe descargar la aplicación 1Sheeld en su teléfono móvil e instalarla. Puede obtenerlo en el sitio de 1Sheeld:https://1sheeld.com/downloads/
Siga este tutorial sobre cómo conectar 1Sheeld a Arduino y cómo cargar el código:https://1sheeld.com/tutorials/getting-started/
Ahora sé que el circuito puede verse un poco desordenado, pero es un circuito LCD simple:
- LCD RS pin → pin digital 12
- LCD Activar pin → pin digital 11
- LCD D4 pin → pin digital 5
- LCD D5 pin → pin digital 4
- LCD D6 pin → pin digital 3
- LCD D7 pin → pin digital 2
- LCD R / W pin → tierra
- LCD VSS pin → tierra
- Pin VCC de LCD → 5V
- Extremos de resistencia de 10K → + 5V y tierra
- limpiaparabrisas → pin VO LCD (pin 3)
Ahora la comunicación es la siguiente:
De ciegos a sordos
- Reconocimiento de voz → Texto → LCD
De sordos a ciegos
- Teclado → Texto → Texto a voz
Básicamente, el reconocimiento de voz convertirá la voz en texto que luego se enviará a una pantalla LCD para que la persona sorda pueda verlo. Text-to-speech tomará el texto del teclado y lo convertirá en voz, para que la persona ciega pueda escucharlo.
Debe elegir los escudos de reconocimiento de voz, teclado, texto a voz y SMS de la aplicación 1Sheeld en su teléfono móvil. Usando el escudo de SMS, podremos enviar mensajes a un contacto lejano. Aquí hay un video para demostrar cómo funciona:
Ahora que tiene una buena idea de lo que estamos tratando de hacer, hablemos del código.
Paso 3:software
CUSTOM_SETTINGS #define # 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 # incluyen lcd #includeLiquidCrystal (12, 11, 5, 4, 3, 2); cadena msg; int enviado =0; int i =0; String phoneNum =""; // escriba el número de teléfono aquíint patternOne [6] ={1000, 2000, 1000, 2000, 1000, 2000}; int patternOneSize =6; void setup () {OneSheeld.begin (); VoiceRecognition.start (); lcd.begin (16, 2);}
Básicamente, simplemente agregando las bibliotecas que usaremos e inicializando algunas variables que usaremos más adelante. Tenga en cuenta que vamos a utilizar un sensor de vibración y las variables patternOne
y patterOneSize
están relacionados con él. También usaremos el escudo de SMS para comunicarnos a larga distancia, por eso agregamos la variable " phoneNum
”Que contendrá el número de teléfono al que enviará el SMS.
// De ciegos a sordos if (VoiceRecognition.isNewCommandReceived ()) {String msg1 =VoiceRecognition.getLastCommand (); // contacto remoto si el usuario dijo "sms" primero if (msg1.substring (0, 3) =="sms") {String msg1f =msg1.substring (3); SMS.send (phoneNum, msg1f); TextToSpeech.say ("sms enviado"); retraso (4000); } // cerrar contacto else {if (msg1.length ()> 16) {lcd.clear (); lcd.setCursor (0, 0); para (int i =0; i <=16; i ++) {lcd.print (msg1 [i]); } lcd.setCursor (0, 1); para (int j =16; j <=msg1.length () - 1; j ++) {lcd.print (msg1 [j]); }} else {lcd.clear (); lcd.print (msg1); }}
Puede ver en esta parte que agregué 2 casos, contacto lejano y contacto cercano. Para contactos lejanos, la persona ciega debe decir primero "SMS". De lo contrario, solo se mostrará en la pantalla LCD. Además, hay 2 casos para la pantalla LCD en sí, ya que es necesario indicarle que vaya a la segunda fila cuando el mensaje tiene más de 16 caracteres, ya que solo puede imprimir 16 caracteres por fila.
void MsgBuild (char pC) {i ++; if (enviado <2) {if (pC =='S') {enviado + =1; msg + =pC; } else {enviado =0; msg + =pC; }} más si (enviado =3) {i =i - 3; msg.remove (i); msg.toLowerCase ();}
Ahora bien, esta parte es un poco complicada, así que tengan paciencia conmigo por un tiempo. Esta función se llamará en caso de que se utilice el teclado. Básicamente, esta función hace 2 cosas:primero, toma cada carácter que ingresa usando el teclado y lo usa para construir el mensaje que se enviará más tarde; en segundo lugar, comprueba si desea enviar el mensaje ahora. Me di cuenta de que no puedo usar el botón Enter en el teclado de escudo correctamente, así que en su lugar usé este código para enviar el mensaje:si hacía clic en el botón "s" 3 veces seguidas. Por supuesto, puede cambiarlo a cualquier otro botón. Y como antes, para un contacto lejano, escriba primero un SMS.
El resto del código se explica por sí mismo. Entonces, espero que les guste y si tienen alguna pregunta, por favor comenten a continuación.
BlindToDeaf.ino
Esquemas
Proceso de manufactura
- Comunicación de Arduino I2C con Raspi 2 WIOT
- Monitoreo de CO2 con sensor K30
- Controlar el aceptador de monedas con Arduino
- ¡Arduino con Bluetooth para controlar un LED!
- Sensor capacitivo de huellas dactilares con Arduino o ESP8266
- Jugando con Nextion Display
- Brazo robótico controlado por Nunchuk (con Arduino)
- Cubo LED 4x4x4 con Arduino Uno y 1sheeld
- Python3 y comunicación Arduino
- Medición de la radiación solar con Arduino
- Mini radar con Arduino