Difference between revisions of "RFID entry system"

From i3Detroit
Jump to: navigation, search
(Software)
(Hardware)
Line 110: Line 110:
 
| Open Access
 
| Open Access
 
| Ethernet/SD
 
| Ethernet/SD
 +
| Parallel port
 
|-
 
|-
 
| 0
 
| 0
Line 115: Line 116:
 
| Reset button (covered by ethernet shield)
 
| Reset button (covered by ethernet shield)
 
| Reset button
 
| Reset button
 +
|
 
|-
 
|-
 
| 1
 
| 1
Line 120: Line 122:
 
|
 
|
 
| 3.3v
 
| 3.3v
 +
|
 
|-
 
|-
 
| 2
 
| 2
Line 125: Line 128:
 
| 5v
 
| 5v
 
| 5v
 
| 5v
 +
|
 
|-
 
|-
 
| 3
 
| 3
Line 130: Line 134:
 
| Gnd
 
| Gnd
 
| Gnd
 
| Gnd
 +
|
 
|-
 
|-
 
| 4
 
| 4
Line 135: Line 140:
 
| Gnd
 
| Gnd
 
| Gnd
 
| Gnd
 +
|
 
|-
 
|-
 
| 5
 
| 5
 
| Vin
 
| Vin
 +
|
 
|
 
|
 
|
 
|
Line 145: Line 152:
 
| Alarm 0
 
| Alarm 0
 
| full size SD WP, unused but pulled up to 5v
 
| full size SD WP, unused but pulled up to 5v
 +
|
 
|-
 
|-
 
| 7
 
| 7
Line 150: Line 158:
 
| Alarm 1
 
| Alarm 1
 
| full size SD CD, unused but pulled up to 5v
 
| full size SD CD, unused but pulled up to 5v
 +
|
 
|-
 
|-
 
| 8
 
| 8
 
| Analog 2
 
| Analog 2
 
| Alarm 2
 
| Alarm 2
 +
|
 
|
 
|
 
|-
 
|-
Line 159: Line 169:
 
| Analog 3
 
| Analog 3
 
| Alarm 3
 
| Alarm 3
 +
|
 
|
 
|
 
|-
 
|-
Line 164: Line 175:
 
| Analog 4
 
| Analog 4
 
| Alarm 4
 
| Alarm 4
 +
|
 
|
 
|
 
|-
 
|-
Line 169: Line 181:
 
| Analog 5
 
| Analog 5
 
| Alarm 5
 
| Alarm 5
 +
|
 
|
 
|
 
|-
 
|-
Line 174: Line 187:
 
| Analog 6
 
| Analog 6
 
| Alarm 6
 
| Alarm 6
 +
|
 
|
 
|
 
|-
 
|-
Line 179: Line 193:
 
| Analog 7
 
| Analog 7
 
| Alarm 7
 
| Alarm 7
 +
|
 
|
 
|
 
|-
 
|-
Line 184: Line 199:
 
| Analog 8
 
| Analog 8
 
| Alarm 8
 
| Alarm 8
 +
|
 
|
 
|
 
|-
 
|-
Line 189: Line 205:
 
| Analog 9
 
| Analog 9
 
| Alarm 9
 
| Alarm 9
 +
|
 
|
 
|
 
|-
 
|-
Line 194: Line 211:
 
| Analog 10
 
| Analog 10
 
| Alarm 10
 
| Alarm 10
 +
|
 
|
 
|
 
|-
 
|-
Line 199: Line 217:
 
| Analog 11
 
| Analog 11
 
| Alarm 11
 
| Alarm 11
 +
|
 
|
 
|
 
|-
 
|-
Line 204: Line 223:
 
| Analog 12
 
| Analog 12
 
| Alarm 12
 
| Alarm 12
 +
|
 
|
 
|
 
|-
 
|-
Line 209: Line 229:
 
| Analog 13
 
| Analog 13
 
| Alarm 13
 
| Alarm 13
 +
|
 
|
 
