Inspiration
Everyday, people who are visually impaired face challenges navigating cities. Current infrastructure, such as crosswalk beeps or spoken street signal, is inconsistent and limited in coverage. Smart Cane offers a reliable, portable solution by combining GPS guidance with directional voice feedback. Our Smart Cane announces upcoming streets or intersections (e.g., “Chestnet Street ahead”) to help users confidently navigate unfamiliar places.
What it does
To help users safely navigate urban settings, we developed SmartCane, an assistive technology for safe and easy travel in cities. Smartcane offers many key functionalities, including:
Providing audio feedback for the direction and street the user is heading towards.
Providing key metrics such as fall detection and location for caretakers.
Providing haptic feedback for obstacles in the user’s way.
How we built it
The key components of SmartCane consisted of three major parts: the hardware, software, and the physical enclosure.
We developed hardware through research for datasheets on individual components, Adafruit tutorials, and prototyping the circuit on Circuito.io. By properly researching before attempting to implement it, we were able to run into limited issues with the hardware.
For the software, we approached it with a modular design, focusing on establishing functionality for each component before combining all of the required logic into a main system loop. This allowed us to work and test individual sensors and components before combining everything to establish the main functionality of the cane.
The physical enclosure for the cane was developed through prototyping using MDF and then switching to acrylic for a sleeker and lighter build with easy maneuverability.
Challenges we ran into
Throughout the development of SmartCane, we encountered many challenges.
The first challenge was development on new platforms. We started by using the Raspberry Pi, but remote development required working through an unstable IP connection and accessing the device via SSH, making the process tedious and unproductive. The IP address also shifted inconsistently, so we decided to use Arduino instead for faster development and better support for sensors and components.
Another challenge was the interaction between software and hardware. At first, the auto-leveling servo didn't work, and we thought that the code we wrote was buggy. However, after further testing, we realized that the servo's potentiometer was broken, and after replacing it with another servo, the code worked fine. So, we made sure to check that the hardware wasn't the issue first before trying to debug the software, which worked great when we got the circuit for the vibration motor right.
The final issue we encountered was with the speaker, which we weren't able to get working after testing multiple components and setups, so we learned to pivot and used a speaker through a device and webpage instead. This turned out great and added a whole new feature to our project.
Accomplishments that we're proud of
Overall, we were able to combine many different functionalities into a complete product. We were really proud to have been able to do that, but also especially proud of learning to work with completely new components and sensors. SmartCane combined GPS-based navigation, directional audio feedback, haptic feedback, fall detection, and obstacle detection all into one cohesive system that runs in real time, and being able to combine all of these functions was difficult, but a worthwhile venture.
We are also proud of our ability to pivot. By transitioning from Raspberry Pi to Arduino, we significantly improved development productivity. Similarly, when our original speaker setup failed, we decided to use audio through an external device and web interface, which not only solved the issue but added more functionality to the project.
What we learned
We learned many skills throughout the project, including key IoT components such as hosting webpages through an Arduino and integrating GPS through API calls for reverse geocoding. We also learned to write effective modular code for managing sensors and system functionality. Moreover, we learned how to design circuitry and where to find information about circuit design, which helped save us time when working with new sensors and components. Finally, we learned to work with multiple components in parallel with SDA and SCL for I2C as well as using pull up resistors for them and UART throughout the development process.
What's next for ESE 1110, Team 20, SmartCane
Going forward, we would like to continue to work on cutting the cost of the cane, as it would increase accessibility for users. Additionally, we would like to explore using threading to decrease delays due to Arduino processing speeds.
Built With
- arduino
- c++
- clion
- iot
- openstreetmap
- platformio
Log in or sign up for Devpost to join the conversation.