Help for the Visually Impaired

Help for the Visually Impaired © GPL3+

Project with a social purpose to aid the visually impaired. The glasses can detect obstacles up to 4m away and are readjustable.

  • 1,845 views
  • 25 comments
  • 51 respects

Components and supplies

Ard nano
Arduino Nano R3
Arduino nano was chosen because it is compact.
×1
51gzz5eu9pl. sx425
Ultrasonic Sensor - HC-SR04 (Generic)
Used to detect obstacles
×1
514orbmw1rl. sl500 ss115
Inertial Measurement Unit (IMU) (6 deg of freedom)
Used to recalculate the distance according to the viewing angle.
×1
10628 01 workinga
SparkFun MP3 Player Shield
Used to reproduce by earphone at a distance from the obstacle.
×1
Adafruit industries ada1536 image
Buzzer
×1
Vibrating disk v49krccmga
Brown Dog Gadgets Solar Cockroach Vibrating Disc Motor
×1

Necessary tools and machines

About this project

APDV (Auxílio Para Deficientes Visuais)

https://roboticmente.blogspot.com/2019/02/projeto-apdv-auxilio-para-deficiente.html?fbclid=IwAR3G3S8173h_bby_SJlKfhwNEeUG2cKaAyVWw243WWOnKxyf5wHbGUB5EJs

Isaque Lima Almeida, Carlos Henrique Praxedes Monteiro, Marina Queiroz Sena, José Gleisson da CostaGermano(Orientador), Sandro Costa Mesquita (Coorientador), Weslley Lioba Caldas(Coorientador)

EEEP Pedro de Queiroz Lima, Beberibe - CE

Palavras Chave: Deficiente Visual; Angulação; Dispositivo Auxiliar

I. INTRODUÇÃO: Atualmente atecnologia tem cada vez mais servido como ferramenta para facilitar a locomoçãohumana. Dentre os diversos campos estudados, a locomoção de pessoas comdeficiências visual tem sofrido inúmeros avanços tecnológicos, como bengalassônicas, robôs guias dentre outros. Apesar disso, alternativas baratas eacessíveis ainda se fazem necessárias para diminuir o impacto causado pelosproblemas visuais. Neste contexto dispositivos de detecção de obstáculos como oAnnuitiwalk e Vibeye, ganharam a atenção do público com propostas semelhantesde fornecer ao seu usuário dispositivos baratos que consigam identificarobstáculos por meio de ondas ultrassônicas não audíveis aos seres humanos. Ambosfuncionam de forma semelhante com dispositivos acoplados a cima da cintura econectados a uma pulseira vibratória que indica quando um objeto é detectadopor meio de vibrações. Vale ressaltar no entanto que até o momento nenhumdestes projetos conta com um sistema de segurança contra a possibilidade deinclinação de seu usuário, isto é, quando o individuo esta com a cabeça muitopara baixo ou para cima, ou mesmo para esquerda ou direita. Neste trabalhopropomos o Auxílío Para Deficientes Visuais(APDV), que de forma semelhantes aostrabalhos anteriores dispõem-se a utilizar um sensor ultrassônico, capaz dedetectar obstáculos imediatamente a frente de seu usuário, e alertando por meiode uma pulseira vibratória. O APDV ainda conta com um sistema capaz ajustar adetecção levando em conta o ângulo emque o dispositivo está em relação ao solo e ao seu usuário.

