- Components utilitzats:
- Connexió del teclat 4x4 amb Raspberry Pi mitjançant multiplexació:
- Descripció del circuit:
- Explicació de treball:
- Explicació de la programació:
La seguretat és una preocupació important en el nostre dia a dia i els panys digitals s’han convertit en una part important d’aquests sistemes de seguretat. Hi ha molts tipus de tecnologies disponibles per protegir el nostre lloc, com ara sistemes de seguretat basats en PIR, sistemes de seguretat basats en RFID, alarmes de seguretat làser, sistemes biomatrius, etc.
Anteriorment, hem creat Digital Lock amb contrasenya amb Arduino i 8051, aquí anem a construir aquest Digital Lock amb Raspberry Pi amb contrasenya definida per l'usuari. Un cop configurada la contrasenya, l'usuari només pot accedir a la porta amb una contrasenya correcta.
Si no esteu familiaritzat amb Raspberry Pi, hem creat una sèrie de tutorials per aprendre Raspberry Pi, amb la interfície amb tots els components bàsics i alguns projectes senzills per començar, comproveu-ho.
Components utilitzats:
- Raspberry Pi (amb targeta SD arrencada)
- Mòdul de teclat
- Zumbador
- LCD de 16x2
- Olla de 10k
- Paquet de resistències de 10 k (extracció)
- LED
- 1k resistència
- Taula de pa
- Carro de CD / DVD com a Gate
- Potència 5 volts
- Controlador de motor L293D
- Bateria de 12 volts
- Connexió de cables
Connexió del teclat 4x4 amb Raspberry Pi mitjançant multiplexació:
En aquest circuit, hem utilitzat la tècnica de multiplexació per connectar el teclat per introduir la contrasenya al sistema. Aquí fem servir un teclat multiplex 4x4 amb 16 tecles. Normalment, si volem utilitzar 16 tecles, necessitem 16 pins per a la connexió a Arduino, però en la tècnica de multiplexació només necessitem 8 pins per connectar 16 tecles. De manera que és una manera intel·ligent d’interfaçar un mòdul de teclat. Obteniu més informació sobre la tècnica de multiplexació i el seu funcionament en aquest pany digital mitjançant 8051.


