Inhoudsopgave:

Arduino RFID-deurslot - Ajarnpa
Arduino RFID-deurslot - Ajarnpa

Video: Arduino RFID-deurslot - Ajarnpa

Video: Arduino RFID-deurslot - Ajarnpa
Video: NFC / RFID-сканер для Arduino. Железки Амперки 2024, Juli-
Anonim
Arduino RFID-deurslot
Arduino RFID-deurslot
Arduino RFID-deurslot
Arduino RFID-deurslot
Arduino RFID-deurslot
Arduino RFID-deurslot
Arduino RFID-deurslot
Arduino RFID-deurslot

***Bijgewerkt 8/9/2010*** Ik wilde een gemakkelijke en veilige manier vinden om mijn garage binnen te komen. RFID was de beste manier om mijn deur te ontgrendelen, zelfs met mijn handen vol kan ik de deur ontgrendelen en openduwen! Ik bouwde een eenvoudig circuit met een basis ATMega 168 arduino-chip en een ID-20 RFID-lezer om een elektronisch deurslot te bedienen. Het circuit bestaat uit 3 afzonderlijke delen, een lezer om RFID-tags te lezen, een controller om gegevens van de lezer te accepteren en de output van de RGB-led en het elektrische deurslot te regelen. Het deurslot wordt eerst in een deur geïnstalleerd en getest met een 9v-batterij om een correcte installatie te garanderen. In de meeste gevallen wilt u een normaal open circuit op het deurslot of Fail Secure. Dit betekent dat de deur vergrendeld blijft als er geen stroom doorheen gaat. Wanneer 12vDC door de elektromagneet in het deurslot wordt geleid, geeft een plaat in het slot mee en kan de deur vrij worden opengeduwd. De lezer wordt aan de buitenkant van de deur geplaatst en is aan de binnenkant gescheiden van de controller, zodat niemand de beveiliging kan omzeilen door de lezer open te breken en te proberen de lezer kort te sluiten. De controller ontvangt seriële gegevens van de Reader en stuurt de RGB-led en het deurslot aan. In dit geval heb ik beide op aparte broodplanken gezet om te testen. Hier is een video-overzicht van het systeem in actie. Lees verder om te zien hoe u er zelf een kunt bouwen! **Update** Alle code, schema's en PCB-ontwerpen zijn getest en verfijnd. Ze zijn hier allemaal gepost vanaf 8/9/2010 Bijgewerkte video van het geïnstalleerde en werkende systeem.

Stap 1: benodigde onderdelen

Onderdelen nodig
Onderdelen nodig

Hier is een lijst met onderdelen en links naar SparkFun.com waar ik ze heb gekocht. Dit is de basisset met onderdelen die je moet bouwen en arduino en een circuit om RFID-tags in de arduino te lezen. Ik neem aan dat je al een breadboard, voeding en aansluitdraden hebt.

Arduino-dingen

ATmega168 met Arduino Bootloader $ 4,95

Kristal 16MHz $1,50

Condensator Keramiek 22pF $ 0,25 (x2)

Weerstand 10k Ohm 1/6e Watt PTH $ 0.25

Mini-drukknopschakelaar $ 0,35

Drievoudige output LED RGB - diffuus $ 1,95

RFID-dingen

Elk van deze, 20 heeft een beter bereik, 12 is kleinerRFID Reader ID-12 $29.95RFID Reader ID-20 $34.95

Uitbraak van RFID-lezer $ 0,95

Break Away Headers - Straight $2,50

RFID-tag - 125 kHz $ 1,95

Ander

TIP31A-transistor (radioshack / lokale elektronicawinkel $ 1,50)

Deurslot is van ebay. Door Fail Beveiligde toegangscontrole Electric Strike v5 GEEN $ 17,50 (kawamall, bay)

Stap 2: Bouw de Arduino-controller

Bouw de Arduino-controller
Bouw de Arduino-controller
Bouw de Arduino-controller
Bouw de Arduino-controller
Bouw de Arduino-controller
Bouw de Arduino-controller

De eerste stap bij het bouwen van een RFID-deurslot met een eenvoudige Arduino is om een basis werkende Arduino uit te werken. De meeste Arduino voorgeflitste ATMega 168-chips worden geleverd met het standaard knipperprogramma vooraf geïnstalleerd. Sluit een LED aan op digitale uitgang 13 en controleer of alles werkt.

