Hello fellow instructablelers (if that is even a word!)
Long time lurker on this website, so its only fair I contribute something back. Here is my instructable for converting an old vintage phone into a mobile phone. I'm also entering this into the trash for treasure competition so please vote for me !
I had an old GPO phone (A Pre-British Telecom) phone lying around and wanted to do something with it rather than just eBay it or throw it out. About a year ago, I had a vauge idea of turning it into a mobile phone and after brief search on the webs noticed other people had had the same idea, so what I've done is nothing new but I don't think I actually came across a fully documented version just bits of code and ideas here and there.
I had a few basic requirements for my phone It had to be mobile (obviously!!!!) So some form of battery was needed. It had to have no external mods to the case - although I did eventually give in slightly by adding a switch and status LEDs, underneath the phone. The rotary dial must work as it had it the past The bell ringer must work, I did not want to "fake the ringing" with some MP3 playback module. It should be chargeable using a common USB charger or optionally can be charged wirelessly.
If you fancy going back to the 80s and having a phone with no screen, no access to the web, no texting, no mp3 playback and only one ringtone, friend, this is the instructable for you.
This is an entry in the
Trash to Treasure
Step 1: Get Your Parts!
There are not too many parts needed for this instructable. They are listed below
- A Britsh GPO Telephone, type 746
- One TP4056 3.7V charger module, like this one
- One 18650 battery
- An on-off switch of your choice
- One XL6009 boost module like this one
- One L293B H-Bridge driver chip. I bought mine from RS Components here
- An Arduino Pro-Mini, 3V version
- A SIM800 Module like this one
- A sim card!!!!!
- Three 10K resistors
- One 4.7K resistor
- One 1K resistor
- One 470uF capacitor
- One PN2222A Transistor. Probably any NPN will be OK, I just has a load of these to hand.
- Optionally a couple of LEDS for displaying the status of the phone
- Nine male Molex KK 6410 connectors for the board and nine female for the components to the board. You may need to get the terminals for the female side.
- If you want a PCB board, I have some for sale at £8.00 with free P&P in the UK. Contact me at firstname.lastname@example.org
Step 2: Preparing the Old Phone
Begin by opening up the case of your phone.
There is a little knack opening one of these phones, first, unscrew the screw to the rear and holding the phone case at the rear-bottom pull out slightly and up, be quite firm and you may need to wiggle the rotatry dialler.
All the wires, T1 - T19 need to be disconnected from the PCB board, then the central PCB screw should be removed, The PCB can now be removed. Some wiggling may be needed to get the board out.
There is just one component needed from the PCB and that is the on-hook switch as shown in the photo. This is the switch that let's us know if the handset is sitting on the phone. When on the phone we can receive calls. If the handset set is off the hook, we can dial a number (and also generate a off-hook tone at the earpiece).
The switch also has a spring lever mechanism which is why I suggest using the original. I guess you could make your own mechanism, but I wouldn't bother.
The state of this switch will be monitored by the arduino.
Next decide where you want the on-off switch to be located. My first RetroMobile used a push-on push-off swtch, which in hindsight was a mistake as the only way to know if the phone is on is to lift the handset and listen for the off-hook tone. My prefered chose would be a rocker or slider swtch with a definate indication on the state of the switch.
Decide where you want to place the status LEDS. The circuit board provides for two, although there is no code yet to make use of them. Maybe you can use your imagination. One idea I had was to use one as a text-to-morse code indicator.
The last thing I did was place a wireless charger on my phone using one of these devices. Now a slight word of warning, using wireless charging will be slowler than a USB charger. Also, the first phone I worked on has a plastic base, the second a metal one, so the second one cannot be wireless
The shell of the old phone should now be complete.
Step 3: Overview of the Circuit
The power is supplied from a 5V device, eg a USB charger but your plug/socket arragment is of course down to you. This is connected to a TP4056 charger. There's lots of information about this neat little charger, so I won't go into detail. What it the does is allow the PSU to charge the battery and if there is no PSU present, and the battery has sufficient charge, allow the battery to power the mobile phone.
The battery I used was a single 18650 cell type as this supplied 3.7V which is just right for the Arduino Mini Pro and the Sim800 card. It gives about 3 hours of use. I haven't tried putting two in parrallel, but I think that would work and give a longer stand-by time.
The battery supplies power to the L293 H-bridge via the XL6900 boost converter, set to around 30V output. The bell on the GPO can ring at around 30v, but it has to be AC. We can simulate this by using a H bridge. Again there's tons of info on H-bridges on the web so would be pointless me repeating. But briefly a H-bridge allows us to 'swop' the direction of current. These bridges are used commonly in DC motors to reverse the direction. So by switching the direction we can ring the bell. The switching is done by the arduino on pins 4 and 5.
The arduino controls the Sim800 card by sending and recieving AT commands. I have used, and modified the SeeedStudio library to control the arduino so I should give them credit.
The rotary dialler is connected to the arduino and the number dialled is read under code. I have used and modded the codefrom Guidomax and must give him credit for this aspect of my instructable.
The on-hook switch, rescued from our original phone PCB board, is just a switch and the state is monitored by the arduino.
There is provision for two status lights from the arduino, I haven't yet decided what to do with them, if anything!
Step 4: The Code
The code to operate the phone is attached above. I don't claim the code to be the most efficent but it seems to work for me.
The code is written for an Arduino Pro Min (3V) and was done using version 1.8.5 of the Arduino IDE.
Use the attached Seeeduino_GPRS-master.zip file as I've added a couple of extra functions and modded the pins to operate the Arduino Mini Pro.
Let me briefly go through what the code is trying to do.
The arduino wll first set up the pins for the Arduino, then defines an array for stored numbers. You can hard code frequently dialled numbers to a single digit on the rotary dialler. eg dialling "1" points to the phone number "32323254321". You can have up to 10 hard coded numbers.
Next it starts the main loop
The first decision is (boolOnHook==false) and (boolRING == false) if true, this means the user has picked up the handset so we need to generate a tone at the earpiece.
We next execute GuidoMax's code to determine what numbers are being dialled. If, after 5 seconds, no input is received from the rotary dialler, then the buffered number is sent to the SIM800 card and dialled.
When the boolOnHook becomes true, we hang up the phone call and reset the phone telephone number array buffer.
The function fnRing has the correct delay to mimic the ringing of a UK phone
The functon fnTestBell is use to test the bell riniging circuit
The function fnDebug was used to output the variables to the Serial monitor during testing.
Step 5: Building the PCB and Final Assembly
The PCB layout is shown in the image but remember than this has been generated from the circuit so has to be modified.
The mods are very easy to do, if you confident in building any sort of electronic circuit board, these changes are straightforward.
Cut the two tracks and attach the red wire.
Make an additional two track cuts and add the blue wire.
Before you add the wires, it may be easier for you to solder in the TP4056 module and the header pins so the wires have an anchor point.
The first module to solder in anyway is the TP4056. Once in make sure it can recieve 5V from the PWR input and ouptuts 4.2V to the battery and 4.2V to the rest of the circuit.
Next put in the XL6009 and adjust until it reaches 30V.
Add the L293 H-Bridge and the Arduino next. At this stage you can flash the Arduino and test to see if the bell ringer works using the fnTestBell.
If alls well add the SIM800 module and the rest of the pin headers, transistor and passive componets.
The last component to add is the on-hook switch.
Screw the new PCB board back into the phone housing, taking care that the on-hook switch is engagages to the on-hook cradle mechanism.
Plug in the battery, the rotary dialler, the mic, the speaker, the bell, the status leds if you are using them and the on-off switch. Place the battery in a suitable are. I placed it just behind the bell with a lot of blue-tac!
Switch off the crcuit and if you haven't done so already, flash RetroMobile software into the arduino using a 3V FTDI card.
Apply power to the TP4056 and when blue (on my boards) the battery is charged and provided there is a sim card in the SIM800 you should now be able to make phone calls.
Assembly the outer case mindful not to trap any wires.
Step 6: What Next?
I'd like to do something with the status leds, maybe text-morse code. Or flash a warning when the battery is nearly empty. The SIM800 can report the battery level.
It may have been nice to think about adding a BT module so I can pair it to another phone or my car.
I read on-line someone had wrote code that someone had wrote a piece of code that would allow someone to text a phone number to the module that would allow speed dial numbers to be stored rather than my crude hard-codeding them.
Thanks for reading and if you would like a PCB board email me at email@example.com
Thanks and please vote for me in the trash-to-treasure competition!
We have a be nice policy.
Please be positive and constructive.