Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Project Documentation

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

Image 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

  • 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.