|
 
|-
 
|-
Line 214: Line 235:
 
| Analog 14
 
| Analog 14
 
| Alarm 14
 
| Alarm 14
 +
|
 
|
 
|
 
|-
 
|-
Line 219: Line 241:
 
| Analog 15
 
| Analog 15
 
| Battery Voltage monitor (has a 4:1 voltage divider)
 
| Battery Voltage monitor (has a 4:1 voltage divider)
 +
|
 
|
 
|
 
|-
 
|-
 
| 22
 
| 22
 
| Digital 0/PWM/RX0
 
| Digital 0/PWM/RX0
 +
|
 
|
 
|
 
|
 
|
Line 228: Line 252:
 
| 23
 
| 23
 
| Digital 1/PWM/TX0
 
| Digital 1/PWM/TX0
 +
|
 
|
 
|
 
|
 
|
Line 235: Line 260:
 
| Reader 2, D0
 
| Reader 2, D0
 
| Optional solder jumper "int" to get interrupts from the W5100
 
| Optional solder jumper "int" to get interrupts from the W5100
 +
|
 
|-
 
|-
 
| 25
 
| 25
 
| Digital 3/PWM/interrupt 1
 
| Digital 3/PWM/interrupt 1
 
| Reader 2, D1
 
| Reader 2, D1
 +
|
 
|
 
|
 
|-
 
|-
Line 244: Line 271:
 
| Digital 4/PWM
 
| Digital 4/PWM
 
| Reader 2, LED1
 
| Reader 2, LED1
 +
|
 
|
 
|
 
|-
 
|-
Line 249: Line 277:
 
| Digital 5/PWM
 
| Digital 5/PWM
 
| Reader 2, LED2
 
| Reader 2, LED2
 +
|
 
|
 
|
 
|-
 
|-
Line 254: Line 283:
 
| Digital 6/PWM
 
| Digital 6/PWM
 
| Reader 2, Buzzer
 
| Reader 2, Buzzer
 +
|
 
|
 
|
 
|-
 
|-
Line 259: Line 289:
 
| Digital 7/PWM
 
| Digital 7/PWM
 
| Reader 1, Buzzer
 
| Reader 1, Buzzer
 +
|
 
|
 
|
 
|-
 
|-
Line 264: Line 295:
 
| Digital 8/PWM
 
| Digital 8/PWM
 
| Reader 1, LED2
 
| Reader 1, LED2
 +
|
 
|
 
|
 
|-
 
|-
 
| 31
 
| 31
 
| Digital 9/PWM
 
| Digital 9/PWM
 +
|
 
|
 
|
 
|
 
|
Line 275: Line 308:
 
|
 
|
 
|SS(ethernet)
 
|SS(ethernet)
 +
|
 
|-
 
|-
 
| 33
 
| 33
Line 280: Line 314:
 
|
 
|
 
|SS (SD) (I moved it from Digital 4 to avoid conflict)
 
|SS (SD) (I moved it from Digital 4 to avoid conflict)
 +
|
 
|-
 
|-
 
| 34
 
| 34
 
| Digital 12/PWM
 
| Digital 12/PWM
 +
|
 
|
 
|
 
|
 
|
Line 290: Line 326:
 
|
 
|
 
| Yellow LED
 
| Yellow LED
 +
|
 
|-
 
|-
 
| 36
 
| 36
 
| Gnd
 
| Gnd
 +
|
 
|
 
|
 
|
 
|
Line 298: Line 336:
 
| 37
 
| 37
 
| Aref
 
| Aref
 +
|
 
|
 
|
 
|
 
|
Line 304: Line 343:
 
| Digital 14/TX3
 
| Digital 14/TX3
 
| RS485 TX
 
| RS485 TX
 +
|
 
|
 
|
 
|-
 
|-
Line 309: Line 349:
 
| Digital 15/RX3
 
| Digital 15/RX3
 
| RS485 RX
 
| RS485 RX
 +
|
 
|
 
|
 
|-
 
