Corso base Arduino: immissione di password e codici segreti

Vediamo come sia possibile realizzare un sistema d'immissione di codici segreti e di password su Arduino senza l'ausilio di alcuna tastiera a matrice. La corretta digitazione determina l'attivazione di un carico, ad esempio un relè o una elettroserratura mentre una errata composizione della chiave pone la scheda in uno stato di blocco e di un eventuale allarme.

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

banner prova1

La tecnologia sta, pian piano, abbandonando i tradizionali lucchetti e chiavi di metallo per aprire e chiudere le porte. Al loro posto si stanno affermando, sempre di più, i sistemi digitali a pulsanti per la digitazione di password e di codici segreti. Teoricamente più sicuri delle classiche chiavi, essi prevedono numerosissime combinazioni che fanno desistere i malintenzionati da qualsiasi tentativo di furto e di scasso.

Il circuito

Nell'esempio che segue non utilizziamo la classica tastiera a matrice ma prediligiamo, per ragioni pratiche, l'adozione di alcuni pulsanti normalmente aperti, come visibile nello schema e nel cablaggio di cui alla figura 1.

figura 1 schema e cablaggio
Figura 1: schema elettrico e cablaggio

Lo schema elettrico è composto da quattro pulsanti n/a collegati, rispettivamente, alle porte 4, 5, 6, 7, da un diodo LED rosso con funzione di segnalazione di errore, collegato alla porta 10 e un diodo LED verde, con funzione di segnalazione di operazione andata a buon fine, collegato alla porta 11. Le quattro porte, configurate come ingressi digitali, sono collegate a massa, tramite le rispettive resistenze di pull-down. La pressione di uno dei tasti pone l'ingresso in uno stato logico alto, poiché collegato direttamente a Vcc. I due diodi LED hanno la solita resistenza di limitazione, calcolata tramite la legge di Ohm.

Lo sketch

Si supponga che la password debba essere composta da 4 cifre e quella corretta sia "1234". La soluzione software proposta è, ovviamente, una delle tante che si possono adottare. L'algoritmo utilizzato nell'esempio, il cui listato è visibile in figura 2, segue i seguenti passi:

  1. Azzera la stringa (stringa nulla)
  2. Se si preme il pulsante 1 si accoda il carattere 1 alla stringa
  3. Se si preme il pulsante 2 si accoda il carattere 2 alla stringa
  4. Se si preme il pulsante 3 si accoda il carattere 3 alla stringa
  5. Se si preme il pulsante 4 si accoda il carattere 4 alla stringa
  6. Se la lunghezza della stringa è di 4 cifre ed essa è 1234 allora accende il diodo Led VERDE (OK)
  7. Se la lunghezza della stringa è di 4 cifre ed essa NON è 1234 allora accende il diodo Led ROSSO (ERRORE)
  8. Ritorna al punto 2

Pertanto, il programma si basa sulla concatenazione di un carattere alla stringa ogni volta che viene premuto un tasto. Se si sbaglia la digitazione di una cifra occorre resettare Arduino e ripartire da capo.

È interessante comprendere la funzione "antirepeat" presente nello sketch, e precisamente all'interno del controllo dei tasti (condizioni "if"). Senza di essa, la pressione di un pulsante (più o meno lunga) causerebbe la formazione di una lunghissima stringa, in quanto la sequenza di aggiunta della cifra si ripeterebbe per tutto il tempo in cui il tasto viene pressato. In ogni caso, si consiglia d'implementare anche una gestione hardware dell'antirimbalzo, unita a una breve temporizzazione software, in modo da scongiurare del tutto i piccoli scherzetti che possono derivare dai pulsanti meccanici, specialmente se datati oppure ossidati.

Come idea aggiuntiva si potrebbe aggiungere al circuito anche un piccolo buzzer che emetta un breve "beep" ogni volta che si digita una cifra della password. È possibile, ovviamente, aumentare il numero dei pulsanti del sistema, in modo da simulare i numeri compresi tra 0 e 9. In questo caso, sicuramente, sarebbe meglio utilizzare la più elegante tastiera a matrice, che esamineremo in una delle prossime puntate.

figura 2 sketch
Figura 2: lo sketch

Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.