Reflection
During my journey at BlueStamp, I learned many important skills. I learned the basics of computer programming, electrical engineering, and how to self-teach. I now feel that I am confident enough to do any project I want and where to go if I ever run into problems. Before I came to BlueStamp, I had very little experience in engineering and computer science. Now I feel that I have gained a good understanding of engineering, and am able to build personal projects. After BlueStamp, I hope to continue my education by applying to college this fall and major in either Engineering or Computer Science. Additionally, I hope to complete more Arduino projects and eventually move to working with Raspberry Pi.
Final Milestone
For my final milestone, I added modifications to my two factor authentication to make it easier to use. One of the issues with the fingerprint scanner was that it did not give you any sign to see if you had entered a correct fingerprint. To solve this problem, I added LEDs to my circuit to detect when a correct fingerprint had been scanned. Now, when a correct fingerprint was scanned the green LED would turn on for a second. Another issue that I tried to solve through modifications was not having to reset my Arduino after the first time. The reason I would reset my Arduino was because after the first run through it would now only be one factor. To solve this issue, I added a resistor and transistor to my circuit to implement a soft reset. I first defined Pin 9 as an output in my code and have it on LOW. The LOW setting would ensure that no voltage was present at Pin 9. When the digital pin is set on LOW the transistor was off, which prevented current from flowing and that leaves the reset on 5 volts. Then at the end of my code, I would set the pin on HIGH, which would consequently set the voltage of the reset to 0 volts. This would automatically reset my Arduino, and I would not have to press the reset button from my arduino. The biggest challenge for me while trying to achieve my third milestone was learning how to reset the code. At first, I tried to reset the loop by making my own function and then resetting the function. However, I found that resetting the Arduino through hardware rather than software was easier and achieved the same effect. I learned many skills from doing these modifications. I learned electrical engineering skills, which were implementing a reset into my circuit. I also learned that not every problem can be solved through code, and to approach future problems with a different mindset.
Final Bill of Materials: https://docs.google.com/spreadsheets/d/17jODujWblGa6P6ejM3cs1kbahhyoCbtFIVap2theGHw/edit#gid=0
Final Wiring of Project
Second Milestone
For my second milestone, I added two factor authentication . Alongside the NFC Card Reader, logging in now requires a fingerprint scanner. In order for the Arduino Leonardo to type the password, the correct RFID card and fingerprint had to both be entered. The Fingerprint Scanner connects to the Arduino Leonardo with its 4 wires: power, ground, TX, and RX . The Fingerprint Scanner. The TX and RX ports are used to transmit and receive fingerprint data, respectively, while the power and ground are used for the main power itself. Since the NFC card reader was already attached to the Arduino, the wires had to be attached through the pass-through ports of the NFC card reader shield (Picture attached). I also decided to use a breadboard to make designing my circuit easier. Breadboards are used for temporary prototype testing and do not require any soldering so it is easier to fix any mistakes without having to go through the desoldering process. After putting together the circuit, the code for the fingerprint scanner had to be combined with the code for the Card Reader. The Fingerprint Scanner works through the process of enrolling fingerprints onto its FLASH memory, and then it will only unlock the computer if it recognizes your fingerprint in its database. FLASH memory is a type of memory that retains data without power. Some examples of FLASH memory are flash drives and hard drives. I used an enrolling system that came with the fingerprint system to make my fingerprints stored in the FLASH memory. After enrolling, a verification process needed to be coded to verify whether the finger scanned matched any of those stored in its database. While trying to achieve this milestone, I encountered many problems. One of these issues was soldering the fragile wires onto the Arduino Leonardo. I solved this problem by using a breadboard and then using male to male headers to connect to the Arduino Leonardo. Another issue was debugging my code, when it was not working properly. I learned that the ports that I had defined in my code were not the ports that I had connected to, which is why it was not working. During the process of trying to achieve my milestone, I learned many useful skills such as using breadboards and basics of code.
NFC Card Reader Shield Ports
Figure 1: Around the Red Circle is where the TX/RX Ports are located. Around the Green Circle is where the Power/Ground Ports are located.