Password Manager
This is the project designed and created by Schuyler and Rebecca.
1. Intro
The physical password manager is a device that lets the user input their passwords with the turn of a key. It uses a rotary encoder, a key switch, and the Keyboard library to keep track of passwords and type them in whenever triggered. Users turn the dial to select the appropriate password, and then turn the key in the lock to submit the password.
Take a look at the deliverable:
2. Ideation
What originally drew us to the idea for this project was a way of using interesting switches, or of using switches for interesting purposes other than what they are normally intended for. When we thought of potential interactions to model for, simple things like turning on and off one’s computer or entering passwords, which people do all the time, were ones we were instinctively drawn to. We realized that two of the most interesting of the switches we looked at, the pull cord and the key switch, corresponded really well to these actions of unlocking and turning off and on. After some deliberation, we decided on the idea of using the key switch to literally unlock accounts by inputting passwords.
We found a perfect key switch from Amazon and also used a rotary encoder from Amazon
3. Physical computing and code
The rotary encoder is hooked up to A1, D2 and D3 of the Arduino, while the key switch (which is a simple 2 position switch) is hooked up to D5 of the Arduino (see the schematic below).
The .ino file uses the keyboard and encoder libraries. Turning the rotary encoder to different icons will change the password selected, and twisting the key in the key switch will type in and enter the selected password.
We used Keyboard.h to realize most of the function. There are several requirements for the design.
- Step 1: Rotate the rotary encoder to pinpoint the corresponding password in password array.
- Step 2: Use Keyboard.h to enter the passwords like a human agent
- Step 3: Turn the key switch to HIGH and trigger the "ENTER" on the keyboard by Keyboard.h.
Soon I realized that there is a necessary part I missed. The computer need to delete the wrong input before it inputs the new passwords if the user accidentally chooses the wrong one. So we should add a clear function between step 2 and step 1.
- Step 1: Rotate the rotary encoder to pinpoint the corresponding password in password array.
- Step 2: Use Keyboard.h to enter the passwords like a human agent
- [If password is wrong, execute and go back to step 1]: Press "DELETE" to clear the previews input.
- Step 3: Turn the key switch to HIGH and trigger the "ENTER" on the keyboard by Keyboard.h.
Code can be found on GitHub at HERE.
4. Design and Fabrication
For fabrication, we did not have access to the materials or machines we originally intended, so instead we modeled the container in Vectorworks and made a prototype out of cardboard. The real box was planned to be made out of a softer wood.
The model in Vectorworks is 5x6 inches with a height of 4 inches. The outer layer of the box is ⅛ of an inch thick, then there is a lip for the control panel to insert into. The lip is ⅛ of an inch below the height of the box, and is 0.308 inches on all sides. The rest of the box is empty. The bottom of the box is 0.308 inches thick.
The interior of the box measures 3.594 inches by 4.188 inches by 5 ¼ inches.
On the front of the box, located in the center, is a design of a lock with a hole in the center (hole is 0.694 inches), extruded 0.605 inches from the face of the box. The lock itself is 2.15 inches high and 1 ¼ inches across.
While the physical box will use company logos to represent which password is currently selected, in Vectorworks we use text for quicker prototyping.
The control panel is 4 ¾ by 5 ¾ and ⅛ inches thick. In the exact center is a 6mm hole (0.236 inches) for the panel mount rotary encoder. The knob on the rotary controller is 1.414 inches diameter.
To attach the control panel to the box, we planned to use threaded screws put into the wood. Any size would work, but we planned to use 4 ½,
Appendix
Idea initiative: Schuyler (mainly)
Physical computing part: Rebecca
Modeling and design: Schuyler
Fabrication: Rebecca.
Documentation: Schuyler (mainly) & Rebecca.