Dec 5, 2016

DieselPunk Cellphone - Walnut Case, Powered by Adafruit Feather Fona: Overview




Overview
Wait, what? DieselPunk. What's that?

You know what Steampunk is, right? Roll forward to the era from the 1930's until the end of World War II.  It got its start in Science Fiction and crossed over to other media: Sky Captain and the World of Tomorrow, Crimson Skies. It can be a retro-future mash-up of Art Deco, Industrial Design and Military aesthetics, among other influences. 


An example of dieselpunk art. Created by artist Stefan Prohaczka. Used under Creative Commns License.

So, here's my take on what a  cellphone might look like if Motorola made one in 1940. 

As Seen on Adafruit Show & Tell 12/07/2016


Return with us now to those thrilling days of yesteryear...that never were.  It's a telephone...without wires. It has push buttons instead of a rotary dial! It has a tiny little screen like that television contraption.  You can place a call from anywhere, even an automobile! Fits in a businessman's valise or a lady's pocketbook... We're living in the future.

Build Level: 
Difficult! There's a lot going on here... This is fitting a lot of components in a small space. Alignment of parts is also an issue.

Required Skills:

  • CNC Milling - the wooden case is milled from 1/2 inch walnut
    • VCarve files supplied on github
  • Laser Cutting/Etching: Cutting for speaker and microphone acrylic bezels; etching for case and bezels; files supplied
  • Soldering/Mounting circuit boards
  • Desoldering header pins
  • Craft Skills: cutting, glueing
  • Coding: be able to upload an Arduino sketch, supplied

Adafruit Parts:

Tools & Supplies:
  • Access to CNC milling machine
    • 1/8inch down-spiral dual flute mill
  • Breadboard for testing
  • Micro SIM Card! Adafruit sells the TING
    • I used one from T-Mobile, special plan: $10 USD for the card, $3/month for 30 minutes text/talk; don't know if T-Mobile still offers this
    • The T-Mobile Pay-as-you-go plan doesn't offer Caller-ID! That also means you can't ID SMS senders
  • Various 22AWG and 26AWG, solid
  • Multi-meter for checking connection continuity
  • Solder/Soldering Iron
  • Solder Sucker, desoldering tool
  • Needle-nose pliers
  • Diagonal Cutters
  • Rotary Tool 
  • Helping Hands and/or Panavise
  • fine-tipped tweezers
  • Vinyl electrical tape - any kind
  • Vintage Speaker Cover material
  • TAP Plastics Transparent Yellow and Green 8in x 8in
  • TAP Plastics Light Panel - Smooth Matte cut to size, available in-store only, for light diffusion
    • Or, whatever you can improvise - card stock might work
  • Hobby Knife/Xacto
  • Loctite Gel Super Glue
  • Loctite Fun-Tak (mounting putty) or similar
  • Hot Glue and Glue Gun
  • DevCon Epoxy or similar - for metal inserts
  • 4/40 Brass Inserts 0.375in (4 needed) long: Amazon
  • 4/40 Screws (4 needed) 0.75in 
  • Bead Landing Found Objects Antique Silver and Brass Bezels 
    • (for Motorola badge on back of case - optional)
  • 1/2in x 24in x 5 in (1-2) from Rockler's Woodworking
Downloads:

DieselPunk Cellphone - Walnut Case, Powered by Adafruit Feather Fona:Preparing the Case

The first things you need to do are download the drawing files for milling the case and laser cutting and etching the acrylic pieces.


Milling the Case
The walnut case was milled on a ShopBot Buddy CNC at TechShop, San Francisco. It's (waaaaay) outside the scope of this post to teach you how to use a CNC. At TechShop locations, you must take an SBU (Safety and Basic Usage) class before working on the ShopBot or other equipment. However, that just gets you started. The real learning is all on you. If you don't have experience with a CNC milling machine, but want to learn:


  • Take a class
  • Come up with a good starter project, not too hard
  • Research - lots of research
  • Try things out, do prototypes, expect to make mistakes
  • When you're comfortable, do it "for real"... probably a few times ;-)

The ShopBot and me are not BFF's, but we can get along. I consider myself perhaps an "Advanced Beginner" (oxymoron), with about 100 hours on the ShopBot over 4 years. To get true mastery, you'd need a lot more exposure, and regularly.

