- Gebruikte materialen
- EM18 RFID-lezermodule
- Ontdek de unieke 12-cijferige code van de RFID-tag met Arduino
- Schakelschema
- Vingerafdruksensormodule
- Programmering voor RFID Keyless Ignition
Tegenwoordig wordt het merendeel van de auto geleverd met keyless entry en een drukknopontstekingssysteem, waarbij je alleen de sleutel in je zak hoeft te dragen en je vinger op de capacitieve sensor op de deurklink hoeft te leggen om de autodeur te openen. Hier in dit project voegen we nog een paar beveiligingsfuncties toe aan dit systeem door gebruik te maken van RFID- en vingerafdruksensor. RFID-sensor valideert de licentie van de gebruiker en de vingerafdruksensor laat alleen een geautoriseerde persoon toe in het voertuig.
Voor dit op vingerafdruk gebaseerde auto-ontstekingssysteem gebruiken we Arduino met een R305-vingerafdruksensor en een EM18 RFID-lezer.
Gebruikte materialen
- Arduino Nano
- R305 Vingerafdruksensor
- EM18 RFID-lezer
- 16 * 2 Alfanumeriek LCD
- DC-motoren
- L293D Motorbesturing IC
- Veroboard of Breadboard (afhankelijk van wat beschikbaar is)
- Draden aansluiten
- 12V DC-batterij
EM18 RFID-lezermodule
RFID staat voor Radiofrequentie-identificatie. Het verwijst naar een technologie waarbij digitale gegevens worden gecodeerd in RFID-tags en ze kunnen worden gedecodeerd door een RFID-lezer met behulp van radiogolven. RFID is vergelijkbaar met streepjescodes waarbij gegevens van een tag worden gedecodeerd door een apparaat. RFID-technologie wordt gebruikt in verschillende toepassingen, zoals beveiligingssysteem, aanwezigheidssysteem voor medewerkers, RFID-deurslot, op RFID gebaseerde stemmachine, tolheffingssysteem, enz.
EM18 Reader is een module die de ID-informatie die is opgeslagen in de RFID-tags kan lezen. De RFID-tags slaan een 12-cijferig uniek nummer op dat kan worden gedecodeerd door een EM18-leesmodule, wanneer de tag binnen bereik komt met de Reader. Deze module werkt op een frequentie van 125 kHz, heeft een ingebouwde antenne, en werkt op een 5 volt gelijkstroomvoeding.
Het geeft een seriële gegevensuitvoer en heeft een bereik van 8-12 cm. De seriële communicatieparameters zijn 8 databits, 1 stopbit en 9600 baudrate.
EM18 kenmerken:
- Bedrijfsspanning: + 4,5 V tot + 5,5 V DC
- Stroomverbruik: 50mA
- Frequentie: 125 KHZ
- Bedrijfstemperatuur: 0-80 graden C
- Communicatie baudrate: 9600
- Leesafstand: 8-12 cm
- Antenne: ingebouwd
EM18-pinout:
Pin beschrijving:
VCC: 4,5 - 5V DC-spanningsingang
GND: aardpen
Zoemer: Zoemer of LED-pin
TX: seriële data Transmitter pin van EM18 voor RS232 (output)
SEL: Dit moet HOOG zijn om RS232 te gebruiken (LAAG bij gebruik van WEIGAND)
Gegevens 0: WEIGAND-gegevens 0
Gegevens 1: WEIGAND-gegevens 1
Bekijk onze eerdere RFID-gebaseerde projecten voor meer informatie over RFID en tags.
Ontdek de unieke 12-cijferige code van de RFID-tag met Arduino
Voordat we het Arduino voor Arduino-ontstekingssysteem voor auto's programmeren, moeten we eerst de unieke code van de 12-cijferige RFID-tag achterhalen. Zoals we eerder hebben besproken, bevatten RFID-tags een 12-cijferige unieke code en deze kan worden gedecodeerd met behulp van een RFID-lezer. Wanneer we de RFID-tag in de buurt van de Reader vegen, geeft de Reader de unieke codes via de seriële uitgangspoort. Sluit eerst de Arduino aan op de RFID-lezer volgens het schakelschema en upload vervolgens de onderstaande code naar Arduino.
int count = 0; char card_no; void setup () {Serial.begin (9600); } void loop () {if (Serial.available ()) {count = 0; while (Serial.available () && count <12) {card_no = Serial.read (); tel ++; vertraging (5); } Serial.print (card_no); }}
Na het succesvol uploaden van de code, opent u de seriële monitor en stelt u de baudrate in op 9600. Veeg vervolgens met de kaart naar de Reader. Vervolgens wordt de 12-cijferige code weergegeven op de seriële monitor. Voer dit proces uit voor alle gebruikte RFID-tags en noteer deze voor toekomstige referenties.
Schakelschema
Het schakelschema voor dit op vingerafdruk gebaseerde ontstekingssysteem wordt hieronder gegeven:
In mijn geval heb ik de volledige schakeling op de printplaat gesoldeerd zoals hieronder getoond:
Vingerafdruksensormodule
Vingerafdruksensormodule of vingerafdrukscanner is een module die de afbeelding van een vingerafdruk vastlegt en deze vervolgens omzet in de equivalente sjabloon en deze opslaat in het geheugen op de geselecteerde ID (locatie) door Arduino. Hier wordt het hele proces aangestuurd door Arduino, zoals het maken van een afbeelding van een vingerafdruk, deze omzetten in sjablonen en een locatie opslaan, enz.
We gebruikten eerder dezelfde R305-sensor om een stemmachine, aanwezigheidssysteem, beveiligingssysteem, enz. Te bouwen. Je kunt hier alle op vingerafdrukken gebaseerde projecten bekijken.
Vingerafdrukken in de sensor registreren:
Voordat we verder gaan met het programma, moeten we de vereiste bibliotheken voor de vingerafdruksensor installeren. Hier hebben we " Adafruit_Fingerprint.h " gebruikt voor het gebruik van de R305-vingerafdruksensor. Download dus allereerst de bibliotheek via de onderstaande link:
- Adafruit vingerafdruksensor bibliotheek
Na een succesvolle download, ga in de Arduino IDE naar Bestand > Tools> Bibliotheek opnemen>.zip-bibliotheek toevoegen en selecteer vervolgens de locatie van het zip-bestand om de bibliotheek te installeren.
Volg na een succesvolle installatie van de bibliotheek de onderstaande stappen om een nieuwe vingerafdruk in het sensorgeheugen te registreren.
1. In de Arduino IDE, gaat u naar Bestand > Voorbeelden > Adafruit Fingerprint Sensor Bibliotheek > Inschrijven.
2. Upload de code naar de Arduino en open de seriële monitor met een baudrate van 9600.
Belangrijk: Verander de Software seriële pin in het programma in SoftwareSerial mySerial (12, 11).
3. U moet een ID invoeren voor de vingerafdruk waarin u uw vingerafdruk wilt opslaan. Omdat dit mijn eerste vingerafdruk is, typte ik 1 in de linkerbovenhoek en klik vervolgens op de knop Verzenden.
4. Vervolgens gaat het lampje op de vingerafdruksensor knipperen, wat aangeeft dat u uw vinger op de sensor moet plaatsen en daarna de stappen moet volgen die op de seriële monitor worden weergegeven totdat het aangeeft dat u succesvol bent geregistreerd.
Programmering voor RFID Keyless Ignition
De volledige code voor dit biometrische ontstekingssysteem wordt aan het einde van de tutorial gegeven. Hier leggen we een paar belangrijke delen van de code uit.
Het eerste is om alle vereiste bibliotheken op te nemen. Hier in mijn geval heb ik " Adafruit_Fingerprint.h " toegevoegd voor het gebruik van de R305-vingerafdruksensor. Configureer vervolgens de seriële poort waarop de vingerafdruksensor wordt aangesloten. In mijn geval heb ik 12 aangegeven als RX-pin en 11 als TX-pin.
#include #include
Declareer in de volgende stap alle variabelen, die in de hele code zullen worden gebruikt. Definieer vervolgens de LCD-verbindingspinnen met Arduino, gevolgd door de declaratie van een object van de klasse LiquidCrystal .
char input; int count = 0; int a = 0; const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Vervolgens wordt binnen de lus () code geschreven om de unieke 12-cijferige codes van de RFID-tags te krijgen en deze worden opgeslagen in een array. Hier worden de elementen van de array vergeleken met de opgeslagen unieke codes in het geheugen om de geauthenticeerde persoongegevens te krijgen.
count = 0; while (Serial.available () && count <12) { input = Serial.read (); tel ++; vertraging (5); }
Vervolgens wordt de ontvangen reeks vergeleken met de opgeslagen labelcodes. Als de code overeenkomt, wordt de licentie als geldig beschouwd, waardoor de gebruiker een geldige vingerafdruk kan plaatsen. Anders wordt er een ongeldige licentie weergegeven.
if ((strncmp (input, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("Licentie geldig"); lcd.setCursor (0, 1); lcd.print ("Welkom"); vertraging (1000); a = 1; vingerafdruk(); }
In de volgende stap wordt een functie getFingerprintID geschreven die een geldige vingerafdruk-ID retourneert voor een reeds geregistreerde vingerafdruk.
int getFingerprintID () { uint8_t p = finger.getImage (); if (p! = FINGERPRINT_OK) retourneert -1; p = finger.image2Tz (); if (p! = FINGERPRINT_OK) retourneert -1; p = finger.fingerFastSearch (); if (p! = FINGERPRINT_OK) retourneert -1; terugkeer finger.fingerID; }
Binnen de functie fingerprint () , die wordt genoemd na een succesvolle RFID-match, wordt de functie getFingerprintID aangeroepen om een geldige vingerafdruk-ID te krijgen. Vervolgens wordt het vergeleken met behulp van de if-else-lus om de informatie over geauthenticeerde persoonsgegevens te krijgen en als de gegevens overeenkomen, wordt het voertuig ontstoken, anders zal het om de verkeerde vingerafdruk vragen.
int fingerprintID = getFingerprintID (); vertraging (50); if (fingerprintID == 1) { lcd.setCursor (0, 0); lcd.print ("Toegang verleend"); lcd.setCursor (0, 1); lcd.print ("Voertuig gestart"); digitalWrite (9, HIGH); digitalWrite (10, LOW); terwijl (1); }
Dit is dus hoe dit RFID auto-ontstekingssysteem werkt, dat twee beveiligingslagen aan uw auto toevoegt.
Volledige code en demonstratievideo worden hieronder gegeven.