- Gebruikte componenten:
- 4x4 toetsenbord verbinden met Raspberry Pi met behulp van multiplexing:
- Circuit Beschrijving:
- Werkende uitleg:
- Programmering Toelichting:
Beveiliging is een belangrijk aandachtspunt in ons dagelijks leven en digitale sloten zijn een belangrijk onderdeel geworden van deze beveiligingssystemen. Er zijn veel soorten technologieën beschikbaar om onze plaats te beveiligen, zoals op PIR gebaseerde beveiligingssystemen, op RFID gebaseerde beveiligingssystemen, laserveiligheidsalarmen, bio-matrixsystemen enz.
We hebben eerder een digitaal slot met wachtwoord gebouwd met Arduino en met 8051, hier gaan we dit digitale slot bouwen met Raspberry Pi met een door de gebruiker gedefinieerd wachtwoord. Zodra het wachtwoord is ingesteld, heeft de gebruiker alleen toegang tot de deur met het juiste wachtwoord.
Als u niet bekend bent met Raspberry Pi, hebben we een reeks tutorials gemaakt om Raspberry Pi te leren, met interface voor alle basiscomponenten en enkele eenvoudige projecten om mee te beginnen, controleer dit.
Gebruikte componenten:
- Raspberry Pi (met opgestarte SD-kaart)
- Toetsenbordmodule
- Zoemer
- 16x2 LCD
- 10k pot
- 10k weerstandspakket (pull-up)
- LED
- 1k weerstand
- Broodplank
- CD / DVD-trolley als Gate
- Vermogen 5 volt
- Motorbesturing L293D
- 12 volt batterij
- Draden aansluiten
4x4 toetsenbord verbinden met Raspberry Pi met behulp van multiplexing:
In dit circuit hebben we de Multiplexing-techniek gebruikt om het toetsenbord te koppelen voor het invoeren van het wachtwoord in het systeem. Hier gebruiken we een 4x4 multiplex toetsenbord met 16 toetsen. Normaal gesproken, als we 16 toetsen willen gebruiken, hebben we 16 pinnen nodig voor verbinding met Arduino, maar in de multiplextechniek hebben we slechts 8 pinnen nodig om 16 toetsen te koppelen. Zodat het een slimme manier is om een toetsenbordmodule te koppelen. Lees meer over de multiplextechniek en de werking ervan in dit digitale slot met 8051.
Multiplexing-techniek is een zeer efficiënte manier om het aantal pinnen te verminderen dat wordt gebruikt met een microcontroller voor het verstrekken van invoer of wachtwoord of cijfers. In principe wordt deze techniek op twee manieren gebruikt: de ene is het scannen van rijen en de andere is het scannen van kolommen. Als we de toetsenbordbibliotheek gebruiken (#include
Maar hier in dit project hebben we een korte manier van codering geïmplementeerd voor hetzelfde toetsenbord, zonder de toetsenbordbibliotheek te gebruiken. Zie het in het programmeergedeelte hieronder.
Circuit Beschrijving:
Het circuit van dit Raspberry Pi digitale deurslot is heel eenvoudig en bevat Raspberry Pi 3, toetsenbordmodule, zoemer, dvd / cd-trolley als poort en LCD. Hier bestuurt Raspberry Pi het volledige proces, zoals het aannemen van een wachtwoord in de toetsenbordmodule, het vergelijken van wachtwoorden, het aansturen van een zoemer, het openen / sluiten van de poort en het verzenden van de status naar het LCD-scherm. Toetsenbord wordt gebruikt om het wachtwoord in te voeren. Zoemer wordt gebruikt voor indicaties en wordt aangedreven door een ingebouwde NPN-transistor. LCD wordt gebruikt om de status of berichten erop weer te geven.
De Kolom-pinnen van de toetsenbordmodule zijn rechtstreeks verbonden met GPIO-pin 22, 23, 24, 25 en de rij-pinnen zijn verbonden met 21, 14, 13, 12 van de wringPi-pinnen van Raspberry Pi. Een 16x2 LCD is verbonden met Raspberry Pi in 4-bit modus. LCD's control pin RS, RW en En zijn direct verbonden met GPIO pin 11, GND en 10. Data pinnen D4-D7 zijn verbonden met GPIO pinnen 6, 15, 4 en 1. Een zoemer is aangesloten op GPIO pin 8. En Motor Driver L293D is aangesloten op GPIO-pin 28 en 29 van Raspberry Pi. Een 12 volt batterij is aangesloten op pin 8 van L293D ten opzichte van aarde.
Werkende uitleg:
De werking van dit project is eenvoudig. Wanneer de gebruiker de code in Raspberry Pi uitvoert, toont het LCD-scherm een welkomstbericht en daarna toont het "A-Input Password" en in de tweede regel B-Change Passkey ". Nu kan de gebruiker zijn keuze selecteren door op A en B op het toetsenbord te drukken.
Als de gebruiker nu de poort wil openen, moet hij op 'A' op het toetsenbord drukken en het systeem zal om een wachtwoord vragen. Het standaardwachtwoord is "1234". Nu moet de gebruiker het wachtwoord invoeren en daarna controleert dit systeem het wachtwoord, of het geldig is of niet:
1. Als de gebruiker het juiste wachtwoord invoert, zal het systeem de poort openen.
2. Als de gebruiker een verkeerd wachtwoord invoert, stuurt het systeem een commando naar de zoemer om te piepen en wordt "Toegang geweigerd" weergegeven op het LCD-scherm.
Stel nu dat de gebruiker het wachtwoord wil wijzigen, dan moet hij / zij op 'B' op het toetsenbord drukken en dan wordt de gebruiker gevraagd om "Huidig wachtwoord" of "Huidige wachtwoordsleutel". Nu moet de gebruiker het huidige wachtwoord invoeren, vervolgens controleert het systeem de juistheid en voert u een van de gegeven taken uit.
1. Als de gebruiker het juiste wachtwoord invoert, zal het systeem om "Nieuw wachtwoord" vragen en nu kan de gebruiker het wachtwoord wijzigen door een nieuw wachtwoord in te voeren.
2. En als de gebruiker het verkeerde wachtwoord invoert, zal het systeem de zoemer aansturen en "Wrong Password:" op het LCD-scherm weergeven.
Nu moet de gebruiker het hele proces opnieuw herhalen om het wachtwoord te wijzigen.
In feite is het openen en sluiten van de poort niets anders dan een motor met de klok mee en tegen de klok in draaien om de deur te openen en te sluiten. Voor een klein project kunt u eenvoudig een DC-motor toevoegen om de deur te openen en te sluiten. We kunnen ook een servomotor of stappenmotor gebruiken, maar we moeten de code dienovereenkomstig wijzigen.
Verder kunt u een correct elektronisch deurslot (gemakkelijk online verkrijgbaar) gebruiken in plaats van een cd-trolley. Het heeft een elektromagneet die de deur vergrendeld houdt wanneer er geen stroom door het slot gaat (open circuit), en wanneer er wat stroom doorheen gaat, wordt het slot ontgrendeld en kan de deur worden geopend. Code wordt dienovereenkomstig gewijzigd, bekijk ook deze gedeelde projectbeoordeling: Arduino RFID Door Lock
Programmering Toelichting:
Programmeren lijkt veel op Arduino. De Arduino-functie gebruikt klassen, maar hier hebben we deze code gedaan, met behulp van c-programmering, zonder klassen. We hebben ook een WiringPi-bibliotheek voor GPIO's geïnstalleerd.
Nu moeten we allereerst de vereiste bibliotheken opnemen en vervolgens pinnen definiëren voor LCD, zoemer, LED en motor.
# omvatten
Definieer daarna pinnen voor de rijen en kolommen van het toetsenbord en definieer een array voor het opslaan van wachtwoord en toetsenbordnummers.
char pass; char pass1 = {'1', '2', '3', '4'}; int n = 0; char row = {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 '}};
Hierna hebben we enkele functies geschreven voor het aansturen van de LCD:
Functie void lcdcmd wordt gebruikt voor het verzenden van een opdracht naar het LCD-scherm en de void-schrijffunctie wordt gebruikt voor het verzenden van gegevens naar het LCD-scherm.
Functie ongeldig afdrukken wordt gebruikt voor het verzenden van een string naar het LCD-scherm.
void print (char * str) {while (* str) {write (* str); str ++; }}
Functie void setCursor wordt gebruikt voor het instellen van de cursorpositie op het LCD-scherm.
leegte setCursor (int x, int y) {int set = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (set); }
Functie leegmaken wissen () wordt gebruikt om het LCD-scherm leeg te maken en leegte zoemer () wordt gebruikt om de zoemer te laten piepen.
Functie void gate_open (), void gate_stop () en void gate_close () worden gebruikt voor het besturen van de Gate (CD Trolley)
leegte gate_open () {digitalWrite (m1, LOW); digitalWrite (m2, HIGH); vertraging (2000); } void gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, LOW); vertraging (2000); } void gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, LOW); vertraging (2000); }
Gegeven functie wordt gebruikt om LCD te initialiseren in 4-bits modus.
leegte begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
De gegeven void keypad () -functie wordt gebruikt voor het koppelen van de toetsenbordmodule met de Raspberry Pi met een 'korte methode'.
ongeldig toetsenbord () {int i, j; int x = 0, k = 0; vertraging (2000); while (k <4) {for (i = 0; i <4; i ++) {digitalWrite (col, LOW); voor (j = 0; j <4; j ++) {if (digitalRead (row) == 0) {setCursor (x, 1);…………………
Controleer alle functies in de volledige code hieronder, de code is eenvoudig en spreekt voor zich.