Introduction: Rethink Phone for Visually Impaired - With a Smart Cane

About: Born as a farmer, studied electronics ,working as a Consultant and a 3D printing enthusiast by night..

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 Phone

Smart cane

In addition here are the tools required

  • Soldering Iron
  • Solder
  • 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

      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

      • 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
      Phone Contest

      First Prize in the
      Phone Contest

      Survival Contest

      Participated in the
      Survival Contest

      Epilog Contest VII

      Participated in the
      Epilog Contest VII