|RFID Access System|
|Start Date: 1/12/2012|
- 1 Overview
- 2 Hardware
- 3 2929 Spring Grove - Rework for Front Door
The purpose of this project is to build a modular RFID Access System for all of the tools, doors, and vending machines in the Hive.
- Uses the Access Protocol
- Accepts NFC tags and phones with NFC for access and tracking control (our badges run at 125 KHz)
- Central database (Postgres, accessed via HTTP, served by a Perl Catalyst app)
What needs to be done
Main Door RFID
Battery backup somehow?It's PoE and that's on battery backup.
- Have it log temperatures
Annex Door RFID
- Schematic and PCB is on GitHub
- Battery backup somehow?
- Motion sensor so it unlocks when you approach it from the inside.
- Consider switching it to wired for power backup reasons.
- Add in a mechanical key for when the power's out.
Vending Machine RFID
- Get compressor being controlled by the Arduino
- Mount the relay board instead of it being set on a block of wood
- Clean up the wiring
The Snack Vending Machine has been gutted, its coin validator removed, and RFID card mounted to the machine, however, no work has been done to bring that machine to vending status.
Places it'd be nice to have badge readers
- Doors out to annex hallway
- Outside door by the Dumpster
- Certification-only tools
One of the goals of this project is to build a case where cash payments to the hive can be recorded (and membership automatically extended), and cash payments can be automatically made to the card for the purposes of purchasing sodas.
This project is in the planning phase right now -- however, if you want to help, I would appreciate the time and can provide my guidance for this project.
- The annex uses a WeMos D1 mini.
- The main door uses an Arduino Mega.
Scanner to MCU wiring
- This is correct for the annex door
- The main door needs to have its wiring changed to match.
|Function||Scanner Wire Color||Ethernet cable wire color|
2929 Spring Grove - Rework for Front Door
- Hodapp (setup on Pi and integration with RFID reader)
- Drew Kirkman (infra stuff)
- Dave B. (door electronics?)
- Dave Velzy
We are working on a makeshift solution for the new space at 2701. Right now this is running from a Raspberry Pi with Alpine Linux and some software written in Go. This code interfaces with RFID readers over the Wiegand protocol, communicates with intweb to request access for some badge, and listens over HTTP for 'manual' door open requests.
Code is at: https://github.com/Hive13/HiveRFID
The electric door release is a HES 5000 from Assa Abloy. (Installation instructions: https://content.assaabloyusa.com/doc/AADSS1009179&.pdf)
Diagram to follow, eventually.
- Green (Wiegand D0) from reader to level shifter RXI channel 1.
- White (Wiegand D1) from reader to level shifter RXI channel 2.
- Black (ground) from reader to level shifter GND (either one).
- Raspberry Pi BCM 17 to level shifter RXO channel 1.
- Raspberry Pi BCM 18 to level shifter RXO channel 2.
- Raspberry Pi 3.3V to level shifter LV.
- Raspberry Pi 5V to level shifter HV.
- Raspberry Pi GND to level shifter GND (either one).
- Raspberry Pi BCM 26 to purple from reader (beeper)
- Raspberry Pi BCM ??? to grey from reader (LED)
Connect power to reader's red wire, and ensure that power supply ground is also connected to level shifter GND. (With the uctronics PoE hat with the +12VDC output available, you can plug the red wire to the +12V terminal and ground to the ground terminal.)
Double-check that D0 and D1 from the reader are always on the high-voltage side of the level shifter, and that the Raspberry Pi's GPIOs are always on the low-voltage side.
This also works if you have no level shifter:
- Wiegand D0 (green) to BCM 17 through a resistive divider to ground (two 1K resistors)
- Wiegand D1 (white) to BCM 18 through a resistive divider to ground (likewise two 1K resistors)
The resistive divider is because D0 and D1 use 5V, while the Raspberry Pi runs at 3.3V - so they may damage the Pi if used directly. The divider steps this down to a safer 2.5V. Any kind of level shifter that works similarly should be fine here. The beeper and LED pins do not need their level shifted; simply put them on a GPIO pin and bring the pin low to trigger the beeper and the LED.
Wiring to HES5000 at Front Door
The connections to the HES5000 were done to the Cat5e snaked through the front door frame as follows:
- Ethernet brown pair to HES5000 purple
- Ethernet green pair to HES5000 red/green stripe
- Ethernet blue pair to HES5000 black
- Ethernet orange pair to HES5000 red
This was tested with a ~20 V supply, wired up as the instructions give for 24 V: connect brown & blue pair together, connect orange pair to positive voltage, connect green pair to negative voltage.
It has not yet been tested with 12 V, but in theory, the 12 V that the uctronics PoE hat supplies should be sufficient for this. HES 500 specs say it draws at most 240 mA, and the uctronics hat is rated much higher than this - but the current spikes could cause problems elsewhere.
- Reading RFID cards from badge reader, and producing proper badge number
- Authenticating this badge number for door access with intweb
- Serving HTTP requests
- Triggering beeper and LED on badge reader
- Triggering door strike via relay board
- Powering RFID reader from +12VDC of Raspberry Pi's PoE hat
- Ethernet run for network + PoE for Raspberry Pi
- Power supply for electronic door strike (12 or 24 V). The PoE hat's 12 V may suffice for this.
- Other wiring and mounting - mounting and wiring to badge reader, mounting Pi, other power connections
- Connect up the WeMos Switch Shield board (from Dave & Ralph) to said power supply, and drive it from a GPIO
For the software:
- Make use of beeper and LED
- Cache badges (perhaps hold a badge in cache for 3-4 days)
- More setup in Alpine Linux - run the code in OpenRC, enable Raspberry Pi's hardware watchdog, and perhaps have some other monitoring on the LAN to ensure that the Pi has not gone offline or crashed
- Back up this Linux image someplace that people can find it easily if needed
- Document the HTTP endpoint
- Get old Python & C code into repository