|-
Line 314: Line 355:
 
| Digital 16/TX2
 
| Digital 16/TX2
 
| RS485 transmit/receive
 
| RS485 transmit/receive
 +
|
 
|
 
|
 
|-
 
|-
Line 319: Line 361:
 
| Digital 17/RX2
 
| Digital 17/RX2
 
| Reader 1, LED1
 
| Reader 1, LED1
 +
|
 
|
 
|
 
|-
 
|-
Line 324: Line 367:
 
| Digital 18/TX1/interrupt 5
 
| Digital 18/TX1/interrupt 5
 
| Reader 1, D1
 
| Reader 1, D1
 +
|
 
|
 
|
 
|-
 
|-
Line 329: Line 373:
 
| Digital 19/RX1/interrupt 4
 
| Digital 19/RX1/interrupt 4
 
| Reader 1, D0
 
| Reader 1, D0
 +
|
 
|
 
|
 
|-
 
|-
Line 334: Line 379:
 
| Digital 20/SDA/interrupt 3
 
| Digital 20/SDA/interrupt 3
 
| SDA (RTC/AT24C1024)
 
| SDA (RTC/AT24C1024)
 +
|
 
|
 
|
 
|-
 
|-
Line 339: Line 385:
 
| Digital 21/SCL/interrupt 2
 
| Digital 21/SCL/interrupt 2
 
| SCL (RTC/AT24C1024)
 
| SCL (RTC/AT24C1024)
 +
|
 
|
 
|
 
|-
 
|-
Line 344: Line 391:
 
| 5v
 
| 5v
 
| 5v
 
| 5v
 +
|
 
|
 
|
 
|-
 
|-
Line 349: Line 397:
 
| 5v
 
| 5v
 
| 5v
 
| 5v
 +
|
 
|
 
|
 
|-
 
|-
Line 355: Line 404:
 
|
 
|
 
|
 
|
 +
| D0
 
|-
 
|-
 
| 49
 
| 49
Line 360: Line 410:
 
|
 
|
 
|
 
|
 +
| D1
 
|-
 
|-
 
| 50
 
| 50
Line 365: Line 416:
 
|
 
|
 
|
 
|
 +
| D2
 
|-
 
|-
 
| 51
 
| 51
Line 370: Line 422:
 
|
 
|
 
|
 
|
 +
| D3
 
|-
 
|-
 
| 52
 
| 52
Line 375: Line 428:
 
|
 
|
 
|
 
|
 +
| D4
 
|-
 
|-
 
| 53
 
| 53
Line 380: Line 434:
 
|
 
|
 
|
 
|
 +
| D5
 
|-
 
|-
 
| 54
 
| 54
Line 385: Line 440:
 
|
 
|
 
|
 
|
 +
| D6
 
|-
 
|-
 
| 55
 
| 55
Line 390: Line 446:
 
|
 
|
 
|
 
|
 +
| D7
 
|-
 
|-
 
| 56
 
| 56
 
| Digital 30
 
| Digital 30
 +
|
 
|
 
|
 
|
 
|
Line 399: Line 457:
 
| Digital 31
 
| Digital 31
 
| Relay 0 through ULN2803
 
| Relay 0 through ULN2803
 +
|
 
|
 
|
 
|-
 
|-
Line 404: Line 463:
 
| Digital 32
 
| Digital 32
 
| Relay 1 through ULN2803
 
| Relay 1 through ULN2803
 +
|
 
|
 
|
 
|-
 
|-
Line 409: Line 469:
 
| Digital 33
 
| Digital 33
 
| Relay 2 through ULN2803
 
| Relay 2 through ULN2803
 +
|
 
|
 
|
 
|-
 
|-
Line 414: Line 475:
 
| Digital 34
 
| Digital 34
 
| Relay 3 through ULN2803
 
| Relay 3 through ULN2803
 +
|
 
|
 
|
 
|-
 
|-
Line 419: Line 481:
 
| Digital 35
 
| Digital 35
 
