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.
You can order the circuit board (PCB) from OSH Park. It costs about $60 and you get three copies of the board.
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:
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.
While the cellphone uses many small, surface-mount components, it's possible to solder it together by hand with a good soldering iron and some practice. If you haven't done surface-mount soldering before, Adafruit Industries has some good tutorials: Adafruit Guide To Excellent Soldering, SMT Breadboard Prototyping Using Breakout PCBs.
Most of the components are straightforward to solder (apart from their small size), but there are some things to note:
Step 3: Upload the software.
Step 4: Troubleshooting the network connection.There are a lot of pieces involved in connecting to the network and, therefore, a lot of things that might not work. If the phone's display shows "connect" forever, it's having trouble connecting to the network. Here are some potential problems and some possible solutions. (If you don't see anything on the display at all, check the soldering on its pins and the pins of the microcontroller, and review the previous step to make sure the software uploaded correctly.)
Things to Check
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:
OK That 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.Unlocking 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:
Step 6: Laser-cut and assemble the enclosure.
You can make a simple but functional enclosure from laser-cut plywood and veneer, along with some small screws (see materials above):