Been wanting to try making my own cellphone ever since I saw the Adafruit FONA boards. I finally built one and actually got it working.
This is the "home" screen. Across the top is the menu bar that can have text, icons, what have you. This screen has battery charge and RSSI indicators. Across the bottom, on the home screen is my five "standard" phone icons. Phone, SMS, Contacts, Calculator, Settings/Debug. The phone runs on what I'm calling litlOS. Its basically an Arduino sketch swapper. There is an object called a panel and that has setup() & loop() methods. You can get your sketches running independently, then just wrap them into panel objects and the OS takes care of swapping them in and out of memory. Actually, there are also close() and closing() methods. One can be called to quit a panel and the other is called when a panel is shutting down.
First app panel is the phone dialer. You can dial a call from here. If you choose a contact from your contact list and click the phone icon, this is where the call is dialed. Also, if an incoming call is detected, this panel takes care of it and lets you decide if you want to answer or not. And yes it has caller ID so you'll know if its someone from your contact list as well.
SMS panel for texting. Notice all the sub-panels have a red X in the top left corner. This takes you back to the home panel. When you send a text message it goes on the screen as yellow. If its successfully sent it turns to green. A failed message shows as red. Incoming text are white. The nickname of the person your texting is at the top of the panel.
Contact list. Now that I know more, I think this should have been broken into two panels. One for locating contacts and one for editing them. For now this screen is it, and does it all. You can add contacts, delete them, call them, text them, and if you touch a data field, you can edit the information of them as well.
The calculator. This is my HP (RPN) calculator that I originally wrote for Macintosh then ported to Arduino. Now I wrapped it into a panel object and it lives on in my phone. Very handy.
Tools or settings. This started out as a settings panel but turned into status/debugging window. Later, hopefully, it'll go back to being a user's setting window. What its showing is what's going on in FONA land. Are there messages to grab? Phone calls to answer? Things like that. The Feather FONA is polled every 750 ms to see what's going on.
The question game. This was a sketch I used to test the SD file library I wrote. I needed the library as a bases for database operations. Turns out cellphones rely heavily on stored data. Never realized it 'till I tried to build one. To deal with this I had to write some pretty fun file handling code. Took awhile!
Breakout! I wrote this a long time ago. I thought it would be fun to add to the phone and would be a good test case for controlling things using a touch screen. It was kinda' tough because the code base for this was a bit of a hack to begin with. Its better now. And it works!
The innards. On the right is the FONA Feather that runs all the hardware. Next to that on its left is the teensy3.2 that runs the GUI and user SD drive. This is an early version with the smaller 500mah battery. That just didn't work at all. Now there's a whopper lipo in there that's almost the size of the screen. I had to print up a larger case to hold all the innards.
What's next? Donno'. It about destroyed my brain just to get this far. I'm thinking to add a radio panel and see if I can get the FM tuner working with headphones. That wold be fun. There's also finishing up pairing with handless headsets. The ability is all in the chip I just have to figure out how to access it. Most of the foundation code is pretty solid by now. The GUI, by the end, was starting to get a bit hacked up. It would be nice to rewrite the GUI using what I know now. But, I'm pretty burnt at the moment. So I doubt it'll happen soon.
Here's the Fritzing file. : http://leftcoast.biz/justStuff/cellPhone/cellphone.fzz
The code : GitHub - leftCoast/Arduino: The huge pile of mess on my desk. ( Arduino code development. ) The FONA code is cellphone_IV and the teensy GUI is cellphone_VI Then in the library look for folders that start with LC_ there's masses of them. If anyone tries to compile this nightmare, remember the Feather and the Teensy need to be compiled with different settings. The teensy must NOT use more than 72 Mhz or the screen kinda' goes wonky. The Feather just uses what ever Adafruit set up for it as defaults.
The case files for 3D printing : Thingaverse link
Have fun!
-jim lee