I have learned a few things over the years. Here are a few tips:

  • Always measure your material with calipers. It often is a "little" off from spec, especially thickness - the Z axis
    • Adjust your toolpaths accordingly
  • Because it's organic, each piece of wood is unique
    • Even material from a great, consistent source can have "surprise" differences between pieces
  • Plywood is great for prototyping - until it's not
    • My go-to prototype material is Revell Birch, which is nice and consistent. But you can get little glitches in the wood, still. And sometimes the glue layers in the ply will splinter or bind, messing up the piece.
  • At TechShop on the ShopBot Buddy, you are permitted to screw directly into the spoilboard to hold down your material
    • I pre-drill my walnut material for 6/32 brass screws with a 1/8 in. bit that has a recess cutter on it. If you make a mistake with your toolpath, brass screws cut like butter...
    • Then, I drill again with a slightly larger bit
      • Why? I discovered the hard way, when trying to remove the finished part, that the material was fighting the screws, and I kept stripping screw heads
      • A TechShop Coach showed me that a slightly larger hole allows the screw to hold down the material properly, but not be so wedged you have difficulty removing it
  • TechShop also lets you check out a composite nail gun for material hold-down
    • The small plastic nails this shoots hold material down well, but when finished milling,  you can break them easily with a sideways hammer blow
    • The nails work for plywood, but they're not good for walnut and other hard woods - may not even penetrate the wood fully
  • Allow yourself ample material! 
    • If you look at VCarve milling tutorials, you'll notice there's a lot of waste material around the finished part. There's a good reason for that...
    • I've tried to cut things close to save on material. Whoops, too close!
  • Run your toolpaths from the inside of the part to the outside
And, most of all think! Things you don't expect may happen and you'll have to think your way through the problem.

You'll notice in the Vcarve toolpaths that there are lots of little tabs on small parts. These only hold the waste material down so much. It's a really good idea to mill these holes one at a time and stop to remove the waste material after each step. 

In one early run for this project, the dialpad waste was dislodged and flew into the outside case profile path as it was being milled. It got jammed up against the mill and the wood actually started to smoke and burn. Rookie mistake, lesson learned.


Dialpad cutout jammed the mill, causing scorches


All of the holes on the walnut case were milled, although you could possibly do them with a laser. You'd really have to get your alignment right to laser cut them after the case was milled, though.

Any remaining waste material I could cut out with an Xacto or a small keyhole saw. However, that left tiny nubs of material that were tedious to remove. You can use a Dremel-style rotary tool to knock these down, but sometimes they are necessarily in a very awkward location. So, a lot of precise filing/sanding.

Go over the entire case with SuperFine Sanding Pads from 3M. I tried applying Tung Oil but didn't like how dark it made the case, so left it unfinished.

To give the top of the case a smooth and screw-less appearance, use brass 4/40 inserts. 


Brass Inserts shown on top cover Birch prototype, Left

I used DevCon epoxy to hold the inserts in place. Before gluing in the inserts, add a small bit of masking tape to the bottom, to prevent the epoxy from flowing into the interior threads, like so:

Source: Woodworking Magazine - Tips on Using Threaded Inserts

Use just enough epoxy - excess will ooze out of the hole. Make sure that the inserts are fully inserted into the holes and flush or below the surface of the material. You can use card stock or a flat piece of metal to make sure they are pushed in and level. You can use the back walnut cover as a kind of jig to hold the inserts in alignment by simply screwing the covers together loosely while the epoxy sets up.


Laser Cutting & Etching
Again, no laser tutorial here. I'll assume you have some basic skills with a laser, or can get the laser work farmed out. 

TIP: To reduce scorching on your material when laser etching, cover the area to be etched with Transfer Tape, around $12.95 USD for a 12" x 8' roll. You may have to adjust the power of your laser slightly higher to get better results with the transfer tape on. 

