0% encontró este documento útil (0 votos)
111 vistas10 páginas

Baston Ineligente

El documento describe el desarrollo de un bastón inteligente para personas ciegas con bajos recursos económicos en México. El bastón usa sensores ultrasónicos y motores vibradores para detectar obstáculos y advertir al usuario a través de vibraciones y tonos de un zumbador. El código de Arduino controla los sensores y activa los motores y zumbador dependiendo de la distancia de los objetos detectados.

Cargado por

Mictam
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
111 vistas10 páginas

Baston Ineligente

El documento describe el desarrollo de un bastón inteligente para personas ciegas con bajos recursos económicos en México. El bastón usa sensores ultrasónicos y motores vibradores para detectar obstáculos y advertir al usuario a través de vibraciones y tonos de un zumbador. El código de Arduino controla los sensores y activa los motores y zumbador dependiendo de la distancia de los objetos detectados.

Cargado por

Mictam
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Introducción

La ceguera es la perdida de la visión que no se puede corregir con gafas o lentes


de contacto. Puede suceder de manera repentina o con el paso del tiempo.
Existen dos tipos, ceguera parcial y ceguera completa.
En el mundo existen entre 40 y 45 millones de ciegos y 135 millones de débiles
visuales. Sin embargo, en el 80 % de los casos, la perdida de visión se puede
prevenir o curar, según la Organización Mundial de la Salud (OMS) y el Organismo
Internacional de Prevención de la Ceguera.
El bastón convencional para ciegos es una prolongación de su cuerpo. Es una
herramienta táctil, fabricada de aluminio normalmente, guía los pasos del
invidente, proporcionando información sobre la superficie donde camina y
ubicación, pero no información sobre algún obstáculo como medidores de luz,
plumas de estacionamiento o extinguidores.
De acuerdo a estudios por el INEGI, 1 de cada 1000 habitantes son ciegos; de los
cuales, el 97 % de ellos son de escasos recursos económicos. Esto imposibilita la
adquisición de un bastón inteligente. La construcción de un bastón blanco
inteligente concreta las ideas, teorías, esfuerzos, opiniones y anhelos presentados
por el autor.
El objetivo consistió en elaborar un bastón inteligente para personas invidentes en
México, con la capacidad de detectar obstáculos alrededor del cuerpo del usuario,
como pueden ser medidores de luz, extinguidores, alacenas, plumas de
estacionamiento, arboles, cajas de teléfonos, escalones, ramas de árboles,
automóviles estacionados y ventanas.
Justificación
En el mundo existen alrededor 45 millones de invidentes y 135 millones con
debilidad visual. Esta cifra la proporciona la Organización Mundial de la Salud
(OMS) y el Organismo Internacional de prevención de la Ceguera. El INEGI
reporta que 1 de cada 1000 habitantes son ciegos, de los cuales el 97 % de ellos
son de escasos recursos económicos. Los sistemas inteligentes para invidentes
en el mercado internacional son muy costosos.
En México los ciegos son incapaces de adquirir un bastión inteligente para realizar
sus actividades cotidianas. Incluso, obtener un bastón convencional es complicado
para un cuantioso número de ellos. Esto crea la necesidad de desarrollar e
implementar un prototipo inteligente para personas invidentes, con un costo
accesible, a causa de los precios elevados de los bastones inteligentes en el
mercado.
Objetivo
Diseñar y manufacturar con dispositivos de bajo costo, un bastión inteligente para
personas invidentes de escasos recursos económicos, con el cual se busca
recuperar libertad de los débiles visuales

Desarrollo del Proyecto


Para el desarrollo del proyecto se necesitaron los siguientes materiales:
1 Protoboard
1 Arduino UNO
1 Buzzer 5v
5 Sensores Ultrasónicos HC SR04
3 Capacitor cerámico de 0.1Uf
3 Diodos 1N4001
3 Transistores NPN 2N2222
3 Resistencias de 1k Ω
3 Micro motores moneda de 3.3V
1 Placa fenólica perforada
1 Caja de cartón pequeña
1 Paquete de Jumpers de 20 cm
El bastón consiste en tener 5 sensores ultrasónicos, 2 de ellos apuntan hacia
adelante para ampliar el rango del área de la distancia de los objetos ya que estos
sensores pueden detectar a una apertura ± 22°, uno más apunta hacia arriba y
otro hacia abajo para poder detectar obstáculos cerca de la cabeza y de los pies
respectivamente.
Al detectar un obstáculo por uno de los sensores el buzzer empezara a sonar cada
vez con más intensidad y más rápido si el objeto continua acercándose al usuario
hasta que los motores que están conectados al mango vibren indicando que un
obstáculo está más cerca o más lejos.
Para el desarrollo de este proyecto se implemento el uso de este código en un
Arduino UNO:

int vibrador = 5;

int vibrador2 = 4;

int vibrador3 = 3;

//Sensores de ultrasonido

const int pingPin = 12;

const int pingPine = 11;

const int pingPin2 = 10;

const int pingPin2e = 9;

const int pingPin3 = 8;

const int pingPin3e = 7;

//Zumbador

int zumbador = 6;

void setup()

// Iniciamos la comunicación por serial:

[Link](14400);

//Especificamos el zumbador como salida de datos

pinMode(zumbador, OUTPUT);

//Especificamos los vibradores como salida de datos

pinMode(pingPine,INPUT);

pinMode(pingPin2e,INPUT);

pinMode(pingPin3e,INPUT);

pinMode(vibrador,OUTPUT);

pinMode(vibrador2,OUTPUT);

pinMode(vibrador3,OUTPUT);
void loop()

/* Establecemos variables para la duración del ping

y mostramos el resultado de la distancia en centímetros*/

//Distancia espacio/tiempo

long duration, duration2, duration3, cm, cm2, cm3;

/*Dentro del Loop vamos a activar los vibradores

en las distancias correspondientes */

// ----------PING 1-------

// The PING))) envia un pulso alto (HIGH) con duracion de 2 microsegundos.

// Luego envia un pulso bajo (LOW) para hacer una limpieza del pulso alto (LOW)

pinMode(pingPin, OUTPUT);

digitalWrite(pingPin, LOW);

delayMicroseconds(2);

digitalWrite(pingPin, HIGH);

delayMicroseconds(5);

digitalWrite(pingPin, LOW);

//Especificamos los sensores como entrada de datos

pinMode(pingPin,INPUT);

duration = pulseIn(pingPin,HIGH);

cm = microsecondsToCentimeters(duration);
// ----------PING 2-------

// The PING))) envia un pulso alto (HIGH) con duracion de 2 microsegundos.

// Luego envia un pulso bajo (LOW) para hacer una limpieza del pulso alto (LOW)

pinMode(pingPin2, OUTPUT);

digitalWrite(pingPin2, LOW);

delayMicroseconds(2);

digitalWrite(pingPin2, HIGH);

delayMicroseconds(5);

digitalWrite(pingPin2, LOW);

//Especificamos los sensores como entrada de datos

pinMode(pingPin2,INPUT);

duration2 = pulseIn(pingPin2, HIGH);

cm2 = microsecondsToCentimeters2(duration2);

// ----------PING 3-------

// The PING))) envia un pulso alto (HIGH) con duracion de 2 microsegundos.

// Luego envia un pulso bajo (LOW) para hacer una limpieza del pulso alto (LOW)

pinMode(pingPin3, OUTPUT);

digitalWrite(pingPin3, LOW);

delayMicroseconds(2);

digitalWrite(pingPin3, HIGH);

delayMicroseconds(5);

digitalWrite(pingPin3, LOW);
//Especificamos los sensores como entrada de datos

pinMode(pingPin3,INPUT);

duration3 = pulseIn(pingPin3, HIGH);

cm3 = microsecondsToCentimeters3(duration3);

//----------------------------------------