Het hardwaregedeelte van deze RFID-lezer zou te eenvoudig zijn als we een gewone arduino met ingebouwde USB-programmeur zouden gebruiken. Aangezien ik van plan ben dit in de muur te plaatsen en het niet meer aan te raken, wil ik geen groot volumineus arduino-bord van $ 30 gebruiken als ik een ATMega 168 van $ 5 kan kopen en een veel kleinere aangepaste PCB kan maken.

Omdat ik ervoor heb gekozen om zelf een basis Arduino-circuit te maken, heb ik een externe USB->Serial FDIT-programmeur nodig. Ik heb Eagle-schema's van de controller bijgevoegd met een voeding die is opgebouwd uit een 7805-spanningsregelaar. Bij het testen heb ik een breadboard-voeding gebruikt.

Om een Arduino aan de gang te krijgen, heb je alleen de ATMega168 nodig met de Arduino-software erop geflitst, 2x 22pF-condensatoren, 16mhz-kristal, 10k ohm-weerstand, drukknop en een breadboard. De aansluiting hiervoor is bekend, maar ik heb het volledige schema voor het circuit bijgevoegd.

De Arduino gaat 4 uitgangen activeren, 1 elk voor rode/groene/blauwe LED's, en 1 om de TIP31A te activeren om 12vDC naar het deurslot te sturen. De Arduino ontvangt seriële gegevens op zijn Rx-lijn van de ID-20 RFID-lezer.

Stap 3: Bouw de RFID-lezer

Bouw de RFID-lezer
Bouw de RFID-lezer
Bouw de RFID-lezer
Bouw de RFID-lezer
Bouw de RFID-lezer
Bouw de RFID-lezer

Nu je Arduino-brood aan boord is en werkt, kun je het RFID-lezergedeelte van het circuit samenstellen dat de ID-10 of ID-20 en RGB-LED zal bevatten om de status van het circuit aan te geven. Houd er rekening mee dat de lezer zich buiten bevindt en gescheiden is van de controller binnenin, zodat iemand niet gemakkelijk kan inbreken.

Om dit te bouwen, sturen we 5v/Ground over van het primaire breadboard naar een secundair breadboard waarop we de Reader bouwen. Stuur ook 3 draden van 3 van de Arduino-uitgangspinnen om de RGB-LED te bedienen, één voor elke kleur. Nog een draad, Brown op de foto's, zal een seriële verbinding zijn voor de ID-20 om te praten met de Rx seriële ingang van de Arduino. Dit is een heel eenvoudig circuit om aan te sluiten. LED's krijgen weerstanden en een paar punten op de ID-20 zijn verbonden met aarde/5v om de juiste status in te stellen.

Om het gemakkelijker te maken om te breadboarden, verkoopt de ID-10/ID-20 Sparkfun een Breakout-bord waarmee je langere pin-headers kunt bevestigen die op een onderlinge afstand van een breadboard passen. Dit onderdeel en de pinheaders staan vermeld in de onderdelenlijst.

Het schema moet recht naar voren en gemakkelijk te volgen zijn.

Stap 4: Programma

Tijd om je arduino te programmeren. Dit kan een beetje lastig zijn met een standaard arduino, het kan zijn dat je voor en tijdens het eerste deel van de upload meerdere keren op de resetknop moet drukken. Een heel belangrijk ding om te onthouden, je krijgt een uploadfout als je de ID-20 seriële lijn niet tijdelijk loskoppelt van de arduino's Rx-lijn. De ATMega168 heeft slechts 1 Rx-ingang en gebruikt deze om code te uploaden om met de programmeur te praten. Koppel de ID-20 los tijdens het programmeren en sluit hem vervolgens weer aan als u klaar bent. Ik heb een FTDI-programmer gebruikt waarmee je de arduino via USB kunt programmeren met slechts 4 draden. Het Controller-schema toont een pin-header-aansluiting waarmee u er direct een kunt aansluiten. Sparkfun verkoopt dit onderdeel ook, maar velen hebben het misschien al.

Je kunt mijn code gemakkelijk uploaden naar je Arduino en nooit meer achterom kijken, maar wat is daar het plezier van? Laat me het basisidee van hoe het werkt uitleggen.

Allereerst wilde ik geen externe knoppen/schakelaars/etc. en ik wilde de arduino niet elke keer opnieuw programmeren als ik een nieuwe kaart wilde toevoegen. Daarom wilde ik alleen RFID gebruiken om zowel de werking van het circuit als het deurslot te controleren.

Het programma zet de blauwe LED aan om aan te geven dat het klaar is om een nieuwe kaart te lezen. Wanneer de kaart wordt gelezen, beslist het of het een geldige kaart is of niet, door de ingelezen kaart te vergelijken met een lijst met geldige kaarten. Als de gebruiker geldig is, schakelt de arduino de blauwe LED uit en schakelt de groene LED 5 seconden in. Het zet ook een andere uitgang hoog aan gedurende 5 seconden. Deze uitgang is verbonden met de TIP31A-transistor en stelt de kleine arduino in staat een veel groter 12v 300mA-deurslot te bedienen zonder te worden beschadigd. Na 5 seconden wordt het deurslot opnieuw vergrendeld en wordt de LED weer blauw om te wachten tot een andere kaart is gelezen. Als de kaart ongeldig is, verandert de LED een paar seconden in ROOD en weer terug in blauw om op een andere kaart te wachten.

Het is belangrijk dat het deurslot nog steeds werkt, zelfs als de Arduino 's nachts stroom verliest of wordt gereset. Daarom worden alle geldige kaart-ID's opgeslagen in het EEPROM-geheugen. De ATMega168 heeft 512 bytes EEPROM-geheugen. Elke RFID-kaart heeft een 5 Hex Byte-serienummer en een 1 Hex Byte Check-som die we kunnen gebruiken om te verifiëren dat er geen fouten waren in de overdracht tussen de ID-20 en de Arduino.

Geldige kaarten worden in de EEPROM opgeslagen door de eerste byte als teller te gebruiken. Als er bijvoorbeeld 3 geldige kaarten zijn opgeslagen, is de eerste byte in de EEPROM 3. EEPROM.read(0); = 3. Dit wetende, en het feit dat elke ID 5 bytes lang is, weten we dat 1-5 kaart één is, 6-10 kaart 2 en 11-15 kaart 3. We kunnen een lus maken die door de EEPROM kijkt 5 bytes per keer en probeert de kaart te vinden die door de lezer is ingelezen.

Maar hoe kunnen we nieuwe kaarten aan de EEPROM toevoegen nadat het circuit is geïnstalleerd?? Ik heb een van de RFID-kaarten die ik heb ingelezen en hard gecodeerd als de Master RFID-kaart. Dus zelfs als de hele EEPROM wordt gewist, blijft de masterkaart werken. Telkens wanneer een kaart wordt gelezen, controleert het eerst of het de Master-kaart is, zo niet, dan gaat het verder om te zien of het een geldige kaart is of niet. Als de kaart de masterkaart is, laten we de Arduino in een "programmeermodus" gaan waar hij RGB knippert en wacht tot een andere geldige tag wordt gelezen. De volgende tag die wordt gelezen, wordt toegevoegd aan de volgende vrije plek in de EEPROM en de teller wordt met 1 verhoogd als de kaart nog niet in het EEPROM-geheugen bestaat. De lezer keert dan terug naar de normale modus en wacht op het lezen van een nieuwe kaart.

Momenteel heb ik geen manier geprogrammeerd om een kaart te verwijderen, aangezien de redenen voor het verwijderen van een kaart hoogstwaarschijnlijk zijn dat deze verloren of gestolen is. Aangezien dit hoogstwaarschijnlijk met 1-10 mensen zou worden gebruikt, zou het gemakkelijkst zijn om een Master Erase-kaart hard te programmeren die alle kaarten uit de EEPROM zal wissen en ze vervolgens allemaal opnieuw toe te voegen, wat slechts een paar seconden duurt. Ik heb code toegevoegd om de EEPROM te wissen, maar ik heb deze functie nog niet geïmplementeerd..

De code is bijgevoegd in een tekstbestand samen met een kopie van de onderdelenlijst.

Stap 5: Uitvouwen

Dit zijn slechts enkele van de coole dingen die u met RFID kunt doen. Je zou dit nog veel verder kunnen uitbreiden met een LCD-uitgang, logging van wie binnenkomt en wanneer, netwerk/twitter-verbinding etc. Ik ben van plan om een afgewerkte PCB-versie van dit circuit te maken. Ik heb nog nooit een PCB gemaakt, dus ik ben nog steeds bezig met het ontwerp en de lay-out van de onderdelen. Zodra ik ze compleet heb zal ik ze ook posten. Ik moedig iedereen aan om de code die ik heb geschreven te gebruiken en aan te passen om nog meer coole dingen te doen!

Finalist in de Arduino-wedstrijd

Aanbevolen: