Nel precedente articolo abbiamo visto come leggere una tastiera. In questo articolo vedremo come realizzare un’applicazioni per l’attivazione di una elettroserratura tramite l’immissione di una password da tastiera.
Indice
Descrizione dei componenti
L’applicazione proposta permette l’attivazione di una elettroserratura 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;
- Elettroserratura 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.
La tastiera 4×4 è dotata 16 tasti e base adesiva. Utilizzando un microcontrollore è possibile, effettuando la scansione degli 8 pin di uscita, verificare quale dei 16 tasti è stato premuto.
Caratteristiche
- Dimensioni (mm): 77x70x1,3
- Lunghezza della piattina: 86 mm (connettore compreso)
- Connettore: 8 pin (passo 2,54 mm)
- Resistenza di isolamento: 100 MΩ, 100 V
- Rigidità dielettrica: 250 VRms (50-60 Hz, 1 min)
- Rimbalzo contatto: <= 5 ms
- Temperatura di funzionamento: da 0°C a +70°C
- Peso: 10 g
Display LCD 2×16 retroilluminato
Si tratta di un display LCD 2 righe e 16 caratteri alfanumerici con controller HD44780, retroilluminazione blu, caratteri bianchi e interfaccia I²C. Particolarmente indicato per ridurre il numero di I/O richiesti in caso di utilizzo con Arduino o altro microcontrollore, l’interfaccia I²C dispone di jumper per attivare la retroilluminazione e regolazione del contrasto che viene effettuata tramite un piccolo trimmer. Alimentazione: 2,5-6 Vdc, dimensioni (mm): 80x36x19, peso: 100 grammi.
Per maggiori informazioni vedere articolo KS0061 Display LCD I2C 16×2
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è.
Elettroserratura
L’elettroserratura è 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 elettroserrature 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 modello utilizzato per il progetto è disponibile in due versioni con le stesse misure (54x37x28mm) peso 150 grammi.
Quello che cambia è la tensione di alimentazione 12 V CC – 1,2 A oppure 24 V CC – 0,8 A.
Lunghezza cavo è di circa 370 mm.
La corsa dell’attuatore è di 10 mm. Il tempo di sblocco: 1 secondo, con una nota, quella di non mantenere l’alimentazione per più di 8 secondi. per surriscaldare il nucleo. La temperatura di lavoro è compresa tra da -10 ~ +60°C.
Vedere anche articolo Progetto IoT con Arduino WiFi e Blynk 2.0 – Attiviamo un’elettroserratura
Schema dei collegamenti
Circuito montato
Dettaglio buzzer e LED RGB
Dettaglio relè per comando elettroserratura
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; } |
Filmato
Dove trovare i componenti
I principali componenti possono essere acquistati presso il sito di Futura elettronica, i loro codici sono:
- Display LCD 16×2 con retroilluminazione blu, codice 2846-LCD16X2AI2C
- Tastiera a membrana 4×4 – 16 tasti, codice 2846-TST16MEMB
- Modulo buzzer passivo, codice 8300-KY006
- Modulo relè 5 Vdc, codice 2846-TRIGGERLL5V
- Mini elettroserratura 12 Vdc, codice 2846-ELLOCK12V
- Mini elettroserratura 24 Vdc, codice 2846-ELLOCK24V