The events described in this article take place in July, when I spent some of the best days of my life so far as a summer intern based at Mountain View, CA.
My internship was coming to a close. I wanted to have a namecard to give out to the new connections I made while I was there – and with a little more than two weeks to go then before winding up, I had to make it fast. Having seen a lot of interesting projects that make business/name cards out of printed circuit boards, I decided to do my take on the concept and create a printed circuit namecard for myself. This article describes the thoughts behind the design and what I learned in the process. It was fun nonetheless. Before continuing over to the rest of the article, here’s what the finished card looks like:
The dream phase
“My card would have a small multi-colored LED that would glow whenever someone would hold it in their hands. It would contain my contact information as a QR code and on the back would be whitespace where I can leave someone a handwritten note”.
Which color would it be? The soldermask colors of choice were – OSHPark purple, blue, black and white. Had recently seen a board with a matte black soldermask and liked the feel of it so I was interested in trying it out too.
The card designs I had seen placed all the text on the silkscreen, but maybe putting some part of the text as exposed copper would add more contrast? The effect would look more dramatic when the board gets gold plated (ENIG) vs the usual solder finish (HASL), also the boards would cost more as a result.
Business card size is 3.5″x2″ ( 89x51mm ). Mine’s 89x50mm to fit a 10cmx5cm bounding box for standard fabrication size.
Mock-up of the card was done in Inkscape. I generated a QR code for myself as a SVG file from here
The QR code is in vCard format, so scanning it reveals my contact details which can be straightaway saved on your phone. Also it was at this point that the fonts and font sizes were frozen. Once it looked good to me, I exported different sections of the file in PNG format, which I would later convert to footprint using KiCAD’s handy utility and position in the board layout as any other component.
For choosing the right microcontroller, there were four requirements – low power, 3 PWM channels, touch sensing and low price. Wanted to use the AVRs initially for ease of use, familiarity (the Arduino framework) but they were roughly around a dollar or more on DigiKey/Mouser. The PICs seemed to fit the bill though in just about half a dollar – selected the PIC12LF1572 microcontroller – that sounded good enough. Also, my first time using a PIC microcontroller – a new platform to learn!
The battery? CR2032s are pretty standard, and also have the highest possible mAh. The next smaller one with a comparable mAh was the CR1632. I decided to go with the CR1632, though next time I might consider a CR1220.
I needed a PIC programmer, found a project on Hackaday.io which meant I could repurpose one of my Arduino boards to do the programming – this project actually gave me faith that I could somehow program the PICs while still being on a tight deadline (thanks to hackaday.io user jaromir.sukuba for maintaining this!) and I decided to give it a shot.
Submitted a Mouser order for all the parts and it all arrived in 3-4 days. The BOM cost was ~$60 for enough to build 40 of these.
The Board Layout
As this was a relatively low complexity design, it was completed in a few hours on an extended night shift.
The key detail here was my name – unlike the other text I put it on the copper layer so that it would get gold plated . To ensure that the soldermask opened up around it, I added a 0.2mm “stroke” around the vector graphic corresponding to my name in Inkscape and put it on the F.Mask layer so that the text is exposed through the mask and would eventually get gold plated. Here you can see what I mean [red = top copper, magenta = top soldermask, green = bottom copper]:
Here’s a shot of the completed layout:
I used Elecrow for this order – they offered matte black soldermask option without a custom quote. I had used them once before and have been satisfied with the quality. One more good thing about them is that they don’t add production codes on the silkscreen of your boards [which can be so annoying on a board design like this] and also send you a picture of the finished board before they dispatch your order [which makes you even more excited to receive the boards once you’ve seen them made as you wanted them to be]. The quality was excellent. From silkscreen to plating and all the vias were properly covered.
I had selected DHL Shenzhen as the shipping method which is supposed to be faster than DHL Hong Kong, the price difference being roughly $5. For a total of 40 boards with matte black soldermask and ENIG finish, paid $100 total. Order was submitted on a Wednesday and the boards were delivered next Wednesday. The boards looked beautiful, just as I had designed them to be 🙂 .
There aren’t a lot of components here, this should have been pretty standard stuff but I had lead-free solder paste and that was a big pain to work with a toothpick, without a stencil. I should have probably ordered one along with my boards. And the last week internship rush meant that I couldn’t have enough time – had to choose between doing the firmware or building all 40 on a night stretch – I got a few assembled and that was it.
This was the the first time I was using a PIC microcontroller. Moving to a new microcontroller has its own surprises – it took me an hour to realize that the PWM generator won’t update its duty cycle automatically on changing contents in the duty cycle register and a bit has to be set in another register. The MPLAB IDE was mostly okay-ish, although I’d try and see if I can get it working with the SDCC compiler for future firmware revisions.
The MPLAB code configurator provided an easy way to implement the touch sensing functionality here as it had an mTouch library implementation and I was able to get it working just in time. [jaromir]’s PIC programming software worked well and I was able to quickly iterate and build v0.1 .
The chip being a LF series has pretty low standby current but there wasn’t enough time to bake that functionality in. I chose to run the MCU at a lower clock frequency instead (500kHz) to get active currents of the order of 0.3mA. Battery life is two weeks after which the LED dims out.
I was very satisfied with the finished result. Matte black with a gold finish looks beautiful and to me, was worth it. Also there was excellent service from Elecrow which I would whole-heartedly recommend based on my experience with them. [jaromir]’s PIC programmer allowed me to use one of my Arduino boards to program the PICs, it helped me a lot during this project. Thanks a lot!
With a working v0.1, I was able to build a few and give away. I’ve given away some blank boards too, they look pretty in their own right.
I want to rework the firmware, most likely with SDCC and add some more fade effects on the tri-color LED. And also implement proper low power support (likely by using a WDT to sleep every second and wake up and check for a touch). In the next PCB rev, I would:
- Make the boards 0.8mm thick. Or even 0.6mm.
- Make the QR code larger for better readability and push it to the back side of the PCB – it’s currently all white silkscreen
- Add a little more clearance between the touch sensor pad and the ground plane all around it. It probably decreases the touch sensitivity a bit.
- Use a slot in the board and add a split battery holder leading to a lower Z-height.
- Make a pogo pin set and a 3D printed jig to hold the programming header in place. It’s awkward to hold and press the headers everytime something needs to be flashed.
I’m not posting the board design files yet. However I might post the firmware after adding more effects.
That’s all for this one. If we ever meet in person, ask me to show you and I might even give you one of these.
Here’s an animated GIF: