As I am getting close to graduating with a B.S.E. with an Electrical Concentration I have been thinking a lot lately about getting a job. As I worked to fine tune my resume I started thinking about what I could do to set myself apart and showcase my talents at a career fair or during an interview. I decided that I wanted to make a business card that would be unique and memorable as well as be tangible proof of my talents.
I designed, prototyped, and produced my own business card with a ARM Cortex-M3 processor that acts as a Mass Storage Device in Windows (98 through 7), Linux (Kernels 2.4-3.0), and OSX (>10.4.2).
Primarily I wanted this device to:
- Display my name
- Display my major
- Display my email address
- Interface to a computer as a MSC Device
- Contain my resume
These requirements really put into perspective what my purpose with this device was. If I wanted to and had the time and money I probably could have figured out how to make the device smaller, do all sorts of other things, and hold vast amounts of information but really that was unnecessary for this project.
Software Design Phase:
I must admit, I cheated a little bit with the software. I ordered a LPC1343 dev board from Mouser Electronics, then downloaded the NXP Mass Storage Device example. It was pretty short work to figure out where to include the code for driving the LEDs when the device was being written to or read from. After I had a working software build, I started working on the Hardware Design Phase.
Hardware Design Phase:
To keep the part count low, and to keep costs down, I looked up the olimex dev board schematic and started removing parts that were not needed for my business card. I ended up removing quite a few LEDs, the debug interface, and a push button switch that I deemed unnecessary. I used CADsoft’s Eagle to draw a schematic with just the parts I needed, and sent it off to a few friends to have it looked over.
Below is the final schematic:
While my friends were looking over the schematic (good thing, too, sinceI had missed VDD on pin 8! Thanks Trent!) I started working on board layout. I first had to find libraries and start choosing parts that would fit, be able to be soldered by hand, were in stock, and that proven library footprints were available for. I created a Bill of Material from my schematic (see bottom of post for the excel document), found the parts in stock at mouser, and then grabbed data sheets and got the footprints drafted into Eagle. This is where the Sparkfun eagle library came in really handy, as it had most of the parts I wanted to use already available.
Below is the final board layout. I would like to state that future revisions of this board will have a more high frequency friendly layout to reduce noise and possible failure points.
I ordered all of my parts from Mouser Electronics except for the PCBs, the USB-A headers, and some solder wick. I ordered the USB-A headers and the solder wick from SparkFun Electronics to say thank you for the excellent Eagle Library. I ordered the PCBs from Seeed Studio (which was very inexpensive, but took 4 weeks to come in the mail.)
Hardware Build Phase:
Upon receiving the PCBs (almost a month after ordering them) I took them out and continuity tested a few of them to make sure they were manufactured correctly. I discovered that quite a few vias had been masked over, but thankfully, all of the pads were ok. You will also notice that the font size I used for the part labels was entirely too small (even though it was 2 sizes larger than Seeed Studios recommended size).
I took a trip to the Letourneau University Microcomputer Design lab, and borrowed their reflow heat gun, and soldered on all of the LPC1342 microprocessors, and then took the boards home to solder the rest on with my Hakko FX-888 soldering iron. About 20 hours into the manufacturing processes I had finished all 10 boards. I took out my multimeter, and continuity tested (after reading the datasheet and ensuring this wouldn’t hurt the LPC1342 of course) all of the boards, fixed my mistakes and I was ready to move onto Flashing/Testing the boards.
Since I had used the dev board for my code development, I didn’t have much to do here. I rebuilt my code for the .bin file that the USB firmware loader built into the LPC1342 was expecting, plugged in the business card, copied over the firmware and hit reset. Everything worked the first time.
It is worth mentioning that once the board has been flashed, it cannot be reflashed through USB again.
Here are pictures of the business card after it was soldered up, and was being loaded with my resume for the up-coming career fairs and interviews.
Source Code, Board Files, and Other Downloadables:
I am releasing all of the code that I have written, and all of the designs I have done under GPLv2. Notice that some of the code (as it was written by various third parties) is not able to be licensed under GPLv2.
Also, I am not responsible for anything this code may do to you, for you, or if it burns your house down. Use at your own risk as there is no implied warranty.