Last updated February 17th, 2020.
The rotary mechanism comes from a particular style of Trimline telephone. Trimline phones had a more compact rotary dial than the standard Bell system phones, making it a good choice when keeping the final device as compact as possible is paramount. There are a couple other instances of rotary cell phones floating around the internet, one of which has what looks like a custom tiny rotary dial that needs a stylus to dial, but I wanted this to have a recognizably-classic rotary dial. The important point about this is that I discovered there was more than one mehanical design of the Trimline rotary mechanism, but I didn't know this when I aquired the first one (off of ebay for about $20). So, the design was based on that specific version of the dial, which is actually a really good thing because I don't think I could have made the phone as compact using the other style. The bad part is that I've since bought two additional Trimline phones off of ebay because I didn't want to have to cannibalize each previous incarnation of the phone to have parts for the next, but in doing so I discovered this issue where there was more than one rotary design, and the first one I ordered seems to be the less common. This is pretty anecdotal as there are only three datapoints, but the bottom line is that of the three phones I bought, only one had the correct mechanism. This is what the correct rotary dial looks like:
Also, on the point of the rotary mechanism, I actually filed and cut some pieces down to make it particularly compact for the phone:
The below information is for those who wish to have the mainboard PCB fabricated from scratch. As this is the most difficult part of this project, it is now available pre-fabricated along with the 3D printed encosure from my company skysedge.us
The centerpiece, which I'll call the main board, is an "Arduino-like" board, meaning it's based on a microcontroller for which an Arduino bootloader exists, so that the standard Arduino IDE and arduino libraries can be used to program it. Specifically the main board is based on an ATmega 2560V microcontroller with an 8MHz external resonator. The "MegaCore" hardware package by MCdude needs to be added to Arduino, which is available here: https://github.com/MCUdude/MegaCore.
The board was designed in KiCad, which is a fantastic open source electrical design suite. Thanks to CERN for helping make it what it is today (it used to suck). Anyone considering this build should first open the Cellphone.pro project file in KiCad to get a sense of things. If you really want to make this your own, definitely consider trashing my board layout and doing your own. Even if you know nothing about electronics, you can probably lay out a board design and have it work. Maybe. At the very least, consider changing the silkscreen to what you want. In particular I have a "vanity window" built into the side of the enclosure to reveal a section of the mainboard that says "Cellphone by Justine Haupt". So maybe change that. Or don't. Whatever.
Aside from the cellphone main board, for which the fabrication file package (the Gerbers) will need to be sent to your favorite PCB board manufacturer (mine is pcbway.com), the main electrical components are an Adafruit FONA 3G, and Adafruit eInk Friend along with a 2.13" flexible monochrome ePaper display, a 1.2Ah LiPo battery, and all the discrete components listed in the electrical BOM.
The board was populated by hand (including the .5mm pitch footprint for the ATmega chip). Almost all of the components are surface mount, with the typical resistor/capacitor/LED size being 0603. I guess most people would consider that a pretty advanced soldering job, so if you don't think you can do it without missing a pin on the ATmega chip or something, you might consider having a fabrication house do it. That said, it's not as bad as it might seem. Like most things in life, having the right tools for the job helps a lot. I have a PACE ST30 soldering station with an assortment of tips, a good workholding vice, good lamps, an optivisor, smt tweezers, etc. For solder stuff this fine I use .015" CHIPQUIK 60/40 no-clean water-washable 2.2% flux core (p/n SMD2SW.015). For flux I use CHIPQUIK SMD4300TF10, which comes in a very handy syringe applicator. None of that lead-free crap! It's actually healthier to solder leaded.
There's one component in particualr I need to point out, which is the .1" header for the FONA 3G. To get the FONA to fit in the casing just right I had to solder the header on at an angle (as in slanted). For this a picture is needed to explain:
The mating connector for the FONA is a .1" pitch IC socket that I cut in half, NOT a female .1" header socket. The IC socket is more compact than the real header socket, and I felt it was paramount to save every cubic cm of space. Picture of that:
Another oddity is that the eInk Friend must be (a) soldered to the main board with the populated side facing the main board, and (b) a .1" header must be sacrificed to bridge the pads between the the main board and Friend. Or wire would work. As pictured here I angled the Friend to improve access to the FPC connector, but this may have been unecessary:
About the Firmware:
The Arduino code is an ongoing work. Functionality as of this writing is limited, but it makes and receieves calls reliably. I'm continusly rethinking what buttons do what and in one way. I suppose I should explain how everything works and the reasoning, but for now the brave will have to figure it out from the code that I wrote. I don't "do" object oriented programming, so it should be easy to understand.
Note that while I have the ePaper display working in a kind of demo way in the pictures, I don't actually have communication from the FONA to the main board working yet. It works a little but it's spotty and I haven't figured out what the deal is, so the "Missed Call" message in the photos is kind of a farce, but I'm confident I'll have it working at some point.
Although the cell tranceiver is an Adafruit FONA 3G, this doesn't use the FONA Arduino libraries. Instead the mainboard code sends serial commands ("AT commands") directly to the FONA over a software serial link. The ePaper display is the Adafruit 2.13" Flexible Monochrome eInk display using Jean-Marc Zingg's GxEPD2 library.
Regarding references to "ModeSwitch_631" in the code: The mode switch is a SP3T switch which changes the operating mode of the phone. The primary mode, as listed in this code,is "631", which is my own area code. In this mode, 631 is prepended automatically to any 7-digit numbers dialed. All instances of this must be changed to your preferred area code. The other two modes for that switch are "NP" and "Alt". NP stands for "no prepend", to enter full 10-digit numbers, and "Alt" is the alternate mode (like an Alt or Fn key). To minimize the total number of switches, the function of the bottom four buttons on the phone changes depending on the position of the mode switch.
The Arduino IDE needs board support for the ATmega 2560V, which will not work with the default setting for the Arduino/Genuino Mega2560. To get the 2560V to work, add the "MegaCore" board configuration from here: https://github.com/MCUdude/MegaCore.
Also add the Adafruit EPD and the GxEPD2 libraries, which can be added from within the Arduino IDE by going to tools > Manage Libraries...
Use an AVR-ISP-MK2 to flash firmware. This is much easier than dealing with the USB port for programming. Just plug the programmer into the ICSPheader and use "Ctrl+Shift+U" within the Arduino IDE to compile and upload. No need to pick a dev assignment for the USB port.
The board settings under Tools in the Arduino IDE should be as follows (after installing the above MegaCore thingy):Board: ATmega2560Clock: External 8MHzBOD: BOD 2.7vCompiler LTO: LTO enabledPinout: Arduino MEGA pinoutBootloader: Yes (UART0)
About the enclosure:
The enclosure and buttons are entirely 3D printed. What's pictured here was printed with ProtoPasta's white Matte HTPLA, which is just awesome stuff if you're after quality. It has a remarkable ceramic-like feel, and the matte texture hides the layer boundaries very well. I did need to clean it up a bit with an X-acto and sandpaper, but one of the great things about this particular filament is that carving at it or sanding doesn't change the surface finish w.r.t. the raw printed surface at all, really.
[PLACEHOLDER FOR PICTURE OF ENCLOSURE AFTER PRINTING]
The buttons drop in like so:
[PLACEHOLDER OF BUTTONS IN ENCLOSURE]
The main board is dropped in over the buttons and screwed down with one M2.5 screw:
[PLACEHOLDER OF BOARD MOUNTED INTO ENCLOSURE]
And pieces of plastic from product packaging or something similarly transparent will need to be cut out with scissors and hot-glued in place:[PLACEHOLDER OF PICTURE OF PLASTIC BITS FORMING WINDOWS]
The difficult and critical part about the enclsure assembly is bonding the ePaper display. I killed FOUR displays trying to get the bend geometry just right and also figuring out how to bond it. A particular section of the display (between the flex cable and the white active area) is very sensitive to bending and bending there can easily kill it. If this area is attached in a way that doesn't hold perfectly and it starts to delaminate, the small amount of bending from delaminating from the printed enclosure will probably kill it.
Basically, the back of the display behind this sensitive region should be sanded, gently, and then epoxied to the top half of the cellphone enclosure like so:
[PLACEHOLDER OF EINK DISPLAY INSTALLATION PHOTO]
Once this cures completely, connect the FPC connector to the Adafruit eInk Friend, which will require amost folding the flex cable. This is OK as the flex cable is resilient.
The battery and SMA bulkhead-mount pigtail must be installed and everything else must be placed carefully while the bottom half of the enclosure is squeezed onto the front half of the enclosure and screwed down. This would be a good time for a functionality check to make sure nothing bad happened.
Finally, the ePaper display can be wrapped around the curved section of the bottom half of the enclousre and stuck in place with Scotch double-sided sticky tape. Unlike the part that was epoxied, I recommend against using too aggressive a bonding agent here. The sticky tape will ensure good bonding while also offering at least the possibility of being able to remove the display if needed for disassembly. That said, it would be reasonable to stock more than one of these displays because they're easily damaged. They can be bought direct from China via Alibaba if the $17+ price from Adafruit is too high.