mercoledì 17 ottobre 2012

Controllo degli accessi con Raspberri Pi - Introduzione

Preambolo

Dunque, qualche tempo fa nell'azienda in cui lavoro avevano tirato fuori dal cappello magico l'idea di prendere tutte le porte esterne e sostituirne la vecchia banale serratura con un sistema di apertura a tessera magnetica.

Controllo accessi con lettore RFID

Subito ci siamo scontrati con numerosi problemi: innanzitutto le porte sono parecchie e sono molto distanti tra loro, e il numero di dipendenti da abilitare su ciascuna era di gran lunga superiore alla decina, dunque era fondamentale un sistema centralizzato per configurare gli accessi.
Inoltre, si voleva poter configurare per ogni porta e ogni dipendente un orario di ingresso. E soprattutto, poter riutilizzare i badge già utilizzati per il rilevamento presenze (e non dover inserire i relativi dati da capo).

A questo punto ci è stato evidente che una soluzione sviluppata ad hoc sarebbe stata più razionale ed economica che cercare di creare un qualche accrocchio unendo soluzioni preesistenti.
È nato così il progetto "CitofonoWeb" (dopo capirete il significato del nome), sotto licenza GPL-2.

Come funziona

Il funzionamento volevo che fosse più semplice possibile, ma che allo stesso tempo avesse un'elevata compatibilità e fosse estendibile senza troppi grattacapi. Con un occhio di riguardo anche al costo finale dell'attrezzatura.

La prima cosa che ho previsto è che ogni Raspberry gestisca una sola porta. Questo perché le uscite sono limitate, e perché farne gestire più di una avrebbe reso più complesso il codice. Inoltre, è molto raro che due porte siano così vicine da essere collegate allo stesso Raspberry.

La seconda cosa su cui ho ragionato è che gli accessi devono essere configurabili in maniera comoda, e per questo motivo il Raspberry deve essere collegato in rete locale, tuttavia a parte la configurazione iniziale dovrebbe poter funzionare anche off-line.
Bisogna però considerare che essendo senza RTC (l'orologio interno), il dispositivo deve sincronizzarsi con un time server per sapere la data e l'ora. In alternativa, è possibile montare un RTC con meno di una decina di euro. Questo rende possibile anche l'eventuale collegamento del device alla rete locale via wireless.

La terza condizione che mi premeva era di supportare il maggior numero possibile di lettori di badge senza dover scrivere una quantità allucinante di codice.

A questo punto ho considerato il flusso di lavoro, che ho immaginato simile a un citofono: quando qualcuno suona al campanello, chi risponde deve riconoscere la persona alla porta e poi decide se aprire o no.
Allo stesso modo, quando un utente striscia il suo badge, il Raspberry prende i dati dal MSR (lettore banda magnetica), li elabora, li confronta con i suo database e infine decide se aprire la porta.

Il RaspBerry Pi (sotto) e la scheda aggiuntiva di CitofonoWeb (sopra)

Sviluppo hardware - componenti usati

Componenti fondamentali:
- 1 elettroserratura (o incontro elettrico)
- 1 MSR
- 1 Raspberry Pi
- 1 scheda SD da almeno 1 GB (compatibile con il Raspberry)
- 1 cavo flat per l'uscita GPIO del Raspberry
- 1 scheda di prototipazione
- 1 ULN2003 o ULN 2803, come più vi piace
- 1 relé con bobina a 5V (io ho usato il Finder 32.21.7.005.2000, scegliete in base all'elettroserratura)
- 1 alimentatore 5V con almeno 1000mA (anche da 800mA potrebbe bastare, ma meglio stare sicuri)
- 1 cavo microUSB
- 1 cavo ethernet
- 1 alimentatore elettroserratura
- 1 led verde
- 1 scatola di derivazione (se non avete già un posto dove mettere il tutto)
- filo elettrico, stagno, saldatore e quant'altro 
- per un lavoro ben fatto, due zoccoli per il relé e l'ULN2003/2803, e qualche morsetto

Ci sono inoltre parecchi elementi opzionali, potete scegliere se montarli o no a vostra discrezione (capirete a cosa servono leggendo il resto):
- 1 cicalino (richiede relé aggiuntivo)
- 1 led rosso
- 1 led giallo
- 1 pulsante
- 1 resistenza da 10KΩ
- 1 modulo RTC

Adesso iniziate a meditarci su, ci vediamo domani con la Parte 1 - Collegamenti elettrici.

2 commenti:

  1. ciao ho bisogno di contattare chi ha creato questa applicazione per proporre una collaborazione remunerata 3802435930

    RispondiElimina
  2. Ciao Michele, come avrai notato dalla data del post non ho più avuto molto tempo per curare il blog.
    Il progetto comunque va avanti e periodicamente rilascio aggiornamenti su github. Se vuoi segnalare un bug o hai altre richieste puoi trovare i miei riferimenti qui: https://github.com/pierinz/

    RispondiElimina