| Relay 4 through ULN2803
 
| Relay 4 through ULN2803
 +
|
 
|
 
|
 
|-
 
|-
Line 424: Line 487:
 
| Digital 36
 
| Digital 36
 
| Relay 5 through ULN2803
 
| Relay 5 through ULN2803
 +
|
 
|
 
|
 
|-
 
|-
Line 429: Line 493:
 
| Digital 37
 
| Digital 37
 
| Relay 6 through ULN2803 (unpopulated relay)
 
| Relay 6 through ULN2803 (unpopulated relay)
 +
|
 
|
 
|
 
|-
 
|-
Line 434: Line 499:
 
| Digital 38
 
| Digital 38
 
| Relay 7 through ULN2803 (unpopulated relay)
 
| Relay 7 through ULN2803 (unpopulated relay)
 +
|
 
|
 
|
 
|-
 
|-
Line 440: Line 506:
 
|
 
|
 
|
 
|
 +
| /Strobe
 
|-
 
|-
 
| 66
 
| 66
Line 445: Line 512:
 
|
 
|
 
|
 
|
 +
| /Line Feed
 
|-
 
|-
 
| 67
 
| 67
Line 450: Line 518:
 
|
 
|
 
|
 
|
 +
| Error
 
|-
 
|-
 
| 68
 
| 68
Line 455: Line 524:
 
|
 
|
 
|
 
|
 +
| Reset
 
|-
 
|-
 
| 69
 
| 69
Line 460: Line 530:
 
|
 
|
 
|
 
|
 +
| Ack
 
|-
 
|-
 
| 70
 
| 70
Line 465: Line 536:
 
|
 
|
 
|
 
|
 +
| /Busy
 
|-
 
|-
 
| 71
 
| 71
Line 470: Line 542:
 
|
 
|
 
|
 
|
 +
| Paper Out
 
|-
 
|-
 
| 72
 
| 72
Line 475: Line 548:
 
|
 
|
 
|
 
|
 +
| Select
 
|-
 
|-
 
| 73
 
| 73
 
| Digital 47
 
| Digital 47
 +
|
 
|
 
|
 
|
 
|
Line 483: Line 558:
 
| 74
 
| 74
 
| Digital 48
 
| Digital 48
 +
|
 
|
 
|
 
|
 
|
Line 488: Line 564:
 
| 75
 
| 75
 
| Digital 49
 
| Digital 49
 +
|
 
|
 
|
 
|
 
|
Line 495: Line 572:
 
|
 
|
 
|MISO (wired manually because Open Access does not pass ICSP)
 
|MISO (wired manually because Open Access does not pass ICSP)
 +
|
 
|-
 
|-
 
| 77
 
| 77
Line 500: Line 578:
 
|
 
|
 
|MOSI (wired manually because Open Access does not pass ICSP)
 
|MOSI (wired manually because Open Access does not pass ICSP)
 +
|
 
|-
 
|-
 
| 78
 
| 78
Line 505: Line 584:
 
|
 
|
 
|SCK (wired manually because Open Access does not pass ICSP)
 
|SCK (wired manually because Open Access does not pass ICSP)
 +
|
 
|-
 
|-
 
| 79
 
| 79
Line 510: Line 590:
 
|
 
|
 
| Has to be set as output (can't be used for anything else?)
 
| Has to be set as output (can't be used for anything else?)
 +
|
 
|-
 
|-
 
| 80
 
| 80
Line 515: Line 596:
 
| Gnd
 
| Gnd
 
|
 
|
 +
| Gnd
 
|-
 
|-
| 80
+
| 81
 
| Gnd
 
| Gnd
 
| Gnd
 
| Gnd
 +
|
 
|
 
|
 
|}
 
|}

Revision as of 19:54, 5 April 2013

Contents

Description

This system will replace the current one, it is projected to be network connected and control all entry and exit through the front door. It is based around an arduino mega 2560, Open Access Control 3.0, and an ethernet shield, allowing the logging of everything to do with the door. The network connectivity means easy integration with proposed EMS/Fire emergency buttons. This also means integration with the CRM for automatic control of access, easy new user addition, reporting of failed entry attempts, reporting of power outages, etc...

Documentation

Software

The original code is here: http://www.accxproducts.com/wiki/index.php?title=Open_Access_3.0

Whole git repository

https://github.com/abzman/RFID-entry-system


New library written to control SCC 1080

https://github.com/abzman/RFID-entry-system/tree/master/libraries/SCC_1080


Modified sketch to get information about sd card

https://github.com/abzman/RFID-entry-system/tree/master/CardInfo2


Modified sketch to dump readme.txt from sd card

https://github.com/abzman/RFID-entry-system/tree/master/DumpFile2


Sketch to test RFID reader, outputs on serial and http web page at 192.168.1.177

https://github.com/abzman/RFID-entry-system/tree/master/RFID_test


Sketch to read from the RTC, commented out lines to set RTC

https://github.com/abzman/RFID-entry-system/tree/master/RTC_test


Early test of SCC 1080 displays, single connection mode (surpassed by later RS485_mdb_test3/4)

https://github.com/abzman/RFID-entry-system/tree/master/RS485_test


Early test of SCC 1080 displays, mdb mode (surpassed by later RS485_mdb_test3/4)

https://github.com/abzman/RFID-entry-system/tree/master/RS485_mdb_test


Early test of SCC 1080 displays, mdb mode (surpassed by later RS485_mdb_test3/4)

https://github.com/abzman/RFID-entry-system/tree/master/RS485_mdb_test2


Example using SCC-1080

https://github.com/abzman/RFID-entry-system/tree/master/RS485_mdb_test3


Example using SCC-1080 as a telnet client

https://github.com/abzman/RFID-entry-system/tree/master/RS485_mdb_test4


Non-functional SCC 1080 read test (early)

https://github.com/abzman/RFID-entry-system/tree/master/rs485_read_test


Reads key presses using polling loop in full duplex mode (single unit)

https://github.com/abzman/RFID-entry-system/tree/master/rs485_read_test2


Reads key presses using polling loop in full duplex mode (mdb)

https://github.com/abzman/RFID-entry-system/tree/master/rs485_read_test3


Reads key presses using polling loop in full duplex mode (mdb, 2 displays)

https://github.com/abzman/RFID-entry-system/tree/master/rs485_mdb_read_test


Failed (for now) attempt to poll for key presses

https://github.com/abzman/RFID-entry-system/tree/master/rs485_mdb_read_test2

Hardware

OpenAccess Control v3.0 (6 relays populated)

Arduino Mega 2560

off-brand Wiznet W5100 ethernet shield (pin 4 re-mapped to pin 11, SPI wired around Open Access Shield to pins 50, 51, 52)

Static Controls Corporation 1080 displays (RS485)

Generic Wiegand RFID reader

EM4100 card reader, outdoor with keypad

Backlit 2x16 HD4470 parallel character LCD

Pay phone keypad


Arduino Mega pin usage
Arduino Mega Open Access Ethernet/SD Parallel port
0 Reset Reset button (covered by ethernet shield) Reset button
1 3.3v 3.3v
2 5v 5v 5v
3 Gnd Gnd Gnd
4 Gnd Gnd Gnd
5 Vin
6 Analog 0 Alarm 0 full size SD WP, unused but pulled up to 5v
7 Analog 1 Alarm 1 full size SD CD, unused but pulled up to 5v
8 Analog 2 Alarm 2
9 Analog 3 Alarm 3
10 Analog 4 Alarm 4
11 Analog 5 Alarm 5
12 Analog 6 Alarm 6
13 Analog 7 Alarm 7
14 Analog 8 Alarm 8
15 Analog 9 Alarm 9
16 Analog 10 Alarm 10
17 Analog 11 Alarm 11
18 Analog 12 Alarm 12
19 Analog 13 Alarm 13
20 Analog 14 Alarm 14
21 Analog 15 Battery Voltage monitor (has a 4:1 voltage divider)
22 Digital 0/PWM/RX0
23 Digital 1/PWM/TX0
24 Digital 2/PWM/interrupt 0 Reader 2, D0 Optional solder jumper "int" to get interrupts from the W5100
25 Digital 3/PWM/interrupt 1 Reader 2, D1
26 Digital 4/PWM Reader 2, LED1
27 Digital 5/PWM Reader 2, LED2
28 Digital 6/PWM Reader 2, Buzzer
29 Digital 7/PWM Reader 1, Buzzer
30 Digital 8/PWM Reader 1, LED2
31 Digital 9/PWM
32 Digital 10/PWM SS(ethernet)
33 Digital 11/PWM SS (SD) (I moved it from Digital 4 to avoid conflict)
34 Digital 12/PWM
35 Digital 13/PWM/LED Yellow LED
36 Gnd
37 Aref
38 Digital 14/TX3 RS485 TX
39 Digital 15/RX3 RS485 RX
40 Digital 16/TX2 RS485 transmit/receive
41 Digital 17/RX2 Reader 1, LED1
42 Digital 18/TX1/interrupt 5 Reader 1, D1
43 Digital 19/RX1/interrupt 4 Reader 1, D0
44 Digital 20/SDA/interrupt 3 SDA (RTC/AT24C1024)
45 Digital 21/SCL/interrupt 2 SCL (RTC/AT24C1024)
46 5v 5v
47 5v 5v
48 Digital 22 D0
49 Digital 23 D1
50 Digital 24 D2
51 Digital 25 D3
52 Digital 26 D4
53 Digital 27 D5
54 Digital 28 D6
55 Digital 29 D7
56 Digital 30
57 Digital 31 Relay 0 through ULN2803
58 Digital 32 Relay 1 through ULN2803
59 Digital 33 Relay 2 through ULN2803
60 Digital 34 Relay 3 through ULN2803
61 Digital 35 Relay 4 through ULN2803
62 Digital 36 Relay 5 through ULN2803
63 Digital 37 Relay 6 through ULN2803 (unpopulated relay)
64 Digital 38 Relay 7 through ULN2803 (unpopulated relay)
65 Digital 39 /Strobe
66 Digital 40 /Line Feed
67 Digital 41 Error
68 Digital 42 Reset
69 Digital 43 Ack
70 Digital 44/PWM /Busy
71 Digital 45/PWM Paper Out
72 Digital 46/PWM Select
73 Digital 47
74 Digital 48
75 Digital 49
76 Digital 50/MISO MISO (wired manually because Open Access does not pass ICSP)
77 Digital 51/MOSI MOSI (wired manually because Open Access does not pass ICSP)
78 Digital 52/SCK SCK (wired manually because Open Access does not pass ICSP)
79 Digital 53/SS Has to be set as output (can't be used for anything else?)
80 Gnd Gnd Gnd
81 Gnd Gnd

Design Specs

Hardware

Open Access Control with Ethernet shield and mods
  • Inside
    • Arduino mega 2560
    • Open Access Control 3.0
    • Knock off ethernet shield (rewired for compatibility with Open Access)
    • SCC 1080
    • Big blinking light
    • Buzzer/siren
    • Exit button
    • Power supply (signal about whether or not it's on)
    • Door magnet (actuator and feedback pin)
SCC 1080 display
  • Outside
    • SCC 1080
    • RFID reader at pocket height
    • RFID reader with keypad at... keypad height
Whole system
  • Outside alternate proposal
    • Backlit 2x16 HD4470 parallel character LCD
    • Pay phone keypad
    • RFID reader at pocket height
    • RFID reader at keypad height

Software

  • Logging
    • Where to log
      • Inside display (file navigable by arrows)
      • Log file on SD card (periodically uploaded to server [daily?])
      • Dot matrix printer near door (easy to convert serial to parallel with bit masks)
    • What to log
      • Startup
      • Successful/failed entry
      • Card temp ban (three failed entry attempts)
      • Successful/failed new user
      • Successful/failed CSV push/pull
      • Successful/failed log file push/pull
      • Card space almost full
      • Log file deleted
      • Button pressed to exit the building
      • Goes into/out of event mode
      • Periodic voltage measurements
      • Voltage drops below threshold
    • How to log
      • log file named with current rtc date at the beginning of the day
      • Append all day long
      • Push at the end of the day
      • Delete x-days old files
      • Start new file with new date (automatically)
      • Same subroutine logs to lpt port
      • LCD is basically a browser for the log file on the SD card
  • RTC
    • Used for logging and daily tasks
    • Set by NTP if possible
  • Doorbell function
    • Sets off buzzer when button (enter?) is pressed
    • Opens door when in event mode
  • User database
    • CSV on SD card
    • Pulled from CRM on command (telnet)
    • Keep at least all the user databases from the last 24 hours
    • Fields in CSV
      • Name
      • Privilege byte (determines certain powers, like event mode)
      • PIN salted with card id (and maybe date?) MD5 hashed
      • Maybe store card id to allow personalized greeting
  • Card swiped procedure
    • Print personalized greeting; "hello <name>" if we decide to store card id in CSV
    • Prompt for PIN
    • Asterisks display on screen
    • <esc> backspaces
    • End with <enter>
    • If invalid prompt again
    • If 3 failed entries call/text/e-mail owner of card and/or administrator
  • New user add procedure
    • Push used database CSV with new user name and priv byte
    • Wait for timeout (10 minutes?)
      • If not timed out, next card not in system is assigned to blank user
        • If more than one blank user prompt with "hello <name>", escape to go to next blank user
      • If timeout revert database
    • Prompt for pin
    • Again
      • If succeed
        • Welcome
        • Push CSV back to server
      • If failed prompt to retry (enter vs escape)
      • If no retry revert database
  • FTP push and pull
    • Push log files
    • Pull user database
    • Push user database
    • Since the arduino can more easily be a client than a server, it will be commanded to pull by telnet
  • Telnet login
    • Prompt for username and password
    • Hash them and check against admin.txt on sd card
    • If successfull, get a command
      • Pull FTP file
      • Go into a special mode
      • Dump log files
      • Dump CSV
      • etc...
  • Battery voltage
    • Check every couple of minutes minimum
    • If below threshold turn on light, alarm, something
    • Log voltage (even if normal) every day
  • Power supply
    • If power goes out trigger alarm, maybe alert server
  • Exit button
    • Press it to exit building, unlocks door for 5(?) seconds
  • Door magnet
    • Monitor if magnetic field is down when it shouldn't be
    • If it is, alarm server, audible/visual alarm, send e-mail, etc...
  • Send e-mail
    • FTP a file to server containing error message and who to e-mail
    • cron job on server picks it up and sends it out
  • Call people
    • FTP a file to server containing error message and who to call
    • cron job on server picks it up and voip and espeak(?) calls people
  • Failure modes
    • Server hosed, able to dump CSV and log files
    • New reader, blank sd card, FTP pull CSV
    • No server present, keep logging until card size reached, then delete oldest logs
    • No sd card present, let server handle card id and pin hashing and send back what to do
    • No sd or server, use eeprom to read board members' card id, pin, and name (maybe)

TODO

Finalize design document

Software

  • Post example code for NTP
  • Post example code for CSV parsing
  • Post example code for MD5
  • Determine network protocol to use
  • get buttons working properly as input on the SCC 1080s

Electrical

  • Work out light and sound outputs
  • Work out power supply status and door magnet status inputs
  • Do something electrically sensible with the keypad's row/col pins, so they can be (opto?)isolated as they come inside.

Chassis

  • Design/select interior mounting box
  • Design/select exterior mounting box

Data

  • Figure out a mapping between the printed 65535:65535 format used by the existing keypad (and the CRM) and individual bits in the Wiegand message.