Arduino-combinatieslot met authenticatie op twee niveaus. Arduino-combinatieslot

De vooruitgang staat niet stil en er verschijnen steeds vaker "Slimme sloten" op de deuren van appartementen, garages en huizen.

Een soortgelijk slot gaat open als je een knopje indrukt op een smartphone. Gelukkig zijn smartphones en tablets al ons dagelijks leven binnengedrongen. In sommige gevallen maken "slimme sloten" verbinding met " cloud diensten"zoals een google drive en op afstand openen. Daarnaast maakt deze optie het mogelijk om andere mensen toegang te geven om de deur te openen.

In dit project wordt een doe-het-zelf-versie van het slimme slot op Arduino geïmplementeerd, dat vanaf elke plek op aarde op afstand kan worden bediend.

Bovendien voegde het project de mogelijkheid toe om het slot te openen na vingerafdrukherkenning. Hiervoor zal een vingerafdruksensor worden geïntegreerd. Beide deuropeningsopties worden mogelijk gemaakt door het Adafruit IO-platform.

Zo'n slot kan een mooie eerste stap zijn in je Smart Home-project.

Vingerafdruksensor instellen

Voor het werken met de vingerafdruksensor is er een uitstekende bibliotheek voor Arduino die het instellen van de sensor veel eenvoudiger maakt. Dit project maakt gebruik van Arduino Uno. Een Adafruit CC3000-bord wordt gebruikt om verbinding te maken met internet.

Laten we beginnen met het aansluiten van de stroom:

  • Sluit de 5V-pin van het Arduino-bord aan op de rode stroomrail;
  • De GND-pin van de Arduino wordt aangesloten op de blauwe rail op de soldeerloze printplaat.

Laten we verder gaan met het aansluiten van de vingerafdruksensor:

  • Sluit eerst de stroom aan. Hiervoor wordt de rode draad aangesloten op de +5 V-rail en de zwarte draad op de GND-rail;
  • De witte draad van de sensor wordt aangesloten op pin 4 op de Arduino.
  • De groene draad gaat naar pin 3 op de microcontroller.

Laten we nu de CC3000-module aanpakken:

  • De IRQ-pin van het CC3000-bord is verbonden met pin 2 op de Arduino.
  • VBAT - naar pin 5.
  • CS - naar pin 10.
  • Daarna moet je de SPI-pinnen op de Arduino aansluiten: MOSI, MISO en CLK - op respectievelijk pinnen 11, 12 en 13.

Ten slotte moet je stroom leveren: Vin naar de Arduino 5V (rode rail op je printplaat) en GND naar GND (blauwe rail op het breadboard).

Een foto van het volledig geassembleerde project wordt hieronder getoond:

Voordat u een schets ontwikkelt die gegevens naar de Adafruit IO uploadt, moet u uw vingerafdrukgegevens naar de sensor overbrengen. Anders zal hij je in de toekomst niet meer herkennen ;). We raden aan om de vingerafdruksensor apart te kalibreren met de Arduino. Als u voor het eerst met deze sensor werkt, raden wij u aan om vertrouwd te raken met het kalibratieproces en de gedetailleerde instructies voor het werken met de vingerafdruksensor.

Als je dat nog niet hebt gedaan, maak dan een account aan bij Adafruit IO.

Daarna kunnen we naar volgende fase ontwikkeling van een "smart lock" op Arduino: namelijk de ontwikkeling van een schets die gegevens naar de Adafruit IO zal overbrengen. Omdat het programma behoorlijk omvangrijk is, zullen we in het artikel alleen de belangrijkste onderdelen ervan benadrukken en beschouwen, en dan zullen we een link naar GitHub geven, waar je de volledige schets kunt downloaden.

De schets begint met het laden van alle vereiste bibliotheken:

#erbij betrekken

#erbij betrekken

#erbij betrekken

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_CC3000.h"

#erbij betrekken

#erbij betrekken >

Daarna moet u de schets enigszins corrigeren door de parameters van uw WiFi-netwerk in te voeren en de SSID en het wachtwoord (wachtwoord) op te geven:

#define WLAN_SECURITY WLAN_SEC_WPA2>

Daarnaast moet u uw naam en AIO-sleutel (sleutel) invoeren om in te loggen op uw Adafruit IO-account:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

De volgende regels zijn verantwoordelijk voor de interactie en verwerking van gegevens van de vingerafdruksensor. Als de sensor geactiveerd was (vingerafdruk gematcht), zal er "1" zijn:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/ feeds / vingerafdruk";

Adafruit_MQTT_Publish vingerafdruk = Adafruit_MQTT_Publish (& mqtt, FINGERPRINT_FEED);

Daarnaast moeten we een instantie van het SoftwareSerial-object voor onze sensor maken:

SoftwareSerial mySerial (3, 4);

Daarna kunnen we een object voor onze sensor maken:

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Binnen de schets geven we aan welke fingerID het slot in de toekomst moet activeren. In dit voorbeeld wordt 0 gebruikt, wat overeenkomt met de ID van de eerste vingerafdruk die door de sensor wordt gebruikt:

int vinger-ID = 0;

Daarna initialiseren we de teller en vertragen we in ons project. Kortom, we willen dat het slot automatisch werkt na het openen. In dit voorbeeld wordt een vertraging van 10 seconden gebruikt, maar u kunt deze waarde aanpassen aan uw behoeften:

int activatieteller = 0;

int lastActivation = 0;

int activeringstijd = 10 * 1000;

In de body van de setup ()-functie initialiseren we de vingerafdruksensor en verbinden we de CC3000-chip met je wifi-netwerk.

Maak in de body van de loop ()-functie verbinding met de Adafruit IO. De volgende lijn is hiervoor verantwoordelijk:

Nadat we verbinding hebben gemaakt met het Adafruit IO-platform, controleren we de laatste vingerafdruk. Als het overeenkomt en het slot niet is geactiveerd, sturen we "1" voor verwerking in Adafruit IO:

