Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino Nano-Based Assistive Device for Blind People with Ultrasonic Sensor, GPS, and Voice Recognition

View and Edit Project In Cirkit DesignerImage of Arduino Nano-Based Assistive Device for Blind People with Ultrasonic Sensor, GPS, and Voice Recognition

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

Wiring Details

Arduino Nano

HC-SR04 Ultrasonic Sensor

Battery (12V)

Neo 6M GPS Module

Vibration Motor

Sim800l

DC to DC Boost Converter

Resistor (200 Ohms)

Toggle Switch (SPST)

NPN Transistor (CBE)

Voice Recognition Module

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.