As of this week the hardware design phase for this project is complete (mostly). Specifically, I have completed schematic capture, bill of materials, and procurement for my first revision. The PCB design is as complete as I can get it at this point with routes/placement defined for all components other than the battery holder. Trouble is I’m blocked on just the battery holder that I ordered from China that I don’t have a datasheet for and need to measure my own footprints when they come in. Everything else on the PCB is done down to the silk screen and final layout. I can very well send off the gerbers today if it weren’t for these two pesky pads to land the battery holder onto.
As previous experience dictates hardware design is a lengthy process with numerous steps and knowledge required. However, the development time pales in comparison to the making the entire system work. It’s easy to make something “work” on paper but to make it work in practice is something else entirely and the only thing one can do to help that along is to design the hardware properly on the first try. I managed to work out the entire schematic over 4th of July weekend pretty quickly thanks to my previous due diligence selecting the major components and researching the supporting circuitry. From other projects I’ve learned a number of habits to be efficient during hardware design.
- Save all datasheets and app notes as you’re doing research. Archive important web pages because you never know when they’ll go down. Prune as necessary but never rely on the internet to archive for you.
- Keep track of the bill of material(BOM) as you place parts on the schematic. When I place a part on the schematic I want to be sure of what I’m placing. I select the exact package, source a vendor, cost the part, and update the BOM accordingly whenever I place a part. Do this for every single part down to the lowly ceramic capacitor and you’ll catch most show stoppers and save you time down the road.
- Always be conscious of the likelihood you will make mistakes. Plan for a revision and include as many test fixtures as possible too make hardware debug easier. Order at least twice as many components as necessary and as soon as you complete the schematic (no sooner).
- Be wary of your resources and only choose components you know you can work with. In my case this means things like no 0402 packages, nothing super high frequency, or prohibitively expensive toolchains.
- Never stop double checking your schematic. Again, mistakes are likely and in hardware they tend to be costly/frustrating. Double checking minimizes this.
For this project I decided to do all my design using EAGLE instead of Altium designer which I’m used to. This was mostly to pull me out of my comfort zone and be more of a generalist when it comes to PCB software. I went with EAGLE because of its popularity particularly among hobbyists which undoubtedly has to do with the free LITE version. Long story short, I didn’t like EAGLE too much at first because it wasn’t what I’m used to (hence leaving my comfort zone). It lacked a lot of nice features of Altium most notably DRC based routing(!!!), footprint wizards, and all the great hotkeys. In EAGLE’s defense, the core functionality is there and if I wanted to design a sophisticated PCB using EAGLE I probably could at a fraction of the cost. One thing I did really like about EAGLE’s status in the hobbyist community was the availability of accurate footprints for nearly every part I had. As I stand now though, I’m fairly comfortable with using EAGLE for hobbyist projects like this and there’s nothing horrible about the software if you know your way around.
As you can see from the image of the PCB above I finalized the button layout and mapped each of the 49 buttons in my grid to some function. It was probably at that moment where I realized how much development effort there will be in the firmware alone. I naively assumed that it would be relatively straightforward, but the functionality I’ve laid out in the buttons is going to be a whole lot more than I anticipated. Everytime I think about it and how my Casio FX calculator behaves there’s a whole lot to keep track of in a calculator and I have rather constrained memory running off the PIC. It’ll be interesting to see if I can get all the functionality implemented in the calculator eventually.
Anyway, I can’t wait to get the PCB back from fabrication since this will actually be the first time I designed a PCB for a personal project completely on my own. I have to note, am thoroughly impressed by the options available to the hobbyist designer in terms of PCB manufacturers. Since last I checked the going price for PCB’s now is ~$30 for 10x 10cmx10cm boards and it’s even cheaper if you go with 5cm boards. Not only that but we have a number of shops offering the same deal as evidenced by PCB Shopper. I decided to go with Itead Studio because they were cheap and offered colored solder mask for only $5. Honestly though, they all seem to be on the same level of price/quality/turnover. Anyway, there’s just something so satisfying about seeing the finished product of a hardware design and I just want to have it in my hands now.