A Universal Laser at TechShop (with VLS4.6 software) was used to etch the front of the case with the "RadioPhone" logo and icons for radio and power. That meant the laser etch had to be aligned fairly well in a tight space. The solution was to print out a paper "target" containing the decorative items and a box that represented the cut-out for the OLED display. Place a dot right in the center of this with drawing software (CorelDraw). Or, as I did in the photo below, just draw two lines on the printed target, connecting opposite corners of the box. Where they meet is the center.


Early test on an Epilog Laser for Centering the etched elements

Line up the box with the actual cut-out on the piece and hold it up to the light to adjust. Lightly tape the drawing down to the material - you'll remove the graphic later on.  

Start the UCP program - and click on Focus View. Using the red pointer as a guide, align the laser focus carriage by jogging X and Y arrows in small steps with the drawing's dot/center . You could also align just by moving your material to align with the red pointer. Next, click on Relocate ViewClick the anchor point for the drawing's center. Finally, click on To Pointer to move that anchor point to the current focus carriage position.



Test this by doing a run without the laser active (on the Universal Laser, just leave the cover open). You can see fairly easily if the laser path is correct or not. If it's a little off, nudge it and try again. You can try this out on scrap material until you get comfortable, then do it for real. You might be able to get good results with the graphic still taped to the laser. However, to make sure I had a nice etch, I very carefully removed the graphic holding the material down firmly with one hand, so I didn't disturb the positioning. Then, I did a the final run.

The speaker and microphone bezels were 1/8 inch transparent acrylic from TAP Plastics. The speaker was "Transparent Dark Yellow" and the microphone was "Transparent Fluorescent Green".  These were going to be back-lit with LEDs. You also need to cut some diffuser material in the shape of the speaker and layer that on the back of the Yellow material with super glue. I used a TAP Plastics product - Smooth Matte Acrylic. That's only available in-store and you only need a small amount. You may be able to improvise this with card stock or other white paper. You want the diffuser in the shape of the speaker if you want to use vintage-looking speaker grill cloth, and have it show through the holes in the speaker bezel. 

The vintage-look speaker grill cloth is expensive. The Parts Express material I sourced is about $17 USD/yard and the project only requires a tiny amount, about an inch in diameter. You could get this on ebay, but looks like similar products are only sold by the yard. To me, it was worth it - helps make the "old time" look. Once cut, the grill cloth was just press-fit into the speaker hole, but you might want to hot glue it in place. 

TIP: For back-lit or side-lit objects, etch the back of the material. You get better lighting results this way. That means if you have any object with a left/right orientation, like text or the "M" logo on the speaker bezel, you need to mirror it. When flipped around, the etch will appear correct. 

Glue the speaker and microphone bezels in place with super glue. Try to keep the super glue only on the edges of the acrylic. Super glue will cloud acrylic - causing those nice, newly-etched lines to disappear!

Finally, remove the hanging loop from one of the "Bead Landing" bezels - they cut easily with a Dremel-style rotary tool. Use super glue to fasten the bezel down as the back "Motorola badge". The logo is included in the github downloads. Just print it out and it should press-fit (or you can glue it) into the bezel.

Mounting the on/off switch in the second back cover hole will be covered later.



DieselPunk Cellphone - Walnut Case, Powered by Adafruit Feather Fona: Test Components

For a good set of start-up instructions, check out Adafruit's Feather Fona tutorial.

First, get things working on a breadboard:
  • Solder straight header pins to the Feather Fona
    • All pins except: RST and 3V
      • To get the right fit in the final build, these two pins won't be aligned with solder pads on the Perma-proto
  • Solder a length of 22AWG at least 3 in. long to 3V
    • Preferably "red" for +V!
    • You can make it longer if you want, it will be cut later and soldered to the Smalls Perma-proto board +V rail
  • You can also solder a wire to the RST if you want to use it for manually resetting. I did not.
  • Solder straight header pins to the SSD1306 OLED
  • Attach 7 female to male jumper wires to the 3x4 dialpad
    • With the back of the dialpad facing towards you, from left-to-right, the first pin is not used (NC)
    • The next four pins from left-to-right are the rows
    • The next three pins, after that, are the columns
  • Solder black-red-green 22AWG solid wire to the NeoPixel Jewel GND/+V/IN pads
    • Insert wires through the back of the Jewel (LEDs down) and solder the connections on the front of the Jewel (LEDs up)
    • These should be at least 3 in. long, can be longer, will be cut to fit in final build
  • Connect the sticker-style antenna plug to its tiny jack
    • I found this extremely challenging; I smashed one jack and had to solder the antenna on
    • Try to position the antenna wire plug flat over the jack and "gently but firmly" press down
    • Test by twisting the antenna - when attached properly it will move, but give some resistance
  • Place the components on the Breadboard and wire them according to the diagram below with jumper wire


Remember that a LiPo battery is required for running the Fona. Make sure (moving things around, I forgot a few times...) you have a SIM card properly installed. It slides in: push to seat, push to remove. 

Since the Speaker and Microphone wire leads are cut-to-fit, I don't recommend wiring them up until the final build. 

Download the Feather Fona sketch here. For setting up the Arduino IDE for the Feather, refer to Adafruit's tutorial.

With the DieselPunk Cellphone sketch uploaded to the Feather Fona, you should be able to:

  • See the LED Sequins and NeoPixel Jewel should light up
    • Don't stare at the LEDs too long - my vision is just starting to return...
    • The LED Sequins are tied to GND/+V, so they're always on
  • See text on the OLED screen
    • Date and Time may not show correctly - see notes below
    • Signal Strength and Battery Level should show
  • Test the dial pad
    • Flashlight should work by pressing "*" - hella bright!
    • Press "1" for Dialing: enter some numbers, press "#" to go back

Troubleshoot if these things are not working. Refer to the sketch code to make sure you have the jumper wires placed correctly.

Time and date is available from the carrier network. To get the time and date working, you need to save some settings to the SIM800 module on the Feather Fona (FF) with Serial commands. A version of the Adafruit example sketch Fona Test is included in the downloads. This is the standard Fona Test with changes for pins on the FF. You can enter serial commands with the "S" option after you load this sketch and start the serial monitor in the Arduino IDE. In my environment (Ubuntu 16.04LTS), I found it a little tricky to get the Serial Monitor running with the FF, sometimes taking two or three tries. I found it connected better immediately after a sketch upload finished - maybe a reset and connect, waiting for the red light to stop flashing first, works as well.

The following worked on the T-Mobile network. The TING network was not tested. For reference, see the forum post on this. From poster tonyz, here are the steps to set the date/time from the network:

  • By default the Local TImestamp mode of my SIM800 was disabled. You can check this with:
    • AT+CLTS?
  • You will get this if it is disabled:
    • +CLTS: 0
  • To enable it enter this:
    • AT+CLTS=1
  • CLTS=1 must be saved in the SIM800's nonvolatile memory so it will be enabled when the module powers up and registers on the network.Since this setting is not automatically saved in nonvolatile memory, you must save it with:
    • AT&W      (This saves all writeable settings)
  • Now restart your SIM800 (restart your FF)
  • After it registers AT+CCLK? will respond with the correct time, as in my case:
    • +CCLK: "14/08/08,02:25:43-16"

The code for the DieselPunk Cellphone is formatting the date and time to US-style: MM/DD/YYYY, 12-hour time. Change this for your location if applicable.

The final build is layered - one thing on top of another. Work slowly and test frequently as you assemble! Once you start stacking things up, it will be difficult or impossible to fix a problem lower down in the stack.

DieselPunk Cellphone - Walnut Case, Powered by Adafruit Feather Fona:Software


Software

The excellent Adafruit SSD1306/Adafruit_GFX libraries would normally be my go-to display tools: fast and easy-to-use. These libraries can use significant amounts of memory, for good reasons. With so much going on, this project needed to reduce SRAM and program memory. Instead of the Adafruit libs, the project uses u8glib, which thrifty on both kinds of memory. There's a great explanation of the basics of using this lib at Henry's Bench.

Unfortunately, u8glib is no longer being developed by the maintainer. A new u8g2 lib is available. However, after making necessary changes to use the u8g2 lib, the DieselPunk Cellphone sketch uses too much program memory and will not compile. Therefore, I'm only supplying code to work with the u8glib. 

A brief tour of the the code - the sketch does the following:
  • Sends displays to the SSD1306 using the u8glib library
    • Splash Screen first up
  • Connects to the carrier network
  • Controls the NeoPixel Jewel
    • ...and the flashlight function
  • Dials, Answers and Hang Up calls
    • Pick from Favorite numbers you specify
  • Plays FM Radio stations from a list you supply
