Access control

I want to ask for opinions on the following case:

Current:
A dance instructor sells cards to the participants of his class. A card allows you to attend 10 classes. Before every class the participants show their card and the instructor ticks off one square meaning they have 1 class less they can attend.
There's also 1 year subscriptions available.

Future:
Participants buy a token/card with which they check in before a class. An access control system checks their badge/token for validity. The system calls a web service to check if the participant is allowed to attend the class or if he needs an extension. If he needs an extension, the user pays the instructor who in turn extends the participiant's subscription.

Requirements:

  • Portable system: The instructor is holding his courses at different locations
  • Automatic check-in: Using some kind of tag/token/card/nfc/etc
  • Internet connection: To validate the users token and to report that a user entered the class
  • Visual feedback:
    Participant enters.
  • Token ok -> leds light green and a beep
  • Token not ok -> leds light red and a beep
  • Only a few entries left -> leds light orange and a beep
  • It should also show somehow the numbers of entries left

[/li]

  • Portable system*
    I saw this on ebay. A box for an UNO plus one shield. Could be powered through Arduino's power plug.

  • Automatic check-in*
    I like the RFID approach and thought of buying this RFID reader and these tags.

  • Internet connection*

  • Wifi shield or LAN shield is not feasible as it is not sure if there is Wifi or LAN available at all the course locations.

  • GSM shield. Googled around but thought it was quite complicated. Not sure how easy it would be to program a web client using the GSM shield.

  • Connect the UNO to a laptop via USB and do a serial connection to the laptop: Don't like the idea of bringing a laptop to the places just for an internet connection. Also the laptop might be unattended for a while (and close to the entrance/exit) which could be tempting to be stolen.

  • Use bluetooth. As mentioned before a laptop is out the question. The other option would be creating an Android app which would talk to the Arduino.

  • Visual feedback*

  • Another thing I don't like about the GSM shield would be the lack of feedback provided to the user. Lots of complex logic on the Arduino. And what happens if Arduino can't make a connection via GSM?

  • Using an Android app that talks to Arduino via bluetooth. Arduino would only read the tokens (RFID) and send this data to Android where the more complex logic lies. Arduino would get a feedback and notify the user via LEDs and beeps. (And maybe via LCD or some other tiny display.) The instructor could also extend participants' membership via app.

As you can see, the Android approach is my favourite. Also because it can provide an additional GUI to just LEDs and beeps.
What gives me a headache though is that the phone needs to be in range with the box (around 10m/30feet). So these two easy moveable pieces would be next to the entrance/exit and unattended at most times.

I thought I could add a sensor to the box that triggers an alarm if it gets moved. The alarm would get activated/deactivated through the android app.
Or I could add a kensington lock style cable to the box and attach it to a table.
Any thoughts on an anti theft system?

What do you guys think about the bluetooth <-> Android <-> Internet connection? Any other way to get an internet connection?

What about the RFID reader/tags? Do you think that's a good idea?

Any feedback appreciated!

For a light, simplistic solution, I would go with the RFID tag, or even a barcode reader. They are easy to replace, and there are MANY examples for RFID. Barcode reader is a little tricky, but not impossible. It all depends on what you want to get into. I've used Bluetooth and Androids in the past, and for a beginner (I don't know where you stand) it is NOT easy.

@HazardsMind thanks for the input

To my background: I do programming for a living. Mostly web portals/pages with c#, asp.net, javascript/jquery and database programming. So the web portal/user management web site and the web service are my least concern :wink:

I haven't written an android app but with my c# and some previous java experience I am confident that I can do the task.

The least experience I have with is Arduino and electronics design. So therefore my approach of holding the complex logic in web services and the android app rather than on the Arduino.

Ok, it is whatever is easier for you. Does everyone need their own Android for this, or are you going to implement the RFID tags into the Android program and just have the one Android for the instructor?

If it is going to be with individual Androids, do you know if everyone has an Android? You may also need to design a compatible IOS app, for those who have the Iphone.

I too like RFID. Magstipe cards are on option too, but I think people are getting annoyed with them and magnets erasing the cards can be an issue.

I might not worry too much about Bluetooth range, I have found it to be fairly reasonable when in one room line of sight. That said a good mobile internet solution might be a 3G connection. Search for "Arduino 3G" there are clearly some options out there.

Yeah, the app is only for the instructor. (I know he's using an Android.) Class participants check in using their RFID tags.

The communication from Arduino to Android would be very basic. like so:

  • Arduino detects RFID chips and sends the RFID number to the connected Android phone via bluetooth
  • Android app would check the validity of the tag's RFID number using a web service which the user management web site provides.
  • Android app would send feedback to Arduino via bluetooth.
  • Arduino blinks/beeps/displays data according to the feedback.

Other functionality of the Android app:

  • Displaying user info
  • Assigning tags to users
  • Extending contracts

I know its not our style, but couldn't one Android phone do all of this?

If you can find an Android phone with NFC it could read the tags, flash the screen, make the beeps, and access the internet data all from one device your instructor is already carrying. The instructor might have to get a new phone, but once you count the cost of an Arduino, screen, LED's, buzzer, tag-reader, case, and everything else the phone starts looking pretty good.