Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Progettazione e sviluppo in C++ di una centralina di controllo per serrature motorizzate con controllo accessi
Facolt di Ingegneria
Indice
Introduzione .............................................................................................. 3 Requisiti..................................................................................................... 6 Concetti del corso di Algoritmi e Strutture Dati presenti nellambito della progettazione e sviluppo del software della centralina .................... 8 Scelta del microcontrollore ....................................................................... 9 Pre-verifica disponibilit RAM e uso della EEprom per i dati permanenti ................................................................................................................. 10 Scelta del Keypad e comunicazione con la centralina ............................ 12 Metodi di inizializzazione e startup in Arduino...................................... 15 Inizializzare le risorse hardware.............................................................. 16 Creazione di oggetti polimorfici sulla base di parametri iniziali costanti ................................................................................................................. 18 Gli Interrupt............................................................................................. 21 Creazione degli oggetti OOP ad allocazione dinamica tramite loperatore New()....................................................................................................... 23 Override del metodo di sistema per ricavare data e ora da un chip DS1307.................................................................................................... 24 Debugging, gestione errori e difficolt caratteristiche dello sviluppo con un microcontrollore ................................................................................. 25 Gestione password, parsing e logica di ricerca ....................................... 27 Realizzazione hardware della centralina................................................. 29 Motoriduttore .......................................................................................... 31 Esploso di montaggio.............................................................................. 33 Possibili utilizzi del prototipo ................................................................. 34 Analisi comparativa con i dispositivi commerciali esistenti ed elementi di novit................................................................................................... 37 Bibliografia.............................................................................................. 41
Pag. 2
Facolt di Ingegneria
Introduzione
In un periodo di crisi economica che sta coinvolgendo i Paesi pi industrializzati, doveroso indirizzare gli sforzi creativi verso la ricerca di nuove tecnologie. LItalia e un paese non in grado di competere con i nuovi Paesi emergenti dal punto di vista della manodopera industriale. Di conseguenza, di fondamentale importanza maturare letica di creare novit tecnologiche in ogni contesto. Ecco da dove nasce lidea di progettare una serratura motorizzata. Ormai consuetudine nello stile di vita quotidiana usufruire di automatismi che rendono il vivere pi agevole. Sono svariate le comodit di cui ormai difficile fare a meno; si va dallaria condizionata ai finestrini elettrici di unautomobile, dai cancelli automatici alle tapparelle elettriche di una casa. La serratura rimane ancora uno dei pochissimi dispositivi profondamente legati allazione manuale della persona, si pensi che la prima chiave risale al 4000 a.C. nellantico Egitto. Pur essendosi evoluta nella tecnica di realizzazione costruttiva, la chiave rimasta concettualmente invariata nei secoli. Bisogna sempre ruotarla manualmente. La chiave anche un oggetto ingombrante da tenere sempre con s e, in caso di perdita, sussiste il serio pericolo di duplicazione. E stato riscontrato che le porte blindate, in assenza della chiusura con le mandate, sono facilmente apribili semplicemente forzando lo scrocco attraverso linserimento di una piccola lastra radiografica. E altres consuetidine, forse per pigrizia, non chiudere le mandate nelle ore diurne o per brevi permanenze nellambiente, con conseguente esposizione al rischio di ingressi forzati ad opera di indesiderati. Nel progetto della serratura motorizzata, la centralina impone la chiusura completa delle mandate ad ogni accostamento della porta. La presenza di un interruttore facilmente accessibile, chiamato Day&Night, inibisce in caso di attivazione la chiusura automatica che risulterebbe oppressiva negli ambienti lavorativi.
Pag. 3
Facolt di Ingegneria
Se si considerano sufficienti i motivi finora esposti per dotarsi di una serratura motorizzata, si possono allora valutare anche altre funzionalit dovute alla presenza di una centralina elettronica. La pi importante sicuramente caratterizzata dal controllo accessi che, oltre a garantire lingresso autenticato, permette anche di limitare lentrata degli utenti solo in certe fasce orarie di determinati giorni settimanali. Oltre a ci, lutente con i privilegi di ammistratore pu in qualunque momento disporre dellelenco completo degli accessi, comprensivo di orario e di identificativo, salvato su una comune chiavetta USB. Linstallazione del dispositivo che abilita fisicamente lapertura automatica intuitivo e applicabile a qualunque sistema di chiusura gi pre esistente.
Pag. 4
Facolt di Ingegneria
Ci reso possibile, a livello meccanico, dalla giunzione mediante coppia conica fra il perno del motoriduttore e il codolo del cilindro. Il numero ridotto di componenti di cui composto il prototipo costuisce un ulteriore vantaggio sia in termini di costi che di installazione.
Pag. 5
Facolt di Ingegneria
Requisiti
La centralina soddisfa le seguenti specifiche: Funzione day&night attivabile con semplice tasto selettore; in modalit day non chiude le mandate Programmabile facilmente dallutente da tastiera Impostazione di password personalizzate con accesso a fasce orarie ristrette, giornaliere o settimanali fino a 50 utenti Blocco tastiera esterna (pressione di 2,5 secondi del pulsante di apertura interno); sblocco automatico allapertura dallinterno Rolling code: permette di inserire pi numeri fino allinserimento della password corretta(per evitare la memorizzazione visiva di chi osserva mentre digiti il codice) La tastiera comunica con la centralina in modo criptato, anche collegando i fili tra di loro, il sistema non apre la porta. Dopo 30 digitazioni casuali, il sistema si blocca per 3 minuti. Funzione anticoercizione: inserendo il proprio codice +1 apre la porta e chiama e/o manda SMS fino a 5 numeri di telefono con funzione allarme Apertura e chiusura automatica di scrocco e mandate senza lausilio delle chiavi Apertura da remoto tramite un semplice squillo telefonico senza costo Gestione degli utenti abilitati allapertura da remoto tramite semplici SMS autorizzati da un codice amministrativo Memorizzazione degli ultimi 5500 accessi, con relativo orario. Lutente amministratore ha la possibilit di scaricare su una chiavetta USB i dati memorizzati in un file formato Excel
Pag. 6
Facolt di Ingegneria
Pag. 7
Facolt di Ingegneria
Concetti del corso di Algoritmi e Strutture Dati presenti nellambito della progettazione e sviluppo del software della centralina
1. Applicazione di Design Pattern per esigenze tipiche dei microcontrollori applicati al C++ 2. Concorrenza nel microcontrollore a CPU singola. Uso degli interrupt per la gestione di processi secondari a priorit Real Time. Variabili volatili 3. Uso di meccanismi di astrazione, tipici della programmazione OOP, come strumento per un ottimale riutilizzo di codice. 4. Il concetto di ricorsione applicato alla scansione di strutture dati in memoria EEprom. Complessit teorica dellalgoritmo. Vantaggi e svantaggi nelluso di una EEprom 5. Applicazione dei concetti fondamentali della programmazione orientata agli oggetti: incapsulazione, strutturazione gerarchica delle classi, ereditariet, polimorfismo e information hiding 6. Programmazione event driven in C++ in risposta a eventi fisici esterni trasmessi da sensori e keypad 7. Gestione delle eccezzioni nel microcontrollore. Debugging e monitoring della memoria su un dispositivo privo di output visivo, con uptime continuo al 100% (watchdog) 8. Trasmissione seriale tra microcontrollori. Ricezione dei caratteri dal keypad e corrispettivo invio di informazioni sul segnale acustico 9. Gestione password, parsing e logica di ricerca. 10.Tecniche avanzate della programmazione OOP nel microcontrollore, hacking dello stesso al fine di disporre di Templates e allocazione di oggetti (operatori new()e free())
Pag. 8
Facolt di Ingegneria
Il modello utilizzato per governare la centralina di questo progetto il Mega basato su processore ATmega1280 ad una frequenza di 16MHz. LArduino Mega ha 54 input/output digitali, 16 input analogici e 4 porte seriali. La memoria Flash di 128KB ed allo stesso tempo la massima dimensione possibile del compilato, la SRAM di 8KB ed la quantit di memoria disponibile a run-time per le variabili e per ogni altra struttura temporanea, disponibile anche una EEprom di 4KB utilizzata dal software di questo progetto per contenere le password degli utenti con le loro restrizioni di accesso.
Pag. 9
Facolt di Ingegneria
Pag. 10
Facolt di Ingegneria
Pag. 11
Facolt di Ingegneria
Il keypad lo strumento principale di input per lutente. Tramite il keypad possibile entrare nel men amministrativo e svolgere le principali impostazioni della centralina. Le pi importanti sono laggiunta/eliminazione di utenti, limpostazione di data e ora e il reset a fabbrica di tutto il sistema.
Pag. 12
Facolt di Ingegneria
Il keypad di fabbrica predisposto con un uscita a matrice, il che significa dover impiegare ben nove ingressi digitali sul microcontrollore oltre ai collegamenti necessari per alimentare lilluminazione dei tasti alla loro prima pressione. Per ridurre il numero di connessioni tra keypad e centralina si scelto di cambiare la comunicazione da analogica a digitale. Invece di collegare direttamente luscita a matrice alla centralina la si collega ad un piccolo microprocessore PIC installato su una PCB posta dietro il keypad.
Figura 8: Il microcontrollore PIC legge la matrice del keypad e invia i dati in protocollo seriale alla centralina
Il PIC si prender cura di leggere le pressioni dei tasti dalluscita a matrice e di trasmetterli alla centralina in protocollo seriale alla velocit di 600 bit per secondo. Con tale digitalizzazione si riduce il numero di connessioni con la centralina a un solo filo per la trasmissione e altri due per lalimentazione. Inoltre la bassa velocit di trasmissione scelta rende molto pi ampia la possibilit di installare i cavi allinterno di canaline disturbate elettricamente dal passaggio di corrente in altri cavi vicini.
Pag. 13
Facolt di Ingegneria
Figura 9: Il circuito stampato ospitante due PIC per la conversione A/D di suoni e pressioni tasti
Pag. 14
Facolt di Ingegneria
Pag. 15
Facolt di Ingegneria
Pag. 16
Facolt di Ingegneria
seriamente possibile alimentando motori a elevato assorbimento di corrente. Nel progetto in essere, i consumi di 1.6A del motore, a seguito di analisi effettuata con loscilloscopio, non generano disturbi tali da richiedere contromisure di schermatura elettromagnetica. Lattivazione delle resistenze interne di Pull Down si effettua semplicemente chiamando void digitalWrite(canale, HIGH) dopo aver impostato il canale come ingresso. La resistenza di Pull Down connette il polo positivo del canale a massa in modo tale da filtrare i disturbi nella lettura dando un preciso riferimento nullo nel caso in cui esternamente non si cortocircuitino i due poli del canale. Il metodo di inizializzazione void setup() viene infine usato per impostare la velocit di comunicazione delle porte seriali. Il protocollo seriale non prevede lauto-negoziazione della velocit tra i dispositivi, questa va preimposta al medesimo valore su entrambi tramite il metodo Serial.begin(9600); Nel progetto si utilizzano due porte seriali, relativamente per: la comunicazione tra il microcontrollore Arduino nella centralina e il PIC posizionato sul retro del keypad luscita dedicata alle stringhe di debug
Pag. 17
Facolt di Ingegneria
Pag. 18
Facolt di Ingegneria
Nella figura sopra riportata possibile vedere come quanto spiegato sia stato realizzato, agglomerando tutte le parti logiche comuni nella classe virtuale/astratta KeybVirtual. Le classi KeybSerial e KeybAnalog, derivate della classe astratta (figlie), contengono tutte le caratteristiche di funzionamento specifiche per la loro tipologia fisica di tastiera. Ad esempio il metodo void disable()
Pag. 19
Facolt di Ingegneria
comune a tutte le tipologie, permette di disabilitare qualunque keypad da tentativi di utilizzo fisico esterno inibendo la ricezione della pressione dei tasti. Mentre il metodo void serial2Write() della classe KeybSerial permette di inviare in forma digitale, sottoforma di byte, il codice ASCII corrispondente al tasto premuto. Si faccia bene attenzione che dal punto di vista logico non KeybSerial che invia il byte direttamente alla centralina, ma la centralina stessa che legge il carattere, corrispondente alla pressione del tasto, dalla classe astratta KeybVirtual! Si sar anche notata in figura la presenza della classe Keypad evidenziata in arancione e riferita da KeybAnalog con una freccia differente. Ci sta a significare che Keypad una semplice variabile di KeybAnalog e pertanto ne potranno essere chiamati a piacere i metodi pubblici da parte del contenitore KeybAnalog. Infatti se si decide di collegare alla centralina direttamente una tastiera a matrice, sar compito della centralina stessa occuparsi del parsing della matrice rilevando le pressioni dei tasti. La classe Keypad fa parte delle librerie Arduino di sistema.
Si vuole ricordare che nella tecnologia Arduino, per ridurre luso di risorse, non prevista di serie la possibilit di implementare unarchitettura polimorfica. Il programmatore pu scegliere di disporne e di abilitarla attraverso la seguente chiamata allinizio del codice sorgente: extern "C" void __cxa_pure_virtual() { while(1); }
Pag. 20
Facolt di Ingegneria
Gli Interrupt
LInterrupt un segnale asincrono che indica il 'bisogno di attenzione' da parte di una periferica finalizzata ad una particolare richiesta di servizio. Nel progetto in esame vengono utilizzati due interrupt per la lettura dei seguenti dispositivi: encoder motore sensore di chiusura porta Nel primo caso vi un encoder che, solidale alla rotazione del perno motore, genera tre impulsi elettrici per ogni rotazione completa attorno allasse. E evidente che il numero di impulsi provenienti dallencoder molto elevato; avendo scelto un motore da 80 rpm con riduzione 1:50 allora il numero di impulsi al minuto sar 80x50x3= 12.000 imp/min. Tale frequenza sarebbe troppo elevata per poter verificare la presenza di tensione, corrispondente ad un impulso, nel metodo void loop() Infatti, in modalit watchdog, non sufficiente affidarsi rigorosamente alla frequenza di clock della CPU, anche se elevata, per non perdere nemmeno unimpulso. Ma necessario garantire che anche il metodo contenente il controllo dellimpulso debba terminare almeno entro la met della durata impulso stesso. Con i dati di progetto il tempo massimo di durata del metodo principale void loop() , affinch non venga perso nemmeno un impulso, dovrebbe essere di (3.600/12.000)/2=0.15 sec. Un tempo decisamente troppo breve e comunque impossibile da garantire sotto certe condizioni logiche in cui operazioni considerate unitarie, come ad esempio lapertura dello scrocco, aumenterebbero la durata del metodo principale a qualche secondo. Ladozione degli interrupt in tale situazione permette di avere un metodo che, nel caso di un singolo impulso, viene automaticamente richiamato sospendendo ogni altro flusso in esecuzione. Gli unici vincoli da rispettare sono: la limitata disponibilit fisica di interrupt lobbligo di rendere il metodo richiamato il pi breve possibile Ecco che nel progetto in risposta diretta agli impulsi encoder ci si limita solamente a incrementare una variabile: void encoderListener(){ encoderCount++; } Questo metodo viene assegnato allinterrupt con la dichiarazione
Pag. 21
Facolt di Ingegneria
attachInterrupt(<canale>, encoderListener, CHANGE); in cui viene passato come parametro un puntatore al metodo in gestione. Non ultimo, va ben tenuto presente che ogni variabile modificata da un metodo richiamato da un evento di tipo interrupt, deve essere dichiarata di tipo volatile Con tale dichiarazione, propria del linguaggio C++, ci si assicura che il valore della variabile verr sempre aggiornato ad ogni lettura della stessa evitando ogni meccanismo di caching. Alla fine di quanto detto lecito affermare che luso degli interrupt a tutti gli effetti una modalit di programmazione concorrente.
Pag. 22
Facolt di Ingegneria
Pag. 23
Facolt di Ingegneria
Override del metodo di sistema per ricavare data e ora da un chip DS1307
I requisiti del progetto per la gestione delle fascie orarie a giorni settimali, impongono che il microcontrollore possa disporre dellora esatta anche in condizioni di riavvio a seguito di mancanza di corrente elettrica. Il chip DS1307 di fatto un orologio al quarzo che, quando viene alimentato costantemente con una tensione di 3V, in grado di fornire un valore numerico corrispondente allora esatta. Tale valore numerico viene trasmesso digitalmente tramite protocollo I2C. Il protocollo I2C ha la particolare caratteristica di permettere la comunicazione con un elevato numero di dispositivo sui medesimi cavi di trasmissione. Ci permesso in virt dellassegnamento di un indirizzo, corrispondente ad un byte univoco, ad ogni singola periferica. La comunicazione coordinata da un unico dispositivo master; nel caso di questo progetto lo stesso microcontrollore Arduino. Il valore numerico trasmesso dal chip consiste nel numero di secondi trascorsi a partire dal 1 Gennaio 1970 allistante corrente.
Pag. 24
Facolt di Ingegneria
Oltre alle problematiche finora descritte, nello sviluppo di codice sorgente per un microcontrollore si aggiunge spesso anche la mancanza di poter effettuare il debug del codice riga per riga. E, di conseguenza, non possibile esaminare il valore delle variabili durante lesecuzione del software. Una delle sostanziali differenza fra un microcontrollore ed un personal computer, seppure ad uso industriale, sta nelle pretese molto pi rigide di continuo up-time del primo rispetto al secondo. Infatti mentre per un personal computer, solo per aggiornamenti indispensabili, sono previsti dei fermi anche di svariati giorni nellarco di un anno; da un microcontrollore, quale pu essere Arduino, si pretende che resti in funzione 24 ore su 24
Pag. 25
Facolt di Ingegneria
senza soluzioni di continuit. In aggiunta nei microcontrollori, nemmeno a seguito di situazioni impreviste, si deve ferificare un errato accesso a zone di memoria non corrette; in quanto, essendo comunemente usati linguaggi di programmazione di basso livello, questo provocherebbe nel migliore dei casi il reset del sistema.
Pag. 26
Facolt di Ingegneria
Pag. 27
Facolt di Ingegneria
Una volta stabilita la validit della password inserita, viene verificata labilitazione allingresso nel giorno e nella fascia oraria corrente. Infatti lutente amministratore pu decidere di limitare gli orari e i giorni di accesso di tutti gli altri utenti.
Figura 14: Diagramma delle classi per la gestione accessi via password a fasce orarie
Pag. 28
Facolt di Ingegneria
Figura 15: Printed Circuit Board ospitante il microcontrollore Arduino Mega e lelettronica logica e di potenza
La scheda a circuito stampato stata disegnata per ospitare componenti comunemente reperibili in commercio con modalit di montaggio a foro passante. Di seguito si riportano le immagini reali della centralina assemblata. Si notino i seguenti elementi principali: lArduino Mega inserito capovolto la resistenza di potenza gialla che limita lassorbimento del motore la morsettiera di tipo a castello i tre relay rettangolari di colore nero che fungono da Ponte H per il motore e da Open Collector verso altri eventuali dispositivi esterni
Pag. 29
Facolt di Ingegneria
Pag. 30
Facolt di Ingegneria
Motoriduttore
E stato scelto il seguente motoriduttore a spazzole considerando: la velocit media a coppia massima i consumi di corrente la bassa tensione continua, nel rispetto delle normative la presenza di un encoder a effetto Hall integrato lelevato tempo di vita dichiarato dal produttore
Motoriduttore epicicloidale. Albero di uscita supportato da due cuscinetti a sfera. Soppressione disturbi con VDR sul collettore e condensatori. Direzione di rotazione secondo polarit. Pu essere montato in ogni posizione. Massimo carico radiale: 200N Massimo carico assiale: 100N
Pag. 31
Facolt di Ingegneria
Pag. 32
Facolt di Ingegneria
Esploso di montaggio
Grazie allutilizzo di Autocad Inventor stato realizzare con precisione il disegno tecnico del cover. In modo pi semplice stato riprodotto il motoriduttore al fine di creare un chiaro esploso di montaggio. Si desidera far notare la scelta dellutilizzo una coppia conica in acciaio Inox per trasferire il moto rotazionale del perno in uscita dal motoriduttore al codolo del cilindro della serratura.
Pag. 33
Facolt di Ingegneria
Pag. 34
Facolt di Ingegneria
Pag. 35
Facolt di Ingegneria
Pag. 36
Facolt di Ingegneria
Pag. 37
Facolt di Ingegneria
Alcuni produttori hanno progettato le serrature motorizzate prevedendone linstallazione solo su porte dedicate ad ospitare il dispositivo. Invece la totalit dei produttori obbliga il cliente, gi in possesso di una porta blindata, alla sostituzione della serratura e del cilindro per renderli compatibili con il prodotto automatizzato. Dal punto di vista operativo si possono riscontrare altre problematiche riguardanti i prodotti attualmente in commercio. Le pi frequenti sono: la poca coppia in uscita al perno del motoriduttore che causa di chiusure incomplete su porte di vecchia costruzione con accostamenti imprecisi vari comportamenti errati del sistema nel caso di situazioni impreviste come ad esempio nel caso di lenti accostamenti della porta alla cassamatta. Tale situazione conseguenza di una chiusura errata delle mandate sui battenti a cui segue la mancata segnalazione sonora allutente o addirittura la riapertura automatica le effrazioni al sensore porta non sono considerate dalla logica del sistema. Spesso la manomissione del sensore viene rilevata dal sistema come una apertura manuale della porta tramite chiave a cui segue linopportuna apertura automatica della serratura Il prototipo oggetto della tesi dotato di una centralina elettronica attraverso la quale vi la possibilit di programmare le password di accesso tramite il solo utilizzo della tastiera e con lausilio di segnali sonori. Il progetto stato sviluppato in modo tale da poter impostare fino a 50 utenti personalizzabili con accesso a fasce orarie ristrette, giornaliere o settimanali. Nessuna funzionalit di programmazione richiede il collegamento della centralina con un personal computer esterno. La tastiera tra i componenti pi importanti dellintero prototipo e come tale presenta le seguenti caratteristiche di rilievo: manifattura in acciaio inox, tasti compresi certificazione antivandalo e grado di protezione IP67 comunicazione digitale e criptata con la centralina e, di conseguenza, anche operando direttamente sui fili il sistema non potr ricevere un comando di apertura possibilit di bloccare la tastiera attraverso un pulsante interno segnalatore acustico integrato Prendendo in considerazione i difetti dei dispositivi attualmente reperibili nel mercato, il prototipo di serratura motorizzata stato fin dallinizio progettato inserendo i seguenti elementi di novit e miglioramento: un potente motoriduttore da 2 Ncm in grado di aprire e chiudere le mandate anche nelle pi difficili situazioni
Pag. 38
Facolt di Ingegneria
la serratura motorizzata stata predisposta in modo tale da poter essere installata ovunque, anche su cilindri gi esistenti con codolo modalit Day&Night attivabile con un interruttore che permette di inibire la chiusura automatica a seguito dellaccostamento della porta. E utile negli uffici e negli ambienti a elevata frequentazione funzionalit Rolling Code mediante la quale, a seguito di svariate pressioni di tasti, il sistema verifica sempre solo gli ultimi 5 numeri digitati. Ci rende pi difficoltosa la memorizzazione visiva da parte di persone nelle immediate vicinanze blocco della tastiera per 3 minuti a seguito di 30 digitazioni non corrette. La tastiera si riattiva prima del tempo nel caso di aperture manuali o pressioni del tasto di apertura dallinterno possibilit di memorizzare fino a 5500 accessi con le relative data e ora. Tutti questi dati sono scaricabili comodamente su una chiavetta USB Un altro elemento di novit nel prototipo rappresentato dalla presenza di un modulo GSM.
Pag. 39
Facolt di Ingegneria
Tale modulo integrato permette di abilitare le seguenti funzionalit: apertura da remoto tramite squillo telefonico senza alcun costo in quanto il modulo disconnette subito la chiamata non appena identifica il chiamante tra gli autorizzati facile programmazione, anche da remoto, tramite semplici messaggi SMS contenti una password amministrativa anticoercizione utile in caso di richiesta forzata di apertura della porta da parte di estranei in situazioni di pericolo. Infatti, inserendo il proprio codice con lultimo numero incrementato di uno, la porta si apre normalmente e in contemporanea il modulo GSM manda dei messaggi preimpostati a degli utenti presenti in una lista di emergenza.
Pag. 40
Facolt di Ingegneria
Bibliografia
Stan Gibilisco, Manuale pratico di elettrotecnica ed elettronica, Hoepli, 2008 Michael Margolis, Arduino. Progetti e soluzioni, Hops, 2011 Muhammad Rashid, Elettronica di potenza. Dispositivi e circuiti, Pearson, 2007 Cesare Rota, Programmare con C++, Hoepli, 2009 Salvatore Salpagno, Manuale di programmazione modulo GSM TELxxC versione 20, Salpagno, 2011 Maik Schmidt, Il manuale di Arduino, Apogeo, 2011 Curtis Waguespack, Sean Dotson, Bill Bogan e Andrew Faix, Mastering Autodesk Inventor 2009 and Autodesk Inventor LT 2009, Autodesk, 2010 Arduino Learning, tratto da http://arduino.cc/en/Tutorial/HomePage Arduino Reference, tratto da http://arduino.cc/en/Reference/HomePage Tutorial e specifiche del software Sprint Layout, tratto da http://www.abacom-online.de/uk/html/sprint-layout.html EAO Product Information S.series Lite, datasheet del keypad Datasheet del motoriduttore, tratto da http://www.micromotorssrl.com/motor_e192/e192_pg.html Datasheet di Arduino Mega, tratto da http://arduino.cc/en/Main/ArduinoBoardMega
Pag. 41