Läsa RFID-taggar med en Arduino (5 / 5 steg)

Steg 5: Sista skiss



Så vid denna punkt, du bör ha en unik identifierare för din RFID-taggen. Vi kommer att infoga t i koden nedan. Jag tänker inte förklara hur koden fungerar. Jag lämnar som en övning för dig.

Okej, minns när vi ansluten ID-12 stift 9 till Arduno RX. Vi kommer att frigöra RX stift och flytta den anslutningen till digitala stift 4. Det är det!

Nu, ta din unika identifierare, skär bort de två sista tecknen så du är kvar med 10 tecken. Jag läste till exempel 2900940E9526 som min identifierare. Så, jag kommer att använda 2900940E95. 26 är det ID kontrollsumma. Oroa dig inte om detta. Sätt in ditt ID i koden nedan där det står [infoga IDENTIFIERARE här]. Du kan också lägga till ditt namn i den [Lägg till ditt namn här].

--------------------------------------------------------------------------------------------------------------------------------
/**
* RFID-Access Control
*
* Del av denna kod inspirerades av Tom Igoe RFID tutorial
* Från ID-12 exempelkod på Arduino Playground
* Och mycket bygger på Jonathan Oxer projektet på:
* http://www.practicalarduino.com/projects/medium/rfid-access-control
*/

Ställ in seriell anslutning till modulen RFID-läsare. För att
hålla de Arduino TX och RX stift gratis för kommunikation med en värd,
skissen använder SoftwareSerial biblioteket för att genomföra följetong
kommunikation på andra stift.
#include

RFID-modulens TX pin måste anslutas till Arduino.

#define rxPin 4
#define txPin 5

Skapa en programvara seriella objekt för anslutning till RFID-modulen
SoftwareSerial rfid = SoftwareSerial (rxPin, txPin);

Ställ in utgångar
#define futureOutput 12
#define ledPin 13

Ange hur länge produktionen bör hållas.
#define unlockSeconds 2

Tag databasen består av två delar. Den första delen är en matris av
tag värden med varje tagg tar upp 5 byte. Andra är en lista över
namn med ett namn för varje tagg (dvs: grupp av 5 byte). Du kan expandera
eller krympa det som du tycker passar. Taggar 2 och 3 är till exempel bara där.
char * allowedTags [] = {
"[Infoga IDENTIFIERARE här]", / / Tag 1
"2900940E95", / / Tag 2
"ABC123DE45", / / Tag 3
};

Namnlista att associera med matchande taggen ID.
char * tagName [] = {
"[Lägg till ditt namn här]", / / Tag 1
"Mark Trussell", / / Tag 2
"Namn 3", / / Tag 3
};

Kontrollera antalet Taggar definieras
int numberOfTags = sizeof(allowedTags)/sizeof(allowedTags[0]);

int incomingByte = 0; Att lagra inkommande seriella data

/**
* Setup
*/
void setup() {
pinMode (ledPin, produktionen);
digitalWrite (ledPin, låg);
pinMode (futureOutput, produktionen);
digitalWrite (futureOutput, låg);

Serial.BEGIN(9600); Seriell port för anslutning till värd
RFID.BEGIN(9600); Seriell port för anslutning till RFID modul

Serial.println ("RFID-läsare initieras");
}

