The DIY Cellphone is a working (albeit basic) cellphone that you can make yourself. It can make and receive phone calls and text messages, store names and phone numbers, display the time, and serve as an alarm clock. It connects to GSM networks (like AT&T and T-Mobile in the U.S.) using a regular (full-size) SIM card. It builds on the hardware and software in the Arduino GSM Shield but extends it with a full interface, including display, buttons, speaker, microphone, etc. The phone is made up of a custom electronic printed circuit board (PCB), about 60 electronic components, and a laser-cut enclosure. Its hardware and software are open-source and available on GitHub (hardware, software).
Part of my motivation for making the phone -- and helping others to do the same -- is the fact that while cellphones are ubiquitous in our society, most of us have little idea what they're made of or how they work. In fact, you can make a cellphone in much the same way you'd make anything else: find the right parts, figure out how to connect them together, and try to do it in a way that's attractive and robust. Because of the ubiquity of cellphones, there are companies making the components they're made of; with some digging, I was able to find versions of these parts that are possible to buy in small quantities and that are possible to assemble by hand. This wasn't necessarily easy, but it's a very different problem than trying to learn the physics needed to understand how a cellphone tower works.
I've been using various versions of this phone as my primary device for almost a year and have taught workshops in which others have made the phone for themselves. It doesn't require any specific knowledge of electronics, but it does involve configuring software, soldering a lot of small components, and laser-cutting, all of which can be difficult if you haven't done them before. I'd only recommend this project if you already have some experience with Arduino and soldering, or can find someone to help you out. You'll also need to get access to a laser-cutter, or find an alternative way to make the enclosure for the phone.
Step 1: Ordering the Circuit Board and Components.
The components for the board come from three companies: Digi-Key, SparkFun, and Arduino. The full list is available in this PDF. The total cost is about $135 plus shipping.
To assemble the circuit, you'll need a pretty good soldering setup: a soldering iron (e.g. the WES51) with a good tip, fine-pitch solder, desolder wick, tweezers, etc. To program the microcontroller, you'll need an AVR in-system programmer (like the AVRISP mkII) and a 3.3V FTDI Cable (or equivalent breakout board). To charge the battery, you'll need a mini-USB cable. If you don't already have these and aren't interested in setting up your own electronics lab, you might try looking for a local hacker space, maker space or fab lab. Most of them should have the tools you'll need. (And, if not, this would be a good reason to convince them to get them!)
For the laser cut enclosure, you'll need:
- A sheet of 1/4" / 6 mm plywood, like this craft plywood from Midwest Products available at many art supply stores. (Avoid the micro-lite aircraft plywood from Midwest Products or other plywood with dark adhesive layers as they tend to burn in the laser-cutter.)
- A sheet of wood veneer, preferably with adhesive backing.
- Six M0, 5/8", pan-head machine screws (e.g. this 100 pack from McMaster-Carr)
- Six M0 nuts (e.g. this 50 pack from McMaster-Carr)
You'll also need a full-size SIM card from any GSM provider. I've been using T-Mobile in the United States but the phone has also been tested with AT&T and in India, China, and Europe.
The PCB and GSM module may take a couple of weeks to arrive. You might try practicing your soldering in the meantime!
Step 2: Soldering the Electronics.
Most of the components are straightforward to solder (apart from their small size), but there are some things to note:
- Capacitors: Be careful of the polarity on the large (1000 uF) capacitors, they may explode if you solder them backwards. Use the orange stripe to orient them correctly.
- Polarity: Other components with polarity include the super-capacitor, the LEDs (note the two small green dots on one side), the ATmega1284P microcontroller (note the circle in one corner), the M10 GSM module (which has an arrow in one corner), the SIM card socket, the microphone, and the diode (note the faint grey line on one side). These components have no polarity (can be soldered either way around): the crystal (8 MHz), speaker, reset button, small capacitors, and resistors. Other components only physically align in one orientation (but make sure the transistors aren't upside down and that the buttons aren't rotated 90 degrees).
- Antenna: When soldering the antenna, start with the pad that faces the GSM module. That's the one that carries the electrical signal; the others are simply there for structural support (to hold the antenna down). You may even be able to heat the solder on that pad from the top of the antenna, the heat can be conducted through the two vias (small holes) in it.
- Solder Jumpers: There are two solder jumpers on the bottom of the board, labelled "Cell" and "uC". Solder the center pad of each to the pad labelled "uC". (This connects the RX and TX lines from the FTDI header to the ATmega1284P on the board so that they communicate over serial. If you instead solder the center pad to the "Cell" pad, the FTDI cable connects directly to the GSM module so that you can communicate with it from the computer.)
- Speaker: The speaker is awkward to solder because it has no legs. First, apply solder to the pads on the PCB. Then rest the speaker on top of the PCB (aligning its pads with those on the board) and solder it from the bottom. You can feed in solder or melt the pre-applied solder from below. If it doesn't work, don't remove the speaker (you might rip its pads off). Instead, try to re-melt the solder on its pads by inserting the iron into the holes from below.
- USB Connector: Only the two outer (of the five small) legs of the USB connector are used, so you don't have to solder the three central legs. (Do solder the four corners, though, they provide structural support).
- ISP Header: Because you only need to burn the bootloader once, I typically don't solder pins into the ISP (2x3) header. Instead, you can insert pins into the connector on your ISP and hold them against the pins (from the top of the board) while you burn the bootloader. If you have trouble, you can solder pins to the holes but you'll have to adjust the case to make room for it.
Step 3: Upload the Software.
Step 4: Troubleshooting the Network Connection.
Things to Check
- Is there a SIM card in the socket?
- Is the SIM socket soldered correctly? The 22 ohm resistors (those connect the GSM module to the SIM socket)? The corresponding pads on the GSM module?
- Is the antenna soldered correctly? The corresponding pad on the GSM module?
- Is the 0 ohm resistor soldered correctly (to the trace connecting the M10 GSM module to the antenna)?
- Do you have reception? You might try taking the phone outside. Sometimes, even if you can get reception inside, the phone has trouble connecting for the first time when it's inside.
- Is the SIM card locked to another phone?
- AT&T (and possibly other carriers): have you activated your SIM card and phone on AT&T's website? You'll need the IMEI number printed on the M10 GSM module.
You can further debug the phone by communicating with the GSM module via serial communication with the computer, using the microcontroller as a proxy. To do so, upload the SerialProxy sketch to the phone (using a 3.3V FTDI cable or breakout board). Then open the serial monitor and set the baud rate to 9600 and the line ending to "carriage return". After a few seconds, you should see:
READY<br>AT<br>OKThat means the GSM is ready to receive AT commands (text strings that mostly start with the letters "AT"). The commands are detailed in the datasheet for the GSM module but here are a few basic ones:
Test/synchronization command. If you enter "AT" in the serial monitor (with a "carriage return" line ending), you should get a response of "OK"
Check the status of the network registration (connection). The response will be in the form " CREG 0,N", with N being: 0 (not registered to a network), 1 (registered to a network), 2 (searching for networks), 3 (network registration denied), or 5 (registered, roaming).
Display currently-selected phone book. Sample response: " CPBS: "SM",50,250", with the "SM" indicating the SIM card is the current phone book (some other options include "MC" for the missed call list, "RC" for the received call list, and "ME" for the GSM module phone-book) and that 50 of its 250 entries are in use. This command can be useful for verifying that the GSM module is able to communicate with the SIM card
Select the SIM card's phone book. You can also replace the "SM" with the abbreviations for the other phone books listed previously.
Read the first entry from the currently-selected phone book. Replace the 1 with the number of the entry you wish to read (up to the total phone book size reported by AT CPBS?).
Step 5: Using the Phone.
Once the phone successfully starts up, it will be locked and the screen will be blank. To unlock the phone, press any button; the date and time will scroll back and forth across the screen (this is the "unlocking" screen). If, during this time, you press the "unlock" key (the top-left button), the phone will unlock. The time will remain on the display, without scrolling. This is the home screen.
Locking the Phone
From the home screen, you can lock the phone by pressing the left soft-key button (the upper-left button). The screen and backlight will turn off but the phone will still be on and able to receive phone calls or text messages.
Adjusting the Contrast/Brightness
When the phone is in the "unlocking" screen, you can adjust the brightness by using the up and down buttons (the two central buttons of the group of four buttons just below the screen).
Dialing a Phone Number
You can dial a number from the home screen. Simply press the button corresponding to the first digit of the number. You'll be taken to the dialing screen where you can enter the rest of the number. Press * to delete the last digit entered or "back" (the left soft-key) to go back to the home screen. By pressing # one or more times in succession, you can enter #, *, or . To call the number, press the right soft-key ("call").
Using the Phone Book (Contact List)
From the home screen, press the down arrow (the lower of the group of four buttons just below the display) to enter the phone book. Use the down and up arrows to navigate to the desired entry. Press the right soft-key ("okay") to enter a menu from which you can call that contact, send a text message to that contact, add a new entry to the address book, or edit or delete the contact.
Adding a Contact
To add a contact, first enter the contact list by pressing the down arrow from the home screen. Then press the right button to enter the contact menu ("call", "text", "add entry", etc); scroll (using the down and up buttons) down to the "add entry" menu item and press the right button. Now you can enter the name of the contact using the keypad (2 is "abc", 3 is "def", etc.; 1 is space, * is backspace, and # is shift). Once you've entered the contact's name, press the down arrow to move to the field for entering the contact's phone number. (You can press the up arrow to return to the field for entering the contact's name.) Enter the contact's number using the keypad (* is again backspace, but # now cycles between #, *, and ). When you've entered both the name and phone number, press the right button to save the contact (or the left button to cancel).
Calling a Contact
To call a contact in your contact list, scroll to that contact, press the right button to bring up the contact menu ("call", "text, etc.) and then press the right button again to call. Texting a Contact To text a contact, scroll to their entry in your contact list and press the right button to bring up the contact menu. Scroll down to "text" and press the right button. Now you can enter your message using the keypad. (As for entering a contact's name, 2 is "abc", 3 is "def", etc.; 1 is space, * is backspace, and # is shift.) Press the right button to send the text (or the left button to cancel).
If you find another component (e.g. the display, speaker, microphone, or buzzer) that's not working correctly, check:
- Is the component soldered correctly?
- Are the connected components (e.g. the corresponding legs of the microcontroller or GSM module) soldered correctly?
Step 6: Laser-cut and Assemble the Enclosure.
- Before cutting the case, check that the case files match the circuit board. In particular, I've made a lot of tweaks to the size and location of the screw holes, so check that they're in the same place on the PCB and the case. (Note that the holes in the bottom veneer file should be bigger than the others, this is to accommodate the nut, recessing it slightly.)
- If you soldered pins onto the ISP header, you'll need to cutout a space for them in the top piece of plywood. Edit DIY-Cellphone-Top accordingly.
- Laser-cut the plywood (1/4" / 6mm) using the DIY-Cellphone-Top and DIY-Cellphone-Bottom files in the Case/ folder of the damellis/cellphone2hw repository on GitHub. The SVG files were created in Inkscape, then exported to hpgl for importing to CorelDraw.
- Laser-cut the veneer using the DIY-Cellphone-Top-Veneer and DIY-Cellphone-Bottom-Veneer files. Cut the veneer with the wood front facing up (adhesive back face down).
- Remove the adhesive backing from the top veneer piece and stick it to the outer face of the top plywood piece. Repeat with the back, again attaching the veneer to the outer face of the plywood.
- There's a bit of empty space between the top of each button and the veneer. You might need to stick small spacers to the back of the top piece of veneer, one for each button (in the middle of each rectangular flexure cutout in the veneer). That way, you don't have to depress the veneer as much to press the button.
- Slip the top and bottom pieces of the case over the circuit board. You'll have to fit the battery's wire in between the GSM module and the battery connector, folding it in half. The plywood pieces should rest flat against the circuit board.
- Insert the six screws and thread them onto the nuts.
kittycats made it!