II.OBJETIVO E QUESTÃOPROBLEMA: Conforme dados do IBGE de 2015, cerca de 3, 6% da população brasileirasofre com algum tipo de deficiência visual (VEILLELA, 2015). Dentre estes, cerca de 16% tem problemas para realizar tarefas do cotidiano como ir aotrabalho, escola e etc. Uma vez que locomover-se em ambientes com obstáculoscomo, por exemplo ruas, terminais de ônibus e praças, é uma das principaisdificuldades para a população com deficiência visual, formas de minimizar esseproblema são necessárias. Em 2014 o grupo de pesquisa pernambucanodesenvolveu o protótipo de óculos inteligente Annuitwalk, que consistia em umsensor ultrassônico acoplado em uns óculos, capaz de detectar obstáculos a cimada altura da cintura (ANNUITWALK, 2014). Tal proposta foi feita, visando paratrabalhar em conjunto com a bengala, em que o usuário teria conhecimento depossíveis obstáculos a baixo da cintura, porém não teria conhecimento algumsobre obstáculos acima da cintura como postes, e cabines telefônicas, verFigura 1 Dessa forma, caso um obstáculofosse detectado o Annuitwalk avisaria o usuário, que poderia desviar do mesmo.De forma semelhante um grupo de pesquisadores desenvolveu o VibEye, como umdispositivo que pode ser anexado em qualquer vestimenta acima da cintura, também com o intuito de detectar obstáculos (VIBEYE, 2017).

FIGURA 1 – altura acima e abaixo da cintura

Fonte: ADAPTADO DEANNUITWALK, 2014

Apesar de ser um grandeavanço tecnológico no aspecto de acessibilidade, muitos problemas ainda nãoforam solucionados. Deve-se levar em conta que a melhor distância da detecçãode um obstáculo qualquer é variável, dependendo da localização e angulação dosensor, bem como da estatura de seu usuário. Vamos supor, por exemplo, que um usuário qualquer inclinasse o dispositivo de detecção emquestão para baixo ou para cima, certamente a distância de medição não sairiada forma mais eficaz, uma vez que ambos os projetos Annuitwalk e VibEye, foramconstruídos de forma que seussensores estejam retos em relação ao solo. Neste trabalho propomos o uso deóculos dotados de um dispositivo capaz de detectar objetos acima da altura dacintura, por meio de pulsos sonoros que leva em conta a disposição e inclinaçãodo mesmo em relação ao seu usuário, fornecendo assim uma melhor experiência aosseus usuários e solucionando o problema da angulação dos dispositivos.

Referências

ANNUITWALK, Sobre o AnnuitWalk, 2017. Disponível em: <http:// http://annuitwalk.com/ />.Acesso em: 05 nov. 2017.

MENDONÇA, Alberto, etal. "Alunos cegos e com baixa visão–Orientações curriculares." Lisboa:Ministério da Educação/Direcção Geral de Inovação e Desenvolvimento Curricular (2008).

VIBEYE. Sobre o VibEye, 2017.Disponível em: <http://www.vibeye.com.br/>. Acesso em: 05 nov. 2017.

VILLELA, F. IBGE: 6, 2% dapopulação têm algum tipo de deficiência. Agência Brasil, 2015.

Apoio: PIXELS ESCOLA; FAMIL, EEEPPEDRO DE QUEIROZ LIMA/SEDUC-CE,

GLEISSONGERMANO, WESLLEY CALDAS, SANDRO MESQUITA

Code

Oculos_com_MP3V3.inoArduino
Program for uum glasses for the visually impaired.
#include <I2Cdev.h>
#include <MediaMovel.h> //Biblioteca para uso de mdia mvel
#include <Ultrassonico.h>
#include <MPU6050.h>
#include "Wire.h" //Biblioteca para comunicao I2C
#include <math.h> //Inclui biblioteca para uso da funo atan()
#include <Wtv020sd16p.h> //Inclui biblioteca MP3

#define   RAD(grau)                   ((grau*3.1415926)/180) //Converte de radianos para graus
#define   GRAU(rad)                   ((rad*180)/3.1415926) //Converte de graus para radiano
//Converte algum valor de tenso entre 0 e 5V, para a faixa entre 0 e 255
#define   TENSAO(tensao)              ((255*tensao)/5.0) 
#define   pino_buzzer                 2
#define   pino_vibracall              3
#define   DISTANCIA_MINIMA            40 //Define distncia mnima de deteco
#define   ANGULO_LIMITE_SUPERIOR      30 //Valor em graus

