TOWA Phone




About: come visit me!

Some days ago, when i was scrounging through the closet i've found an old rotary dialer telephone.

These kind of telephone cannot be used nowdays due to incompatibility between pulse and tone dialing.

Before trash it i ask to myself: how can i transform it ?

TOWA Phone
There Once Was A Telephone

My aim was to replay old feelings: classical ringing sound, rotating dialer and a heavy comfortable handset. Then i decided to relive that and so, in this instructables, i'll show how to transform a rotary dialer telephone to GSM telephone using Arduino and a SIM900 GSM shield.

From late 60's till 1985, the only Italian telephone company (SIP) furnished to each contract subscriber a basic rotary dialer telephone Siemens AUSO brand named "bigrigio", that translated means "double-grey". Expensive calls and slow number dialing didn't help to people communications like today.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Features

Old and new technologies are melted together to re-create an ordinary GSM telephone.


  1. make phone calls to the number dialed
  2. receive calls
  3. sends singles DMTF tone
  4. favourite phone numbers fast call
  5. classic bell ringing
  6. status led

1) To make a phone call you have to pick up the handset and dial the number, that's all. Terminate call hanging up the handset.

2) When phone is ringing, pick up the handset to answer. Terminate it hanging up.

3) If you call to a support center or an office, usually you have to dial numbers to connect a specific department. You can do this because TOWA sends sigle DMTF tones.

4) Inside Arduino script you can add your favourite telephone numbers and combine it with a specific integer number. For example i've stored my favourites combined with numbers from 1 to 8. So when i pick up the handset and dial 1, starts a call to my wife , when i dial 2 or 3 starts a call to one of my sons, and so on.

5) A simple device recreate the classic bell ringing.

6) With a RGB led blink you can check GSM status: RED light = offline, GREEN light = online, BLUE light = incoming call

Step 2: Equipment

Prototype was made with Arduino UNO R3 but i needed more space, then i decided to adopt Arduino Pro Mini.

There is no need to add speakers and microphone to handset, after tested you can connect it directly to SIM900 shield to add a vintage sound to your voice through the phone.

Here what i've used:

vintage telephone

Arduino Pro Mini

SIM900 module

5V relay module


DVD player DC motor

Power supply

4 x 220 ohm resistors

Jumpers M-M / M-F / F-F

3x7 or 5x7 cm prototyping PCB

a pen spring

a screw that fit inside the spring

some plastic scraps and cable tie

some screws and bolts

Insulating tape



Mobile telephone SIM card

Step 3: Schematic, Hook Switch and PCB

Inside the telephone you'll probably find 4 hook switch contacts connected to PCB that tell to phone the handset position. Choose the one that, starting from normally open, has only two opposite couple copper strips .

Isolate PCB by telephone base with insulating tape.

I've tryed to reuse original PCB board, but i've wasted time. I've replaced with a brand new 3x7cm PCB where are soldered resistors. Then PCB has been soldered directly to hook switch contacts, since it fits correctly.

Connect RGB led anode to PCB ground though 220 ohm restistor. Catodes are connected directly to Arduino pins. At the end, drill telephone chassis to fit RGB led.

Consider that on schematic, BLUE contact must be connected to READY and WHITE to PULSE of the rotary dialer as showed in the next step.

Step 4: Rotary Dialer

First thing is to know READY and PULSE cables from the rotary dialer.

In my case READY cables are blue and brown, PULSE are red and white cables. There are a lot of tutorial on internet that explain. The easy way is to detect the couple of contacts that opens and closes repeteadly during dialer rotating to know that they are PULSES cables. The others will be READY cables.

One cable from READY (blu or brown, it's the same) and one from PULSE(white or red, it's the same) goes to the common ground. The others will be connected as showed on schematic

Step 5: Telephone Ring

To recreate vintage feelings, i have discard any buzzer sounds (it can be implemeted also). Then i've thought to remove one of two bells to make the space for a DVD player DC motor. Remove motor from a broken CD or DVD player with its little screws, then add on its rounding wheel a pen spring. After orizonthal spring positioning(you can add a metallic wire for more stability), put the screw at its end and test everything with the remaining bell. Find the correct position and fasten with a plastic scraps to telephone basement (you have to do several tests to find correct motor position). Find a place where fit the relay module then connect DC motor positive cable to COM relay and negative cable to PS ground. From relay connect a cable from relay module NO to power supply positive pole. Be careful, do not connect to ARDUINO VCC.

Isolate relay module from telephone basement with insulating tape.

Step 6: SIM900 GSM Shield

When i got the shield, due to my poor Arduino knowledge, i thought was not able to use it. After some internet searching i understood that it's easy. It's talk with Arduino with only two pins, another pin is for reset feature, finally VCC and GND pins. Before everything you need to set communication channel. My configuration provides for Arduino communication through pins D4 and D5, so i've changed GSM.cpp file inside the library as follow:


//De-comment this two lines below if you have the
//first version of GSM GPRS Shield

#define _GSM_TXPIN_ 4
#define _GSM_RXPIN_ 5


//De-comment this two lines below if you have the
//second version og GSM GPRS Shield

//#define _GSM_TXPIN_ 2

//#define _GSM_RXPIN_ 3

Then exit and save. After that, include library inside Arduino IDE.

Now set shield jumpers as showed in photo.

There are two modality to connect the telephone handest to the shield. It can be connected with classics 3.5mm audio jack or can soldered directly on the shield using holes named N-S & P-S (negative/positive speaker) N-M & P-M (negative/positive microphone).

The antenna has been connected to the shield through an extension chord included in the package.

Remove any access code from your SIM card and insert into the shield.

It's now ready and can be connected to Arduino.

Step 7: How the Code Works

For first Download from Github rotary dialer and SIM900 libraries.

Softwareserial library is needed, too.

When Arduino is powered on, you should push GSM shield power on button.
To avoid this, at script starts, Arduino send a signal through D9 pin so the shield goes ON.

Upload script, wait about 20 seconds and when RGB LED geen light start blinking (check into serial monitor too):

-Hanging up telephone: system listen for incoming call and network status. A green led blinking means network status OK, a red led blinking means network or system problems, a blue led blinking means an incoming call.

-Telephone ringing and blue led blinking : picking up the handset let communication starts. It ends hanging up the handset

- Picking up the telephone (without incoming call): stops any led blinking and system listen inputs from rotary dialer. Each number dialed is stored inside a variable. If you don't select another number within 5 seconds, system starts a telephone call to the number dialed.

Favorite number function allow you to store, inside the scripts, your favorite telephone numbers giving them a single number for a fast call.

Inside function void favoriteNumbers() you can add your favourite numbers.

void favoriteNumbers(){
     if (stringOne=="1\0"){
	stringOne="911"; // emergency call
      if (stringOne=="2\0"){
        stringOne="7034820623"; // CIA call
      if (stringOne=="3\0"){
	stringone="PUT_YOUR_FAVORITE_NUMBER_HERE"; // favorite number call

In the case above mentiones (if you are in US): pick up the telephone, dial 1, wait 5 secons so starts a call to emergency number.

Dialing 2, starts a telephone call to Central Intelligence Agency headquarters.


DMTF tones

if there is a telephone call active, dialing a number mean sends a DMTF tone.

Hook switch position

If hook switch choosen (step 3) starting position is normally close, change variable status reading as follow:

void loop(){

	int alarmArmed=digitalRead(alarmArmedPin);
	if (alarmArmed==HIGH){ // Arduino read  PIN 10 status


Step 8: Final Result

I'm very happy of the final result.

I didn't expect for a daily use, but i've bought a new SIM card and TOWA phone is permenently on my desk now.

Finally with a power bank become portable too !

Trash to Treasure Challenge

Participated in the
Trash to Treasure Challenge

Automation Contest 2016

Participated in the
Automation Contest 2016



    • Indoor Lighting Contest

      Indoor Lighting Contest
    • Make It Fly Challenge

      Make It Fly Challenge
    • Growing Beyond Earth Maker Contest

      Growing Beyond Earth Maker Contest

    16 Discussions


    1 year ago


    I'm trying to follow your steps using an Arduino Uno and a desk phone that is similar to yours (even if it's quite older than your BiGrigio) with a rotary dialer starting with 1 and ending with 0. Still I haven't connected any GSM shield and or motor/relay: I'm just using Arduino Uno connected to the rotary dialer. I'm (quite) sure the connections are set in the right way.

    I'm able to read numbers when I compose them on the dialer but with a problem: each number is read decremented by 1: 2 is read as 1, 3 is read as 2, .., 0 is read as 9.

    I don't know why I have this result. To overcome the problem, without discovering the cause, I modified the code of "void phoneNumber" adding 1 to numb and transforming 10 in 0.

    Anyway, still I'm not able to read the number when I try to compose number 1. It seems that, in this case, it cannot enter the step "void phoneNumber ()".

    Do you have any suggestion where is the problem or where I should operate to modify the code?

    Thanks so much.


    2 years ago

    WOW! I've been researching this idea for some time. Yours looks like the best simplest, easiest to follow tutorial so far. I could probably substitute a small mp3 module for the bell (to play bell sound, or substitute other sounds... The photo should tell you where my head's at!)

    I hope you're still following comments in case I run into difficulties!

    2016-11-18 15.16.45.jpg
    1 reply

    Reply 2 years ago

    yes, adding a mp3 module let you save a lot of time.
    If you have any question i'll happy to answer.
    Have a good work.


    3 years ago

    Oh my amazing! Thanks for sharing this! It reminds me of my first project that I shared here. It used an old rotary phone as well.

    1 reply

    Reply 3 years ago

    Thanks, glad you like the project.

    Tomatoskins, you made me first comment on my first instructables!

    It's a pleasure share and i'm happy that the project have been appreciated by Instructables community and Arduino official blog, too.


    3 years ago

    Nice! To avoid the transformation of the ringer you could use a SLIC module. They are designed to emulate an analog phone line is devices such voip to analog gateways, and are really easy to use for ring voltage generation.,searchweb201602_1_10037_10017_406_10032_10040,searchweb201603_11&btsid=00781407-4561-4c67-85fc-560773aa3390

    1 reply

    Reply 3 years ago

    This module could help but i read somewhere that bell ringing is activated by a 25Hz sinusoidal wave 90VAC (but it's enough 24VAC), could do it ?


    3 years ago

    Brilliant many thanks. just checking but should the relay connection be pin 14 ?? it's got AO1 on the diagram. I'm planning on building this weekend.

    1 reply

    Reply 3 years ago

    Inside Arduino IDE, Pro Mini pins A0 to A3 are named with numbers from 14 to 17. For more info check at:


    3 years ago

    Dear Acmecorporation

    would it be possible to re post the connection diagrams a little larger please. Its a bit difficult to see the pin connections in the step 3. I'd love to build this project

    Thanks for posting

    2 replies

    Reply 3 years ago


    Are they more comprehensible now ?

    If not, pls let me know.


    3 years ago

    this is a great project. I want to make one of these and replace the current house phone I have and watch my kid's confusion lol. I think the hardest part of this would be finding an old rotary dial phone to repurpose.

    1 reply

    Reply 3 years ago

    that's right! Children have no idea about this technology.

    You got to check out to a flea market where you can find it for few money.