Arduino Nano-Based Assistive Device for Blind People with Ultrasonic Sensor, GPS, and Voice Recognition
View and Edit Project In Cirkit Designer
Circuit Documentation
Summary
This circuit is designed to assist blind people with real-time directions by integrating an ultrasonic sensor, GPS module, voice recognition, and a vibration motor. The core of the circuit is an Arduino Nano microcontroller, which processes signals from the ultrasonic sensor to detect obstacles and controls a vibration motor to alert the user. The GPS module provides location data, and the voice recognition module receives voice commands to perform actions such as turning or stopping. A SIM800L module is included for communication capabilities. The circuit is powered by a 12V battery, with a DC to DC boost converter to regulate the voltage for the components.
Component List
- Arduino Nano: A compact microcontroller board based on the ATmega328P, featuring digital and analog I/O pins.
- HC-SR04 Ultrasonic Sensor: A sensor that measures distance by emitting ultrasonic waves and measuring the time taken for the echo to return.
- Battery (12V): A power source for the circuit.
- Neo 6M GPS Module: A module that provides accurate geographical coordinates.
- Vibration Motor: A motor that provides haptic feedback to the user.
- Sim800l: A GSM/GPRS module for cellular communication.
- DC to DC Boost Converter: A device that steps up the voltage from the battery to a higher level required by certain components.
- Resistor (200 Ohms): A passive two-terminal electrical component that implements electrical resistance as a circuit element.
- Toggle Switch (SPST): A single-pole single-throw switch that can connect or disconnect the circuit.
- NPN Transistor (CBE): A bipolar junction transistor used for amplification and switching.
- Voice Recognition Module: A module that can recognize and process voice commands.
Wiring Details
Arduino Nano
- D1/TX: Not connected.
- D0/RX: Not connected.
- RESET: Not connected.
- GND: Connected to the ground of the ultrasonic sensor, voice recognition module, and common ground with the battery and DC to DC boost converter.
- D2: Connected to RXD on Sim800l.
- D3: Connected to TXD on Sim800l.
- D4: Connected to one terminal of the toggle switch.
- D5 - D7: Not connected.
- D8: Connected to TX on the Neo 6M GPS Module and RDX on the voice recognition module.
- D9: Connected to RX on the Neo 6M GPS Module and RTX on the voice recognition module.
- D10: Not connected.
- D11/MOSI: Connected to one terminal of a 200 Ohm resistor.
- D12/MISO: Not connected.
- VIN: Connected to the positive terminal of the battery and vin+ on the DC to DC boost converter.
- 5V: Connected to VCC of the ultrasonic sensor and VCC of the voice recognition module.
- A7 - A2: Not connected.
- A1: Connected to TRIG on the HC-SR04 Ultrasonic Sensor.
- A0: Connected to ECHO on the HC-SR04 Ultrasonic Sensor.
- AREF: Not connected.
- 3V3: Not connected.
- D13/SCK: Not connected.
HC-SR04 Ultrasonic Sensor
- VCC: Connected to 5V on the Arduino Nano.
- TRIG: Connected to A1 on the Arduino Nano.
- ECHO: Connected to A0 on the Arduino Nano.
- GND: Connected to the common ground.
Battery (12V)
- +: Connected to VIN on the Arduino Nano and vin+ on the DC to DC boost converter.
- -: Connected to the common ground.
Neo 6M GPS Module
- GND: Connected to the common ground.
- TX: Connected to D8 on the Arduino Nano.
- RX: Connected to D9 on the Arduino Nano.
- VCC: Not connected.
Vibration Motor
- POS: Connected to the collector of the NPN Transistor.
- NEG: Connected to the common ground.
Sim800l
- NET: Connected to out+ on the DC to DC boost converter.
- RST: Not connected.
- VCC: Not connected.
- RXD: Connected to D2 on the Arduino Nano.
- TXD: Connected to D3 on the Arduino Nano.
- GND: Connected to the common ground.
DC to DC Boost Converter
- vin-: Connected to the negative terminal of the battery and the common ground.
- vin+: Connected to the positive terminal of the battery.
- out+: Connected to NET on Sim800l.
- out-: Connected to the common ground.
Resistor (200 Ohms)
- pin1: Connected to VIN on the Arduino Nano and the positive terminal of the battery.
- pin2: Connected to D11/MOSI on the Arduino Nano and one terminal of the toggle switch.
Toggle Switch (SPST)
- L1: Connected to one terminal of a 200 Ohm resistor and D4 on the Arduino Nano.
- COM: Connected to the common ground.
NPN Transistor (CBE)
- collector: Connected to POS on the Vibration Motor.
- base: Connected to one terminal of a 200 Ohm resistor.
- emitter: Connected to the common ground.
Voice Recognition Module
- GND: Connected to the common ground.
- VCC: Connected to 5V on the Arduino Nano.
- RDX: Connected to D8 on the Arduino Nano.
- RTX: Connected to D9 on the Arduino Nano.
Documented Code
Arduino Nano Code (sketch.ino)
/*
* Motion Detector and GPS for Blind People
* This code integrates an ultrasonic sensor, GPS module, voice recognition,
* and a vibration motor to assist blind people with real-time directions.
*/
#include <SoftwareSerial.h>
// Pin definitions
const int trigPin = A1;
const int echoPin = A0;
const int motorPin = 11;
const int voiceRxPin = 8;
const int voiceTxPin = 9;
const int simRxPin = 2;
const int simTxPin = 3;
// Variables
long duration;
int distance;
// SoftwareSerial for GPS and SIM800L
SoftwareSerial voiceSerial(voiceRxPin, voiceTxPin);
SoftwareSerial simSerial(simRxPin, simTxPin);
void setup() {
// Initialize serial communication
Serial.begin(9600);
voiceSerial.begin(9600);
simSerial.begin(9600);
// Initialize pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motorPin, OUTPUT);
// Welcome message
Serial.println("System Initialized");
}
void loop() {
// Measure distance using ultrasonic sensor
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// Check for obstacles
if (distance < 50) {
digitalWrite(motorPin, HIGH); // Turn on vibration motor
} else {
digitalWrite(motorPin, LOW); // Turn off vibration motor
}
// Handle voice commands
if (voiceSerial.available()) {
String command = voiceSerial.readString();
handleVoiceCommand(command);
}
delay(100);
}
void handleVoiceCommand(String command) {
if (command.indexOf("left") >= 0) {
Serial.println("Turning left");
// Add code to handle left turn
} else if (command.indexOf("right") >= 0) {
Serial.println("Turning right");
// Add code to handle right turn
} else if (command.indexOf("stop") >= 0) {
Serial.println("Stopping");
// Add code to handle stop
}
}
Vibration Motor Code (sketch.ino)
The vibration motor is controlled directly by the Arduino Nano through a transistor. There is no separate code for the vibration motor.
Documentation (documentation.txt)
This file is empty and does not contain any code or documentation.