Een RFID-slot maken met Arduino. DIY elektronisch slot Voorbereiden voor montage

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

Nadat ik de Chinese rommelmarkten en eBay had doorzocht, vond ik niets goedkoops en min of meer serieus en besloot ik het zelf te maken. Ik zeg meteen dat het Arduino-platform is gekozen vanwege zijn eenvoud, aangezien ik helemaal geen ervaring had met microcontrollers.

Idee

Aan de deur met buiten De deur moet een toetsenbord hebben waarop het wachtwoord wordt ingevoerd en de rest van de structuur moet aan de binnenkant worden beveiligd. 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 gaat, zonder te wachten tot de deur met de afsluiter sluit, verder met zijn werk. Wanneer de deur volledig gesloten is, gaat de reed-schakelaar dicht en wordt het slot gesloten . De deur gaat open door een wachtwoord van 4 cijfers in te voeren en op “#” te drukken.

Accessoires

Arduino-UNO = $ 18
Arduino protoshield + breadboard = $6
L293D = $1
Draadbundel 30 stuks voor Bradboard = $4
2 RJ45-aansluitingen = $ 4
2 RJ45-stekkers = $ 0,5
aandrijving centrale vergrendeling= 250 wrijven.
Reedschakelaar = vrij uit het oude raam gescheurd.
Metalen sluiting gigantische omvang= gratis
Behuizing van een oude D-LINK-hub van anderhalve millimeter ijzer = gratis
Voeding vanuit dezelfde D-LINK hub voor 12 en 5V = ook gratis
Een stel schroeven en moeren om al dit spul aan het lichaam te bevestigen = 100 roebel.
Afstandsbediening vanaf inbraakalarm= gratis.

Totaal:$ 33,5 en 350 roebel.

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

Voorbereiden voor montage

Ik wil graag een paar woorden zeggen over de aanschaf van een belangrijk element van het actuatorontwerp. Een plaatselijke autowinkel bood me twee soorten actuatoren aan: “met twee draden en met vijf.” Volgens de verkoopster waren ze absoluut identiek en betekende het verschil in het aantal draden absoluut niets. Maar zoals later bleek, is dit niet zo! Ik koos voor een apparaat met twee draden, het werd gevoed door 12V. Het vijfdraadsontwerp is voorzien van eindschakelaars om de beweging van de hendel te regelen. Ik besefte pas dat ik de verkeerde had gekocht toen ik hem uit elkaar haalde en het te laat was om hem te vervangen. De slag van de hendel bleek te kort om de grendel goed in te trekken, daarom was het nodig om deze een beetje aan te passen, namelijk het verwijderen van twee rubberen ringen die de slag van de actuatorhendel verkortten. Om dit te doen, moest de carrosserie in de lengte worden gezaagd met een gewone ijzerzaag, omdat de tweede ring binnenin zat. Blauwe elektrische tape heeft ons, zoals altijd, in de toekomst geholpen bij het terug monteren ervan.
Om de actuatormotor aan te sturen, hebben we een L293D-motordriver gebruikt, die een piekbelasting tot 1200 mA kan weerstaan; toen we de actuatormotor stopten, nam de piekbelasting toe tot slechts 600 mA.
De contacten van het toetsenbord, de luidspreker en twee LED's zijn verwijderd uit hetl. De afstandsbediening en het hoofdapparaat moesten met elkaar worden verbonden via twisted pair- en RJ45-connectoren

Programmering.

Net als ervaring Arduino-programmering Tot nu toe heb ik er nog geen gehad. Ik heb het werk en de artikelen van anderen van de site arduino.cc gebruikt. Iedereen die geïnteresseerd is, kan deze lelijke code bekijken :)

Foto en video



Arduino en actuator


krachtbron


Toetsenbord


Espagnolet (verbonden met de actuator met een metalen spaak en bedekt met krimpkous voor schoonheid)

Video van het werkingsproces van het apparaat:

Presentator Youtube kanaal"AlexGyver" werd gevraagd om met zijn eigen handen een elektronisch slot te maken. Welkom bij de serie video's over elektronische sloten op Arduino. IN algemeen overzicht de meester zal het idee uitleggen.

Er zijn verschillende opties voor het creëren van een elektronisch sluitsysteem. Meestal gebruikt om deuren, laden en kasten te vergrendelen. En ook voor het maken van caches en geheime kluizen. Daarom moet u een lay-out maken die handig is om mee te werken en die de structuur van het systeem van binnen en van buiten duidelijk en gedetailleerd kan weergeven. Dus besloot ik een frame met een deur te maken. Hiervoor heb je nodig vierkante balk 30 x 30. Multiplex 10 mm. Deurscharnieren. In eerste instantie wilde ik het doen Multiplex doos, maar herinnerde zich dat de kamer bezaaid was met reserveonderdelen. Er is nergens om zo'n doos te plaatsen. Daarom wordt er een mock-up gemaakt. Als iemand voor zichzelf een elektronisch slot wil installeren, kan hij, gezien de lay-out, alles gemakkelijk herhalen.