/**
* Loop
*/
void loop() {
byte jag = 0;
byte val = 0;
byte checksum = 0;
byte bytesRead = 0;
byte tempByte = 0;
byte tagBytes [6]. "Unik" taggar är endast 5 byte men vi behöver en extra byte för kontrollsumman
char tagValue [10].

Läsa från RFID-modulen. Eftersom denna anslutning använder SoftwareSerial
Det finns ingen motsvarighet till Serial.available() funktionen, så i detta
Peka på programblock fördriva tiden väntan för ett värde från modulen
om ((val = rfid.read()) == 2) {/ / kolla för huvud
bytesRead = 0;
samtidigt (bytesRead < 12) {/ / Läs 10-siffriga koden + 2 siffrigt kontrollsumma
Val = rfid.read();

Lägg första 10 byte (0 till 9) till raw taggvärde
om (bytesRead < 10)
{
tagValue [bytesRead] = val;
}

Kontrollera om detta är en header eller stoppa byte innan den 10-siffriga läsning är klar
om ((val == 0x0D) || (val == 0x0A) || (val == 0x03) || (val == 0x02)) {
bryta; Sluta läsa
}

ASCII/Hex omvandling:
om ((val > = "0") & & (val < = '9')) {
Val = val - '0';
}
annars om ((val > = "A") & & (val < = "F")) {
Val = 10 + val - 'A',
}

Varje två hex-siffror, lägga till en byte i koden:
om (bytesRead & 1 == 1) {
Skapa utrymme för detta hex-siffror genom att flytta den tidigare siffran 4 bitar till vänster
tagBytes [bytesRead >> 1] = (val | (tempByte << 4));

om (bytesRead >> 1! = 5) {/ / om vi på kontrollsumma byte,
kontrollsumma ^ = tagBytes [bytesRead >> 1]; Beräkna kontrollsumman... (XOR)
};
} annat {
tempByte = val; Lagra den första hex siffran först
};

bytesRead ++; Redo att läsa nästa siffra
}

Skicka resultatet till ansluten via USB-värd
om (bytesRead == 12) {/ / 12 tal läsa är komplett
tagValue [10] = '\0'; Null-avsluta strängen

Serial.Print ("Tag läste:");
för (jag = 0; jag < 5; i ++) {
Lägga till en ledande 0 pad ut värden under 16
om (tagBytes [i] < 16) {
Serial.Print("0");
}
Serial.Print (tagBytes [i], HEX);
}
Serial.println();

Serial.Print ("kontrollsumma:");
Serial.Print (tagBytes [5], HEX);
Serial.println (tagBytes [5] == kontrollsumma? "--gått.": "--fel.");

Visa raw taggvärde
Serial.Print ("värde:");
Serial.println(tagValue);

Söka i taggen databasen för den här särskilda taggen
int tagId = findTag (tagValue);

Bara brand strike plattan om denna tagg hittades i databasen
om (tagId > 0)
{
Serial.Print ("auktoriserade tagg-ID");
Serial.Print(tagId);
Serial.Print (": upplåsning för");
Serial.println (tagName [tagId - 1]); Få namnet för den här taggen från databasen
Unlock(); Brand på strike plattan att öppna låset
} annat {
Serial.println ("Tag inte rätt");
}
Serial.println(); Tom avgränsningslinjen i utdata
}

bytesRead = 0;
}
}

/**
* Eld reläet att aktivera strike plattan för den konfigurerade
* antal sekunder.
*/
void unlock() {
digitalWrite (ledPin, hög);
digitalWrite (futureOutput, hög);
Delay(unlockSeconds * 1000);
digitalWrite (futureOutput, låg);
digitalWrite (ledPin, låg);
}

/**
* Söka efter en specifik tagg i databasen
*/
int findTag (char tagValue [10]) {
för (int thisCard = 0; thisCard < numberOfTags; thisCard ++) {
Kontrollera om taggvärde överensstämmer med denna rad i databasen tag
om (strcmp (tagValue, allowedTags[thisCard]) == 0)
{
Raden i databasen börjar på 0, så Lägg 1 till resultatet så
att kort-ID startar från 1 istället (0 representerar "ingen match")
Return (thisCard + 1);
}
}
Om vi inte hittar etiketten avkastning en tagg-ID 0 Visa fanns ingen match
Return(0);
}
--------------------------------------------------------------------------------------------------------------------------------

Se Steg
Relaterade Ämnen

RFIDuino - med en Arduino & RFID-läsare för att göra ett pussel GeoCache

jag njuta av både Geocaching och elektronik och har gjort ett par elektroniska pussel cachar med en Arduino.Min senaste skapelse (med hjälp av en kollega cacher för koden) är att använda en Arduino och RFID-läsare för att göra ett pussel geocache vi...

Styra en Schlage elektroniska deadbolt med en arduino!

Detta instructable kommer att gå igenom processen för nedmontering och hacka en Schlage elektroniska deadbolt för att styra med en arduino.Steg 1: Köpa låset och packa upp den jag fick min till försäljning för $99 på Lowe's.Ta det ur kartongen och ta...

Spela upp ljudfiler med din arduino

Du kan spela mp3-filer med din arduino!Hur? ->Du behöver bara titta på denna video: http://bit.ly/1LS4IapSteg 1: materialdu behöver bara dessa saker:-mikro-sd-sköld med sd-kortplats-Talarens-Arduino(UNO)-Vissa trådSteg 2: prenumerera!Om du gillar det...

Spela mp3 med din arduino (lätt)

Du kan spela mp3-filer med din arduino!du behöver bara en Ethernet-shield och en micro sd-kort!Steg 1: materialdu behöver bara dessa saker:-mikro-sd-sköld med sd-kortplats-Talarens-arduino (jag använde en uno)-Vissa trådSteg 2: hur?Titta på denna vid...

RGB LED Tutorial (med en Arduino) (RGBL)

Lysdioder är bra. Men med alla projekt man kommer till en punkt där blinkande inte räcker. För dessa fall RGB (röd, grön, blå) är LED svaret.Med en RGB LED du kommer att kunna producera någon färg lyser ditt hjärta önskar.På första använder en RGB LE...

