- Brugte komponenter:
- Tilslutning af 4x4-tastatur med Raspberry Pi ved hjælp af multiplexing:
- Beskrivelse af kredsløb:
- Arbejdsforklaring:
- Programmeringsforklaring:
Sikkerhed er et stort problem i vores daglige liv, og digitale låse er blevet en vigtig del af disse sikkerhedssystemer. Der er mange typer teknologier til rådighed for at sikre vores plads, som PIR-baserede sikkerhedssystemer, RFID-baseret sikkerhedssystem, Lasersikkerhedsalarmer, biomatrixsystemer osv.
Vi har tidligere bygget Digital Lock med adgangskode ved hjælp af Arduino og ved hjælp af 8051, her skal vi bygge denne Digital Lock ved hjælp af Raspberry Pi med brugerdefineret adgangskode. Når adgangskoden er indstillet, kan brugeren kun få adgang til døren med den korrekte adgangskode.
Hvis du ikke er fortrolig med Raspberry Pi, har vi oprettet en række tutorials til at lære Raspberry Pi, med grænseflade til alle de grundlæggende komponenter og nogle enkle projekter til at begynde med, skal du kontrollere.
Brugte komponenter:
- Raspberry Pi (med bootet SD-kort)
- Tastaturmodul
- Summer
- 16x2 LCD
- 10 k gryde
- 10k modstandspakke (pull-up)
- LED
- 1k modstand
- Brødbræt
- CD / DVD vogn som Gate
- Effekt 5 volt
- Motordriver L293D
- 12 volt batteri
- Tilslutning af ledninger
Tilslutning af 4x4-tastatur med Raspberry Pi ved hjælp af multiplexing:
I dette kredsløb har vi brugt multipleksningsteknik til at interface tastaturet til indtastning af adgangskoden i systemet. Her bruger vi 4x4 multiplex tastatur med 16 taster. Normalt hvis vi ønsker at bruge 16 nøgler, har vi brug for 16 ben til forbindelse til Arduino, men i multiplexeringsteknik har vi kun brug for 8 ben til interface 16 nøgler. Så det er en smart måde at interface et tastaturmodul på. Lær mere om multipleksningsteknik og dens arbejde i denne digitale lås ved hjælp af 8051.
Multiplexing-teknik er en meget effektiv måde at reducere antallet af ben, der bruges sammen med mikrocontroller til at levere input eller adgangskode eller tal. Dybest set bruges denne teknik på to måder - den ene er række scanning og den anden er søjlescanning. Hvis vi bruger tastaturbiblioteket (#include
Men her i dette projekt har vi implementeret en kort måde at kode på det samme tastatur uden brug af tastaturbiblioteket. Se det i programmeringsafsnittet nedenfor.
Beskrivelse af kredsløb:
Kredsløb på denne Raspberry Pi Digital dørlås er meget enkel, som indeholder Raspberry Pi 3, tastaturmodul, summer, DVD / CD-vogn som gate og LCD. Her styrer Raspberry Pi hele processen som at tage adgangskodeformular tastaturmodul, sammenligne adgangskoder, køre summer, åbne / lukke porten og sende status til LCD-display. Tastatur bruges til at indtaste adgangskode. Summer bruges til indikationer og drives af indbygget NPN-transistor. LCD bruges til at vise status eller meddelelser på den.
Tastaturmodulets søjlestifter er direkte forbundet til GPIO-pin 22, 23, 24, 25, og række-stifter er forbundet til 21, 14, 13, 12 af Raspberry Pi's wringPi-ben. En 16x2 LCD er forbundet med raspberry Pi i 4-bit tilstand. LCD's kontrolben RS, RW og En er direkte tilsluttet GPIO pin 11, GND og 10. Datastifter D4-D7 er forbundet til GPIO ben 6, 15, 4 og 1. Én summer er tilsluttet ved GPIO pin 8. Og motordriver L293D er tilsluttet ved GPIO pin 28 og 29 i Raspberry Pi. Et 12 volt batteri er tilsluttet ved pin 8 i L293D i forhold til jorden.
Arbejdsforklaring:
Arbejdet med dette projekt er enkelt. Når brugeren kører koden i Raspberry Pi, viser LCD en velkomstbesked og derefter vises “A- Input Password” og i anden linje B- Change Passkey ”. Nu kan brugeren vælge deres valg ved at trykke på A og B på tastaturet.
Hvis brugeren nu vil åbne porten, skal han trykke på 'A' på tastaturet, og så vil systemet bede om adgangskode. Standardadgangskoden er “1234”. Nu skal brugeren indtaste adgangskoden, og efter dette system kontrollerer adgangskoden, om den er gyldig eller ej:
1. Hvis brugeren indtaster den rigtige adgangskode, åbner systemet porten.
2. Hvis brugeren indtaster forkert adgangskode, sender systemet kommandoen til summeren for at bippe og viser "Adgang nægtet" på LCD'et.
Antag nu, at brugeren ønsker at ændre adgangskoden, så skal han / hun trykke på 'B' på tastaturet, og derefter bliver brugeren bedt om "Aktuel adgangskode" eller "Aktuel adgangskode". Nu skal brugeren indtaste den aktuelle adgangskode, hvorefter systemet kontrollerer dens korrekthed og udfører en af de givne opgaver.
1. Hvis brugeren indtaster den rigtige adgangskode, beder systemet om “Ny adgangskode”, og nu kan brugeren ændre adgangskoden ved at indtaste ny adgangskode.
2. Og hvis brugeren indtaster den forkerte adgangskode, kører systemet summeren og viser “Forkert adgangskode: på LCD'et.
Nu skal brugeren gentage hele processen igen for at ændre adgangskode.
Dybest set er åbning og lukning af porten intet andet end at dreje en motor med uret og mod uret for at åbne og lukke døren. For et lille projekt kan du blot tilføje en DC-motor for at åbne og lukke døren. Vi kan også bruge Servo eller stepper motor, men vi er nødt til at ændre koden i overensstemmelse hermed.
Desuden kan du bruge en ordentlig elektronisk dørlås (let tilgængelig online) i stedet for cd-vogn. Den har en elektromagnet, der holder døren låst, når der ikke er nogen strøm, der går gennem låsen (åbent kredsløb), og når der strømmer noget strøm gennem den, låses låsen op, og døren kan åbnes. Koden ændres i overensstemmelse hermed, se også denne delte projektanmeldelse: Arduino RFID-dørlås
Programmeringsforklaring:
Programmering ligner meget Arduino. Arduino-funktionen bruger klasser, men her har vi gjort denne kode ved hjælp af c-programmering uden klasser. Vi har også installeret et wiringPi-bibliotek til GPIO'er.
Nu skal vi først og fremmest medtage nødvendige biblioteker og derefter definere stifter til LCD, summer, LED og motor.
#omfatte
Derefter defineres stifter til tastaturets række og kolonner og defineres array til lagring af adgangskode- og tastaturnumre.
char pass; char pass1 = {'1', '2', '3', '4'}; int n = 0; char række = {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 '}};
Efter det har vi skrevet nogle funktioner til styring af LCD:
Funktion ugyldig lcdcmd bruges til at sende kommando til LCD og ugyldig skrivefunktion bruges til at sende data til LCD.
Funktion ugyldig udskrivning bruges til at sende streng til LCD.
ugyldig udskrivning (char * str) {mens (* str) {skriv (* str); str ++; }}
Funktion ugyldigt sæt Markør bruges til at indstille markørposition i LCD'et.
ugyldig setCursor (int x, int y) {int sæt = 0; hvis (y == 0) indstilles = 128 + x; hvis (y == 1) sæt = 192 + x; lcdcmd (sæt); }
Funktion void clear () bruges til at rydde LCD-skærmen, og void buzzer () bruges til at bippe summeren.
Funktion void gate_open (), void gate_stop () og void gate_close () bruges til at køre Gate (CD Trolley)
ugyldig gate_open () {digitalWrite (m1, LOW); digitalWrite (m2, HIGH); forsinkelse (2000); } ugyldig gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, LAV); forsinkelse (2000); } ugyldig gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, LAV); forsinkelse (2000); }
Denne funktion bruges til at initialisere LCD i 4-bit tilstand.
tomrum begynder (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Givet ugyldigt tastatur () -funktion bruges til at interfacere tastaturmodul med Raspberry Pi med en 'kort metode'.
ugyldigt tastatur () {int i, j; int x = 0, k = 0; forsinkelse (2000); mens (k <4) {for (i = 0; i <4; i ++) {digitalWrite (col, LOW); for (j = 0; j <4; j ++) {hvis (digitalRead (række) == 0) {setCursor (x, 1);…………………
Kontroller alle funktionerne i den fulde kode nedenfor, koden er let og selvforklarende.