La tècnica de multiplexació és una manera molt eficient de reduir el nombre de pins utilitzats amb el microcontrolador per proporcionar entrada, contrasenya o números. Bàsicament, aquesta tècnica s'utilitza de dues maneres: una és l'escaneig de files i l'altra és l'escaneig de columnes. Si fem servir la biblioteca del teclat (#include
Però aquí, en aquest projecte, hem implementat una manera curta de codificar el mateix teclat, sense utilitzar la biblioteca de teclats. Consulteu-lo a la secció de programació següent.
Descripció del circuit:
El circuit d’aquest bloqueig de porta digital Raspberry Pi és molt senzill i conté Raspberry Pi 3, mòdul de teclat, timbre, carro DVD / CD com a porta i LCD. Aquí Raspberry Pi controla el procés complet com prendre el mòdul de teclat del formulari de contrasenya, comparar contrasenyes, conduir el brunzidor, obrir / tancar la porta i enviar l’estat a la pantalla LCD. El teclat s'utilitza per introduir la contrasenya. El buzzer s’utilitza per indicacions i és impulsat per un transistor NPN incorporat. La pantalla LCD s’utilitza per mostrar-hi l’estat o els missatges.

Els pins de columna del mòdul de teclat es connecten directament al pin GPIO 22, 23, 24, 25 i els pins de fila estan connectats a 21, 14, 13, 12 dels pins wringPi de Raspberry Pi. Una pantalla LCD de 16x2 està connectada amb el raspberry Pi en mode de 4 bits. Els pins de control del LCD RS, RW i En estan connectats directament als pins GPIO 11, GND i 10. Els pins de dades D4-D7 estan connectats als pins GPIO 6, 15, 4 i 1. Un zumbador està connectat al pin GPIO 8. I el controlador del motor L293D està connectat als pins 28 i 29 de GPIO de Raspberry Pi. Es connecta una pila de 12 volts al pin 8 de L293D respecte a terra.
Explicació de treball:
El treball d’aquest projecte és senzill. Quan l'usuari executa el codi a Raspberry Pi, la pantalla LCD mostra algun missatge de benvinguda i després mostra "A- Contrasenya d'entrada" i a la segona línia B- Canvia la contrasenya ". Ara l'usuari pot seleccionar la seva opció prement A i B al teclat.
Ara, si l'usuari vol obrir la porta, ha de prémer "A" al teclat i el sistema demanarà contrasenya. La contrasenya per defecte és "1234". Ara l'usuari ha d'introduir la contrasenya i després d'aquest sistema comprovarà la contrasenya, si és vàlida o no:
1. Si l'usuari introdueix la contrasenya correcta, el sistema obrirà la porta.
2. Si l'usuari introdueix una contrasenya incorrecta, el sistema enviarà l'ordre al timbre i emetrà un so i mostrarà "Accés denegat" a la pantalla LCD.

Ara suposem que l'usuari vol canviar la contrasenya, llavors ha de prémer 'B' al teclat i se li demanarà a l'usuari "Contrasenya actual" o "Contrasenya actual". Ara l'usuari ha d'introduir la contrasenya actual i, a continuació, el sistema comprova la seva correcció i realitza una de les tasques indicades.
1. Si l'usuari introdueix la contrasenya adequada, el sistema demanarà "Contrasenya nova" i ara l'usuari pot canviar la contrasenya introduint una contrasenya nova.
2. I si l'usuari introdueix una contrasenya incorrecta, el sistema accionarà el brunzidor i mostrarà "Contrasenya incorrecta: a la pantalla LCD.
Ara l'usuari ha de repetir tot el procés de nou per canviar la contrasenya.
Bàsicament, obrir i tancar la porta no és altra cosa que girar el motor en sentit horari i antihorari per obrir i tancar la porta. Per a un projecte petit, només cal afegir un motor de corrent continu per obrir i tancar la porta. També podem utilitzar servomotor o motor pas a pas, però hem de canviar el codi en conseqüència.
A més, podeu utilitzar un pany electrònic electrònic (fàcilment disponible en línia) en lloc del CD Trolley. Té un electroimant que manté la porta bloquejada quan no passa corrent pel pany (circuit obert) i, quan hi passa una mica de corrent, el pany es desbloqueja i es pot obrir la porta. El codi es canviarà en conseqüència, comproveu també aquesta revisió del projecte compartit: Arduino RFID Door Lock
Explicació de la programació:
La programació és molt similar a Arduino. La funció Arduino utilitza classes, però aquí hem fet aquest codi, utilitzant programació c, sense classes. També hem instal·lat una biblioteca wiringPi per a GPIO.
Primer de tot, ara hem d’incloure les biblioteques necessàries i, a continuació, definir els pins per a LCD, timbre, LED i motor.
#incloure
Després definiu els pins per a les files i columnes del teclat i definiu la matriu per emmagatzemar els números de contrasenya i teclat.
char pass; char pass1 = {'1', '2', '3', '4'}; int n = 0; fila de caràcters = {21, 14, 13, 12}; char col = {22, 23, 24, 25}; char num = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}};
Després d'ella, hem escrit algunes funcions per conduir el LCD:
La funció void lcdcmd s'utilitza per enviar comandes a LCD i la funció d' escriptura void s'utilitza per enviar dades a LCD.
La funció Impressió nul·la s’utilitza per enviar cadenes a LCD.
void print (char * str) {while (* str) {write (* str); str ++; }}
Funció void setCursor s’utilitza per configurar la posició del cursor a la pantalla LCD.
void setCursor (int x, int y) {int set = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (conjunt); }
La funció void clear () s’utilitza per esborrar la pantalla LCD i el buzzer buit () s’utilitza per emetre un so.
Les funcions void gate_open (), void gate_stop () i void gate_close () s’utilitzen per conduir el Gate (CD Trolley)
void gate_open () {digitalWrite (m1, BAIX); digitalWrite (m2, ALT); endarreriment (2000); } void gate_stop () {digitalWrite (m1, BAIX); digitalWrite (m2, BAIX); endarreriment (2000); } void gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, BAIX); endarreriment (2000); }
La funció donada s’utilitza per inicialitzar la pantalla LCD en mode de 4 bits.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
La funció de teclat donat buit () s'utilitza per a la interfície del mòdul de teclat amb Raspberry Pi amb un "mètode curt".
teclat buit () {int i, j; int x = 0, k = 0; endarreriment (2000); while (k <4) {for (i = 0; i <4; i ++) {digitalWrite (col, LOW); for (j = 0; j <4; j ++) {if (digitalRead (fila) == 0) {setCursor (x, 1);…………………
Consulteu totes les funcions del codi complet a continuació, el codi és fàcil i s’explica per si mateix.
