Inspiration

Over 3.4 million Americans are either blind or visually impaired. This project aims to make life easier for all the unfortunate people whose visual impairment restricts them from moving around freely.

What it does

The smart cane scans the surroundings for objects and buzzes whenever there is an object in close proximity. It also sends a text message to a caretaker with the location when the operator click a button. Furthermore, SmartCane lights up whenever there is motion, So that the operator can be seen at night.

How I built it

We built this by first implementing everything on a breadboard and then applying everything onto a stick.

The first thing that we decided to implement was the rotation of the servo 180 degrees.

The code for the servo utilizes two for loops such that the servo rotates from 0 to 180 degrees and then 180 to zero degrees. We also utilized break statements such that when an object was a certain distance away from the walking stick, the rotation of the servo would stop and only focus on that object. In this case the distance was 50 centimeters away. We stored the angle at which the servo would stop to make it continue from this point again when the operator has moved away from the obstacle.

We made sure to separate the servo from the breadboard such that it could be easily attached to the stick. This servo was also attached to a separate Arduino for the reasons aforementioned in the video. In using I2C communication, however, we were able to get the data from the other Arduino to this one.

We then implemented the code for the ultrasonic sensor and hooked it up with the main breadboard we were using. We used code from the previous lab to accomplish this.

As for the buzzer we increase the frequency of the sounds by altering the delay between two pings using the distance measurement.

For the accelerometer we calculated the acceleration once outside the void loop In the void set up. We then used the milis() function to make a delay and got the acceleration of the stick after this delay. We then compared the two and if they were different we made the LED light up, and then set the new acceleration measured as the one to be compared to in the next loop.

The hardware was fairly simple, however, we did try to implement some parts of our circuit outside of the breadboard, such as the accelerometer, servo and LED.

For IOT, we used thingspeak and twilio to send a text message to a caretaker. Using an if statement, whenever the button was pressed, the sendmessage function was called, with the text "caretaker's help needed.". The message was first sent to thingspeak and then we used twilio to send an actual text. For the GPS, we used the ultimate breakout v3 module to obtani the location of the cane. This was only displayed on the monitor.

Challenges I ran into

It was very hard to get the interrupt statements to work properly within the servo's code. We also had problems with the delay statements we were using as the delay statements and the buzzer and the servo were affecting each other when we wanted both programs to be more or less exclusive of each other. It was hard to get the hardware put onto the stick and the accelerometers threshold value kept on changing. It's hard to explain but the accelerometer was very difficult to work with as even when we left the stick at rest it would light up. I do believe we managed to reduce this "noise" however.

I also had problems with the servo as I was originally using a continuos servo.

Another big challenge wasa to get the location extracted through the GPS chip to be sent to thingspeak. We could not do this because the arduino was not powerful enough and also there was conflict between the WIFI101 library and the SoftwareSerial library. Wifi101 library was essential for thingspeak and the SoftwareSerial library was vital for GPS to function. As a result, we could not get both of these to work together, and hence, we could not send the GPS location via thingspeak. We could only print the location on the serial monitor.

Accomplishments that I'm proud of

We are very proud of the way the smartCane ended up as the servo rotation which we were concerned with ended up working and we also managed to implement the break of the servo well. We also managed to have IOT and twilio work with the cane, to make it a very modern and smart stick for blind people. At the end of the day this stick does have practical use and for that reason alone (the fact that it has the potential to benefit others and make a positive impact on the society and on people's lives) makes us feel very proud of the project we have created.

What I learned

I learned how to do I2C communication, how to use the millis function instead of delays which generally should be avoided. Moreover, my coding in arduino generally got better. I got used to implementing functions within my code to increase modularity.

I also learned how a servo works in general from both a hardware and coding perspective. Despite not doing soldering, I learnt about soldering when considering it towards our project and I just feel this project was a great way to consolidate everything we've learnt.

Furthermore, we learned very well how IOT works and this is a very important thing to learn in todays world. We used thingspeak and twilio for IOT and the fact that we had to struggle to get it to work ensured we actually learnt the concepts behind them, and did not just copy an paste code. Also, we learnt how GPS works with arduino and how different libraries work together in certain codes.

What's next for smartCane

We want to reduce the noise for the ultraviolet sensor as it is hard to use on surfaces that are non flat. We also need to try and remove the noise from the accelerometer so that the led lights up whenever there is motion (the stick is being used) and not just when we shake it slightly vigorously. Making the stick look nice and professional would be better as well and would make Smartcane a good product for people to actually use.

Project Demo video Link: https://www.youtube.com/watch?v=wWjITRQzlQQ&t=1s (This demo video is updated from the previous one. Please refer to this. Project Video FINAL: https://youtu.be/diKCvrXXEJ0

Share this project:

Updates