Yubikey
My own take on a Yubikey using a RP4020 microcontroller!
Created by
acash
Tier 4
21 views
0 followers
Timeline
alexren ⚡🚀
approved Yubikey ago
Tickets awarded: 120 tickets
Tier: 4
Nice job polishing your github repo! Post in #blueprint once its working!
CAN ⚡🚀
submitted Yubikey for review ago
acash
submitted Yubikey for review ago
1Mon
requested changes for Yubikey ago
please include a BOM.csv in your main github repo. it should include part name, price, quantity, etc
acash
submitted Yubikey for review ago
alexren ⚡🚀
requested changes for Yubikey ago
Hey there! You're missing a priced/itemized BOM in your github repo! we currently have no idea what your project will cost!
acash
submitted Yubikey for review ago
Shaurya Bisht
requested changes for Yubikey ago
README needs screenshots of designs schematics pcbs everything, needs more documentation and everything else.
acash
added to the journal ago
Firmware
Adding firmware was a completely new concept to me. I had never coded a microcontroller before, especially in C. But that was why I added the RP4020 in the first place.
This was the one portion of the project where I did have to use tutorials to learn how to program the microcontroller, but learning how to do so was well worth it.
Coding in C was a completely new experience for me, and it is entirely possible that my code is highly buggy, but for a first time, it was quite a fun experience!
CMAKE!! (also first time using CMake)

acash
submitted Yubikey for review ago
acash
added to the journal ago
Design Rule and Design in General
I'm really not good when it comes to either of these things, but when you make a PCB, it's necessary.
My routing skills arent the best either. Because I placed some of the capacitors/resistors farther away from the microcontroller, USB-C receptacle, etc, the routing was quite messy and I also used some unnessary vias.
To be honest, I neglected the thickness of the tracks, which might have caused some issues, but I forgot to fix it, so we are going to have to roll with it. Other than that, there weren't many issues other than the occasional unconnected track or protruding vias.
I tried to design my PCB after that, but as you can expect, my design skills are just not there. Thankfully, I did learn how to convert an image into a footprint so I could add it to my PCB!
(I did forget to add a footprint on the back, my bad!)


acash
added to the journal ago
Creating the PCB
Fortunately for me, this is not my first time making a PCB or using KiCad. I came up with this procedure: make the PCB's shape on the Edge.cuts layer, set the copper layer amount, group each of the parts together based on their connections, then go crazy with the routing.
But I would like to take a moment to mention how much I despise footprints. I didn't have to use them in EasyEDA, so why now? Thankfully, most of the parts I used in this PCB were the same as my old LoRa Puck project, so I was able to take most of the footprints from there. But I still had to find the footprints for the newer components, which sucked.
The routing was mostly fun, except for when I realized that I had flipped the RP4020 Microcontroller the wrong way, making the routing much more complicated than it needed to be, but it's functional (I think).
Moral of the story: Triple-check your layout to make sure it's as simple as it can possibly be.
I also added 4 copper layers to make the power and ground routing easier (realistically, I only needed 2, but 4 ehhh, why not).


acash
added to the journal ago
Creating the Schematic
It's the beginning of virtually every PCB Project, other than coming up with the ideas, of course. The Schematic itself is not very complicated, but this is the first PCB Project I made myself, without using any tutorials.
To make the Schematic, I had to first come up with the list of parts I would need (BOM). I wanted the YubiKey to be programmable, so I used a microcontroller that I was comfortable with using - the RP4020, a USB-C Receptacle that I used in a past project, switches, and other new components that I was not familiar with.
Tracing the wires did not take much time, but it took a significant amount of time to look at each part's datasheet to understand what each pin does and how I would wire them.
Choosing the parts for the yubikey was a very important part of making the schematic. I kept the usb-c receptacle as I am familiar with it and it would be needed to connect to the microcontroller. Speaking of which, the microcontroller was added so that I could program the yubikey using some firmware (to store the passwords). The other components help with user compatibility and power regulation.

acash
started Yubikey ago