Introduction: Arduino Based Phone (Prototype)

Hello everyone,

Today in this instructable we are going to see about arduino based phone. This is phone is a prototype it is still under development. The source code is opensource anyone can modify the code.

Features in phone :
1. Music

2. Videos

3. Notes

4 .Clock

5. Photos

6. Maps

7. Phone calls

8. Radio

9. Settings

10 .Calculator

The program of the project takes less memory. Even you can extend the features of the phone like adding : fingerprint sensor , Messages ,GPS ........etc.

The core of this phone is arduino mega 2560. The images are stored in sd card from there the images are drawn on screen. You can use sd card 16GB or 32GB.

If you want to edit the code then first see the sample codes and then try to edit the code , because the code is having nearly 2000 lines. So first checkout the sample codes.

Step 1: Components

1. Arduino Mega 2560 x1

2. SD card module x1

3. Voltage sensor or current sensor 25v x1

4. 3.5 inch mcu friend tft display x1

5. Df Player Mini x1

6. GSM 900A x1

7. Audio amplifier x1

8. speakers x2

9. 2N2222A NPN transistor x1

10. 1k ohm resistor x2

11. Programmer for arduino x1

12. Mic amplifier x1

13. Male to Female jumper wire x40 (approx.)

14. SD Card 16GB or 32GB x2

15. LED x1

16.Lead acid battery 12v x1

17. lead acid battery charger x1

18. HW-816-V1.0 (BUCK CONVERTER) x1

19. Male to Male jumper wires x15 (aaprox.)

20. Buzzer 5v x1

21. Male and female 2-pin JST SM connector set x2

22. Male headers x10 (approx.)

23. Prototyping board 18x30cm x1

24.Tactile push button x2

25. Female headers x20(approx.)

26. Stylus

27. DS3231

Step 2: Hardware Wiring

First connect arduino mega 2560 to 3.5 inch mcu tft shield. Next connect sd card module to arduino mega spi pins. Don't forget to insert SD card in sd card breakout module. And also make common 5v and gnd lines. Now connect ds3231 to arduino mega I2C pins. Connect voltage sensor to arduino mega pin A5. Connect led to arduino mega pin 47.

Note: This phone is having one major issue that is current problem this phone consumes a lot of current it needs nearly 2.1 Amps of current. This is due to display it consumes nearly 400ma. If you can control the brightness of the backlight of display then power issue can be solved.

SD Card --> Arduino Mega 2560 :

CS -- 53 pin

SCK -- 52 pin

MOSI -- 51 pin

MISO -- 50 pin

VCC -- 5V



Arduino Mega 2560 --> Voltage module 25V :

A5 -- output pin of module

GND -- GND of module

JACK +ve -- + of module

JACK-ve -- - of module


Arduino Mega 2560 --> DS3231 :

SDA -- SDA of Arduino mega

SCL -- SCL of Arduino mega

VCC -- 5V



Arduino Mega 2560 --> Df Player Mini :

TX1 of Serial1port -- RX (Note: add a 1k ohm resistor in between TX1 to RX)

RX1 of Serial1port -- TX

GND of Arduino mega -- GND

5V -- VCC

Speaker + -- spk1

Speaker- -- spk2


Arduino Mega 2560 --> LED :

pin 47 -- +ve of led

GND -- -ve of led (place a 1k ohm resistor in between gnd of arduino mega and -ve led)


Arduino Mega 2560 --> 2N3904 NPN transistor : (This connection is about resetting the arduino via code)

GND --> Emitter

48 pin --> Base of npn (Note: add an 1k ohm resistor in between 49th pin of arduino and base of the transistor)

RESET --> Collecter


Arduino Mega 2560 --> GSM 800l

TX3 of Serial3port of arduino mega 2560 --> RX of GSM

RX3 of Serial3port of arduino mega 2560 --> TX of GSM


5V --> VCC


Mic Amplifier --> GSM :

MIC+ --> MIC+ of GSM

MIC- --> MIC- of GSM

GND of mic --> GND of arduino mega

VCC of mic --> 5V of arduino mega


Audio Amplifier --> GSM :

Left --> Spk- of GSM

Right --> Spk+ of GSM

VCC --> 5V of arduino mega

GND --> GND of arduino mega

Spk+ --> Speaker+

Spk- --> Speaker-


ShutDown Circuit :

See in the above pic.

connect ctrl(control pin) to pin 49 of arduino mega

Step 3: How to Find the Co-ordinates of the Icon (If You Want to Add Any Apps Only Then See This )

Before this you need to do three things. First the format of the image must be ".bmp" , Second is name of the image must be equal to 8 letters or less than that , Third thing is the resolution of the image must be 320x480 only.

Now in order to find the co-ordinates of the icons on the screen you need to use windows paint ,which is generally free in windows. Now open the paint software and open the image file you want to see the co-ordinates.

Make sure the image size is 320x480 if it's not the use the resize option to resize the image (if you are resizing the image then select the pixels option and type 320 in first box and 480 in second box and click ok.)

Now to find co-ordinates and area of the icon place the mouse on top left corner of the icon now click the left button on mouse and drag the mouse to cover the icon. Now when you see the the bottom of the paint use the area of the icon. To see the co-ordinates of the icon place the mouse on the top left corner now see the bottom left corner of the paint you will see the co-ordinates of the icon don't move the mouse just note down the co-ordinates. This is how you can find the co-ordinates.

If you want to find the x1,y1 co-ordinates also, then first find the length of the icon in horizontally then add this measured length with the x co-ordinate of the icon then the result you get is your x1 co-ordinate do the same thing to find the y1 co-ordinate just here you need to measure the length of the icon vertically an add it with the y co-ordinate of the icon and result you get is y1 co-ordinate.

Step 4: Libraries

Download the Libraries from below and add to your arduino ide.

1. DS3231 :

2. Adafruit_GFX Library :

3. MCU Friend Library:

4. Adafruit_TouchScreen Libary:

Download this libraries only there is no need to download DF player mini library, SD card library and SPI library.

SPI and SD card library are already preinstalled in Arduino IDE and DF player mini program is written in the code.

Step 5: How to Set Date and Time

Before this make sure that DS3231 library is installed in Arduino ide.

First open Arduino ide, click on file ,next go to examples, search for DS3231 , open DS3231 and select arduino and open DS3231_Serial_Easy example. Now scroll down go to 57th line of the code and uncomment the code from 57 line to 59 line and set present day , present time, present date. Now upload the code to arduino mega now open the serial monitor and set the baud rate to 115200 and you u would seeing the date, time,day and all. Now close the monitor and and comment lines which we have uncommented and again upload the code . That's it time , date , day.....etc are all set now you would be seeing the correct time.

Step 6: Touch Calibration for Screen

First open Arduino IDE, next open file, go to examples, scroll down and search for MCUFRIEND_KBV and click on it and search for TouchScreen_Calibr_native program and open it. And upload the code to the Arduino Mega and after uploading the code open the serial monitor and see the display and touch the display to calibrate the touch and do what it says. After completing what it says see the serial monitor and copy the calibration values from there and paste it in the phone code or sample code. That's it calibration of touch is complete.

Note: Make sure that you change the driver name in the code in accordance to your display driver. 

Step 7: Code of the Project

Link of the code & pictures is here:

Note: Make sure that copy the images to SD card root directory