Arduino Mobile Dial Phone

Unusable dial phone ? Give it a new life !

Similar projects worth following
This project show how to convert a dial phone into a mobile dial phone. Of course it will be not a smartphone with Android or iOS inside.

Components' Test Steps

Before Start the project : I recommend to test all of your dial phone's components.

Here is the dial phone components' list that you must test :

-Rotary encoder

-Speaker and microphone

-Solenoid(Ringing system)

If you sure that all of these components works, you can skip the Test step.

Test Instructions :


To understand how to control solenoid. It's works at ±50V(reverse polarity for each ringing pulse) normally. But It can be a problem for us to make a mobile phone.(Understand that you must have around 12 cells "at fully charge", so 4.2v * 12 = 50.4v). And of course, we will not use 12 cells to power the phone(for 1 component !!!), so I tried in lower voltages, and get some results around 7.6 volts(Eurêka !). 2 cells (8.4v "at fully charge") will be enough to get soft ringing. 

To test the solenoid, just do the wiring like in schematic below :

(Note : The DRV8833 has the overvoltage/overcurrent protection, so a flyback diode is not necessary)

And in your arduino send this sketch :

//DRV8833 Solenoid tester

//PINS definitions
#define D0 2 
#define D1 3

//Set a period of TIME_PULSE_BASE * 2 ms
#define TIME_PULSE_BASE 50 //in ms

void setup(){

pinMode(D0, OUTPUT);
pinMode(D1, OUTPUT);


void loop(){



 And you must have this result :

Got this result ? Congrats !!!

Otherwise : 

-Check your hardware(If DRV8833 is powered correctly, or If the ground pin is well connected between DRV8833 and arduino, If DRV8833 work as well)

-Change TIME_PULSE_BASE value

-Check your Solenoid

Speaker and microphone

The easiest part :D

For the speaker you can check first the impedance I had around 6~8ohms. But If you want more, you can use an audio source. I used my function generator to test it.

For the microphone, like the speaker you can check the impedance(be aware that the value will vary according to the sound), otherwise you can make a voltage divider between a 10K resistor and you microphone and wire it to the arduino.

Note : If you don't know which wire correspond of each components, well you open handset's caps and you'll get your answer.

Next, in the arduino you can upload this sketch 

//Microphone Tester Sketch

#define MIC_PIN A0

void setup(){

//Just need this


void loop(){



And you can open the Serial Monitor/Plotter to check you signal, you might get the same result like below(otherwise check you wiring or microhpone).

Rotary Encoder

The encoder, has 4 pins : 

-A common pin

-A clock pin

-2 latch pins

How it works ?

When you start to dial(turn the encoder in counter-clockwise), Latch pins goes switch to the common pin level. When you leave the encoder, it goes to turn in clockwise and the clock pin will pulse at the same number of time as the number dialed. (Ex : Number 3 dialed = 3 pulses)

To test it, find the correspond wires, and do this wiring :

And upload this sketch : 

//Encoder Tester Sketch

#define LATCH  2
#define CLOCK  3

void setup(){

//Init serial port

//set pullup pins


void loop(){



You might get this result : 

If all of your components works well, congrats ! You're ready to start the build of your future mobile phone !

x-zip-compressed - 29.14 kB - 07/24/2020 at 17:27


x-zip-compressed - 28.60 kB - 07/24/2020 at 17:27


  • 1 × ATMEGA328 Arduino board based
  • 1 × DRV8833 Driver (breakout board recommended) Evaluation, Demonstration Kits, Boards and Modules / Evaluation Kits, Boards and Modules
  • 1 × Dial phone(of course)
  • 1 × SIM900 Shield/breakout board (Be careful to take a board that works in your country)
  • 1 × Power Stuff (for system that need 5V)

View project log

  • 1
    Before Doing "hardware" !

    First, I recommend you upload telephone.ino or telephone_v2.ino sketch into you ATmega328 board before doing the wiring.

    You can find these sketches in the project joined files or in the github link that you can find on the left in the main page of the project.

  • 2
    Main Hardware and hacks you must do

    Next step, you can build the main part of the hardware :

    -Of course like said in the schematics, you must remove the PIN code to let the phone works(to ensure not to lock it).

    -On the SIM900 board a little hack must be done. The SMD strap located at R13, must be connected(No resistor needed)

    This let the microcontroller to boot up the SIM900(by sending a pulse level throught the pin 9 of SIM900 connected to the microcontroller) automatically when it's powered.

    Before :

    After :

    Power Supply

    The circuit need 5V 2A power supply, I recommend 7.4V power supply with a voltage regulator like the Traco Power TSR

    then for SIM900 you can wire the power supply(with a jack or solder wire directly) :

    For telephone_v2.ino only !

    In telephone.ino sketch I read the ringing state throught the serial commands sended by the SIM900, but there a simpler method to read this state than check the memory buffer(which contain the serial commands). This method consist to read ringing pin state from the SIM900 board


    I modified the code to control the hang up button, so you need to take a look on the 4 pins here :

      and find which pins you can use(not same order between dial phone models !!!)

  • 3
    Audio Part


    You can just plug a jack (that wired to the microphone directly) into the SIM900 board


    On SIM900, the method is the same than the microphone. 

    SPEAKER PIN 1 = SIM900_AUDIO_OUT of schematic

    SPEAKER PIN 2 = SIM900_AUDIO_GND of schematic (only for the first version, see wiring version

    For the first version(telephone.ino)

    You can follow this wiring :

    This is my first method of swapping audio channel(PWM out from the Arduino and Audio out from SIM900) with their own ground, by using bipolar NPN transistors in H-Bridge circuit.

    Audio channels are chosen depending on the telephone state.

    For the second version(telephone_v2.ino)

    You can follow this wiring :

    This my second method, which use the CD4051 multiplexer. It commute the corresponding input(selected by the channel address) to the output. 

    Note : The bipolar transistor is used to amplify the audio signal for the two speakers. Yes 2 speakers, because a friend asked me to make the same phone, but a phone which got a second speaker, often called the spy earphone. You know like in old movies when the inspector who listening the conversation between the victim and the bully. "C'est pour vous" that the inspector said before conversation start :) .

View all 5 instructions

Enjoy this project?



M wrote 12/12/2023 at 14:19 point

Hi! I'm trying to build the telephone. So far, a part from changing the driver for the solenoid and choosing a higher voltage, everything seems to be ok. However, nowadays 2G/3G networks are being shut down. Has anyone tried it with something more modern than a SIM900 or a SIM800L?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates