- Componente utilizate:
- Conectarea tastaturii 4x4 cu Raspberry Pi utilizând multiplexarea:
- Descrierea circuitului:
- Explicație de lucru:
- Explicație de programare:
Securitatea este o preocupare majoră în viața noastră de zi cu zi, iar încuietorile digitale au devenit o parte importantă a acestor sisteme de securitate. Există multe tipuri de tehnologii disponibile pentru a ne asigura locul, cum ar fi sistemele de securitate bazate pe PIR, sistemul de securitate bazat pe RFID, alarmele de securitate laser, sistemele bio-matrice etc.
Am construit anterior Lock digital cu parolă folosind Arduino și folosind 8051, aici vom construi acest blocaj digital folosind Raspberry Pi cu parolă definită de utilizator. Odată ce parola este setată, utilizatorul poate accesa ușa doar cu parola corectă.
Dacă nu sunteți familiarizați cu Raspberry Pi, am creat o serie de tutoriale pentru a învăța Raspberry Pi, cu interfață cu toate componentele de bază și câteva proiecte simple pentru a începe, verificați.
Componente utilizate:
- Raspberry Pi (cu card SD pornit)
- Modulul tastaturii
- Buzzer
- 16x2 LCD
- Oala de 10k
- Pachet de rezistență de 10k (pull-up)
- LED
- Rezistor 1k
- Placă de pâine
- Cărucior CD / DVD ca Gate
- Putere 5 volți
- Șofer de motor L293D
- Baterie de 12 volți
- Conectarea firelor
Conectarea tastaturii 4x4 cu Raspberry Pi utilizând multiplexarea:
În acest circuit, am folosit tehnica de multiplexare pentru a interfața tastatura pentru introducerea parolei în sistem. Aici folosim tastatura multiplex 4x4 cu 16 taste. În mod normal, dacă dorim să folosim 16 taste, avem nevoie de 16 pini pentru conectarea la Arduino, dar în tehnica de multiplexare avem nevoie doar de 8 pini pentru interfața a 16 taste. Deci, este un mod inteligent de interfață a unui modul de tastatură. Aflați mai multe despre tehnica multiplexării și funcționarea acesteia în acest dispozitiv de blocare digitală folosind 8051.
Tehnica multiplexării este o modalitate foarte eficientă de a reduce numărul de pini folosiți cu microcontrolerul pentru furnizarea de intrare sau parolă sau numere. Practic, această tehnică este utilizată în două moduri - unul este scanarea pe rând, iar celălalt este scanarea pe coloane. Dacă folosim biblioteca tastaturii (#include
Dar aici, în acest proiect, am implementat un mod scurt de codare pentru aceeași tastatură, fără a utiliza biblioteca de tastaturi. Vă rugăm să o vedeți în secțiunea de programare de mai jos.
Descrierea circuitului:
Circuitul acestui dispozitiv de blocare digitală Raspberry Pi este foarte simplu, care conține Raspberry Pi 3, modul tastatură, buzzer, cărucior DVD / CD ca poartă și LCD. Aici Raspberry Pi controlează procesul complet, cum ar fi preluarea modulului de tastatură din formularul de parolă, compararea parolelor, conducerea buzzerului, deschiderea / închiderea porții și trimiterea stării pe ecranul LCD. Tastatura este utilizată pentru introducerea parolei. Buzzerul este utilizat pentru indicații și este acționat de un tranzistor NPN încorporat. LCD-ul este utilizat pentru afișarea stării sau a mesajelor pe acesta.
Pinii coloanei modulului tastaturii sunt conectați direct la pinul GPIO 22, 23, 24, 25, iar pinii Row sunt conectați la 21, 14, 13, 12 din pinii wringPi ai Raspberry Pi. Un ecran LCD de 16x2 este conectat cu raspberry Pi în modul pe 4 biți. Pinii de control LCD RS, RW și En sunt conectați direct la pinul GPIO 11, GND și 10. Pinii de date D4-D7 sunt conectați la pinii GPIO 6, 15, 4 și 1. Un buzzer este conectat la pinul GPIO 8. Și driverul motorului L293D este conectat la pinii GPIO 28 și 29 din Raspberry Pi. O baterie de 12 volți este conectată la pinul 8 al L293D în raport cu masa.
Explicație de lucru:
Lucrul acestui proiect este simplu. Când utilizatorul rulează codul în Raspberry Pi, ecranul LCD afișează un mesaj de întâmpinare și după acesta apare „A- Parolă de intrare” și în a doua linie B- Schimbă cheia de acces ”. Acum utilizatorul își poate alege alegerea apăsând A și B de la tastatură.
Acum, dacă utilizatorul dorește să deschidă poarta, atunci trebuie să apese „A” de la tastatură și atunci sistemul va cere parola. Parola implicită este „1234”. Acum utilizatorul trebuie să introducă parola și după acest sistem va verifica parola, dacă este validă sau nu:
1. Dacă utilizatorul introduce parola corectă, sistemul va deschide poarta.
2. Dacă utilizatorul introduce o parolă greșită, sistemul va trimite comanda către buzzer pentru a emite un bip și va afișa „Acces refuzat” pe ecranul LCD.
Acum, să presupunem că utilizatorul dorește să schimbe parola, atunci trebuie să apese „B” pe tastatură și apoi utilizatorului i se va cere „Parolă curentă” sau „Parolă curentă”. Acum utilizatorul trebuie să introducă parola curentă, apoi sistemul să verifice corectitudinea acesteia și să efectueze una dintre sarcinile date.
1. Dacă utilizatorul introduce parola corectă, atunci sistemul va cere „Parolă nouă” și acum utilizatorul poate schimba parola introducând o parolă nouă.
2. Și dacă utilizatorul introduce o parolă greșită, atunci sistemul va conduce buzzer-ul și va afișa „Parolă greșită: pe ecranul LCD.
Acum utilizatorul trebuie să repete întregul proces din nou pentru a schimba parola.
Practic, deschiderea și închiderea porții nu este altceva decât să rotiți un motor în sensul acelor de ceasornic și în sens invers acelor de ceasornic pentru a deschide și închide ușa. Pentru un proiect mic, puteți adăuga pur și simplu un motor DC pentru a deschide și a închide ușa. Putem folosi și servomotor sau motor pas cu pas, dar trebuie să schimbăm codul în consecință.
Mai mult, puteți utiliza o încuietoare electronică adecvată (ușor de accesat online) în locul căruciorului CD. Are un magnet electro care menține ușa blocată atunci când nu există curent trecut prin blocare (circuit deschis), iar când trece un curent prin ea, blocarea se deblochează și ușa poate fi deschisă. Codul va fi modificat în consecință, verificați și această revizuire a proiectului partajat: Arduino RFID Door Lock
Explicație de programare:
Programarea este mult similară cu Arduino. Funcția Arduino folosește clase, dar aici am făcut acest cod, folosind programarea c, fără clase. De asemenea, am instalat o bibliotecă wiringPi pentru GPIO-uri.
În primul rând, trebuie să includem bibliotecile necesare și apoi să definim pinii pentru LCD, buzzer, LED și motor.
#include
După aceasta, definiți pinii pentru rândul și coloanele tastaturii și definiți matricea pentru stocarea parolelor și a numerelor tastaturii.
char pass; char pass1 = {'1', '2', '3', '4'}; int n = 0; rând rând = {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 '}};
După aceasta am scris câteva funcții pentru conducerea ecranului LCD:
Funcția void lcdcmd este utilizată pentru trimiterea comenzilor pe LCD și funcția de scriere nulă este utilizată pentru trimiterea de date pe LCD.
Funcția de imprimare nulă este utilizată pentru trimiterea șirului pe LCD.
void print (char * str) {while (* str) {write (* str); str ++; }}
Funcția void set Cursorul este utilizat pentru setarea poziției cursorului pe ecranul LCD.
void setCursor (int x, int y) {int set = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (set); }
Funcția void clear () este utilizată pentru a șterge ecranul LCD și void buzzer () este utilizat pentru a emite un bip sonor.
Funcția void gate_open (), void gate_stop () și void gate_close () sunt utilizate pentru conducerea porții (CD Trolley)
void gate_open () {digitalWrite (m1, LOW); digitalWrite (m2, HIGH); întârziere (2000); } void gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, LOW); întârziere (2000); } void gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, LOW); întârziere (2000); }
Funcția dată este utilizată pentru inițializarea ecranului LCD în modul pe 4 biți.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Dată fiind nule tastatura () funcție este utilizată pentru interfațare modulul tastatura cu zmeură Pi cu o „metodă scurtă“.
tastatura nulă () {int i, j; int x = 0, k = 0; întârziere (2000); while (k <4) {for (i = 0; i <4; i ++) {digitalWrite (col, LOW); for (j = 0; j <4; j ++) {if (digitalRead (rând) == 0) {setCursor (x, 1);…………………
Verificați toate funcțiile din Codul complet de mai jos, codul este ușor și se explică de la sine.