Bengala Inteligente para Deficientes Visuais - Dispositivo Assistivo Baseado em Arduino
Componentes e Materiais Necessários
| Componente | Quantidade | Observações |
|---|---|---|
| 1Sheeld | 1 | Shield para conectar Arduino ao smartphone Android |
| Arduino UNO | 1 | Microcontrolador principal |
| Dispositivo Android (smartphone) | 1 | Fornece GPS, SMS e conectividade Bluetooth |
| Relé (genérico) | 1 | Para controle de carga externa |
| Chave seletora (toggle switch) | 1 | Botão de emergência |
| Sensor ultrassônico HC-SR04 | 2 | Um na parte superior, outro na inferior da bengala |
| Motor DC (genérico) | 2 | Motores de vibração para feedback tátil |
| Fios jumpers (genéricos) | 1 | Conexões |
| Bateria 9V (genérica) | 1 | Alimentação externa |
Aplicativos e Serviços Online
- Arduino IDE
- App 1Sheeld para smartphone
Sobre o Projeto
A história começou quando vi uma pessoa com deficiência visual tentando atravessar obstáculos como buracos na rua, escadas, etc. com sua bengala tradicional. Isso me motivou a tentar construir este protótipo, mesmo não sendo especialista em eletrônica. Usando diferentes fontes da internet, consegui completá-lo no ano passado durante meu projeto de final de curso. Além disso, também aprimorei o protótipo adicionando localização GPS. Graças ao 1Sheeld, realmente me ajudou a finalizar este protótipo em 6 meses.
Passo 1: Alimentação
Para ligar a Bengala Inteligente Navigator, ela precisa ser alimentada usando energia externa. Estou usando bateria de 9V como introdução de como ela é capaz. Pelo que observei, meu protótipo tinha desvantagem em fornecer uso de energia a longo prazo. Portanto, precisa de uma melhoria como painel solar/de energia de alguma forma.
Passo 2: Conexão Bluetooth e Configuração do Smartphone
Após ligá-la usando a bateria conectada ao adaptador de energia USB no microcontrolador Arduino Uno, o guardião precisa sempre manter a conexão Bluetooth (smartphone Android) conectada ao microcontrolador. Então, você precisa abrir o app 1Sheeld já instalado no smartphone e ativar as funcionalidades GPS e SMS.
** Sim, eu sei que pessoas cegas não podem ver e acessar o smartphone, mas pelo menos se eu ou você conseguirmos fazer a modificação no sistema operacional Android do smartphone, ficará muito mais fácil. Já tentei meu melhor para encontrar um smartphone melhor que forneça botões em braille, mas falhei. Assim, espero que no futuro haja uma atualização para meu protótipo.
Passo 3: Funcionamento - Detecção de Obstáculos
Baseado no diagrama de blocos acima, como você pode ver, esta é como a conexão entre dispositivos acontece. Após ambos serem ligados, a pessoa com deficiência visual pode começar a usar a Bengala Inteligente Navigator. Baseado na observação da bengala branca tradicional, a pessoa cega sempre balança a bengala ao redor para obter confirmação sobre o ambiente. Mas, com a Bengala Inteligente Navigator, ela ajudará a obter notificação por vibração sobre obstáculos na altura média e inferior. O obstáculo é detectado usando sensor ultrassônico HC-SR04. Ele foi anexado na parte superior da bengala e na parte inferior. Estou usando tubo PVC porque posso colocar o motor DC de vibração dentro do tubo PVC. O modo de vibração pode ser alterado no código fornecido usando o software Arduino IDE.
Passo 4: Localização GPS e Botão de Emergência
Além disso, a Bengala Inteligente Navigator pode fornecer longitude e latitude da localização da pessoa cega. Isso porque o smartphone atua como provedor e fornece localização GPS para este processo. A chave seletora (toggle switch) foi adicionada para tornar mais fácil para a pessoa cega clicar no botão de emergência para informar ao destinatário que ele/ela já está perdido ou em perigo. Ao clicar uma ou algumas vezes, o smartphone enviará uma mensagem informando que precisa de ajuda e por favor busque-o baseado no GPS e link do Google Maps. O número do destinatário pode ser configurado se a mensagem deve ser enviada para a autoridade ou apenas para o guardião da pessoa cega. O comprimento da bengala é ajustável de acordo com a altura do usuário. Para este protótipo, estou usando um comprimento específico e o comprimento da detecção pode ser alterado no código.
Passo 5: Considerações Finais
Por fim, espero que meu protótipo seja usado mundialmente ou seja comercializado, ajudando assim pessoas cegas durante sua jornada/vida. Além disso, peço desculpas sobre minha gramática porque meu inglês não é muito bom. Não sei descrever mais neste post. Todas as informações já compilei no anexo. Você pode consultar mais sobre este projeto baseado nos links fornecidos abaixo.
- Documento do Projeto: FYP 1, FYP 2
- Poster do Projeto: FYP 1, FYP 2
- Vídeo do Projeto: Video 1, Video 2
Código
#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;
// Sensor inferior (baixo)
digitalWrite(trigPinL, LOW);
delayMicroseconds(2);
digitalWrite(trigPinL, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinL, LOW);
durationL = pulseIn(echoPinL, HIGH);
distanceL = (durationL / 2) / 29.1;
// Sensor superior (alto)
digitalWrite(trigPinH, LOW);
delayMicroseconds(2);
digitalWrite(trigPinH, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinH, LOW);
durationH = pulseIn(echoPinH, HIGH);
distanceH = (durationH / 2) / 29.1;
// Lógica de vibração para obstáculo baixo (distância > 40cm = vibra)
if (distanceL > 40) {
digitalWrite(Vib1, HIGH);
}
if (distanceL < 40) {
digitalWrite(Vib1, LOW);
}
// Lógica de vibração para obstáculo alto (distância < 100cm = vibra pulsado)
if (distanceH < 100) {
digitalWrite(Vib1, HIGH);
delay(200);
digitalWrite(Vib1, LOW);
delay(200);
}
/* Sempre verifica se o GPS do smartphone e uma dada longitude/latitude
estão em um raio de 100 metros. */
// Comentado no original - funcionalidade de geofencing
// Botão de emergência (toggle switch)
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);
}
delay(1000);
}
Esquemático
Arquivo de esquemático Fritzing disponível: OneSheeldTONGKAT.fzz
Nota: Este projeto usa a plataforma 1Sheeld que permite ao Arduino acessar sensores e funcionalidades do smartphone (GPS, SMS, Bluetooth, etc.) via Bluetooth. Para versões futuras, recomenda-se migrar para soluções nativas como ESP32 com GPS integrado ou módulos GSM/GPS dedicados para eliminar a dependência do smartphone.
Processo de manufatura
- Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense
- Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
- Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
- Construa Seu Próprio Jogo de Roleta com 37 LEDs e Arduino Nano
- ATtiny85 Mini Arcade: Snake – Construa um Console Portátil de Jogos OLED
- Detector de Alcance Portátil – Kit DIY Arduino Nano com HC-SR04, Bateria 18650 e Gabinete 3D
- Lâmpada de Mesa Reativa a Áudio com Arduino Nano
- Carro Robô Autônomo de Rastreamento Facial com Arduino Nano e OpenCV
- Projeto de Galvanoplastia de Cobre: Construa um Sistema Inteligente com Arduino UNO
- Jogo Pong Neon em Matriz NeoPixel com Arduino Nano