Fixa min garageport med en Arduino UNO

Se min github:https://github.com/glscantlen/instructions/Tree/ma...Den här mappen innehåller instruktioner framkallade från anteckningar under reparation av mitt garage dörröppnare. Jag har ett Geni 1/2HP skruv-enhet garage dörröppnare som misslyckat...

ARD-e: roboten med en Arduino som en hjärna

hur man skapar en öppen källkod Arduino kontrollerade robot för under $100.Förhoppningsvis efter att ha läst detta instructable du kommer att kunna ta det första steget in i robotteknik. ARD-e kostar ca $90 till 130 USD beroende på hur mycket extra e...

Styra EL Wire med en Arduino

i detta instructable jag visar dig hur man styr EL Wire med en Arduino.Vad du behöver:EL Wire och Inverter - jag rekommenderar http://ez-el.com/ez-el-wire/10ft-ez-el-wire-3v-inverter-kit/Arduino eller valfri micro controller som kan styra ett reläSPD...

Enkel Remote Data plottning med Android / Arduino / pfodApp

enkel Remote Data plottning med Android / Arduino / pfodApp Detta Instructable visar hur du rita Arduino sensordata på din Android mobil och fånga den för att senare ladda ner till din dator. Dessa instruktioner är också tillgänglig på www.pfod.com.a...

Styra en kamera med en Arduino och RS232 sköld

Denna handledning visar dig hur du kan styra många olika aspekter av en kameror drift med en Arduino. Dessa operation kan vara pan och tilt kamera, zoom och fokus lins, och RGB egenskaper. Arduinoen kommer att utnyttja en RS232 sköld och skicka hexad...

Spåra din bil med en Arduino-baserad Lojack

Bilstölder är en verklig dra! Öka dina chanser att få tillbaka din bil genom att installera denna enkla Arduino-baserad tracker i bilen.Detta projekt är ganska enkel, och skulle vara ett bra projekt för nya Arduino programmerare letar efter något lit...

Kontrollera en relay board med en Arduino Uno

I detta instructable kommer vi kontrollera en Velleman K6714 relay board med en Arduino. Fina med att använda reläer är som vi kan använda en blygsam liten Arduino för att byta hushållsapparater eller vad du kan ha. Velleman K6714 har funnits i mer ä...

Hyduino - automatiserad Hydroponics med en Arduino

Så, kanske du undrar... Vad är HYDROPONICS?I grund och botten växer hydroponics växter utan användning av traditionella smuts medium med hjälp av ett näringsämne rika vatten-lösning. Dessa medier används för att "plantera" i allt från glasfiber...

Motion Tracker med PIRs, Arduino och en Servo

detta är min motion tracking huvudet med fyra PIRs (passiva infraröda sensorer), en Arduino Uno styrelse och en servo.Det är ett enkelt sätt att ge intryck av att huvudet (birdy) faktiskt följer rörelsen.Det är mycket lätt att bygga men lite tidskräv...

Låg höjd miljöövervakning med en Arduino baserade väder Instrument och Aeropod Remote Sensing plattform

ProjektöversiktStudenter på New Lothrop High School i Michigan har arbetat tillsammans för att bygga en plattform för remote sensing låg höjd som kallas en "Aeropod" och rummen har det med ett "Arduino" baserade väder instrument att sa...

Skicka sensordata (DHT11 & BMP180) till ThingSpeak med en Arduino, använder ENC28J60 Ethercard

Obs: Detta instructable är för gamla ENC26J60 Ethershield och ethercard. Om du har den moderna WIZ5100 baserade Ethernetshield eller en ESP8266 gå besöka min andra instructable som jag nämner nedanOm ett och ett halvt år sedan jag publicerade baserat...

Kontrollera en stegmotor med en Arduino

Denna tutorial ska show dig hur du använder en stegmotor som bärgades från en gammal skrivare med en Arduino.Steg 1: Vad är en Stepper Motor? En stegmotor består av två huvuddelar, en rotor och en stator. Rotorn är del av motorn som faktiskt snurrar...

Göra en bärbara streckkodsläsare med en arduino och en cuecat

runt om vänden av århundradet, det var ett företag vars affärsmodell ingår ger bort gratis streckkodsläsare som emulerar tangentbord. En relativt enkel mod till dessa cuecat skannrar bort krypteringen och gjorde dem lämpliga för skanning av streckkod...

Hur man mäter temperaturen mycket noggrant med en Arduino och en TSYS01 temperatur Sensor styrelse.

Medan de studerar på universitetet var vi ifrågasätts som en del av en kurs arbete på att designa en låda med mycket exakt temperaturkontroll. Om projektet lyckas, skulle flera boxar byggas och används i ett forskningsprojekt som studerar effekten av...