Ever wanted to build you own cellphone? Well now you can with this guide that uses a Raspberry Pi, PiTFT, and a FONA to make a functional cellphone that you can call your friends with!
Things You’ll Need:
- Raspberry Pi computer, the Model B or Model B+ is probably easier to set up and get going, but of you are comfortable with the Model A, then that will work fine. You don’t need any USB ports, and once set up, you don’t need the Model B‘s ethernet port. The Model A save you on power, allowing you to have more talk time 🙂 The Model B+ will also work, if you’re ok with the PiTFT being slightly offset from the Pi, as the GPIO pins are in a slightly different place. It’s also worth noting that the Model B+ uses quite a bit less power than the Model B, so it’s probably better suited to a portable application like the PiPhone.
- Resistive 2.8″ PiTFT or Capacitive 2.8″ PiTFT – 2.8″ TFT touchscreen for Raspberry Pi. The capacitive version looks nicer and has a glass top that does not require pressing down, but it’s more expensive!
- SD memory card, 4GB or larger.
- 1200mAh Lithium Polymer battery
- DC-DC converter
- FONA + Antenna
- “Hands-free” Headphones with Microphone
In some situations a USB to TTL Serial Cable may be the preferred way to log in and configure the Raspberry Pi, if a spare keyboard and monitor are unavailable.
Some additional parts, tools and skills are also required: soldering iron and solder for putting the connectors on the PiTFT display, and connecting the DC-DC converter to the Pi; some means of holding all the pieces together — could be as simple as a few rubber bands, to a drilled-out plastic electronics enclosure, to an elaborate custom 3D-printed case. This all depends on your available resources. Read through to see what’s involved in the project and come up with ideas along the way.
For connectors an wiring, the 26-way pin header is supplied with the PiTFT, but for ease of wiring I’d suggest soldering the needed wires directly rather than using the pin header, as you’ll need to source a connector to go on to it. But if you do have the relevant connector and crimpt tool, thats all good too.
Check out David Hunt’s blog for more about this project and other great projects!
If you want to see the original PiPhone in action, check out Dave’s video. It uses an older GSM card, but you’ll get the idea.
To ensure that all the software interdependencies can work, it’s easiest to start with a clean installation.
So, we need to set up the following:
- Fresh install of Raspbian
- PiTFT Setup
- Python development libraries
- Wiring Pi library
- Wiring Pi Python wrapper
- PiPhone python script
This project is easiest to start with a pre-prepared rasbian image from Adadfriut that’s got all the setup done for the PiTFT touchscreen, saving a lot of time. There’s also a script for Pi’s that already are up-and-running.
There are two versions of the 2.8″ PiTFT, the resistive and the capacitive. You can find links to the images and/or setup scripts here:
Once the PiTFT is running, we first need to change the orientation of the screen, as we want the keypad to appear in portrait mode. We can do this by editing the adafruit modules config file:
- sudo nano /etc/modprobe.d/adafruit.conf
Change the ‘rotate’ parameter for the fbtft_device to zero, save the file and exit the editor.
- options fbtft_device name=adafruitct28 rotate=0 frequency=32000000
Connect a monitor and keyboard (or use a USB-to-serial console cable), power the Raspberry Pi from a USB phone charger or powered hub, and work through the usual first-time boot configuration.
The following options are required:
- Expand Filesystem
The following are very useful and recommended:
- Under Internationalization Options, select Change Timezone and Change Keyboard Layout to match your region.
The following are optional:
- Under Advanced Options, select Hostname to give this Pi a unique name (such as “picam”) to distinguish it from other Raspberry Pi’s on the network.
- Under Advanced Options, select SSH to enable command line access from the network (helpful for further configuration and troubleshooting).
- Other settings can be configured to your liking.
The following should not be used:
- Overclock. This is a portable, battery-operated project and an overclocked Pi will draw more current. Overclocked systems are also more likely to corrupt the SD card filesystem. Do not enable this option.
Once the basic system configuration is done, you can also set up wireless networking if you plan on using this capability. This guide may be of assistance.
Once the Pi is fully configured and on the network, work through the relevant PiTFT tutorial, one for the Resistive version and one for the Capacitive version.
For the Resistive Version: Adafruit PiTFT — 2.8″ Touchscreen Display for Raspberry Pi
For the Capacitive Version: Adafruit 2.8″ PiTFT – Capacitive Touch
You may want to read up about the PiTFT and stuff you can do with it. If you’re using the ready-to-go image then a cursory review on how to install is handy. Once you have a Pi that boots to a login prompt on the 2.8″ TFT, you’re in good shape.
You’ll also need to calibrate the touch screen!
Likewise, the optional tactile buttons on the PiTFT are not required for this project. You can install the buttons for other things if you like, but the PiPhone software is entirely touchscreen-based.
PiPhone Software Setup
Now we get the PiPhone python script and icons.
- wget https://github.com/climberhunt/Piphone/archive/master.zip
- unzip PiPhone–master.zip
Now give it a try. The software must be run as root (using the sudo command) in order to access the TFT display
- cd PiPhone–master
- sudo python piphone.py
If all goes well, after a few seconds’ initialization you should see the Lapse Pi splash screen , Followed a couple of seconds later by the time-lapse information.
If this doesn’t happen, an error message should give some sort of troubleshooting guidance; missing library or driver, etc. This is why we recommend working through the TFT tutorial first.
Once youve got that working, have the Pi boot straight into the PiPhone software by editing/etc/rc.local and adding the following lines before exit 0
- # Start PiPhone software at boot
- cd /home/pi/PiPhone–master
- python piphone.py
Next time you reboot you should see the text console and then it will start the PiPhone software.
Serial Port Setup
There is almost zero setup in the serial port, we just have to make it available for comminucating with the FONA. This involvles simply disabling the getty that’s running by default, which normally allows us to log into the Raspberry Pi over the serial port. Since we now want to connect the FONA to this serial port, we don’t want a login prompt to be sent to the FONA.
Open /etc/inittab file
- sudo nano /etc/inittab
and cange the line that contains the getty for /dev/AMA0 by putting a # infront of it:
- #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
I’d suggest not deleting the line, as you may want to comment in back in later.
For more detail: PiPhone – A Raspberry Pi based Cellphone