Splash Screen
Create a bitmap with Inkscape/GIMP or your favorite drawing program. Export to a *.png format.
  • Open your picture in GIMP
  • Click Colors/Invert for the SD1306, if needed
    • white was "pixel on" for me
  • Image/Scale Image to your screen dimensions. 
    • Mine worked well at  80W x 64H pixels
  • Image/Mode/Indexed, black & white (1-bit) palette
  • Export as XBM (.xbm extension)
  • Open the XBM file in a text editor, such as gedit in Linux or notepad in Windows.
  • Copy contents of xbm file into your Arduino sketch - load into PROGMEM.
  • Adjust the starting cursor position in your software's bitmap display to center the bitmap on screen.
Code
In the following code block, there isn't much error checking going on. The code will hang with "Looking for Service" displayed from the msgNetService call,  if it can't connect. Takes 10-20 seconds to connect on T-Mobile, for me.
 u8g.firstPage();   
  do {  
   msgConnect();  
  } while( u8g.nextPage() );  
   delay(2000);  
  // Check FONA is there  
  fonaSS.begin(9600); // if you're using software serial  
  // See if the FONA is responding  
  if (! fona.begin(fonaSS)) {  
   Serial.println(F("Couldn't find FONA :("));  
   while (1);  // <=== Will hang here if Fona unresponsive
  }  
  // Check we can connect to the network  
  while (fona.getNetworkStatus() != 1) {  //  <=== Will hang here if no network!
   u8g.firstPage();   
  do {  
   msgNetService();  
  } while( u8g.nextPage() );  
  }  
   u8g.firstPage();   
  do {  
   msgNetConnect();  
  } while( u8g.nextPage() );  
   delay(2000);  

When connected,  "Connected to Network!" text will display for two seconds from msgNetConnect function. After that, the main menu will display. 

Most of the time the sketch will just process the loop/main menu display, waiting for a keypress. Updated network signal strength [getRSSI] and battery level [getBattery], along with time and date, will update every 10 seconds. You may see the screen flicker or update slowly if the level updates coincide with screen refresh.
 void loop()   
 {   
   // don't hog the processor!  
   if (millis() - lastDisplay > 10000)  
   {  
   dbi = getRSSI(i_8);  
   vbat = getBattery(i_16);  
   cellDate();  
   cellTime();  
   lastDisplay = millis();  
   }  
   u8g.firstPage();   
  do {  
   dispMenu(dbi, vbat);  
   keyPress();   
  } while( u8g.nextPage() );  
 }  
When a keypress event does happen, the key will trigger one of the following actions:

  • Flashlight function ('*' from main menu) toggles all LEDs on  the Jewel full power/off; off is still 3 middle LEDs on, backlighting the speaker bezel
  • Answer incoming call ('#' from main menu)
  • Enter a number to Dial from the keypad (menu choice '1')
  • Select a stored Favorite to Dial (menu choice '2')
  • Select an FM radio station (menu choice '3') to play

 void keyPress()  
 {  
  char key = keypad.getKey();  
  // NeoPixel Flashlight  
  if (key == '*')  
  { flashlight_on = !flashlight_on;  
   flashlight();   
   return;  
   }  
   // Answer an incoming call  
  if (key == '#')  
  { answerPhone();  
   return;  
   }  
 // convert a single character to int  
  int ikey = key - '0';  
  switch (ikey) {  
   case 1:  
    callEntry();  
    break;  
   case 2:  
    callFavorites();  
    break;  
   case 3:  
    callFMfavs();  
    break;   
   default:   
    // if nothing else matches, do the default  
    // default is optional  
   break;  
  }  
 }  

The functions called from the menu are basically just displays wrapped in 'while' loops. The loops only exit on a specified appropriate keypress, usually '*' ("Do it!") or '#' ("Cancel/Go Back/Hang Up!"). They'll remain in that code loop until the proper key is pressed. There are on-screen cues to indicate what the available keypress values are.

Here's a code snippet from the Dial function, callEntry:
 while ((key != '*') and (key != '#'))  
   {  
   key = keypad.getKey();  
   if (key)  
   {  
    phoneNumber[i] = key;  
    i++;  
    u8g.firstPage();   
    do {  
     callEntryDisplay(phoneNumber);   
    } while( u8g.nextPage() );  
   }  
   }  





DieselPunk Cellphone - Walnut Case, Powered by Adafruit Feather Fona: Build, Part One

Next, we'll start on the final build.

At this point, you should have the following completed:
  • Wooden case is sanded with threaded inserts glued
  • Speaker and diffuser bezels,  plus microphone bezel installed
  • Back bezel (Motorola badge) glued in
  • FF working with dialpad, OLED, NeoPixel Jewel and LED sequins
There's one tricky thing you need to do before proceeding. The dialpad comes with straight header pins. You have to desolder those so the case will have enough room to close. It's not as hard as it sounds...



Remove all six tiny screws on the back of the dialpad. Set the screws aside in a safe place, where they won't roll around. Put the face of the dialpad aside where it won't be jostled - it's tedious to get back together once the keys become loose. (Hmn. I wonder how he knew that...)

Work on the pins one at a time. Snip each one from the back as you proceed. Ready the solder sucker by pressing its plunger down. Add a tiny bit of solder to your hot soldering iron and apply the tip to the soldered joint. When the solder flows, press the release button on the solder sucker to vacuum up the solder.



Then, grab the pin from underneath with a needle-nose pliers. Clean your soldering iron and re-apply a tiny bit of solder to the tip. Apply heat again to the remaining solder on the board and pull the pin out. If you're lucky, you get a nice, clean hole. If not, apply solder wick and heat to clean it up. 



I soldered back in right-angle header pins and that did help free up vertical space. The downside was that it used much-needed horizontal space. I'd recommend, instead of right-angle headers, solder jumper wires to the dialpad solder points. That means you'll need to plan on soldering the other end of the wires to the perma-proto board at some point. This will be a little bit more awkward in assembly but use much less space.

Once you have the dialpad reassembled, it's time to glue it to the case. Mount the dialpad in the case at the depth you want it, held in by mounting putty (tak). I wanted it a little recessed, but flush with the outside case is nice, also. I applied plain old hot glue - sets up fast and is strong enough. Hot glue is also somewhat forgiving. You can remove it with a heat gun or isopropyl alcohol if you need to. 

While you've got your glue gun heated up, glue in the OLED. Align the SSD1306 OLED in the small cut-out in the top case. Get it centered and hold it down with tak. Drop some glue at the four corners, let cool. 

To add the speaker grill cloth, take a coin or round object about 1inch in diameter and trace out a circle with a fine marking pen. Cut outside the circle and tuck it in behind the speaker bezel and just under the lip of the OLED. Mine held in place just by friction-fit, but you may want to had a couple of drops of hot glue to secure it.

Your build so far should look something like this:




DieselPunk Cellphone - Walnut Case, Powered by Adafruit Feather Fona: Build, Part Two

The final build is layered - one thing on top of another. Work slowly and check frequently as you assemble! Once you start stacking things up, it will be difficult or impossible to fix a problem lower down in the stack.

First, let's take a quick look at how the FF aligns on the perma proto (pp) board with the SSD1306 OLED. The Smalls Perma Proto board connected holes are numbered 1-15 across its top.

When the FF is properly aligned on the perma proto (pp), the FF pin 2 will be at pp (perma proto) 14. PP 5 will then be at FF USB as in this photo:



We have to reroute some of the OLED connections to avoid using Pin 9 on the FF. That's the pin  used as the FONA RXD (data out from AVR to module). And, it's smack-dab in the center of the pin layout where the OLED connects. GND and +V also have to be rerouted on the perma proto board. 


How do we reroute on the perma proto board? Well, Lady Ada thought of that. You cut the traces on the back of the board, then reroute with jumper wires.

Notice, in the photo above, that the OLED pins occupy the top row of the perma proto board. The third row down is where the Feather Fona pins are soldered to the perma proto board. To jumper around the FF pins, cut traces between the second and third row with a hobby knifeWith a mulitmeter/continuity checker, make sure that the holes with cut traces are not connected. And that you have not cut traces by accident that should be connected.