// VIBRADOR 1 (DELANTERO)

//----------------------------------------

//Si Sensor 1 es menor a 50cm y mayor a 10cm activamos Vibrador 1.

//Si esta entre 10cm y 60cm

if((cm>=10)&&(cm<=60))

// Si esta entre 25cm y 60cm

if((cm>=25)&&(cm<=60))

else //Si esta entre 45cm y 60cm

if((cm>=45)&&(cm<=60))

for(int fadeValue = 0 ; fadeValue <= 64; fadeValue +=5)

analogWrite(vibrador, fadeValue);

analogWrite(zumbador, fadeValue);

digitalWrite(zumbador, HIGH); // enciende el zumbador (on)

delay(40); // espera 0,4seg.

digitalWrite(zumbador, LOW); // apaga el zumbador (off)

delay(40); // espera 0,4seg

}
else

//Si NO esta entre 10cm y 60cm, esta a menos de 10cm o a mas de 60cm, APAGAMOS
vibrador.

for(int fadeValue = 0 ; fadeValue <= 0; fadeValue +=5)

analogWrite(vibrador, fadeValue);

analogWrite(zumbador, fadeValue);

//----------------------------------------

// VIBRADOR 2 (DERECHO)

//----------------------------------------

//Si Sensor 1 es menor a 50cm y mayor a 10cm activamos Vibrador 1.

if((cm2>=10)&&(cm2<=60))

// Si esta entre 25cm y 60cm

if((cm2>=25)&&(cm2<=60))

//Si esta entre 45cm y 60cm

if((cm2>=45)&&(cm2<=60))

for(int fadeValue = 0 ; fadeValue <= 64; fadeValue +=5)

analogWrite(vibrador2, fadeValue);

analogWrite(zumbador, fadeValue);

digitalWrite(zumbador, HIGH); // enciende el zumbador (on)

delay(40); // espera 0,4seg.

digitalWrite(zumbador, LOW); // apaga el zumbador (off)

delay(40); // espera 0,4seg

else
else

{ //Si NO esta entre 45cm y 60cm, esta entre 25cm y 45cm

for(int fadeValue = 0 ; fadeValue <= 127; fadeValue +=5)

analogWrite(vibrador3, fadeValue);

analogWrite(zumbador, fadeValue);

digitalWrite(zumbador, HIGH); // enciende el zumbador (on)

delay(20); // espera 0,2seg.

digitalWrite(zumbador, LOW); // apaga el zumbador (off)

delay(20); // espera 0,2seg.

else

//Si NO esta entre 25cm y 60cm, esta entre 10cm y 25cm

for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5)

analogWrite(vibrador3, fadeValue);

analogWrite(zumbador, fadeValue);

digitalWrite(zumbador, HIGH); // enciende el zumbador (on)

delay(10); // espera 0,1seg.

digitalWrite(zumbador, LOW); // apaga el zumbador (off)

delay(10); // espera 0,1seg.

}
else

//Si NO esta entre 25cm y 60cm, esta entre 10cm y 25cm

for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5)

analogWrite(vibrador3, fadeValue);

analogWrite(zumbador, fadeValue);

digitalWrite(zumbador, HIGH); // enciende el zumbador (on)

delay(10); // espera 0,1seg.

digitalWrite(zumbador, LOW); // apaga el zumbador (off)

delay(10); // espera 0,1seg.

} }}

else{

//Si NO esta entre 10cm y 60cm, esta a menos de 10cm o a mas de 60cm, APAGAMOS
vibrador.

for(int fadeValue = 0 ; fadeValue <= 0; fadeValue +=5)

analogWrite(vibrador3, fadeValue);

} //Cerramos el LOOP

//Convertimos las medidas de microsegundos a centimetros

long microsecondsToCentimeters(long microseconds)

{}

long microsecondsToCentimeters2(long microseconds)

return microseconds / 29 / 2;}

long microsecondsToCentimeters3(long microseconds)

{ return microseconds / 29 / 2;

También podría gustarte