- Използвани материали
- EM18 RFID модул за четене
- Разберете уникалния 12-цифрен код на RFID етикет, използвайки Arduino
- Електрическа схема
- Модул на сензора за пръстови отпечатъци
- Програмиране за RFID запалване без ключ
В днешно време по-голямата част от автомобила се предлага с безключово влизане и система за запалване с бутон, при която трябва само да носите ключа в джоба си и просто трябва да поставите пръста си върху капацитивния сензор на дръжката на вратата, за да отворите вратата на автомобила. Тук в този проект ние добавяме още няколко функции за сигурност към тази система с помощта на RFID и сензор за пръстови отпечатъци. RFID сензорът ще потвърди лиценза на потребителя, а сензорът за пръстови отпечатъци ще разреши само на упълномощено лице в превозното средство.
За тази система за запалване на автомобили, базирана на пръстови отпечатъци, използваме Arduino със сензор за пръстови отпечатъци R305 и RF18 четец EM18.
Използвани материали
- Arduino Nano
- R305 Сензор за пръстови отпечатъци
- EM18 RFID четец
- 16 * 2 буквено-цифров LCD
- DC двигатели
- L293D IC драйвер на двигателя
- Veroboard или Breadboard (което е налично)
- Свързващи проводници
- 12V DC батерия
EM18 RFID модул за четене
RFID означава Радиочестотна идентификация. Той се отнася до технология, при която цифровите данни са кодирани в RFID тагове и те могат да бъдат декодирани от RFID четец с помощта на радиовълни. RFID е подобен на баркодирането, при което данните от етикет се декодират от устройство. RFID технологията се използва в различни приложения като система за сигурност, система за присъствие на служители, заключване на врати RFID, гласуваща машина, базирана на RFID, система за събиране на такси и др
EM18 Reader е модул, който може да чете идентификационната информация, съхранявана в RFID таговете. RFID етикетите съхраняват 12-цифрен уникален номер, който може да бъде декодиран от модул за четене EM18, когато етикетът е в обхвата на четеца. Този модул работи с честота 125 kHz, която има вградена антена и се управлява с помощта на 5 волта DC захранване.
Той дава сериен изход на данни и има обхват от 8-12 cm. Параметрите на серийната комуникация са 8 бита за данни, 1 стоп бит и 9600 скорости на предаване.
EM18 Характеристики:
- Работно напрежение: + 4.5V до + 5.5V DC
- Консумация на ток: 50mA
- Работна честота: 125KHZ
- Работна температура: 0-80 градуса С
- Скорост на комуникация в бод: 9600
- Разстояние на четене: 8-12 cm
- Антена: Вградена
EM18 Pinout:
Описание на щифта:
VCC: 4.5 - 5V DC входно напрежение
GND: Заземен щифт
Зумер: зумер или LED щифт
TX: Сериен предавател за данни на EM18 за RS232 (изход)
SEL: Това трябва да е ВИСОКО за използване на RS232 (НИСКО, ако се използва WEIGAND)
Данни 0: WEIGAND данни 0
Данни 1: данни от WEIGAND 1
За да научите повече за RFID и таговете, проверете нашите предишни проекти, базирани на RFID.
Разберете уникалния 12-цифрен код на RFID етикет, използвайки Arduino
Преди да програмираме системата за запалване на автомобили Arduino за Arduino, първо трябва да открием уникалния код на 12-цифрения RFID етикет. Както обсъждахме по-рано, RFID маркерите съдържат 12-цифрен уникален код и той може да бъде декодиран с помощта на RFID четец. Когато плъзнем RFID маркера близо до Reader, Reader ще даде уникалните кодове чрез изходния сериен порт. Първо свържете Arduino към RFID четеца според схемата на веригата и след това качете по-долу зададения код в Arduino.
int брой = 0; char карта_но; void setup () {Serial.begin (9600); } void loop () {if (Serial.available ()) {count = 0; докато (Serial.available () && count <12) {card_no = Serial.read (); преброяване ++; забавяне (5); } Serial.print (card_no); }}
След като качете успешно кода, отворете серийния монитор и задайте скоростта на предаване на 9600. След това плъзнете картата близо до четеца. Тогава 12-цифреният код ще започне да се показва на серийния монитор. Направете този процес за всички използвани RFID тагове и го запишете за бъдещи справки.
Електрическа схема
Електрическа схема за тази система за запалване въз основа на пръстови отпечатъци е дадена по-долу:
В моя случай съм запоил цялата схема на перфектната платка, както е показано по-долу:
Модул на сензора за пръстови отпечатъци
Модул за сензор за пръстов отпечатък или скенер за пръстов отпечатък е модул, който улавя изображението на отпечатъка на пръста и след това го преобразува в еквивалентен шаблон и ги записва в паметта си върху избрания идентификатор (местоположение) от Arduino. Тук целият процес се командва от Arduino като заснемане на изображение на пръстов отпечатък, преобразуване в шаблони, съхраняване на местоположение и т.н.
Преди използвахме същия сензор R305 за изграждане на машина за гласуване, система за присъствие, система за сигурност и др. Можете да проверите всички проекти, базирани на пръстови отпечатъци тук.
Записване на пръстови отпечатъци в сензор:
Преди да пристъпим към програмата, трябва да инсталираме необходимите библиотеки за сензора за пръстови отпечатъци. Тук използвахме “ Adafruit_Fingerprint.h ” за използване на сензора за пръстови отпечатъци R305. Така че първо изтеглете библиотеката, като използвате връзката, дадена по-долу:
- Библиотека на сензора за пръстови отпечатъци Adafruit
След успешно изтегляне, в IDE на Arduino отидете на Файл > Инструменти> Включване на библиотека> Добавяне на.zip библиотека и след това изберете местоположението на zip файла, за да инсталирате библиотеката.
След успешна инсталация на библиотека, следвайте стъпките, дадени по-долу, за да запишете нов пръстов отпечатък в паметта на сензора.
1. В IDE на Arduino отидете на File > Examples > Adafruit Fingerprint Sensor Library > Enroll.
2. Качете кода в Arduino и отворете серийния монитор със скорост на предаване 9600.
Важно: Сменете серийния щифт на софтуера в програмата на SoftwareSerial mySerial (12, 11).
3. Трябва да въведете идентификационен номер за пръстовия отпечатък, в който искате да съхраните пръстовия си отпечатък. Тъй като това е първият ми пръстов отпечатък, написах 1 в горния ляв ъгъл и след това щракнах върху бутона Изпрати.
4. Тогава индикаторът на сензора за пръстови отпечатъци ще мига, което показва, че трябва да поставите пръста си върху сензора и след това следвайте стъпките, показани на серийния монитор, докато той ви потвърди за успешно записване.
Програмиране за RFID запалване без ключ
Пълният код за тази система за биометрично запалване е даден в края на урока. Тук обясняваме няколко важни части от кода.
Първото нещо е да включите всички необходими библиотеки. Тук в моя случай съм включил “ Adafruit_Fingerprint.h ” за използване на сензор за пръстови отпечатъци R305. След това конфигурирайте серийния порт, в който ще бъде свързан сензорът за пръстови отпечатъци. В моя случай съм декларирал 12 като RX Pin и 11 като TX pin.
#include #include
В следващата стъпка декларирайте всички променливи, които ще бъдат използвани в целия код. След това дефинирайте щифтовете за свързване на LCD с Arduino, последвано от декларирането на обект от клас LiquidCrystal .
въвеждане на символи; int брой = 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);
След това вътре в цикъла () се записва код, за да се получат уникалните 12-цифрени кодове на RFID таговете и те се съхраняват в масив. Тук елементите на масива ще бъдат съчетани със съхранените уникални кодове в паметта, за да се получат подробностите на удостовереното лице.
брой = 0; докато (Serial.available () && count <12) { input = Serial.read (); преброяване ++; забавяне (5); }
След това полученият масив се сравнява със запазените кодове на маркери. Ако кодът съответства, тогава лицензът се счита за валиден, което позволява на потребителя да постави валиден пръстов отпечатък. В противен случай ще покаже невалиден лиценз.
if ((strncmp (input, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("Валиден лиценз"); lcd.setCursor (0, 1); lcd.print ("Добре дошли"); забавяне (1000); a = 1; пръстов отпечатък (); }
В следващата стъпка се записва функция getFingerprintID, която ще върне валиден идентификатор на пръстов отпечатък за вече записан пръстов отпечатък.
int getFingerprintID () { uint8_t p = finger.getImage (); ако (p! = FINGERPRINT_OK) връща -1; p = finger.image2Tz (); ако (p! = FINGERPRINT_OK) връща -1; p = finger.fingerFastSearch (); ако (p! = FINGERPRINT_OK) връща -1; връщане finger.fingerID; }
Вътрешната функция fingerprint () , която се извиква след успешно RFID съвпадение, getFingerprintID функция се извиква, за да получи валиден ID на пръстов отпечатък. След това се сравнява с помощта на цикъла if-else, за да се получи информацията относно данните на удостовереното лице и ако данните са съпоставени, превозното средство се запалва, в противен случай ще поиска грешен пръстов отпечатък
int fingerprintID = getFingerprintID (); забавяне (50); if (fingerprintID == 1) { lcd.setCursor (0, 0); lcd.print ("Достъпът е предоставен"); lcd.setCursor (0, 1); lcd.print ("Превозното средство е стартирано"); digitalWrite (9, HIGH); digitalWrite (10, LOW); докато (1); }
Ето как работи тази RFID система за запалване на автомобили, която добавя два слоя сигурност към вашата кола.
Пълният код и демонстрационното видео са дадени по-долу.