Then, route jumper wires from the second row to its desired connection. The OLED connections that have to be rerouted are: GND, +V, DC, CLK and DATA. Do Not Cut traces, for the  OLED pins CS and RST. Those will connect directly to Feather Fona pins 11 and 10, respectively. 

When you get done rerouting the pins with jumper wires, your board should look like this:


Next, we'll assemble the LED Sequins. These are very small, and by themselves are hard to mount as backlights for the tiny microphone bezel. To make the LED Sequins easier to handle, cut a chunk of a second perma proto board with a Dremel or similar, with holes connected together in a 4x4 layout. Place the two Sequins on each end of the piece, making sure that +V is trace-connected. Likewise for GND. You can use 22AWG solid to solder these on, like so:


















Trim any excess wire leftover from mounting. Place the LED Sequins in the microphone cut-out and measure out a length (black and red) of 26 AWG solid, with some slack, to reach the bottom side of the perma proto at the GND/+V rails. When you're happy with that, solder the Sequin mount to the perma proto. It's a good idea to check these light up by applying power to the rails. You should be able to do this by just bending solid GND/+V wires into the rail holes and applying voltage. Don't glue the Sequins into the microphone bezel yet - we have to install the microphone before that, in a later step.

Finally, test mount the Jewel in the speaker bezel. Place the perma-proto on the OLED pins, aligning pp pin 5 with GND on the OLED. Measure and cut the wires for the Jewel so it just reaches the speaker bezel, with a little slack, and allow for stripping the wires for soldering. When good, solder the Jewel leads to the bottom of the perma proto, for GND/+V and FF pin 2/pp pin 14. 





DieselPunk Cellphone - Walnut Case, Powered by Adafruit Feather Fona: Build, Part Three

Getting close! A few things before final soldering of the Feather Fona on the perma proto:

  • Solder keypad jumper wires 
  • Add an FM antenna 
  • Solder speaker and microphone

Soldering for the perma proto


Measure and cut the jumper wires to attach the keyboard to the perma proto. Solder these on through the top of the perma proto, on the bottom row of soldering holes. Keep them as flat as you can.


Your perma proto board should look something like this photo (only without the header pins):




Soldering for Feather Fona
If you want to use the FM radio option, you need to solder an antenna on the bottom of the Feather Fona. This can be as simple as a piece of 22AWG solid, a little over 3 feet long. 



Tin the pad with solder first, as well as the stripped wire end of the antenna. After soldering, carefully bend the wire to fit into the sides of the top of the DieselPunk Cellphone case. You just want to prepare coiling them up, at this point. Take care not to pull on the solder joint for the antenna. 

Apparently, I'm the "Angel of Death" for small-guage stranded wires. I broke the wires off the speaker itself twice and once off a Feather Fona's speaker connections. After that experience, I didn't want to mess with these tiny wires. I desoldered the supplied wires from an unused speaker, adding 26AWG solid wire. Place the FF on the perma proto and measure out about how long you need to mount the speaker behind the speaker bezel. Solder the speaker +/- connections by feeding the wire through the top holes, applying solder on the bottom of the FF.

Measure out some lengths of black/red (GND/+V) 26 AWG solid, enough to let the microphone reach the mic bezel and be soldered through the top of the Feather Fona holes, like the speaker. Give yourself some slack for positioning the mic. Strip & tin the mic leads and solder-splice them onto the 26AWG leads. It's a good idea to add heat-shrink to the joint for insulation and strain relief. Solder the mic onto the Feather Fona. 

Remember that (red) 22AWG solid wire you soldered into the 3V pad, in an earlier step? Now, measure and strip/cut the wire so it can be soldered into the pp +V rail, underneath where the Feather Fona will seat passing the wire through the top of the perma proto and soldering on the bottom. Once more, make sure the Feather Fona is aligned properly on the perma proto board - USB pin at pp pin 5, FF pin 2 at pp 14. Check to make sure the red wire is in the +V rail (Why does he keep saying stuff like that?). Things going wrong are hard to fix after this point. Solder the 3V lead in place. 

At this point, you can press-fit the FM antenna around the sides of the case.