if (fingerprintID == fingerID && lockState == false) (

Serial.println (F ("Toegang verleend!"));

lockState = waar;

Serial.println (F ("Mislukt"));

Serial.println (F ("OK!"));

lastActivation = millis ();

Als het slot is geactiveerd binnen de lus ()-functie en we hebben de hierboven aangegeven vertragingswaarde bereikt, sturen we "0":

if ((activationCounter - lastActivation> activationTime) && lockState == true) (

lockState = onwaar;

if (! fingerprint.publish (staat)) (

Serial.println (F ("Mislukt"));

Serial.println (F ("OK!"));

Je kunt de nieuwste versie van de code downloaden op GitHub.

Het is tijd om ons project te testen! Vergeet niet alle vereiste Arduino-bibliotheken te downloaden en te installeren!

Zorg ervoor dat u alle noodzakelijke wijzigingen in de schets aanbrengt en upload deze naar uw Arduino. Open vervolgens het seriële monitorvenster.

Wanneer de Arduino verbinding maakt met wifi-netwerken, zal de vingerafdruksensor rood knipperen. Plaats uw vinger op de sensor. Het seriële monitorvenster moet het ID-nummer weergeven. Als het overeenkomt, verschijnt het bericht "OK!". Dit betekent dat de gegevens naar de Adafruit IO-servers zijn verzonden.

Schema en schets voor verdere configuratie van het slot aan de hand van het voorbeeld van een LED

Laten we nu het deel van het project behandelen dat direct verantwoordelijk is voor het beheer deurslot... Om verbinding te maken met draadloos netwerk en het activeren / deactiveren van het slot, heeft u een extra Adafruit ESP8266-module nodig (de ESP8266-module hoeft niet van Adafruit te zijn). Aan de hand van het onderstaande voorbeeld kunt u zien hoe gemakkelijk het is om gegevens uit te wisselen tussen twee platforms (Arduino en ESP8266) met behulp van de Adafruit IO.

In deze sectie gaan we niet direct met het slot aan de slag. In plaats daarvan verbinden we de LED gewoon met de pin waarop het slot later wordt aangesloten. Dit maakt het mogelijk om onze code te testen zonder diep in te gaan op het ontwerp van het slot.

De schakeling is vrij eenvoudig: installeer eerst de ESP8266 op het breadboard. Installeer vervolgens de LED. Vergeet niet dat de lange (positieve) poot van de LED via een weerstand is aangesloten. Het tweede been van de weerstand wordt aangesloten op pin 5 op de ESP8266-module. De tweede (kathode) van de LED is verbonden met de GND-pin op de ESP8266.

Ten volle geassembleerd circuit weergegeven in de onderstaande foto.


Laten we nu eens kijken naar de schets die we voor dit project zullen gebruiken. Nogmaals, de code is vrij groot en complex, dus we zullen alleen de belangrijkste delen ervan behandelen:

We beginnen met het aansluiten van de benodigde bibliotheken:

#erbij betrekken

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

Wifi-parameters configureren:

#define WLAN_SSID "uw_wifi_ssid"

#define WLAN_PASS "uw_wifi_wachtwoord"

#define WLAN_SECURITY WLAN_SEC_WPA2

We configureren ook de Adafruit IO-parameters. Hetzelfde als in het vorige gedeelte:

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_username"

#define AIO_KEY "adafruit_io_key"

We geven aan op welke pin we de LED hebben aangesloten (in de toekomst wordt dit ons slot of relais):

int relaisPin = 5;

De interactie met de vingerafdruksensor is hetzelfde als in het vorige gedeelte:

const char LOCK_FEED PROGMEM = AIO_USERNAME "/ feeds / lock";

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe (& mqtt, LOCK_FEED);

In de body van de setup ()-functie geven we aan dat de pin waarop de LED is aangesloten in de OUTPUT-modus zou moeten werken:

pinMode (relayPin, UITGANG);

Binnen de lus () controleren we eerst of we verbonden zijn met de Adafruit IO:

Daarna kijken we welk signaal er wordt ontvangen. Als "1" wordt verzonden, activeren we het contact dat we eerder hebben aangegeven, waarop onze LED is aangesloten. Als we "0" ontvangen, zetten we het contact over naar de "lage" status:

Adafruit_MQTT_Subscribe * abonnement;

while ((abonnement = mqtt.readSubscription (1000))) (

if (abonnement == & lock) (

Serial.print (F ("Gekregen:"));

Serial.println ((char *) lock.lastread);

// Sla de opdracht op in string-gegevens

String-opdracht = String ((char *) lock.lastread);

if (opdracht == "0") (

digitalWrite (relayPin, LAAG);

if (opdracht == "1") (

digitalWrite (relayPin, HOOG);

Vind laatste versie schets je kunt op GitHub.

Het is tijd om ons project te testen. Vergeet niet alle benodigde bibliotheken voor je Arduino te downloaden en te controleren of je de juiste wijzigingen in de schets hebt aangebracht.

Een eenvoudige USB-FTDI-converter kan worden gebruikt om de ESP8266-chip te programmeren.

Upload de schets naar de Arduino en open het seriële monitorvenster. In dit stadium hebben we net gecontroleerd of we verbinding konden maken met Adafruit IO: we zullen de beschikbare functionaliteit verder bekijken.

Het project testen

Laten we nu beginnen met testen! Ga naar het gebruikersmenu van je Adafruit IO, onder het menu Feeds. Controleer of de kanalen voor de vingerafdruk en het slot zijn aangemaakt (op het onderstaande printscherm zijn dit de vingerafdruk- en slotlijnen):


Als ze er niet zijn, moet u deze handmatig maken.

Nu moeten we zorgen voor de uitwisseling van gegevens tussen de vingerafdruk- en vergrendelingskanalen. Het vergrendelingskanaal moet worden ingesteld op "1" wanneer het vingerafdrukkanaal is ingesteld op "1" en vice versa.

Hiervoor gebruiken we een zeer krachtige Adafruit IO-tool: triggers. Triggers zijn in wezen voorwaarden die u kunt toepassen op geconfigureerde kanalen. Dat wil zeggen, ze kunnen worden gebruikt om twee kanalen met elkaar te verbinden.

Maak een nieuwe reactieve trigger in de sectie Triggers van Adafruit IO. Dit biedt de mogelijkheid om gegevens uit te wisselen tussen de vingerafdruksensor en de vergrendelingskanalen:


Zo zou het eruit moeten zien als beide triggers zijn geconfigureerd:

Alles! Nu kunnen we ons project echt testen! We leggen onze vinger op de sensor en zien hoe de Arduino de LED begint te knipperen die overeenkomt met de gegevensoverdracht. Daarna zou de LED op de ESP8266-module moeten gaan knipperen. Dit betekent dat hij gegevens begon te ontvangen via MQTT. De LED op de printplaat moet op dit punt ook gaan branden.

Na de vertraging die je in de schets hebt ingesteld (de standaard is 10 seconden), gaat de LED uit. Gefeliciteerd! U kunt de LED overal ter wereld bedienen met uw vingerafdruk!

Een elektronisch slot instellen

We kwamen aan bij het laatste deel van het project: het rechtstreeks aansluiten en besturen van het elektronische slot met behulp van een Arduino en een vingerafdruksensor. Het project is niet eenvoudig, je kunt alle bronnen gebruiken in de vorm waarin ze hierboven worden weergegeven, maar in plaats van de LED een relais aansluiten.

Om het slot direct aan te sluiten, hebt u extra componenten nodig: een 12 V-voeding, een stroomaansluiting, een transistor (in dit voorbeeld IRLB8721PbF MOSFET wordt gebruikt, maar een andere, bijvoorbeeld een bipolaire transistor TIP102, kan worden gebruikt. Als u een bipolaire transistor gebruikt, moet u een weerstand toevoegen.

Hieronder weergegeven electronisch circuit alle componenten aansluiten op de ESP8266-module:


Merk op dat als je een MOSFET-transistor gebruikt, je geen weerstand nodig hebt tussen pin 5 van de ESP8266 en de transistor.

Het volledig geassembleerde project wordt weergegeven op de onderstaande foto:


Voed de ESP8266-module met behulp van de FTDI-module en sluit de 12V-voeding aan op de jack. Als je de hierboven aanbevolen aansluitpinnen hebt gebruikt, hoef je niets aan de schets te veranderen.

Nu kun je je vinger op de sensor leggen: het slot zou moeten werken, reagerend op je vingerafdruk. De onderstaande video toont het project van een automatisch "slim" slot in actie:

Verdere ontwikkeling van het "Smart Lock"-project

In ons project hebben we vrijgegeven afstandsbediening deurslot met uw vingerafdruk.

Voel je vrij om te experimenteren, de schets en het harnas aan te passen. U kunt bijvoorbeeld een elektronisch deurslot vervangen door een relais om het vermogen van uw 3D-printer, manipulator of quadcopter te regelen...

Je kunt je " Slim huis Activeer bijvoorbeeld op afstand het irrigatiesysteem op de Arduino of doe de lichten in de kamer aan... En vergeet niet dat je met de Adafruit IO een bijna onbeperkt aantal apparaten tegelijk kunt activeren.

Laat uw opmerkingen, vragen achter en deel persoonlijke ervaring onderstaand. In de discussie ontstaan ​​vaak nieuwe ideeën en projecten!

Het toeval wilde dat we besloten om op het werk een cijferslot op onze deur te installeren, omdat we constant naar binnen rennen - we rennen het kantoor uit, waarvan de deur constant moet worden gesloten in afwezigheid van de bewoners. Sleutels worden vaak binnen vergeten. Over het algemeen hebben we besloten dat het combinatieslot een geweldige oplossing is.

Na wat rondneuzen op Chinese rommelmarkten en ebay, vond ik niets goedkoops en min of meer serieus en besloot ik het zelf te maken. Ik zal meteen voorbehoud maken dat het Arduino-platform is gekozen vanwege zijn eenvoud, omdat er helemaal geen ervaring was met communiceren met microcontrollers.

Idee

Op de deur met buiten de deur moet een toetsenbord hebben waarop het wachtwoord wordt ingevoerd, de rest van de structuur is aan de binnenkant bevestigd. Een reed-schakelaar wordt gebruikt om het volledig sluiten van de deur te regelen. Bij het verlaten van het kantoor drukt een persoon op "*" op het toetsenbord en, zonder te wachten tot de deur dichterbij komt, gaat hij verder met zijn zaken, wanneer de deur volledig gesloten is, zal de reed-schakelaar sluiten en het slot worden gesloten. De deur wordt geopend door een 4-cijferig wachtwoord in te voeren en op "#" te drukken.

Componenten

Arduino UNO = $ 18
Arduino protoshield + breadboard = $ 6
L293D = $ 1
30 stuks gevlochten draadbundel = $ 4
2 RJ45-aansluitingen = $ 4
2 RJ45-stekkers = $ 0,5
aandrijver centrale vergrendeling= RUB 250
Reed schakelaar = losgescheurd van het oude raam.
Metalen grendel van gigantische grootte = gratis
Oude D-LINK-naaf gemaakt van 1,5 mm ijzer = gratis
Een voeding van dezelfde D-LINK hub voor 12 en 5v = is ook gratis
Een stel schroeven en moeren om al dit spul aan het lichaam te bevestigen = 100 roebel.
Bedieningspaneel van inbraakalarm= gratis.

Totaal:$ 33,5 en 350 roebel.

Niet zo weinig, zegt u, en u zult zeker gelijk hebben, maar voor het plezier moet u betalen! En het is altijd leuk om iets met je eigen handen in elkaar te zetten. Bovendien kan het ontwerp sterk worden verminderd als je een kale MC zonder Arduino gebruikt.

Montage voorbereiden

Ik zou graag iets willen zeggen over de aankoop van een sleutelelement van het actuatorontwerp. In een plaatselijke autowinkel kreeg ik twee soorten actuatoren aangeboden: "met twee draden en met vijf." Volgens de verkoopster waren ze precies hetzelfde en betekende het verschil in het aantal draden helemaal niets. Dit is echter niet het geval, zo bleek later! Ik koos een apparaat met twee draden, het werd gevoed door 12V. Het 5-draads ontwerp bevat eindschakelaars om de beweging van de arm te regelen. Ik realiseerde me pas dat ik de verkeerde had gekocht toen ik hem uit elkaar haalde en het te laat was om hem te veranderen. De slag van de hendel was te kort om de grendel goed te duwen, daarom was het nodig om deze een beetje aan te passen, namelijk om twee rubberen ringen te verwijderen die de slag van de bedieningshendel verkorten. Om dit te doen, moest het lichaam worden meegesneden gewone ijzerzaag omdat de tweede wasmachine binnen was. De blauwe elektrische tape heeft ons, zoals altijd, geholpen in de toekomst bij het monteren ervan.
Om de motor van de actuator aan te sturen, werd de L293D motordriver gebruikt, die een piekbelasting tot 1200 mA weerstaat, in ons geval, toen de motor van de actuator werd gestopt, steeg de piekbelasting tot slechts 600 mA.
Van het bedieningspaneel van het inbraakalarm zijn contacten van het toetsenbord, de luidspreker en twee LED's verwijderd. De afstandsbediening en het hoofdapparaat moesten worden aangesloten met behulp van twisted pair en RJ45-connectoren.

Programmeren.

Ik heb dus tot nu toe geen ervaring met programmeren met Arduino. Ik heb de ontwikkelingen en artikelen van andere mensen van de arduino.cc-site gebruikt. Wie geeft er om deze lelijke code :)

Foto en video



Arduino en actuator


Stroomvoorziening


Toetsenbord


Espagnolet (verbonden met de actuator met een metalen spaak en waarop een krimpkous wordt gedragen voor schoonheid)

Video van het bedieningsproces van het apparaat:

In dit artikel laat ik je zien hoe je een combinatieslot maakt van een arduino. Hiervoor hebben we rode en groene leds nodig, een zoemer, een arduino nano, een lcd-scherm met een I2C-converter, een servodrive en een 4x4 matrix-toetsenbord. Wanneer ingeschakeld, zal het scherm "Enter code" schrijven.

de rode LED gaat branden,

en de groene gaat uit, de servo staat op 0 °. Terwijl u cijfers invoert, licht * op op het display.

Als de code verkeerd is ingevoerd, verschijnt op het display "Enter cod.". Als de code correct is, klinkt er een pieptoon, draait de servo 180 °, op het display staat "Open".

de groene LED gaat branden,

en de rode gaat uit. Na 3 seconden keert de servo terug naar de uitgangspositie, de rode LED gaat aan en de groene LED gaat uit, het display zal "Close" schrijven.

dan zal het scherm "Enter code" schrijven. Nu over het schema. Eerst verbinden we de arduino met draden om broodplankje(stroomcontacten).

Vervolgens verbinden we het matrixtoetsenbord met de contacten D9 - D2.

Dan de servomotor. Die sluiten we aan op pin 10.

Rode LED naar pin 11.

Groen - naar pin 12.

Zoemer - naar pin 13.

Upload nu de schets.

#erbij betrekken #erbij betrekken #erbij betrekken #erbij betrekken iarduino_KB KB (9, 8, 7, 6, 5, 4, 3, 2); LiquidCrystal_I2C lcd (0x27, 16, 2); Servo-servo; int-pas = (3, 6, 1, 8); int in; int r = 11; intg = 12; void setup () (KB.begin (KB1); pinMode (r, OUTPUT); pinMode (g, OUTPUT); lcd.init (); lcd.backlight (); digitalWrite (g, LOW); digitalWrite (r, HIGH ); servo.attach (10); servo.write (0); lcd.setCursor (0, 0);) void loop () (lcd.clear (); lcd.print ("Voer code in."); while ( ! KB.check (KEY_DOWN)) (vertraging (1);) in = KB.getNum; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("*"); terwijl (! KB. check (KEY_DOWN)) (vertraging (1);) in = KB.getNum; lcd.print ("*"); terwijl (! KB.check (KEY_DOWN)) (vertraging (1);) in = KB.getNum; lcd.print ("*"); while (! KB.check (KEY_DOWN)) (vertraging (1);) in = KB.getNum; lcd.print ("*"); if (in == pass) (if (in == pass) (if (in == pass) (if (in == pass) (lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Open."); toon ( 13, 400, 750); servo.write (180); digitalWrite (r, LOW); digitalWrite (g, HIGH); delay (3000); lcd.clear (); lcd.setCursor (0, 0); lcd. print ("Close."); toon (13, 300, 700); servo.write (0); digitalWrite (g, LOW); digitalWrite (r, HIGH); dela j (1000); )))))

Dat is alles. Geniet van het combinatieslot!

Lijst van radio-elementen

Aanwijzing Soort van denominatie Hoeveelheid OpmerkingWinkelMijn notitieboek
E1 Arduino-bord

Arduino Nano 3.0

1 5B In notitieblok
E8, E9 Weerstand

220 ohm

2 SMD In notitieblok
E6 Lichtgevende diode

AL102G

1 rood In notitieblok
E7 Lichtgevende diode

AL307G

1 Groente In notitieblok
E3 LCD schermMet I2C-interface1 Groene achtergrondverlichting In notitieblok
E5 ServoSG901 180 graden In notitieblok
E2 Zoemer5B1 Bu In notitieblok
E 4 Toetsenbord4X41 Matrix In notitieblok
Nee Broodplank640 punten1 Geen solderen

In deze les zullen we leren hoe te doen eenvoudig systeem, die het slot met een elektronische sleutel (Tag) ontgrendelt.

In de toekomst kunt u de functionaliteit aanpassen en uitbreiden. Voeg bijvoorbeeld de functie "nieuwe sleutels toevoegen en uit het geheugen verwijderen" toe. Overweeg in het basisgeval een eenvoudig voorbeeld, wanneer een unieke sleutel-ID vooraf is ingesteld in de programmacode.

In deze tutorial hebben we nodig:

Om het project te implementeren, moeten we de bibliotheken installeren:

2) Nu moet je een zoemer aansluiten, die een signaal geeft als de sleutel wordt geactiveerd en het slot opengaat, en een tweede signaal wanneer het slot wordt gesloten.

We sluiten de zoemer in de volgende volgorde aan:

Arduino Zoemer
5V VCC
GND GND
speld 5 IO

3) De servo wordt gebruikt als ontgrendelingsmechanisme. Elke servo kan worden gekozen, afhankelijk van de door u gewenste afmetingen en krachten, die de servo creëert. De servo heeft 3 pinnen:

In de onderstaande afbeelding kunt u duidelijker zien hoe we alle modules hebben aangesloten:

Nu, als alles is aangesloten, kunt u doorgaan met programmeren.

Schetsen:

#erbij betrekken #erbij betrekken #erbij betrekken // "RFID"-bibliotheek. #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); niet-ondertekende lange uidDec, uidDecTemp; // om het labelnummer in decimaal formaat op te slaan Servo servo; void setup () (Serial.begin (9600); Serial.println ("Wachten op kaart ..."); SPI.begin (); // initialisatie SPI / Init SPI bus.mfrc522.PCD_Init (); // initialisatie MFRC522 / Init MFRC522 card.servo.attach (6); servo.write (0); // zet de servo op closed) void loop () (// Zoek een nieuw label if (! Mfrc522.PICC_IsNewCardPresent ()) (return ; ) // Selecteer een label als (! Mfrc522.PICC_ReadCardSerial ()) (return;) uidDec = 0; // Issue serienummer etiketten. voor (byte i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

Laten we de schets eens nader bekijken:

Om de UID van de kaart (Tags) te achterhalen, moet je deze schets naar Arduino schrijven, het hierboven beschreven circuit samenstellen en de console openen (seriële poortbewaking). Wanneer u de tag naar de RFID brengt, wordt een nummer weergegeven in de console

De resulterende UID moet op de volgende regel worden ingevoerd:

Als (uidDec == 3763966293) // Vergelijk de Uid van het label, als deze gelijk is aan de gegeven, opent de servo de klep.

Elke kaart heeft een unieke identificatie en herhaalt zichzelf niet. Dus wanneer u de kaart meeneemt, waarvan u de identificatie in het programma hebt ingesteld, opent het systeem de toegang met behulp van een servoaandrijving.

Video:

De gastheer van het YouTube-kanaal "AlexGyver" werd gevraagd om met zijn eigen handen een elektronisch slot te maken. Welkom bij de cyclus van video's over elektronische sloten op Arduino. V algemeen overzicht de meester zal het idee uitleggen.

Er zijn verschillende opties voor het maken van een systeem elektronisch slot... Meestal worden ze gebruikt om deuren en laden, kasten te vergrendelen. En ook voor het creëren van schuilplaatsen en geheime kluizen. Je moet daarom een ​​mock-up maken waar je gemakkelijk mee kunt werken en waarmee je de opbouw van het systeem van binnen en van buiten duidelijk en gedetailleerd kunt weergeven. Daarom besloot ik een frame met een deur te maken. Dit vereist: vierkante balk 30 x 30. Multiplex 10mm. Deurscharnieren... Aanvankelijk wilde ik een kist van multiplex maken, maar ik herinnerde me dat alles in de kamer bezaaid was met reserveonderdelen. Er is nergens om zo'n doos te plaatsen. Daarom wordt er een lay-out gemaakt. Als iemand zichzelf een elektronisch slot wil geven, dan kun je, kijkend naar de lay-out, gemakkelijk alles herhalen.

Alles wat je nodig hebt voor een kasteel vind je in deze Chinese winkel.

Het doel is om zoveel mogelijk te ontwikkelen efficiënte schema's en firmware voor elektronische sloten. U kunt deze resultaten gebruiken om deze systemen op uw deuren, laden, kasten en schuilplaatsen te installeren.

De deur is klaar. Nu moet u uitzoeken hoe u elektronisch kunt openen en sluiten. Voor deze doeleinden is een krachtige magneetvergrendeling van aliexpress geschikt (link naar de winkel hierboven). Als u spanning op de klemmen zet, gaat deze open. De weerstand van de spoel is bijna 12 ohm, wat betekent dat bij een spanning van 12 volt de spoel ongeveer 1 ampère verbruikt. Zal omgaan met een dergelijke taak en lithium batterij en een opstapmodule. We passen ons aan op de juiste spanning. Hoewel iets meer mogelijk is. De grendel is bevestigd aan binnenkant de deuren staan ​​op een afstand zodat ze niet aan de rand blijven haken en kunnen worden dichtgeslagen. De grendel moet een tegenhanger zijn in de vorm metalen doos... Het is onhandig en verkeerd om het zonder te gebruiken. We zullen een stap moeten zetten, in ieder geval om de schijn van normaal werk te creëren.

In de ruststand gaat de grendel normaal open, dat wil zeggen, als er een hendel op de deur zit, geef dan een impuls, open de deur aan de hendel. Maar als je het opknapt, is deze methode niet meer geschikt. De boost-converter kan de belasting niet aan. Om de veerbelaste deur te openen, moet u een grotere batterij en een krachtigere omvormer gebruiken. Ofwel de netvoeding en hamer op de autonomie van het systeem. V Chinese winkels heb de heck grote maten... Ze zijn geschikt voor dozen. Stroom kan worden geleverd met behulp van een relais of een transistormosfet, of een stroomschakelaar op dezelfde transistor. Een interessantere en goedkopere optie is een servoaandrijving die is aangesloten op een drijfstang met een vergrendelingselement - een grendel of een serieuzere klep. Hij heeft misschien ook een stuk stalen spaak nodig die als drijfstang fungeert. Zo'n systeem heeft niet veel stroom nodig. Maar ze neemt meer ruimte en meer lastige besturingslogica.

Er zijn twee soorten servo's. Klein, zwak en krachtig, waarmee je veilig gaten in serieuze metalen pinnen kunt duwen. Beide getoonde opties werken op beide deuren en laden... Je zult moeten sleutelen aan de doos, waarbij je een gat in de schuifwand moet maken.

Tweede deel