//Carto
int resetPin = 10;  //Pino Reset
int clockPin = 9;  //Pino clock
int dataPin = 11;   //Pino data (DI)
int busyPin = 12;   //Pino busy

//Boto
int bottonPin = 4; // Pino Liga/Desliga
int estadoboton;
int ativado=HIGH;

Ultrassonico ultra(8, 7); //Echo e trigger
MM mms_1(20), mms_2(30); //Instncia dois objetos do tipo MM, com 15 e 50 amostras, respectivamente
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin); //Instncia quatro ojetos a classe da biblioteca MP3

MPU6050 accelgyro; //Instancia objeto accelgyro, do tipo MPU6050

//Variveis auxiliares
int16_t ax, ay, az, gx, gy, gz;
float anguloEixoX, ALTURA_PESSOA=170.0, DISTANCIA_DETECCAO=200.0;
uint16_t distanciaHorizontal, leituraUltra;
bool flag; //Indicador de inclinao
char buf;//Variavel que armazena os caracteres recebidos do MP3

float ANGULO_DETECCAO(float valor){ //Funo para clculo do ngulo de deteco
  return (GRAU(atan(valor)));
}

void setup(){
    Wire.begin(); //Inicializa comunicao I2C
    Serial.begin(9600); //Inicializa serial
    accelgyro.initialize(); //Inicializa objeto accelgyro
    pinMode(pino_buzzer, OUTPUT);
    pinMode(pino_vibracall, OUTPUT);
    pinMode(bottonPin, INPUT_PULLUP);
    //Inicializa o modulo WTV020
    wtv020sd16p.reset();
    //Informacoes iniciais 
    menu_inicial();
    //Testa conexo, em caso de sucesso, dar um simples bip
    if(accelgyro.testConnection()){
      tone(pino_buzzer, 2500);
      delay(500);
      noTone(pino_buzzer);
    }
    //Em caso de falha na conexo, dar dois bips
    else{
      tone(pino_buzzer, 3500);   
      delay(150);  
      noTone(pino_buzzer);
      delay(500);
      tone(pino_buzzer, 3500);
      delay(150);  
      noTone(pino_buzzer);
    }
}

