- Lijst met componenten
- Schakelschema voor Arduino toetsenbord deurslot
- Arduino-code voor deurslot met digitaal toetsenbord
- Arduino Keypad DoorLock Assembleren en testen
Vaak moeten we een kamer bij ons thuis of op kantoor beveiligen (misschien een geheim dexter's laboratorium) zodat niemand de kamer kan betreden zonder onze toestemming en bescherming bieden tegen diefstal of verlies van onze belangrijke accessoires en bezittingen. Er zijn zoveel soorten beveiligingssystemen aanwezig, maar achter de schermen, voor authenticatie die ze allemaal doorgeven via vingerafdruk, retinascanner, irisscanner, gezichts-ID, tongscanner, RFID-lezer, wachtwoord, pin, patronen, enz. Van alle oplossingen de goedkope is om een wachtwoord of een pincode te gebruiken. Dus in dit project heb ik een Arduino Keypad Door Lock gebouwd dat op elk van je bestaande deuren kan worden gemonteerd om ze te beveiligen met een digitaal wachtwoord. Eerder hebben we ook andere interessante deursloten gebouwd die hieronder staan vermeld.
- Arduino RFID deurslot
- Arduino Solenoid Deurslot
- Raspberry Pi digitaal codeslot
- 555 Timer elektronisch deurslot
Voordat we ons wachtwoorddeurvergrendelingsproject bouwen, moeten we eerst de vereiste componenten verzamelen en vervolgens het stapsgewijze bouwproces volgen.
Lijst met componenten
- Arduino Uno / Pro / Mini of Aangepast bord met behulp van Atmega 328p Microcontroller
- 16 x 2 LCD (Liquid Crystal Display)
- 4 x 3 of 4 x 4 matrix toetsenbord voor Arduino
- Servomotor
- 3D-geprinte deurkast / op maat gemaakte deurkast
- Extra componenten voor stroomvoorziening van 1 Amp 5 Volt mobiele oplader
- 4 '' / 6 '' plastic dozen, verbindingsdraden, moeren, bouten, plastic behuizing, enz.
Schakelschema voor Arduino toetsenbord deurslot
Het complete schakelschema voor ons Arduino-gebaseerde Digital Keypad Door Lock-project wordt hieronder weergegeven.
Allereerst vertrekken we vanuit het brein van dit project, het Arduino UNO-bord. Het Arduino-bord is verbonden met een LCD en een servomotor. De servomotor wordt gebruikt om de grendel op de deur te duwen (vergrendelen) of trekken (ontgrendelen). Een 16 x 2 LCD-scherm is vereist om het bericht van Arduino weer te geven, 16 x 2 betekent dat het 16 aantal kolommen en 2 rijen heeft. Als je helemaal nieuw bent bij 16x2 LCD-displaymodules, kun je deze Arduino LCD Interfacing-tutorial bekijken om er meer over te leren.
Hier gebruik ik een 5v Towerpro SG90- servomotor voor het maken van onze aangepaste deurkast. Het is een servomotor op basisniveau en werkt prima met Arduino zonder stuurcircuit of externe module. Bovendien zijn de kosten van deze servomotor erg laag, zodat u deze gemakkelijk kunt kopen. Je kunt ook deze Arduino Servo Motor Control-tutorial bekijken om meer te leren over de servomotor en hoe deze werkt. Sluit de servomotor aan met Arduino Digital pin D9 en met een 5 volt voeding. Deze servomotor heeft in totaal 3 ingangslijnen (GND, + 5V & SIGNAL LINE).
In dit project heb ik een 4 x 4 matrix toetsenbord gebruikt (maar het 4 x 4 toetsenbord gedeelte is niet beschikbaar in fritzing voor het maken van deze grafische weergave), maar maak je geen zorgen, want 4 x 3 matrix toetsenbord werkt ook prima met mijn codering. We hebben een toetsenbord nodig voor het invoeren van wachtwoorden en vergrendelen handmatig onze aangepaste deurkast. Het bestaat uit 16 toetsen (zachte schakelaar) 4 toetsen in rijen (R1, R2, R3, R4) en 4 toetsen in kolommen (C1, C2, C3, C4) wanneer een toets wordt ingedrukt, wordt een verbinding tot stand gebracht tussen de overeenkomstige rijen en kolommen. De onderstaande tabel laat zien hoe u uw Arduino met Keypad verbindt.
Toetsenbord | Arduino |
Pin 1 (rij 1) | Digitale pin 1 |
Pin 2 (rij 2) | Digitale pin 2 |
Pin 3 (rij 3) | Digitale pin 3 |
Pin 4 (rij 4) | Digitale pin 4 |
Pin 5 (kolommen 5) | Digitale pin 5 |
Pin 6 (kolom 6) | Digitale pin 6 |
Pin 7 (kolommen 7) | Digitale pin 7 |
Arduino-code voor deurslot met digitaal toetsenbord
De volledige Arduino Door Lock Code vind je onderaan deze pagina. U kunt de code direct uploaden, maar het wordt aanbevolen om de onderstaande paragrafen te lezen om te begrijpen hoe de code werkt. Het is ook belangrijk om ervoor te zorgen dat u de volgende toetsenbordbibliotheek aan uw Arduino IDE hebt toegevoegd om de code met succes te compileren. Open hiervoor de onderstaande link en download het ZIP-bestand. Navigeer vervolgens op je Arduino IDE naar Sketch -> Inclusief bibliotheek -> Add.ZIP Library en blader naar het bestand dat je zojuist hebt gedownload.
- Arduino Keypad-bibliotheek
Nadat je alle header- en bibliotheekbestanden hebt ingevoegd, wijs je alle pinnen toe voor het LCD-scherm en definieer je de wachtwoordlengte en stel je de beginpositie van de servo in op 0. Neem daarna een 'char'-datatype voor het aangeven van het nummer dat het kan bevatten, inclusief de nul karakter.
// # opnemen
Met dit stuk code (char Master = "123456";) - onder de Char Master verklaar ik het wachtwoord van het deurslot, wijs ik vervolgens het aantal rijen en kolommen op het toetsenbord toe en geef ik ook keyMaps aan en maak verbinding met rijen en kolommen. Initialiseer onder de ongeldige instellingen de servosignaalpen D9, servostatus gesloten en druk de naam van het project / apparaat / bedrijf af met 3 seconden vertraging op de LCD-tijd na het starten van het apparaat.
leegte setup () {myservo.attach (9); ServoClose (); lcd.begin (16, 2); lcd.print ("Arduino Door"); lcd.setCursor (0, 1); lcd.print ("- Kijk project--"); vertraging (3000); lcd.clear (); }
Onder de loop-functie is de eenvoudige if-else-voorwaarde aanwezig. Volgens status (het is automatisch vergrendeld), print "Deur is dicht" met 3 seconden vertraging en servorotatie om positie te sluiten, deurgegevens tellen als 1, anders blijft de deur locker open en gegevens tellen 0, servo open roteren naar de positie gaat 0 graden tot 180 graden en om te sluiten gaat het van 180 naar 0. De servo open en servo close functies worden hieronder getoond.
void ServoOpen () {for (pos = 180; pos> = 0; pos - = 5) {// gaat van 0 graden naar 180 graden // in stappen van 1 graad myservo.write (pos); // vertel servo om naar positie te gaan in variabele 'pos'-vertraging (15); // wacht 15 ms tot de servo de positie bereikt}} void ServoClose () {for (pos = 0; pos <= 180; pos + = 5) {// gaat van 180 graden naar 0 graden myservo.write (pos); // vertel servo om naar positie te gaan in variabele 'pos'-vertraging (15); // wacht 15 ms tot de servo de positie bereikt}}
Schrijf de positie van de servo op met 15 seconden vertraging om de servopositie te bereiken. Druk onder de functie voor leegmaken op het LCD-scherm "Wachtwoord invoeren" en de voorwaarde geeft aan dat het ingevoerde wachtwoord hetzelfde moet zijn met de aangepaste sleutel, binnen deze lichaamsgegevens worden geteld en opgeslagen in de gegevensreeks, verhoogd en ingevoerd wachtwoord afgedrukt op het LCD-scherm als de datalengte (aantal sleutels) en invoerwachtwoord komt overeen met Data Master (waar de vooraf gedefinieerde sleutels aanwezig zijn). Dan als actie LCD duidelijk, servo aandrijving, print op LCD "Deur is open" en de datateller wordt op 0 gereset.
Als de invoersleutel niet overeenkomt met Data Master, zoals een actie op het LCD-scherm, duidelijke print op het LCD-scherm "Fout wachtwoord" om met 1 seconde vertraging te melden en blijft in zijn vergrendelde positie met datateller ingesteld op 1 en zet dit proces in een lus voort.
if (data_count == Password_Lenght - 1) // als de array-index gelijk is aan het aantal verwachte karakters, vergelijk dan data met master {if (! strcmp (Data, Master)) // gelijk aan (strcmp (Data, Master) == 0) {lcd.clear (); ServoOpen (); lcd.print ("Door is Open"); deur = 0; } anders {lcd.clear (); lcd.print ("Verkeerd wachtwoord"); vertraging (1000); deur = 1; } Verwijder gegevens(); }
Arduino Keypad DoorLock Assembleren en testen
Plaats nu alles op een plastic doos van 4 inch / 6 inch en laad het op met een mobiele oplader, lijn alles netjes uit met behulp van de behuizing. Idealiter had ik 3D-printen kunnen gebruiken om mijn slot in elkaar te zetten, maar nadat ik mijn bestanden had ontworpen, ontdekte ik dat 3D-printen erg duur is, dus ik repareerde eerst de servo, daarna verbond ik het normale schuifkastje met mijn servo met behulp van een metalen plaat en afgedekt het op met glasvezel, hoewel het prima werkt, is het minder veilig.
Wil je meer veiligheid, dan moet je een 3D deurslotmodel printen dat intern met deze servo werkt. U kunt de vereiste STL-bestanden downloaden via de onderstaande link en deze in 3D afdrukken als u toegang heeft tot een 3D-printer.
Download STL-bestanden voor 3D-afdrukken
De ontwerpbestanden worden ook weergegeven in de onderstaande afbeelding.
Aan het begin van het project, op het moment dat we het voor de eerste keer opstarten, moeten we de projectnaam geven (u kunt ook de bedrijfsnaam weergeven) zodat het er slim en exclusief uitziet als een commercieel apparaat (zoals u kunt zien in de afbeelding hieronder).
Met een vertraging van 3 seconden sluit u de deur snel en controleert u direct op het display de status van het deurslot, zoals weergegeven in de onderstaande afbeelding.
Wanneer u de deur handmatig vergrendelt door op de toets "#" te drukken, wordt eerst Deur is gesloten gedurende 1 seconde weergegeven en vervolgens wordt Wachtwoord invoeren weergegeven. Aan de andere kant, wanneer de deur wordt ontgrendeld door het juiste wachtwoord in te voeren, wordt Deur is open weergegeven.
Als de deur ontgrendeld blijft, wordt weergegeven - Deur is open zolang u de deur handmatig vergrendelt volgens de codering. Ik heb de code gegeven en u kunt de instellingen aanpassen door de codeweergaveparameter indien nodig te wijzigen. Je kunt ook de volledige werking bekijken met de video die onderaan deze pagina is gelinkt.