In deze Chinese winkel vind je alles wat je nodig hebt voor een kasteel.

Het doel is om je zoveel mogelijk te ontwikkelen effectieve schema’s en firmware voor elektronische sloten. U kunt deze resultaten gebruiken om deze systemen op uw deuren, lades, kasten en schuilplaatsen te installeren.


De deur is klaar. Nu moeten we uitzoeken hoe we moeten openen en sluiten elektronisch. Voor deze doeleinden is een krachtige magneetgrendel van AliExpress geschikt (link naar de winkel hierboven). Als u spanning op de klemmen zet, gaan deze open. De spoelweerstand bedraagt ​​bijna 12 ohm, wat betekent dat bij een spanning van 12 volt de spoel ongeveer 1 ampère verbruikt. Deze taak kan ook worden uitgevoerd lithium batterij en boostmodule. Pas de juiste spanning aan. Hoewel er iets meer mogelijk is. De grendel is eraan bevestigd binnen deuren op afstand zodat ze niet tegen de rand komen en dicht kunnen slaan. De grendel moet een tegenhanger hebben in de vorm van een metalen doos. Het zonder dit gebruiken is lastig en onjuist. We zullen een stap moeten installeren, in ieder geval om de schijn van normale werking te wekken.

In de inactieve modus gaat de grendel normaal open, dat wil zeggen: als er een hendel op de deur zit, geven we een impuls en openen we de deur aan de hendel. Maar als je een veer gebruikt, is deze methode niet meer geschikt. De boostconverter kan de belasting niet aan. Om de veerbelaste deur te openen, moet je deze gebruiken grote batterijen en een krachtigere converter. Of gebruik een netwerkvoeding en vergeet de systeemautonomie. IN Chinese winkels er zijn grendels grote maten. Ze zijn geschikt voor laden. Stroom kan worden geleverd met behulp van een relais of mosfet-transistor, of een aan/uit-schakelaar op dezelfde transistor. Een interessantere en goedkopere optie is een servoaandrijving die is verbonden met een drijfstang met elk vergrendelingselement - een grendel of een serieuzere bout. Mogelijk hebt u ook een stuk stalen breinaald nodig die als drijfstang fungeert. Een dergelijk systeem vereist geen hoge stroomsterkte. Maar het neemt meer ruimte in beslag en heeft een sluwere besturingslogica.

Er zijn twee soorten servo's. Kleine zwakke en grote krachtige die gemakkelijk in gaten in serieuze metalen pinnen kunnen worden geduwd. Beide getoonde opties werken op beide deuren en laden. Je zult aan de doos moeten sleutelen en een gat in de intrekbare muur moeten maken.

Tweede deel

In dit artikel vertel ik je hoe je een cijferslot maakt van Arduino. Hiervoor hebben we rode en groene LED's nodig, een zoemer, een Arduino nano, een LCD-display met een I2C-converter, een servodrive en een 4x4 matrixtoetsenbord. Wanneer ingeschakeld, verschijnt er op het display 'Voer code in'.

de rode LED gaat branden,

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

Als de code verkeerd wordt ingevoerd, verschijnt er op het display “Voer code in.”. Als de code correct is, klinkt er een pieptoon, draait de servo 180° en verschijnt op het display 'Open'.

de groene LED gaat branden,

en de rode gaat uit. Na 3 seconden keert de servo terug naar zijn uitgangspositie, de rode LED gaat branden en de groene LED gaat uit, op het display verschijnt “Close.”,

dan verschijnt op het display "Voer code in". Nu over het schema. Eerst verbinden we de Arduino met draden aan het breadboard (stroomcontacten).

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

Dan de servo. We sluiten hem aan op pin 10.

Rode LED op pin 11.

Groen - tot 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-scherm (0x27, 16, 2); Servo-servo; int pas = (3, 6, 1, 8); int in; intr = 11; intg = 12; void setup() ( KB.begin(KB1); pinMode(r, OUTPUT); pinMode(g, OUTPUT); lcd.init(); lcd.backlight(); digitalWrite(g, LOW); digitalWrite(r, HOOG ); servo.attach(10); lcd.setCursor(0, 0); void loop() (lcd.clear(); lcd.print("Voer code in."); while ( !KB.check(KEY_DOWN)) (vertraging(1); ) in = KB.getNum; lcd.setCursor(0, 0); check(KEY_DOWN)) (vertraging(1); ) in = KB.getNum("*"); (!KB.check(KEY_DOWN)) ( vertraging(1); ) in = KB.getNum; lcd.print("*"); while (!KB.check(KEY_DOWN)) ( vertraging(1); ) in = KB.getNum("*"); if (in == geslaagd) ( if (in == geslaagd) ( if (in == geslaagd) ( if (in == geslaagd) ( lcd.clear(); lcd.setCursor (0, 0); lcd.print("Open."); toon( 13, 400, 750); digitalWrite(r, LAAG); lcd.setCursor("Sluiten ."); toon(13, 300, 700); digitalWrite(g, LOW); vertraging(1000); ) ) ) )

Dat is alles. Geniet van het combinatieslot!

Lijst met radio-elementen

Aanduiding Type Denominatie Hoeveelheid OpmerkingWinkelMijn notitieblok
E1 Arduino-bord

Arduino Nano 3.0

1 5V Naar notitieblok
E8, E9 Weerstand

220 Ohm

2 SMD Naar notitieblok
E6 Lichtgevende diode

AL102G

1 Rood Naar notitieblok
E7 Lichtgevende diode

AL307G

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

Arduino wel het beste systeem om apparatuur te kopiëren. Zonder haar zouden de meeste ideeën niet tot bloei kunnen komen. Het idee bestaat al heel lang: een speciaal combinatieslot op Arduino maken. Om het te openen, moet je een bepaalde toets ingedrukt houden. In dit geval mag het slot niet opengaan, ook al weet u de juiste knop. Om het te openen, moet je bepaalde intervallen aanhouden, met behulp van spiergeheugen. Een crimineel kan zoiets niet doen. Maar dit is allemaal slechts een theorie.

Om het te verzamelen, moet je het gebruiken speciaal apparaat rechthoekige pulsen, evenals verschillende tellers en een stel. Maar het voltooide apparaat zou geweldig zijn dimensies en het zou onhandig zijn om te gebruiken. In de regel achtervolgen dergelijke gedachten je. De eerste stap om mijn droom waar te maken was het maken van een programma voor Arduino. Het zal dienen als een combinatieslot. Om het te openen, moet u niet op één toets drukken, maar op meerdere, en dit tegelijkertijd doen. Klaar schema het lijkt hierop:

De beeldkwaliteit is niet de beste, maar de verbinding is gemaakt met aarde, D3, D5, D7, D9 en D11.

De code staat hieronder:

Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int ik = 1000; byte a = 0; byte b = 0; byte c = 0; byte d = 0; niet-ondertekende lange tijd = 0; //vergeet niet alles wat een waarde heeft millis() unsigned long temp = 0; // opslaan in niet-ondertekende lange byte keya = (0, 0, 0, 0, 0, 0, 0, 0); // werkelijke codes byte keyb = (1, 1, 1, 1, 0, 1, 0, 0); byte-toetsc = ( 1, 0, 1, 0, 1, 1, 1, 0); byte k = 0; void setup() ( pinMode(ina, INPUT_PULLUP); //3 ingangen aangesloten op de knoppen pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); // ingebouwde LED op de 13e pin pinMode(7, OUTPUT); pinMode(11, OUTPUT); //vervang ground digitalWrite(11, LOW); //nodig voor timing ) void blinktwice() ( // dubbel knipperen van de LED digitalWrite(ledPin, HIGH); digitalWrite(ledPin, LOW); digitalWrite(ledPin, LOW); // prompt om code in te voeren ) if (k == 8) ( digitalWrite(ledPin, HIGH); delay(3000); k = 0 ; ) a = digitalRead(ina); // signaalniveaus worden gelezen via de knoppen - ingedrukt /niet ingedrukt b = digitalRead(inb); c = digitalRead(inc); //next if - bescherming tegen valse positieven, u hoeft if((digitalRead(ina) == a)&&(digitalRead(inb) niet te gebruiken ) ==b)&&(digitalRead(inc)==c)) ( als (a == keya[k]) ( als (b == keyb[k]) ( als (c == keyc[k]) ( k++; ) ) ) ) if (k==1) ( if (d ==0) ( tijd = millis (); d++; ) ) temp = millis(); temperatuur = temperatuur - tijd; als (temp > 10000) ( k= 0; d=0; tijd = milli (; ) )

Om onnodige vragen over de code te voorkomen, moeten enkele punten worden verduidelijkt. De setup-functie wordt gebruikt om poorten toe te wijzen. De volgende functie is Input_Pullup, die nodig is om de pinspanning met 5 V te verhogen. Dit gebeurt met behulp van een weerstand. Dankzij dit, verschillende kortsluitingen. Voor meer gemak wordt aanbevolen om de functie tweemaal knipperen te gebruiken. Over het algemeen moet u bij het maken van verschillende programma's andere functies proberen.

Na het toewijzen van functies wordt het signaal uit de poorten gelezen. Als de knop wordt ingedrukt, wordt dit aangegeven met het cijfer 1, en zo niet, met 2. Vervolgens worden alle waarden geanalyseerd. Er verscheen bijvoorbeeld een combinatie zoals 0,1,1. Dit betekent dat de eerste toets wordt ingedrukt, maar de andere twee niet. Als alle waarden waar zijn, dan is voorwaarde 8 ook waar. Dit wordt aangegeven door de brandende LED op het voorpaneel. Vervolgens moet u een specifieke code invoeren die wordt gebruikt om de deur te openen.

De laatste elementen van de code worden gebruikt om de tellerwaarden te resetten. Deze functie wordt uitgevoerd als er meer dan 10 seconden zijn verstreken sinds de laatste toetsaanslag. Zonder deze code was het mogelijk om alles te herhalen mogelijke opties, ook al zijn het er best veel. Na creatie van dit apparaat het moet worden getest. Meer