void loop(){
  estadoboton=digitalRead(bottonPin);
  if (estadoboton==LOW){
    ativado=!ativado;
    delay(20);
  }
  if (ativado==LOW){
aqui:    
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //Obtm valores do acelermetro e giroscpio 
        
    if(ax<-16400) ax=-16400; //Limita valores de "ax"
    if(ax>=0){ //Se dispositivo inclinado para cima ou reto
      flag=0; //Indicador de inclinao para cima ou reta
      //Converte valores de "ax" na faixa de 0  16400, para valores entre 0 e 90
      anguloEixoX=float((90*(mms_1.calculaMMS(ax)))/16400);
      if(anguloEixoX>ANGULO_LIMITE_SUPERIOR){ //Verifica limite de ngulo para cima
        noTone(pino_buzzer); //Desliga tone 
        analogWrite(pino_vibracall, 0); //Desliga vibracall 
        goto aqui; //Salta para a label "aqui"
      }
    }
    else{ //Se dispositivo inclinado para baixo
      flag=1; //Indicador de inclinao para baixo
      //Converte valores de "ax" na faixa de 0  -16400, para valores entre 0 e 90
      anguloEixoX=float((90*(mms_1.calculaMMS(ax)))/(-16400));
    }

    //Verifica se a pessoa est com inclinao para o cho    
    if((anguloEixoX>ANGULO_DETECCAO(ALTURA_PESSOA/DISTANCIA_DETECCAO)) && (flag==1)){
      tone(pino_buzzer, 2500); //Detecta cho - Liga tone  
      analogWrite(pino_vibracall, 0); //Desliga vibracall
    }
    else{
      noTone(pino_buzzer); //Desliga tone  
         
      leituraUltra=mms_2.calculaMMS(ultra.centimetrosUltra()); //Ler ultrassnico
      distanciaHorizontal=leituraUltra*(cos(RAD(anguloEixoX))); //Calcula distncia horizontal 

      //CHAMADA MP3
      if ((distanciaHorizontal>2000) && (distanciaHorizontal<3000)) {
        wtv020sd16p.playVoice(0);
      //Reproduz o arquivo 1
      wtv020sd16p.asyncPlayVoice(1); //Voc esta a mais de 2 metros de um obstculo!
      delay(3000); 
      wtv020sd16p.stopVoice();
      delay(2000);
      menu_inicial();
      }
      if ((distanciaHorizontal>1000)&& (distanciaHorizontal<2000)){
        wtv020sd16p.playVoice(0);
      //Reproduz o arquivo 2
      wtv020sd16p.asyncPlayVoice(2); //Ateno obstaculo a menos de 2 metros!
      delay(3000); 
      wtv020sd16p.stopVoice();
      delay(2000);
      menu_inicial();
      }
      
      if ((distanciaHorizontal>200)&& (distanciaHorizontal<1000)){
        wtv020sd16p.playVoice(0);
      //Reproduz o arquivo 2
      wtv020sd16p.asyncPlayVoice(3); //Cuidado obstaculo a menos de 1 metro!
      delay(3000); 
      wtv020sd16p.stopVoice();
      delay(2000);
      menu_inicial();
      }
      
         
      //Limita valores de distanciaHorizontal
      if(distanciaHorizontal<DISTANCIA_MINIMA) distanciaHorizontal=DISTANCIA_MINIMA;
      if(distanciaHorizontal>DISTANCIA_DETECCAO){
        analogWrite(pino_vibracall, 0); //Desliga vibracall      
      }
      //Varia a tenso no vibracall de 2.0V  4.0V, conforme a distncia detectada, de 
      //DISTANCIA_MINIMA  DISTANCIA_DETECCAO                                                             
      else analogWrite(pino_vibracall, map(distanciaHorizontal, DISTANCIA_DETECCAO, DISTANCIA_MINIMA, TENSAO(1.5), TENSAO(4.0))); 
    }  
    Serial.print(anguloEixoX);
    Serial.print(',');
    Serial.print(ANGULO_DETECCAO(ALTURA_PESSOA/DISTANCIA_DETECCAO));
    Serial.print(',');
    Serial.println(distanciaHorizontal);
    //delay(1);
  }
}
//Mostra menu de opcoes
void menu_inicial()
{
  Serial.println("\nDigite : ");
  Serial.println("1 - Reproduz o arquivo 0001.ad4");
  Serial.println("2 - Reproduz o arquivo 0002.ad4");
  Serial.println("3 - Reproduz o arquivo 0003.ad4");
  Serial.println();
}

Schematics

Esquema Arduino nano com Ultrassonic
Parte do esquuema completo do projeto, em breve postaremos o esquema completo
Nano com ultrassonic hbg4sxq5de

Comments

Similar projects you might like

Jacket for Visually Impaired

by 5 developers

  • 3,694 views
  • 23 comments
  • 48 respects

Vision: A Torch For The Visually Impaired

Project tutorial by Saiyam Agrawal

  • 4,737 views
  • 1 comment
  • 10 respects

Smart cane

by saurabhrobotic

  • 6,156 views
  • 22 comments
  • 43 respects

Bracelet Dodges Obstacles

by PaulinaPeralta

  • 4,916 views
  • 4 comments
  • 8 respects

Ultrasonic Glasses for the Blind

Project tutorial by Team GardnerTech

  • 21,061 views
  • 28 comments
  • 81 respects

Rover for Cave Exploration

Project tutorial by ACool

  • 4,876 views
  • 3 comments
  • 27 respects
Add projectSign up / Login