- Komponenter som används:
- Ansluta 4x4-knappsats med Raspberry Pi med Multiplexing:
- Kretsbeskrivning:
- Arbetsförklaring:
- Programmeringsförklaring:
Säkerhet är ett stort problem i vårt dagliga liv och digitala lås har blivit en viktig del av dessa säkerhetssystem. Det finns många typer av teknologier tillgängliga för att säkra vår plats, som PIR-baserade säkerhetssystem, RFID-baserade säkerhetssystem, lasersäkerhetslarm, biomatrissystem etc.
Vi har tidigare byggt Digital Lock med lösenord med Arduino och 8051, här ska vi bygga detta Digital Lock med Raspberry Pi med användardefinierat lösenord. När lösenordet har ställts in kan användaren bara komma åt dörren med rätt lösenord.
Om du inte känner till Raspberry Pi har vi skapat en serie handledning för att lära dig Raspberry Pi, med gränssnitt med alla grundläggande komponenter och några enkla projekt till att börja med, kolla.
Komponenter som används:
- Raspberry Pi (med startat SD-kort)
- Knappsatsmodul
- Summer
- 16x2 LCD
- 10k kruka
- 10k motståndspaket (pull-up)
- LED
- 1k motstånd
- Brödbräda
- CD / DVD-vagn som Gate
- Effekt 5 volt
- Motorförare L293D
- 12 volts batteri
- Anslutande ledningar
Ansluta 4x4-knappsats med Raspberry Pi med Multiplexing:
I den här kretsen har vi använt Multiplexing Technique för att koppla in knappsatsen för att ange lösenordet i systemet. Här använder vi 4x4 multiplex tangentbord med 16 tangenter. Normalt om vi vill använda 16 tangenter behöver vi 16 stift för anslutning till Arduino men i multiplexeringsteknik behöver vi bara 8 stift för gränssnitt mellan 16 tangenter. Så att det är ett smart sätt att ansluta en knappsatsmodul. Lär dig mer om multiplexeringsteknik och hur den fungerar i detta digitala lås med hjälp av 8051.
Multiplexeringsteknik är ett mycket effektivt sätt att minska antalet stift som används med mikrokontroller för att tillhandahålla inmatning eller lösenord eller nummer. I grund och botten används denna teknik på två sätt - det ena är radskanning och det andra är kolonnskanning. Om vi använder knappsatsbiblioteket (#include
Men här i det här projektet har vi implementerat en kort väg för kodning för samma knappsats utan att använda tangentbordets bibliotek. Se det i programmeringsavsnittet nedan.
Kretsbeskrivning:
Kretsloppet för detta Raspberry Pi Digital Door Lock är väldigt enkelt som innehåller Raspberry Pi 3, knappsatsmodul, summer, DVD / CD-vagn som grind och LCD. Här kontrollerar Raspberry Pi hela processen som att ta lösenord från knappsatsmodulen, jämföra lösenord, köra summer, öppna / stänga grinden och skicka status till LCD-skärm. Knappsatsen används för att ange lösenord. Summer används för indikationer och drivs av inbyggd NPN-transistor. LCD används för att visa status eller meddelanden på den.
Knappsatsmodulens kolumnstift är direkt anslutna till GPIO-stift 22, 23, 24, 25 och radstiften är anslutna till 21, 14, 13, 12 av Raspberry Pi's wringPi-stift. En 16x2 LCD är ansluten till raspberry Pi i 4-bitars läge. LCD: s kontrollstift RS, RW och En är direktanslutna till GPIO-stift 11, GND och 10. Datastift D4-D7 är anslutna till GPIO-stift 6, 15, 4 och 1. En summer är ansluten till GPIO-stift 8. Och motordrivrutinen L293D är ansluten vid GPIO-stift 28 och 29 i Raspberry Pi. Ett 12 volt batteri är anslutet vid stift 8 i L293D med avseende på marken.
Arbetsförklaring:
Att arbeta med detta projekt är enkelt. När användaren kör koden i Raspberry Pi visar LCD ett välkomstmeddelande och efter det visar "A- Input Password" och i andra raden B - Change Passkey ". Nu kan användaren välja sitt val genom att trycka på A och B på knappsatsen.
Om användaren nu vill öppna grinden måste han trycka på 'A' på knappsatsen och sedan kommer systemet att be om lösenord. Standardlösenordet är “1234”. Nu måste användaren ange lösenordet och efter det att systemet kommer att kontrollera lösenordet, oavsett om det är giltigt eller inte:
1. Om användaren anger rätt lösenord öppnar systemet grinden.
2. Om användaren anger fel lösenord kommer systemet att skicka kommandot till summern för att pipa och visar "Åtkomst nekad" på LCD-skärmen.
Antag nu att användaren vill ändra lösenordet, då måste han / hon trycka på 'B' på knappsatsen och då kommer användaren att bli ombedd för "Aktuellt lösenord" eller "Aktuellt lösenord". Nu måste användaren ange det aktuella lösenordet, sedan kontrollerar systemet dess korrekthet och utför en av de angivna uppgifterna.
1. Om användaren anger rätt lösenord kommer systemet att be om "Nytt lösenord" och nu kan användaren ändra lösenordet genom att ange nytt lösenord.
2. Och om användaren anger fel lösenord kommer systemet att summera och visar “Fel lösenord: på LCD-skärmen.
Nu måste användaren upprepa hela processen igen för att ändra lösenord.
I grund och botten är att öppna och stänga porten ingenting annat än att rotera en motor medurs och moturs för att öppna och stänga dörren. För ett litet projekt kan du helt enkelt lägga till en DC-motor för att öppna och stänga dörren. Vi kan också använda servomotor eller stegmotor, men vi måste ändra koden i enlighet därmed.
Vidare kan du använda ett ordentligt elektroniskt dörrlås (lätt tillgängligt online) istället för CD-vagn. Den har en elektromagnet som håller dörren låst när det inte går någon ström genom låset (öppen krets), och när någon ström passerar genom den låses låset upp och dörren kan öppnas. Koden kommer att ändras i enlighet därmed, kolla även den här delade projektgranskningen: Arduino RFID Door Lock
Programmeringsförklaring:
Programmering liknar mycket Arduino. Arduino-funktionen använder klasser men här har vi gjort den här koden med c-programmering utan klasser. Vi har också installerat ett wiringPi-bibliotek för GPIO.
Nu måste vi först och främst inkludera nödvändiga bibliotek och sedan definiera stift för LCD, summer, LED och motor.
#omfatta
Därefter definieras stift för knappsatsens rad och kolumner och definierar matris för lagring av lösenord och knappsatsnummer.
röding passera; char pass1 = {'1', '2', '3', '4'}; int n = 0; röd rad = {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 skrivit några funktioner för att köra LCD: n:
Funktion ogiltig lcdcmd används för att skicka kommando till LCD och ogiltig skrivfunktion används för att skicka data till LCD.
Funktions tomt utskrift används för att skicka sträng till LCD.
ogiltig utskrift (char * str) {medan (* str) {skriv (* str); str ++; }}
Funktion tomrumMarkör används för att ställa in markörposition i LCD-skärmen.
void setCursor (int x, int y) {int set = 0; om (y == 0) set = 128 + x; om (y == 1) set = 192 + x; lcdcmd (uppsättning); }
Funktionen void clear () används för att rensa LCD-skärmen och void summer () används för att pipa summern.
Funktionen void gate_open (), void gate_stop () och void gate_close () används för att köra Gate (CD Trolley)
ogiltig gate_open () {digitalWrite (m1, LOW); digitalWrite (m2, HÖG); fördröjning (2000); } ogiltig gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, LOW); fördröjning (2000); } ogiltig gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, LOW); fördröjning (2000); }
Given funktion används för att initialisera LCD i 4-bitars läge.
tomrummet börjar (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Angiven ogiltig knappsats () -funktion används för att koppla tangentbordsmodulen med Raspberry Pi med en "kort metod".
ogiltigt tangentbord () {int i, j; int x = 0, k = 0; fördröjning (2000); medan (k <4) {för (i = 0; i <4; i ++) {digitalWrite (kol, LÅG); för (j = 0; j <4; j ++) {if (digitalRead (rad) == 0) {setCursor (x, 1);…………………
Kontrollera alla funktioner i hela koden nedan, koden är enkel och självförklarande.