Wednesday, April 27, 2016

Final Project

All information/phases will be edited into this post.

Idea and planning

We want to build a biometric door lock. The lock will be unlocked by RFID and log who has access to the room and who has accessed the room. The lock will also broadcast (with the user's permission) when the user enters that way non-authorized people can enter as well. The lock will be used on a door to a shared club room that many people use, but few people have keys to. So if people want access to the room, they need to either have a key or someone already there. With this mechanism, we can extend how many people have access to the room without needing a key.

Target audience: members of our club
Solve need: yes, giving members of the club access to the room
Enhance need: yes, unlocking doors
Parts: RFID reader, strong motor to turn the lock, something for wireless communication
Libraries/Frameworks: Arduino for reading the lock/sending controls to the lock, Processing for taking lock information and logging/broadcasting
Team members:
Chaitanya Garg: senior, CS/Math major, good at software development
Giorgio Pizzorni: senior, CS/Math major, good at <whatever's on his blog post>
Division of labor: collaborate on everything

Execution and implementation

Stuff done till end of day May 4th:

RFID reader parts arrived, soldered together materials, reads an RFID card and outputs to Arduino's Serial Monitor on the computer.
Next task is to attach the servo to a spool. Spool has been created already, but hot gluing the servo and the spool failed, and so did soldering. Next attempts are crazy glue and double sided sticky tape.

Design decisions for the prototype:
Values will be hardcoded (for the time being due to the time constrant).
A demo for the registration and login page will be created (probably in Python given we both know Python).

Our demonstration will have one of our friends use the RFID lock.

Next update to be posted when we have made progress.

Stuff done till end of day May 6th:

The RFID lock actually works now! Here are a bunch of videos documenting our incremental progress throughout the day. Our code uses the Adafruit PN532 library and pretty much rips off their example code (some servo controlling is tacked on). Our next tasks are to put the RFID reader outside the door (however we don't want to do this until the presentation itself due to security/liability concerns) and to create the prototype for the registration and logging interface.


Take 1

Take 2

Take 3

Take 4

Take 5

Take 6 does not exist because numbers are hard.

Take 7

To be edited once more progress has been made.

Stuff done till end of day May 9th:

Mockup of registration and logger application has started.

Stuff done till end of day May 10th:

Created presentation. Put contraption in a box so that circuitry isn't visible. Had friend try out our reader. Finished mockup for registration and logger application.

Internals

Step by step guide

Other notes

Link to presentation (be sure to sign in with your NYU credentials):

Most of the content of the presentation should answer all questions, but here are some extra details.
  • The first RFID reader we bought just didn't work, either due to lack of a compatible library, or lack of our knowledge of how to wire it. The one that did work took us a while to figure out how to use it.
  • We ended up using Adafruit PN532 library located at https://github.com/adafruit/Adafruit-PN532 and used the sample code in the file iso14443a_uid (and built our servo controlling code on top of it).
  • Lesson learned: even if you buy a part that is advertised as no soldering required, you will need to solder something related to it sooner or later.
  • Challenge faced: on our first attempt with the contraption, the servo (the entire servo, not just the arm) moved rather than the doorknob rotating. We needed a way to keep the servo in place.
  • Lesson learned: crazy glue is really good at sticking things together.
  • Challenge faced: we had no idea how to use the RFID reader at the start.
  • Lesson learned: hardware documentation is minimal at best, non-existant at worst.
  • Lesson learned: order parts really early, delivery estimates are wrong.
  • Lesson learned: look for hardware documentation/sample code/sample usage before purchasing.
  • Change of plans: originally we wanted to have multiple RFID cards, but they didn't work. 
  • We ended up only getting 1 RFID card to actually function, the other 5 we had simply weren't being read.
  • Final thought on the project: I hope the department doesn't notice that we did this.
  • Final thought on physical computing: the idea behind the field is nice, there have been great products created, but it doesn't seem like the field for me. While I enjoyed the projects in class, I prefer programming in the more virtual sense.

No comments:

Post a Comment