Close
0%
0%

Password Typer

...or perhaps the smallest, most portable macro keypad :)

Public Chat
Similar projects worth following
People in my department are complaining about the random-garbage passwords I had KeePass generate to secure our admin account. I've suggested that they get KeePass and learn how to use it (it's useful in plenty of other ways besides generating secure passwords and remembering them for you), but they haven't jumped on it just yet. I then came up with this idea: a small gadget that plugs into a USB port and types in the admin password for you. Since we have more than one, there's more than one button. Basically, you can set it up with up to four strings that it'll spew out on each keypress.

I'm trying to keep it as small as possible, so that it'll be easy to keep with you all the time. The USB plug is part of the PCB, so it adds no height. Metal dome tactile switches add hardly anything to the height. Even with a 3D-printed enclosure (yet to be designed), I'm expecting it to be just a few millimeters thick.

Password Typer

...or perhaps the smallest, most portable macro keypad :)

People in my department are complaining about the random-garbage passwords I had KeePass generate to secure our admin account. I've suggested that they get KeePass and learn how to use it (it's useful in plenty of other ways besides generating secure passwords and remembering them for you), but they haven't jumped on it just yet. I then came up with this idea: a small gadget that plugs into a USB port and types in the admin password for you. Since we have more than one, there's more than one button. Basically, you can set it up with up to four strings that it'll spew out on each keypress.

I'm trying to keep it as small as possible, so that it'll be easy to keep with you all the time. The USB plug is part of the PCB, so it adds no height. Metal dome tactile switches add hardly anything to the height. Even with a 3D-printed enclosure (yet to be designed), I'm expecting it to be just a few millimeters thick.

In addition to showing up on your computer as a USB keyboard, a serial port is provided through which you can configure the device with any terminal program. Set it to 9600 bps 8/N/1, hit Enter to show the help, and set it to type whatever you want it to type. I suppose a point-and-drool configuration tool could also be written to use this interface, but I don't personally have need for such a thing. :)

Technical Details

Board design is in the kicad directory, and pulls in my KiCad library as a submodule. Firmware is in the src directory and is built with PlatformIO, running under VSCodium. The source is easily adaptable to a greater or lesser number of keys.

  • 1 × Microchip ATMEGA32U4-MU QFN-44 AVR microcontroller w/ USB
  • 1 × 16-MHz SMD-3225 crystal
  • 2 × 0.1μF 0603 capacitor
  • 2 × 22pF 0603 capacitor
  • 1 × 1μF 0603 capacitor

View all 8 components

  • Now that some time has passed

    Scott Alfter11/03/2022 at 16:45 0 comments

    This one-piece case design has worked pretty well:

    Print quality on the lettering isn't the best, but I've gotten my printer better dialed in since then.  Most of the case gets printed, then the job pauses so you can drop in the board.  Printing continues to then enclose the board in the case, leaving only the USB plug at the end exposed.  If the bit of plastic under the plug separates (as mine did), you can reattach it with some double-sided tape or superglue.

    We have new people here since the last update, so I might prep a couple of devices for them.  Beyond that, perhaps the remaining boards (I had 10 made, and have used 4 so far) might pop up on Tindie.

  • It works!

    Scott Alfter04/22/2021 at 19:22 0 comments

    The boards arrived a couple of weeks ago from JLCPCB.  I fired off an order to DigiKey for the dome buttons...had those a few days later.  I stuck some buttons onto a board with some tape, and then tried dfu-programmer to see if I might get away with just plugging into a USB port to do the initial setup...no dice.  Good thing I brought the ISP interface out to some pads on the bottom.  The snag there was that just sticking some bits of header onto the business end of a USBasp was insufficient to make good contact.  Looks like I'll need some sort of pogo-pin adapter to program the boards.

    I found this 2x3 pogo-pin adapter that turns out to be perfect for the job.  Orient it properly, push down for good contact, and fire up avrdude.  With the software image, at least a minimal EEPROM image (twenty nulls), and the fuse bits set right, everything fired up.  The serial configuration interface allowed me to paste in some passwords, which would then get sent on pressing the appropriate button.

    I knocked together a case design in OpenSCAD and printed it out...good fit, but 1 mm thickness is probably not quite enough for durability, and I forgot to include a keychain loop.  I've parameterized the case thickness so I can dial it in wherever I need it...will try 2 mm next, but first I need to replace the part-cooler blower on the AM8 in my office, as the one in there now has crapped out.

  • Now in production

    Scott Alfter03/26/2021 at 14:56 0 comments

    10 mostly-assembled boards for $52, shipped.  Used to be you'd spend more than that just on the boards.

    ("Mostly-assembled" because JLCPCB doesn't have the button domes the design uses.  I could've reworked it for smaller ones that they do have, but since they only need to be held in place with some tape, it'll be just as easy to order the right parts from DigiKey and put them on the boards when they arrive.)

  • There's a first time for everything

    Scott Alfter03/22/2021 at 06:27 0 comments

    ...and this might be the first time I farm out assembly instead of getting some quality time with the rework station.  It's not a particularly complex board by any stretch, but perhaps that's the type of board that's better for a first outside-assembly project.  Sending a zipfile of gerbers is nothing new, but passing along the BOM and the parts-placement info for a pick-and-place machine will be something new.

    Still need to panelize the gerbers, though, and the script I use for that is missing its dependencies because KiCad was last built against Python 3.8, not 3.9.  It's rebuilding as I write this...already most of the way done, too.  Throw a Ryzen 7 3800X and 64 GB of RAM at Gentoo and it'll rebuild code in a hurry. :)

View all 4 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates