Bastón Navegador para Ciegos: Dispositivo Asistivo Basado en Arduino
Componentes y Suministros
| Componente | Cantidad |
|---|---|
| 1Sheeld | 1 |
| Arduino UNO | 1 |
| Dispositivo Android | 1 |
| Relé (genérico) | 1 |
| Interruptor basculante (toggle switch) | 1 |
| Sensor ultrasónico HC-SR04 | 1 |
| Motor DC (genérico) | 1 |
| Cables jumper (genéricos) | 1 |
| Batería 9V (genérica) | 1 |
Aplicaciones y Servicios Online
- Arduino IDE
- App 1Sheeld para teléfono
Sobre este Proyecto
La historia comenzó cuando vi a una persona ciega intentando caminar con dificultad a través de obstáculos como agujeros en la carretera, escaleras, etc. con su bastón tradicional. Realmente me motivó a intentar construir este prototipo aunque no sea un experto en manejo de dispositivos electrónicos. Usando diferentes fuentes en internet, logré completarlo el año pasado durante mi proyecto de fin de carrera. Además, mejoré el prototipo añadiendo ubicación GPS. Gracias a 1Sheeld, realmente me ayudó a terminar este prototipo en 6 meses.
Paso 1: Alimentación
Para encender el Bastón Navegador para Ciegos, necesita alimentación externa. Estoy usando una batería de 9V como introducción a su capacidad. Por lo que he visto, mi prototipo tiene la desventaja de no proporcionar uso de energía a largo plazo. Por tanto, necesita una mejora como panel solar/energía de alguna manera.
Paso 2: Conexión Bluetooth y App 1Sheeld
Después de encenderlo usando la batería conectada al adaptador de alimentación USB en el microcontrolador Arduino Uno, el tutor/guardián necesita mantener siempre la conexión Bluetooth (smartphone Android) conectada al microcontrolador. Luego, necesitas abrir la app 1Sheeld ya instalada en el smartphone y activar las funciones GPS y SMS.
**Sí, sé que las personas ciegas no pueden ver y acceder al smartphone, pero al menos si yo o tú logramos hacer la modificación en el smartphone Android OS, hará las cosas mucho más fáciles. Ya intenté buscar un mejor smartphone que proporcione botones en braille, pero fallé. Así que espero que en el futuro haya una actualización para mi prototipo.
Paso 3: Detección de Obstáculos
Basado en el diagrama de bloques anterior, como puedes ver, así es como ocurre la conexión entre dispositivos. Después de encender estos dos, la persona ciega puede empezar a usar el Bastón Navegador. Basado en la observación del bastón blanco tradicional, la persona ciega siempre moverá el bastón alrededor para obtener confirmación de su entorno. Pero con el Bastón Navegador, les ayudará a recibir notificación por vibración del obstáculo a nivel medio e inferior. El obstáculo se detecta usando sensor ultrasónico HC-SR04. Se ha colocado en la parte superior del bastón y en la parte inferior. Estoy usando tubo PVC porque puedo poner el motor DC de vibración dentro del tubo PVC. El modo de vibración se puede alterar en el código dado usando el software Arduino IDE.
Paso 4: GPS y Botón de Emergencia
Además, el Bastón Navegador puede proporcionar longitud y latitud de la ubicación de la persona ciega. Esto es porque el smartphone actúa como proveedor y proporciona ubicación GPS para este proceso. Se añade un interruptor basculante para que la persona ciega pueda presionar más fácilmente el botón de emergencia para informar al destinatario de que ya está perdido o en peligro. Al hacer clic una o varias veces, el smartphone enviará un mensaje informando que necesitan ayuda y por favor búsquenlo basado en el GPS y enlace de Google Maps. El número del destinatario puede configurarse si el mensaje se quiere enviar a las autoridades o solo al tutor de la persona ciega. La longitud del bastón es ajustable según la altura del usuario. Para este prototipo, estoy usando una longitud específica y la longitud de detección se puede alterar en el código.
Paso 5: Conclusión
Por último, espero que mi prototipo se use en todo el mundo o se comercialice, ayudando así a las personas ciegas durante su viaje/vida. Además, siento mucho mi gramática porque mi inglés no es muy bueno. No sé cómo describir más en este post. Toda la información ya la he compilado en el adjunto. Puedes consultar más sobre este proyecto basado en los enlaces que proporcioné abajo.
- Documento del Proyecto: FYP 1, FYP 2
- Póster del Proyecto: FYP 1, FYP 2
- Video del Proyecto: Video 1, Video 2
Código
OneSheeldBlindStickNavigator (C/C++)
#define CUSTOM_SETTINGS
#define INCLUDE_GPS_SHIELD
#define INCLUDE_SMS_SHIELD
/* Include 1Sheeld library.*/
#include <OneSheeld.h>
#include <string.h>
#define trigPinL 4
#define echoPinL 5
#define trigPinH 6
#define echoPinH 7
#define Vib1 12
#define Vib2 13
#define SW 8
/* Define a boolean flag. */
boolean isInRange = false;
float lat;
float lon;
String PhoneNumber = "0134087286";
String Message;
String Message1;
String Message2;
char latitude[10];
char longitude[10];
void setup() {
pinMode(trigPinL, OUTPUT);
pinMode(echoPinL, INPUT);
pinMode(trigPinH, OUTPUT);
pinMode(echoPinH, INPUT);
pinMode(Vib1, OUTPUT);
pinMode(Vib2, OUTPUT);
pinMode(SW, INPUT);
/* Start communication.*/
OneSheeld.begin();
// Serial.begin(9600);
}
void loop() {
long durationL, distanceL, durationH, distanceH, MixDist;
digitalWrite(trigPinL, LOW);
delayMicroseconds(2);
digitalWrite(trigPinL, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinL, LOW);
durationL = pulseIn(echoPinL, HIGH);
distanceL = (durationL/2) / 29.1;
digitalWrite(trigPinH, LOW);
delayMicroseconds(2);
digitalWrite(trigPinH, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinH, LOW);
durationH = pulseIn(echoPinH, HIGH);
distanceH = (durationH/2) / 29.1;
// Sensor inferior (nivel suelo)
if (distanceL > 40){
digitalWrite(Vib1, HIGH);
}
if (distanceL < 40){
digitalWrite(Vib1, LOW);
}
// Sensor superior (nivel medio)
if (distanceH < 100){
digitalWrite(Vib1, HIGH);
delay(200);
digitalWrite(Vib1, LOW);
delay(200);
}
/* Siempre comprobar si el GPS del smartphone y una longitud/latitud dada
están en un rango de 100 metros. */
// if(GPS.isInRange(30.0831008,31.3242943,100))
// {
// if(!isInRange)
// {
// /* Send SMS. */
lat = GPS.getLatitude();
lon = GPS.getLongitude();
Message1 = String(lat,8);
Message2 = String(lon,8);
if (digitalRead(SW) == 0){
Message = "I need Help! I'm at latitude: " + Message1 + " and longitude: " + Message2;
Message = "Google Maps - https://www.google.co.in/maps/place/" + Message1 + "," + Message2;
SMS.send(PhoneNumber, Message);
delay(3000);
}
// isInRange = true;
// }
// }
// else
// {
// if(isInRange)
// {
// /* Send SMS. */
// SMS.send("+601123413946","Smartphone is not In Range.");
// isInRange = false;
// }
// }
delay(1000);
}
Esquemático
OneSheeldTONGKAT.fzz
Proceso de manufactura
- Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense
- Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Construye tu Propio Juego de Ruleta de 37 LEDs con Arduino Nano
- ATtiny85 Mini Arcade: Snake – Construye una Consola Portátil OLED
- Detector de Rango Portátil – Kit DIY Arduino Nano con HC-SR04, Batería 18650 y Carcasa Impresa en 3D
- Construir una lámpara de escritorio reactiva al audio con Arduino Nano
- Coche Robot Seguidor de Rostros Autónomo con Arduino Nano y OpenCV
- Proyecto de electroplacado de cobre: Construye un sistema inteligente con Arduino UNO
- Pong Neón en Matriz NeoPixel con Arduino Nano
- Crea Secuencias de Luz Impactantes con Arduino y Registro de Desplazamiento