calc.pw was developed with the help of a so-called microcontroller. The used Arduino platform is an Open Source hardware platform. All sources including the API and the hardware specifications are available online. The advantages of this platform are its prevalence in the market, the extensive documentation, the availability of additional hardware and its easy availability here in Germany.
The project evolved in several steps. In the first step (revision A) only the program logic was implemented. Therefore this revision can be built with all regular Arduino boards. The communication with the hardware is done through its serial interface. The master password and the information are sent through it and the generated password is received through it as well.
In the second step (revision B) the communication between the Arduino and the computer was changed. Instead of using a serial interface the input into the Arduino is now performed through a USB keyboard. To accomplish this the USB-Host-Shield from Circuits@Home is used. You should really consider to use this shield as the original library is developed for it. The shield can for example be ordered at lipoly.de. Additionally the output of calc.pw to the computer is now performed through a keyboard emulation. To do this the Arduino Leonardo has to be used as it provides such a functionality.
Finally a LCD was introduced in the third step (revision C) for a more advanced communication with the user. This leads to a much easier usage as you can tell from reading the display which mode calc.pw currently is in. Below you can see a build schema of the revision C. Unfortunately the USB-Host-Shield could not be displayed in this schema:
The following components are necessary to build calc.pw:
1x Arduino Leonardo
1x Liquid Crystal Display
1x Light-Emitting Diode (yellow)
1x Light-Emitting Diode (green)
1x Light-Emitting Diode (red)
1x Potentiometer (10k ohm)
4x Resistor (220 ohm)
The Arduino Leonardo is the heart of the hardware as it performs the actual program logic. Its keyboard emulation functionality acts as the output method to the computer. The USB-Host-Shield is used to connect the USB keyboard to the Arduino so that it can be used as an input device. The pushbutton is used as a reset button through which the status of calc.pw can be overwritten. The LEDs are used as a simplified status display. The LCD is used as a more advanced status display. The potentiometer is used to regulate the contrast of the LCD and the resistors are used for the LEDs and the LED of the display.
If calc.pw behaves in an unusual way this may be because your keyboard draws too much current. Connect calc.pw to a power outlet to provide it with more current. The USB port of a computer does not provide more than 500mA.