Doorduino3
Project Doorduino3 | |
---|---|
Een gestandariseerde deuropener waar we ook reserves van hebben | |
Status | Completed |
Contact | Sebastius |
Last Update | 2023-02-24 |
Features
Algemeen:
- Meerdere autonome controllers mogelijk
- Centraal beheer van alle deuren
- Bijzonder modulair
- Werkt met (vrijwel?) alle deuropeners
- Behalve custom PCB volledig gebouwd op goedkope off-the-shelf componenten
Controller:
- Sleutelbeheer via SSH
- Deur openen via SSH
- Meerdere deuren per controller
- Logs via syslog, eventueel remote
- Autonoom systeem, blijft werken zonder netwerkverbinding
- Praat via USB-serial met de doorduino('s)
Overzicht Doorduino's bij Revspace
Doorduino:
- 1 doorduino per deur
- Authenticatie via Secure iButton
- 24 + 64 bit challenge
- ID-only iButtons worden ondersteund voor als beveiliging je echt niks kan schelen (of als overgangsfase)
- Deuropening via knop (optioneel, moet worden ingeschakeld op controller)
- Arduino is vervangbaar
- Secrets staan niet op de doorduino
- Ca. 10 meter kabel naar de deur is getest
- Aansluitingen via schroefcontacten
- Aansluiting voor iButton-reader met groene en rode LED
Idee
Door heel Revspace (en de Verlichting) heen gebruikten we DoorDuino 2's. Een aantal waren minder stabiel (met name door de gebruike hostcomputertjes) en geen enkele opstelling was gelijk. Met de komst van de nieuwe Sparkshack ontstond het plan om alle DoorDuino's te standaardiseren: een goede behuizing, nette boards en een eenduidige constructie.
De software is inmiddels een flinke verbetering tov Doorduino 2 (zowel op het linux-ding als op de Arduino's), de hardware is qua componenten gelijk gebleven, behalve dat die componenten nu op een nette PCB worden gesoldeerd in plaats van gaatjesbord.
DoorDuino boards
In Eagle is een compact board getekend voor de DoorDuino's van 5x10cm. Hier zijn er een stuk of 20 van besteld, meer dan genoeg voor de hele space en een paar reserve. Het board is ontworpen door Sebastius. Op de print is tevens ruimte voor hacks, patches en fixes.
Bij het 'experimenteer' gedeelte zijn 2 pads VCC en 2 pads GND aanwezig. Pas op dat je de LDO van de Arduino niet overbelast! Je kunt dit probleem eenvoudig omzeilen door zelf een LDO aan de 12v lijn te hangen en te verbinden met VCC. Dan wel even de LDO van de Arduino verwijderen om magische rook te voorkomen.
BOM
- Board Files, bv via DirtyPCBs.com
- Arduino Pro Mini (ATmega 328, 5v, 16mhz)
- IRL540N Mosfet
- 0805 resistors: 150, 2x 220, 1k, 1k8, 10k
- pinheaders en de vrouwelijke variant ervan
- 1 of 2 jumpers
- screwterminals (printkroonsteen), 16polig
Bouw
Relatief eenvoudig, volg de silkscreen. De SMD weerstanden gaan als volgt (van boven naar beneden, onder de A0 pin)
- 220
- 220
- 150
- 1k8
- 1k0
- en onder de mosfet zit nog een 10k
Daarna even de jumper op 12v RAW ENABLE zetten. De 5v Serial Enable gebruiken we voorlopig niet (ter voorkoming Magische Rook).
Behuizing
BOM
- Fibox TA241911T (wandbehuizing 24cm x 19cm met transparant deksel)
- Wandbevestiging
- Wartels
- 12v voeding (1 actuator/deur: 2.5A. Voor een enkele Doorduino kun je de voeding inbouwen)
- Montageplaat (lasercut)
- Raspberry Pi B+ of 2 (met 4 USB poorten)
- USB- Serial, bv CP2104
- KIS33r3 dcdc converter 5v (via AliExpress)
- kabelbandvoetjes
- 4x standaard PC standoffs (die bv voor serieel/parallele poorten gebruikt werden) (M3?)
- 4x M2 standoffs (en schroefjes)
Montageplaat
Met de lasercutter snijden we zelf uit 4mm populier-triplex een drager om alle elektronica makkelijk te plaatsen in de kast. Hier rechts is het prototype te zien.
Lasersettings/Volgorde:
- Zwart: Cut, 60%power, Speed 3
- Blauw: Mark, 20% power, Speed 100
- Rood: Cut, idem boven
Boren
Hier hier en daar moeten wat gaatjes komen.
Aansluitingen
Gebruik voor de kabels Cat5(E), liefst 24 AWG (26 AWG is dunner).
Standaardkabel
Rechtstreeks aangesloten | Via M14-6 Plugje | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
pin 1 = eerste na de notch met de klok mee, kijkend naar gaatjes van plug of soldeerkant van chassisdeel.
pin 6 = center |
Uitbreidingskabel
Dit is een optionele tweede kabel, bedoeld voor een knopje X, een apart bedrade deuropener (bijv. de lineaire actuatoren die we bij de buitendeuren gebruiken), of allebei. De UTP-kabel zoals hier beschreven heeft geen aansluiting voor een knopje.
M14-5 Plugje | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
pin 1 = eerste na de notch met de klok mee, kijkend naar gaatjes van plug of soldeerkant van chassisdeel.
pin 5 = center |
Onderdelen deurkant
- iButton probe/reader http://www.ebay.com/itm/iButton-probe-reader-with-LED-metal-casing-/112052064551
pinout:
- Groen - groene led
- Bruin - rode led
- Wit - 1Wire
- Grijs/Geel - GND
Dagschootopener
De meeste deuren gebruiken een dagschootopener. Elektrisch gezien is dit gewoon een spoel, die bedraad wordt tussen een permanente 12V of 5V (verschilt per deuropener). Over de spoel moet antiparallel een blusdiode: de indicatie (cathode van de diode) komt dus aan de PLUSkant, in plaats van zoals gebruikelijk aan de MINkant.
Als de opener werkt met 5V in plaats van 12V, heb je een externe 5V-voeding nodig omdat de voltage regulator van de arduino het anders niet trekt:
- Voed 5V op het contact gelabeld 12V, of op het contact gelabeld 5V.
- Verbind 12V met 5V met een draad.
- Gebruik niet de jumper op "12V RAW enable", zodat de regulator niet wordt gebruikt.
Inbouw Dagschootopener
Fail-Safe Dagschootopener, met paniek knop
- +12V naar paniek knop contact 3/4 (intern verbonden met 5/6) or/br
- +12V naar 'open' relay A1
- paniek knop contact 1/2 naar strike+ (wor/wbr) en naar monitoring relay A1 (wgr)
- evt paniek knop contact 7/8 naar monitoring (gr)
- strike- naar open relay contact NC
- GND naar open relay common
- GND naar monitor relay A2
- doorduino strike- naar open relay A2
- monitor ingang +/- naar monitor relay contact Common en NC of NO (todo)
Motor (bijv. lineaire actuator)
De deuren met paniekslot worden geopend door met een lineaire actuator de deurklink te bedienen. De actuator krijgt continu +12V of -12V, en beschikt over ingebouwde eindstops. Een DPDT-relais poolt om:
EN 50005-nummering | Omschrijving | Aansluiting |
---|---|---|
A1 | Spoelcontact | +12V diode (– !) |
A2 | Spoelcontact | Str diode (+ !) |
11 | Common van eerste pool | Motor +/– |
12 | NC van eerste pool | Verbonden aan NO van tweede pool |
14 | NO van eerste pool | Verbonden aan NC van tweede pool |
21 | Common van tweede pool | Motor –/+ |
22 | NC van tweede pool | +12V (bijv. doorgelust aan A1) verbonden aan NO van eerste pool |
24 | NO van tweede pool | GND verbonden aan NC van eerste pool |
Als de motor de verkeerde kant opgaat, gewoon 11 en 21 omwisselen (of GND op 22+14 en +12V op 12+24).
EL461
|_______| cable side view 13 1| nrs zoals hieronder 14 2|
|_______| cable side view |1 7| abloy nrs |8 14
hackalot: - zw 2 sol- + gy 3 sol+ rd 5 trigger bolt in && bolt out bl 7 bolt out ge 8 handle down gr 10 bolt in wi 12 key cyl used zw 13 sabotage shield 4+6+11+14 sw com n.c. 1,9 n.c. ?
EL520
De Abloy EL520 is een motorslot dat wat complexere aansturing vereist. Op de Hackalot wiki staat beschreven hoe dit slot ge-reverse-engineered is om hier een Arduino-gebaseerde controller voor te bouwen die met het Doorduino systeem samenwerkt.
ESD Beveiliging
- DS9503 is er voor gemaakt en kost minder dan 1 euro :)
Schema moet er wel op aangepast, of de boards moeten gemod. We kijken nog wel even. ESD kost met enige regelmaat een Arduino.
Op de EL520 pagina is een simpele Doorduino uitgewerkt die een DS9503 gebruikt om tegen ESD te beveiligen.
Software
- Arduino's: upload de sketch
- Raspberry Pi:
git clone https://github.com/revspace/doorduino
echo "dev => '/dev/arduino_123456'," > deurnaam.conf.pl
$EDITOR ibuttons.acl.d/toegangslijst.acl
- Elke niet-lege regel die niet met een hekje begint moet het volgende formaat hebben:
id:secret naam
. ID en secret in hexadecimaal (hoofdletterongevoelig), hoeveelheid whitespace tussen eerste en tweede deel maakt niet uit. De naam is de naam van de sleutelhouder.
- Elke niet-lege regel die niet met een hekje begint moet het volgende formaat hebben:
- Lang leve het serienummer in CP2104 serial-usb-dingen:
echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK="doorduino_$attr{serial}"' > /etc/udev/rules.d/99-doorduino.rules
- systemd unit installeren
Ter vergelijking
Space | Soort sleutel | Authenticatiesysteem | Documentatie | Source | Opmerkingen |
---|---|---|---|---|---|
RevSpace | iButton ID + SHA | Raspberry Pi + Arduino | Doorduino3 | git | |
Hackerspace Nijmegen | iButton ID + SHA | ? + Arduino | Doorduino3 | git | |
Pixelbar | iButton ID + SHA | ? + Arduino | Doorduino3 | git | |
Hackalot | iButton ID + SHA | Raspberry Pi + Arduino | Doorduino3 | git | |
AwesomeSpace | iButton ID + SHA | Raspberry Pi + Arduino | Doorduino2 | git | |
Frack | Sinds verhuizing naar BHP geen elektronisch deursysteem meer | ||||
Hack42 | iButton ID + SHA | ?? + Arduino | Geen, natuurlijk... | Doorduino3 fork | |
Bitlair | iButton ID + SHA | Arduino | - | git | lock/unlock toggle ipv momentary open |
ACKspace | iButton ID-only | Arduino | ACKsess | ← wiki | Authenticatie van ID-only is gecensureerd in source |
Sk1llz | - | Hackerspace opgeheven :( | |||
TkkrLab | DESfire EV1/2/3 NFC | Raspberry Pi | To be updated soon(tm) | GitHub | Ook voor betalingen bij bar |
Bhack | RFID | TI MSP430G2553 | UnlockBhack | - | |
TechInc | RFID + PIN | Cubieboard + 2x Arduino | Doorbot | git |
Geluidjes
Als je je eigen geluidjes wil dan kun je je geluidje kopieren via scp naar root@10.42.66.3 en daarna plaatsen in `/root/mqtt-sounds/sounds/revspace-local/doorduino/doei/unlocked/$nickname/geluidje.wav`. Vul je eigen nickname in en je kan de deur kiezen door `doei` te vervangen met bijvoorbeeld `sparkshack`.