Comunicação para surdos-cegos com 1Sheeld / Arduino
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Sobre este projeto
Basicamente, este projeto aborda um problema de comunicação entre surdos e cegos.
A única forma de comunicação do cego seria falando e ouvindo, enquanto o surdo só pode digitar e ver, então vamos usar isso!
Cego para surdo:
- Talk → Texto → Mostrar
Surdo para cego:
- Digite → Texto → Voz
Agora vamos traduzir isso em hardware.
Etapa 1:configuração do hardware
- Arduino Uno ou qualquer
- LCD (para este tutorial estou usando o 16 * 2)
- Smartphone
- Potenciômetro (10k bastarão)
Etapa 2:conexões
Para poder usar 1Sheeld, primeiro você precisa baixar a biblioteca 1Sheeld e adicioná-la ao seu Arduino. Além disso, você precisa baixar o aplicativo 1Sheeld para o seu celular e instalá-lo. Você pode obter isso no site 1Sheeld:https://1sheeld.com/downloads/
Siga este tutorial para saber como conectar 1Sheeld ao Arduino e como fazer upload do código:https://1sheeld.com/tutorials/getting-started/
Agora eu sei que o circuito pode parecer um pouco bagunçado, mas é um circuito simples de LCD:
- pino RS de LCD → pino digital 12
- LCD Ativar pino → pino digital 11
- LCD D4 pino → pino digital 5
- LCD D5 pino → pino digital 4
- LCD D6 pino → pino digital 3
- LCD D7 pino → pino digital 2
- LCD R / W pino → aterramento
- LCD VSS pino → terra
- LCD VCC pin → 5V
- extremidades de resistor de 10K → + 5V e terra
- limpador → pino VO LCD (pino 3)
Agora a comunicação é a seguinte:
Cego para surdo
- Reconhecimento de voz → Texto → LCD
Surdo para cego
- Teclado → Texto → Text-to-Speech
Basicamente, o reconhecimento de voz converterá a voz em texto que será enviado a um LCD, para que o surdo possa vê-lo. A conversão de texto em voz pega o texto do teclado e o converte em voz, para que uma pessoa cega possa ouvi-lo.
Você precisa escolher os escudos de Reconhecimento de Voz, Teclado, Text-to-Speech e SMS do aplicativo 1Sheeld em seu telefone móvel. Usando o escudo de SMS, poderemos enviar mensagens para um contato distante. Aqui está um vídeo para demonstrar como funciona:
Agora que você tem uma boa ideia sobre o que estamos tentando fazer, vamos falar de código.
Etapa 3:Software
CUSTOM_SETTINGS #define # definir INCLUDE_VOICE_RECOGNIZER_SHIELD # definir INCLUDE_TEXT_TO_SPEECH_SHIELD # definir INCLUDE_KEYBOARD_SHIELD # definir INCLUDE_SMS_SHIELD # definir INCLUDE_TERMINAL_SHIELD # definir INCLUDE_VIBRATION_SHIELD # LCD incluem #includeLiquidCrystal (12, 11, 5, 4, 3, 2); Cadeia msg; int enviado =0; int i =0; String phoneNum =""; // escreva o número do telefone aquiint patternOne [6] ={1000, 2000, 1000, 2000, 1000, 2000}; int patternOneSize =6; void setup () {OneSheeld.begin (); VoiceRecognition.start (); lcd.begin (16, 2);}
Basicamente, basta adicionar as bibliotecas que usaremos e inicializar algumas variáveis que usaremos posteriormente. Lembre-se de que usaremos um sensor de vibração e as variáveis
patternOne
e patterOneSize
estão relacionados a ele. Também usaremos o escudo de SMS para comunicação de longa distância, por isso adicionamos a variável “ phoneNum
”, Que conterá o número de telefone para o qual enviará o SMS. // Cego para surdo if (VoiceRecognition.isNewCommandReceived ()) {String msg1 =VoiceRecognition.getLastCommand (); // contato remoto se o usuário disse "sms" primeiro if (msg1.substring (0, 3) =="sms") {String msg1f =msg1.substring (3); SMS.send (phoneNum, msg1f); TextToSpeech.say ("SMS enviado"); atraso (4000); } // fechar contato 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); }}
Você pode ver nesta parte que eu adicionei 2 casos, contato distante e contato próximo. Para contatos distantes, o cego precisa primeiro dizer “SMS”. Caso contrário, será apenas mostrado no LCD. Além disso, há 2 casos para o próprio LCD, pois ele precisa ser informado para ir para a segunda linha quando a mensagem tiver mais de 16 caracteres, pois só pode imprimir 16 caracteres por linha.
void MsgBuild (char pC) {i ++; if (enviado <2) {if (pC =='S') {enviado + =1; msg + =pC; } else {enviado =0; msg + =pC; }} else if (enviado =3) {i =i - 3; msg.remove (i); msg.toLowerCase ();}
Agora, esta parte é um pouco complicada, então tenha paciência comigo por um tempo. Esta função será chamada caso o teclado seja utilizado. O que esta função basicamente faz são 2 coisas:primeiro, ela pega cada caractere que você inserir usando o teclado e os usa para construir a mensagem que será enviada mais tarde; em segundo lugar, verifica se você deseja enviar a mensagem agora. Percebi que não posso usar o botão Enter no teclado de proteção adequadamente, então, em vez disso, usei este código para enviar a mensagem:se eu clicar no botão “s” 3 vezes consecutivas. Claro, você pode alterá-lo para qualquer outro botão. E como antes, para um contato distante, digite SMS primeiro.
O resto do código é autoexplicativo. Espero que gostem e caso tenham alguma dúvida, comente abaixo.
BlindToDeaf.ino
Esquemas
Processo de manufatura
- Comunicação Arduino I2C com Raspi 2 WIOT
- Monitoramento de CO2 com Sensor K30
- Aceitar moeda de controle com Arduino
- Arduino com Bluetooth para controlar um LED!
- Sensor capacitivo de impressão digital com um Arduino ou ESP8266
- Brincando com Nextion Display
- Braço robótico controlado por Nunchuk (com Arduino)
- Cubo de LED 4x4x4 com Arduino Uno e 1sheeld
- Comunicação Python3 e Arduino
- Medindo a radiação solar com Arduino