Introduction: Rethink Phone for Visually Impaired - With a Smart Cane
Here is the first prototype of the Arduino phone for the Visually Impaired using an Arduino Uno and Seeed studio GPRS shield 1.0. There are two features that this phone has, which is driven by the mode switch,just below where it say "eye" in the picture above
- Large button for calls and text (4 call buttons in orange and 2 button in red for text)
- When the switch is turned down the phone converts to a Smart Cane, driven by the Maxbotix ultrasonic sensor which measures distance from an obstacle and vibrates the vibration motor.This helps the visually impaired person navigate around the house.
This is some thing that I wanted to make for my friends mother, and thanks to the #rethinkphone contest I had a deadline to complete the first prototype, to get some feedback for further improvements.
I have detailed out a few enhancements and improvements in the last step of the instructable, feel free to comment with your suggestion for features and improvements.
Step 1: Phone Features
The Phone has a ON/OFF switch as shown in the first picture above just below the Seeed studio GPRS shield antenna, the switch is connected to the Adafruit's PowerBoost 500 Charger .The best part PowerBoost 500 Charger is that you can charge the Lipo battery on the phone while the phone is in the ON mode.
Phone has 4 call buttons , two which you can associate 4 different phone numbers which you can change as part of the Arduino code. And also have 2 message button which you can change the text as part of the Arduino code.
As of now the Phone can only make calls , as the GPRS shield does not have the option to receive calls and you can use normal headphones and mic to connect two the two port of the GPRS shield.
The mode switch,just below where it say "eye" is use to change the phone into the smart cane mode , which basically uses a Maxbotix ultrasonic sensor which measures distance from an obstacle and vibrates the vibration motor.This help the visually impaired navigate around when they are out and about..
Step 2: Collect the Electronic Components You'll Need
Here are the list of electronic you'll need for
- Arduino Uno
- Breadboard and breadboarding wire
- GPRS Shield - Seeed Studio's GPRS shield V1.0
- An active SIM card
- PCB - Adafruit Perma Proto half sized breadboard
- Header Pins
- Tactile Switch Buttons - 4
- SPDT Slide Switch - 2
- Silicone Cover Stranded-Core Wire - 26AWG - these are more flexible then normal breadboarding wire.
- Head Phones - 2 , you need two if you are using Seeed Studio
4-40X1/2 IN flat head screws
- Maxbotix Ultrasonic Rangefinder
- Vibration motor
- Diode - IN4001
- Resistor - 1KOhms
- Transistor - 2N2222
- Capacitor - 0.1uF
In addition here are the tools required
- Soldering Iron
- Wire strippers
- 3D printer
- PLA 3D printing filament
- Ninjaflex 3D printing filament
- Hot glue Gun
- Cutter/saw for the PCB
- Hobby knife
Step 3: Breadboard the Circuit
It is always a good idea to bread board the circuit to run a couple of test before soldering the components together.
At large the Circuit contains 3 part
#1 - Phone call and message switchesFor the 6 switches(4 call and 2 text) connect one end to the switch to GND and the other end o
- Call 1 button to pin 4 on the Arduino
- Call 2 button to pin 11
- Call 3 button to pin 5
- Call 4 button to pin 12;
- Text message 1 to pin 3 on the Arduino
- Text message 2 to pin 10
- In addition connect the slide switch for the mode to pin 6
#2 - Ultrasonic sensor and Vibration motor
- Diode is connected in reverse bias in parallel to the motor , acts as a surge protector for the spikes that the motor can produce.
- 2N2222 transistor is used to provide current amplification
- 0.1µF capacitor absorbs voltage spikes produced
- 1KOhms resistor is placed in series with the base of transistor
#3 5V supply via the Powerboost 500 charger
- Connect +ve and -ve just below the USB port of the power boost to Vin and GND of the Arduino
- In addition connect a slide switch between the Bat - ENable - GND, for more details refer to step 10
Step 4: Modify Code With Phone Number and Upload to Arduino Uno
Download the latest version of the Arduino IDE from
Download the Zip file above and change the phone numbers in the PhoneSettings.h file.
In addition you will also have to modify and experiment with the OBSTACLE_DISTANCE parameter value in the file based on your preference.
Now select boards in Tools -> Board -> Arduino Uno and then select the port that your Arduino is connected to under Tools --> Port
And then hit the upload button to upload the code to the Arduino
To test your GPRS sheild with AT commands before uploading this sketch refer to http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0
Step 5: Test Out the Circuit -Vibration Motor
Move the slide switch to the obstacle detection mode and change the value of the OBSTACLE_DISTANCE parameter to 10 inches.
Now use a coffee cup/or anything that you find near by to act as your obstacle as shown in the video.
If you observe in the video , I am holding on to the vibration motor with my finger to prevent it from bouncing of the breadboard.
Step 6: Test Sending Message and Make a Call
Now modify the mobile number in the PhoneSettings.h file.
Also modify the text message if you need to. Hit all the button and validate that you can make calls and send text as shown in the video above.
Step 7: Preparing the PCB
Now place the Prema proto PCB on the Arduino and using a sharpie mark the pieces of the PCB to cut.
Using a saw/Dremel tool cut open PCB.
Once done use a hobby knife to remove the connectivity between PCB holes as shown in the third picture above.Basically we are doing this as we are going the make the PCB like a shield , which will hold the call and test tactile buttons.
Now to test that you have broken the connectivity use a multimeter as shown in the forth picture above.
Step 8: Soldering the Header Pins
Now refer to the circuit in step 3 of the instructable and cut header pins which you will insert in GPRS shield which is stacked on the Arduino Uno.
Here note the pins that need to be blank and the ones used to communicate between the GPRS shield and Arduino Uno , refer to link at
Now solder the header pins to the PCB as shown in the picture above.
Step 9: Soldering the Componenets
Fire up your soldering Iron and solder the buttons first to the PCB as shown in the second picture above.
Here it is a good idea to use an helping hand and use 26AWG silicone stranded wire which is more flexible when compared to normal breadboarding wire.
Be patient and take regular breaks while soldering, this step can take about 40 mins to an hour depending on your soldering skill.
Finally solder the Vibration motor circuit the bottom half of the breadboard, with the resistor connect to A0 on the breadboard above.
Finally solder the maxbotix sensor and the vibration motor.
Warning : When soldering always make sure you are doing this in an well ventilated area
Step 10: Preparing the Phone to Be Battery Powered
Now solder +ve and -ve below the USB port, which is visible in the second picture above. Here the USB port comes separately and is not soldered by default.
Connect the Bat and GND to two ends of the switch
And the ENable to the middle of the slide switch which is the green wire in the pictures above.
For more info about the PowerBoost 500 Charger - Rechargeable 5V refer to the link
Step 11: 3D Print the Base and the Bottom Using PLA
Download the 3D printing software that you printer supports, in my case i am using the Printrbot Simple Metal which use Repetier-Host as a software to
- Slice the STL files attached, which basically means cutting the part into various layers
- And send commands to the 3D printer while printing
Download the STL files attached and load it in your printer software and slice the file, based on your printer setting,
- Slicing the STL files should take about 2-3 mins
- And the print time for all the file should be about 2 to 3 hours ,and this is based on your slicer setting..
Step 12: 3D Print the Buttons
Download the button.stl file and 3D print the 6 button, in my case I used to orange PLA to print the call buttons and the red PLA to print the message button. Printing the button should take a max of 10 mins.
In addition download the TopWithText.stl and 3D print it.
Here I choose to paint the text so that it is visible in the pictures.
Step 13: Putting It All Together
Now its time to put it all together use 4-40X1/2 IN flat head screws to secure the Arduino Uno to the base 3D printed part
Use another screw to hold the power boost to the 3D printed part
Now secure the lipo battery with some tape so that the sharp pointed ends below the Arduino Uno done pierce through the battery and damage it.
Now fire up your hot glue gun and glue the Slide switch and the battery to the base.
Hot glue the headphones and Mic.
Now use rubber bands to secure the 3D printed parts (the next version with the latest GPRS shield will have 3D printed parts that snap fit
Glue the Maxbotix and vibration motor as shown in the picture above.
Add the button above the tactile buttons on the PCB and hot glue the 3D printed part with the text to the base.
Step 14: Future Enhancements and Improvements
Here are some enhancements and improvements I plan to implement as part of the version 2.0
- Use the latest GPRS shield from Seeed studio(I think the Seeed Studio GPRS shield 1.0 is discontinued )
- Implement more vibration option using Haptic feedback using Adafruits DRV2605L Haptic Motor Controller
- Improve the 3D design based on feedback an make the part snap fit.
- Adding GPS tracking, so that the text would include the GPS location