I have some experience writing code for the PIC18F family from university. I wanted to brush off those skills and make try to make a wearable.
With a processor picked out, I had to think of something interesting to make. I haven't laid out a PCB in a hot minute so this was my chance to give KiCAD (K-eye-CAD) a try. My choice was a basic 16 LED blinky badge running off of a 2032 coin cell.
Below is the stipulations, road blocks, and tricks I had to do to bend KiCAD to my will.
Any and all suggestions on how to improve this project are welcome.
Massive delays. I did not route with forethought, meaning that I2C pins have been allocated already. There are options that are equally bad, (1) Reroute everything and change the animation programming, or (2) bit bang I2C. Another set back is that I have to redo everything to work in Kicad 5.
Inspiration struck me at my day job and I have some new ideas for this project that I want to implement. Since I last worked on this project I have moved over to KiCAD 5 and MPXLAB 5.20. I am confident the software update did not break anything to my make files and layout, but I still need to verify; always trust but verify. I will be posting changes to the repository, but the next log will come with the next hardware revision which is several weeks away.
I attempted to reduce soldering time by replacing the 16 LED resistors with 4 resistor networks. I modeled the soldering pads off of the part, not the recommended soldering pad size from the manufacturer. This applied to the power switch I added as well as the a button I added to cycle through animations.
I made a mistake and reversed the polarity of the SMD battery clip.
Rev C, had repaired the failings with the resistor networks, the power switch, and the battery clip. I was not able to get the spacing on my button correct in this revision.
Rev C was ready for animation development. I hit one shortcoming with my button, that I am still trying to puzzle through. Due to me not being able to get my button working, I was attempting to cycle through animations based on power up. The logic behind my power up solution was to write to one location what animation to currently do on the EEPROM on the PIC18F45k20 and increment it on power up. There is no support for EEPROM on the PIC18F!!! The project was in the eleventh hour when I was attempting to get the EEPROM to work. I eventual conceded to my poor planning and configured timer 3 to switch between animation after a period of time.
I delivered one assembled and one kitted badge to my friends at the Strawberry Music Festival. They were surprised with the gift and happy with it. Fortunately one of them is a tinker and might be willing to update the badge once I get around to fixing the firmware to be more in line with my original image. At this moment in time, it is good enough to wrap up my documentation and open source the project.
Several hours of soldering and troubleshooting later, I can get the thing to program and blink on my "developer" version of the badge
I forgot a pullup in my initial design, as well as VDD on my pickit header.
Additionally, I soldered on all of my LEDs backwards. Needless to say I was angry and ashamed at myself for that slip up. From now on I will always FTM before assembly.