Nel precedente articolo abbiamo visto come leggere una tastiera. In questo articolo vedremo come realizzare un’applicazioni per l’attivazione di una elettro serratura tramite l’immissione di una password da tastiera.
Indice
Descrizione dei componenti
L’applicazione proposta permette l’attivazione di una elettro serratura tramite tastiera utilizzata per l’immissione della giusta password. Sono presenti alcuni componenti che nella realtà potranno essere omessi, in quanto non strettamente necessari al funzionamento. In particolare:
- Tastiera a membrana 4×4 per l’immissione della password
- Display LCD retroilluminato 16×2, gestito da modulo I2C per mostrare i messaggi;
- Led RGB (opzionale) a comando digitale per segnalare la correttezza della PW inserita (luce verde), oppure PW non corretta (luce rossa) ;
- Buzzer (opzionale) che segnala con un diverso suono se la PW è corretta o meno;
- Elettro serratura con attivazione del magnete dato da impulso in ingresso..
Tastiera a membrana 4×4
Le tastiere a membrana sono meno costose di quelle a tasti, sono sottili e hanno anche un supporto adesivo in modo da poterle attaccare alla maggior parte delle superfici piatte. Nel nostro caso useremo una tastiera 4×3.
Display retroilluminato
Si tratta un display LCD 16X2 con retroilluminazione blu a cui è associato un adattatore/convertitore dal bus seriale a I2C al bus parallelo utilizzato dai Display LCD con standard HD44780
Questo modulo permette di comunicare con un display LCD mediante il protocollo I2C che impegna quindi due sole porte.
Led RGB a controllo digitale WS2812B
Come led luminosi si è utilizzato un led tipo WS2812B , un led RGB a controllo digitale che utilizza un RGB SMD 5050, al cui interno è stato installato un minuscolo chip.
In questo chip è presente un regolatore di luminosità a corrente costante che assicura un colore costante anche con differenti tensioni di alimentazione e un interfaccia di comando seriale ad sola linea.
KY-006 Small passive buzzer module
Il modulo KY-006 Small passive buzzer module fa parte della serie “37 In 1 Sensor Module Board Set Kit For Arduino”, si presenta come un piccolo circuito, su di esso sono montati, un buzzer e un connettore a 3 pin, di cui solo 2 sono attivi, in quanto sono necessari solo il pin del segnale, indicato con il simbolo “S” e quello di massa indicato con il simbolo “-“..
KY-019 5V relay module
Il modulo KY-019 5V relay module fa parte della serie “37 In 1 Sensor Module Board Set Kit For Arduino”.
Il modulo richiede 5 V di alimentazione. Il segnale di controllo di input è identificato con “IN”, il relè ha un contatto di commutazione. L’accensione del led rosso segnala la commutazione del relè.
Elettro serratura
L’elettro serratura è un dispositivo elettromeccanico in cui è presente un ‘elettromagnete che attivato da un’impulso elettrico permette di sganciare il dispositivo di blocco. Queste di solito sono normalmente chiuse quando non sono alimentate e si aprono solo forbendo loro corrente.
Se le elettro serrature sono poste su porte utilizzate come uscite di sicurezza il funzionamento è l’opposto in quanto queste si devono aprire automaticamente se sono comandate o in casi di mancanza di energia elettrica. Quella nella foto è una serratura elettrica per sportelli e cassetti, è un modello a 12V normalmente chiuso, quindi quando la serratura viene alimentata si apre, quando la serratura non viene alimentata rimane chiusa. Il solenoide è da 12V 0.6A
Schema dei collegamenti
Circuito montato
Dettaglio buzzer e LED RGB
Dettaglio relè per comando elettro serratura
Programma di gestione
Caricamento librerie
Per il corretto funzionamento de programma dobbiamo installare, o verificare se già presenti alcune librerie sull’Arduino IDE. saranno necessarie:
1 2 3 |
#include <LiquidCrystal_I2C.h> #include <Keypad.h> #include <FastLED.h> |
La libreria LiquidCrystal_I2C per il funzionamento del display.
Libreria Keypad che si occuperà di configurare i pin così da riconoscere righe e colonne dei pulsanti premuti e mostrerà la della password digitata.
La libreria FastLED permetterà la gestione deli led a controllo digitale
Per installare le librerie aprire Arduino IDE e cliccare su Sketch > #includi libreria > Gestione librerie e ricercare la libreria da inserire, Per maggiori informazioni vedere l’articolo Arduino – Tutorial, come installare una libreria
Cosa fare prima di caricare lo Sketch
All’interno del programma, e prima di memorizzarlo nella memoria, sarà necessario modificare la password, nell’esempio impostata come “1A4B7C”, la lunghezza delle PW potrà essere modificata modificando il valore della variabile “Password_Length”, considerando che è dato data somma dei caratteri, più 1, poiché viene aggiunto un carattere nullo alla fine della stringa.
1 2 |
#define Password_Length 7 //Lunghezza PW +1 char Master[Password_Length] = "1A4B7C"; //PW per apertura serratura |
Codice
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
#include <LiquidCrystal_I2C.h> #include <Keypad.h> #include <FastLED.h> #define NUM_LEDS 1 #define DATA_PIN 10 //Pin collegamento Led RGB #define buzzer 11 //Pin collegamento buzzer #define rele 12 //Pin relè unsigned char i; // Definisce l'array di led CRGB leds[NUM_LEDS]; #define Password_Length 7 // Lunghezza PW +1 char Data[Password_Length]; char Master[Password_Length] = "1A4B7C"; //PW per apertura serratura byte data_count = 0, master_count = 0; bool Pass_is_good; char customKey; const byte ROWS = 4; const byte COLS = 4; char hexaKeys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; byte colPins[COLS] = {5, 4, 3, 2}; Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); pinMode(rele, OUTPUT); pinMode(buzzer, OUTPUT); FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS); } void loop() { leds[0] = CRGB::Black; FastLED.show(); lcd.setCursor(0, 0); lcd.print("Inserire PWD:"); customKey = customKeypad.getKey(); if (customKey) { Data[data_count] = customKey; lcd.setCursor(data_count, 1); lcd.print(Data[data_count]); data_count++; } if (data_count == Password_Length - 1) { lcd.clear(); if (!strcmp(Data, Master)) { lcd.print("PW Corretta"); leds[0] = CRGB::Green; FastLED.show(); for (i = 0; i < 80; i++) { digitalWrite (buzzer, HIGH) ; delay (1) ; digitalWrite (buzzer, LOW) ; delay (1) ; } digitalWrite(rele, HIGH); delay(5000); digitalWrite(rele, LOW); } else { lcd.print("PWD non corretta'"); leds[0] = CRGB::Red; FastLED.show(); for (i = 0; i < 80; i++) { digitalWrite (buzzer, HIGH) ; delay (2) ; digitalWrite (buzzer, LOW) ; delay (2) ; } delay(1000); } lcd.clear(); clearData(); } } void clearData() { while (data_count != 0) { Data[data_count--] = 0; } return; } |