How do you feel about this article? Help us to provide better content for you.
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
What do you think of this article?
An open source mobile phone that you can build yourself.
The DIY Cellphone was developed by David A. Mellis, a researcher at MIT Media Lab and one of the creators of Arduino — which as it happens, is used in this project.
As far as I am aware this is not available as a complete kit of parts. However, it's an open source design, the Gerber files have been made available and PCBs can be ordered direct from OSH Park (note that there are two variants: the one described here with an LED matrix, and one with an LCD).
Assembling the hardware
A little upfront preparation pays and I started out by printing off enlarged top and bottom layouts, and the bill of materials so that I could mark off components as they are fitted.
The first components to be soldered were the resistors, starting with the three 22 ohm ones.
There are various different approaches to hand soldering surface mount components. The technique I used here was to put a tiny amount of solder onto one pad, place the resistor, align it, re-melt so that one end sinks into place, and then solder the opposite end. Other techniques may be better!
Next I fitted the ceramic capacitors and then the electrolytics.
Given the relatively large size of the electrolytics, these could be first held in place with Blu Tack, before being soldered at each end.
The switches were also soldered using the same technique as used with the electrolytic capacitors.
Some components were somewhat trickier to solder than others, such as the loudspeaker which had to be placed onto pads covered with blobs of solder, before then re-melting this by applying heat to the reverse side and whereby it was conducted via the through-hole plating.
If you've not done any surface mount work before, you'd be forgiven for thinking that it would be difficult to hand solder the ATmega in its 44-pin TQFP package. However, this was a relatively easy task and I started by soldering a single pin at one corner, before very slightly fine tuning the alignment and then soldering a pin on the opposite corner. At this point solder could be dragged across an entire row of pins and any excess removed with solder wick.
Note that it's important to use plenty of flux and particularly with things such as the ATmega, where you are relying on surface tension to draw the solder into place.
Programming
Arduino is used to provide the software platform and the sources, or Arduino “sketch”, along with the board configuration, is hosted in a repository on GitHub. This depends on other libraries and after the repository is cloned these are imported via git submodules.
As mentioned previously, there are LED and LCD variants of the design and the software is slightly different for each. The former is in the led-matrix branch and this needed to be checked out.
Now that I had the correct software I could configure the Arduino IDE to point at this. Note that I experienced problems when trying to use a recent version of the IDE, and so I installed v1.0.4.
Since the ATmega came supplied without any kind of firmware loaded, the first step is to program the Arduino bootloader. This requires an in-system programmer (ISP) and I was able to use one of the excellent LittleWire boards for this purpose and connected it to the 2x3-pin header.
It took around 4 minutes for flashing to complete and when it did I got a verification error. So I tried this again and once again I got the same error. However, I managed to complete the next step without any problems, so it may be an issue with the verification process or ISP reading flash.
Next I opened up the DIY Cellphone sketch, compiled this and downloaded it to the phone via a USB UART attached to the 6-pin serial header.
Once upload completed the firmware was up and running.
Testing
With the hardware assembled and the phone firmware loaded, it was time to insert a SIM card.
Upon booting the phone displays “Connect” as it searches for a network.
If you keep the USB UART connected you can view debug messages via the Arduino serial monitor.
After Connect, the phone briefly displays “Caching”.
The process ends with “Done”.
And finally, testing with a call!
A satisfyingly fun project
You might wonder why anyone would want to make their own cellphone when a complete one can be bought for far less and which has far greater capabilities (and a case!) Clues can be found via the research group which David is a member of, and that states its primary aim as being to:
“engage diverse audiences in designing and building their own technologies by situating computation in new cultural and material contexts, and by developing tools that democratize engineering. We believe that the future of technology will be largely determined by end-users who will design, build, and hack their own devices, and our goal is to inspire, shape, support, and study these communities.”
A laudable aim indeed and a belief I wholeheartedly share. It may be the simplest of cellphones, but there is something quite fun about making a DIY version of an everyday device such as this.
Second DIY cellphone workshop © David A. Mellis, CC BY 2.0
Finally, I should point out that most of the components used are surface mount, assembly can be a little fiddly and should you decide you want to make one yourself, it may be advisable to start with a simpler project if you haven't done any surface mount assembly before. Although don't let that put you off, as it's not that difficult and only a little practice is required.