- วัสดุที่ใช้
- โมดูลเครื่องอ่าน RFID EM18
- ค้นหาแท็ก RFID รหัสเฉพาะ 12 หลักโดยใช้ Arduino
- แผนภูมิวงจรรวม
- โมดูลเซ็นเซอร์ลายนิ้วมือ
- การเขียนโปรแกรมสำหรับ RFID Keyless Ignition
ปัจจุบันรถส่วนใหญ่มาพร้อมกับระบบจุดระเบิดแบบไม่ใช้กุญแจและปุ่มกดซึ่งคุณจะต้องพกกุญแจไว้ในกระเป๋าของคุณเท่านั้นและเพียงแค่วางนิ้วของคุณบนเซ็นเซอร์ capacitive ที่มือจับประตูเพื่อเปิดประตูรถ ในโครงการนี้เรากำลังเพิ่มคุณสมบัติด้านความปลอดภัยอีกสองสามอย่างให้กับระบบนี้โดยใช้เซ็นเซอร์ RFID และลายนิ้วมือ เซ็นเซอร์ RFID จะตรวจสอบใบอนุญาตของผู้ใช้และเซ็นเซอร์ลายนิ้วมือจะอนุญาตเฉพาะผู้ที่ได้รับอนุญาตในรถเท่านั้น
สำหรับเรื่องนี้ลายนิ้วมือตามระบบการจุดระเบิดรถยนต์ที่เรากำลังใช้Arduino กับเซ็นเซอร์ R305 ลายนิ้วมือและเครื่องอ่าน
วัสดุที่ใช้
- Arduino นาโน
- R305 เซ็นเซอร์ลายนิ้วมือ
- เครื่องอ่าน RFID EM18
- 16 * 2 LCD ตัวอักษรและตัวเลข
- มอเตอร์กระแสตรง
- L293D IC ไดรเวอร์มอเตอร์
- Veroboard หรือ Breadboard (แล้วแต่ว่าจะมี)
- การเชื่อมต่อสายไฟ
- แบตเตอรี่ 12V DC
โมดูลเครื่องอ่าน RFID EM18
RFID ย่อมาจาก Radio frequency identification หมายถึงเทคโนโลยีที่ข้อมูลดิจิทัลถูกเข้ารหัสในแท็ก RFID และสามารถถอดรหัสได้โดยเครื่องอ่าน RFID โดยใช้คลื่นวิทยุ RFID คล้ายกับบาร์โค้ดซึ่งข้อมูลจากแท็กจะถูกถอดรหัสโดยอุปกรณ์ เทคโนโลยี RFID ถูกนำมาใช้ในแอพพลิเคชั่นต่างๆเช่นระบบรักษาความปลอดภัย, ระบบการเข้าร่วมของพนักงาน, ล็อคประตู RFID, เครื่องลงคะแนน RFID, ระบบเก็บค่าผ่านทางเป็นต้น
EM18 Readerเป็นโมดูลที่สามารถอ่านข้อมูล ID ที่เก็บไว้ในแท็ก RFID แท็ก RFID จะจัดเก็บหมายเลขเฉพาะ 12 หลักซึ่งสามารถถอดรหัสได้โดยโมดูลตัวอ่าน EM18 เมื่อแท็กอยู่ในช่วงที่มีเครื่องอ่าน โมดูลนี้ทำงานที่ความถี่ 125 kHz ซึ่งมีเสาอากาศในตัวและทำงานโดยใช้แหล่งจ่ายไฟ DC 5 โวลต์
ให้เอาต์พุตข้อมูลอนุกรมและมีช่วง 8-12 ซม. พารามิเตอร์การสื่อสารแบบอนุกรมคือบิตข้อมูล 8 บิตบิตหยุด 1 บิตและอัตราบอด 9600
คุณสมบัติ EM18:
- แรงดันไฟฟ้าที่ใช้งานได้: + 4.5V ถึง + 5.5V DC
- การบริโภคปัจจุบัน: 50mA
- ความถี่ในการทำงาน: 125KHZ
- อุณหภูมิในการทำงาน: 0-80 องศาเซลเซียส
- อัตรารับส่งข้อมูลการสื่อสาร: 9600
- ระยะอ่านหนังสือ: 8-12 ซม
- เสาอากาศ: Inbuilt
EM18 พินเอาต์:
คำอธิบายพิน:
VCC: อินพุตแรงดันไฟฟ้า 4.5 - 5V DC
GND: พินกราวด์
Buzzer: Buzzer หรือ LED pin
TX: ขาส่งข้อมูลอนุกรมของ EM18 สำหรับ RS232 (เอาต์พุต)
SEL: ต้องสูงสำหรับการใช้ RS232 (ต่ำถ้าใช้ WEIGAND)
ข้อมูล 0: ข้อมูล WEIGAND 0
ข้อมูล 1: ข้อมูล WEIGAND 1
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ RFID และแท็กโปรดตรวจสอบโครงการที่ใช้ RFID ก่อนหน้านี้ของเรา
ค้นหาแท็ก RFID รหัสเฉพาะ 12 หลักโดยใช้ Arduino
ก่อนที่จะเขียนโปรแกรมระบบจุดระเบิดรถยนต์ ArduinoสำหรับArduinoก่อนอื่นเราต้องหารหัสเฉพาะแท็ก RFID 12 หลัก ดังที่เราได้กล่าวไปก่อนหน้านี้แท็ก RFID มีรหัสเฉพาะ 12 หลักและสามารถถอดรหัสได้โดยใช้เครื่องอ่าน RFID เมื่อเราปัดแท็ก RFID ใกล้กับเครื่องอ่านเครื่องอ่านจะให้รหัสเฉพาะผ่านทางพอร์ตอนุกรมของเอาต์พุต ขั้นแรกให้เชื่อมต่อ Arduino กับเครื่องอ่าน RFID ตามแผนภาพวงจรจากนั้นอัปโหลดรหัสที่กำหนดด้านล่างไปยัง Arduino
int นับ = 0; ถ่าน card_no; การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); } void loop () {if (Serial.available ()) {count = 0; ในขณะที่ (Serial.available () && นับ <12) {card_no = Serial.read (); นับ ++; ล่าช้า (5); } Serial.print (card_no); }}
หลังจากอัปโหลดรหัสสำเร็จแล้วให้เปิดซีเรียลมอนิเตอร์และตั้งค่าอัตราการส่งข้อมูลเป็น 9600 จากนั้นรูดการ์ดใกล้กับเครื่องอ่าน จากนั้นรหัส 12 หลักจะเริ่มแสดงบนจอภาพอนุกรม ทำขั้นตอนนี้สำหรับแท็ก RFID ที่ใช้แล้วทั้งหมดและจดบันทึกไว้เพื่อใช้อ้างอิงในอนาคต
แผนภูมิวงจรรวม
แผนภาพวงจรสำหรับระบบจุดระเบิดตามลายนิ้วมือแสดงไว้ด้านล่าง:
ในกรณีของฉันฉันได้บัดกรีวงจรทั้งหมดบนบอร์ด perf ดังที่แสดงด้านล่าง:
โมดูลเซ็นเซอร์ลายนิ้วมือ
Finger Print Sensor Module หรือ Finger Print Scanner เป็นโมดูลที่จับภาพการพิมพ์ของนิ้วมือจากนั้นแปลงเป็นเทมเพลตที่เทียบเท่าและบันทึกลงในหน่วยความจำบน ID (ตำแหน่ง) ที่เลือกโดย Arduino ที่นี่กระบวนการทั้งหมดได้รับคำสั่งจาก Arduino เช่นการถ่ายภาพลายนิ้วมือแปลงเป็นเทมเพลตและจัดเก็บตำแหน่งเป็นต้น
ก่อนหน้านี้เราใช้เซ็นเซอร์ R305 เดียวกันเพื่อสร้างเครื่องลงคะแนนระบบการเข้าร่วมระบบรักษาความปลอดภัย ฯลฯ คุณสามารถตรวจสอบโครงการที่ใช้การพิมพ์ลายนิ้วมือทั้งหมดได้ที่นี่
การลงทะเบียนลายนิ้วมือกับเซนเซอร์:
ก่อนที่จะดำเนินการกับโปรแกรมเราต้องติดตั้งไลบรารีที่จำเป็นสำหรับเซ็นเซอร์ลายนิ้วมือ ที่นี่เราได้ใช้“ Adafruit_Fingerprint.h ” สำหรับการใช้เซ็นเซอร์ลายนิ้วมือ R305 ก่อนอื่นให้ดาวน์โหลดไลบรารีโดยใช้ลิงค์ด้านล่าง:
- ไลบรารีเซ็นเซอร์ลายนิ้วมือ Adafruit
หลังจากดาวน์โหลดสำเร็จใน Arduino IDE ไปที่ ไฟล์ > เครื่องมือ> รวมไลบรารี> เพิ่มไลบรารี. zip จากนั้นเลือกตำแหน่งไฟล์ zip เพื่อติดตั้งไลบรารี
หลังจากติดตั้งไลบรารีสำเร็จแล้วให้ทำตามขั้นตอนด้านล่างเพื่อลงทะเบียนลายนิ้วมือใหม่ในหน่วยความจำเซ็นเซอร์
1.ใน Arduino IDE ไปที่ไฟล์ > ตัวอย่าง > ไลบรารีเซ็นเซอร์ลายนิ้วมือAdafruit > ลงทะเบียน
2.อัปโหลดรหัสไปยัง Arduino และเปิด Serial monitor ที่อัตราการส่งข้อมูล 9600
สำคัญ: เปลี่ยนพินอนุกรมของซอฟต์แวร์ในโปรแกรมเป็น SoftwareSerial mySerial (12, 11)
3.คุณควรป้อนรหัสสำหรับลายนิ้วมือที่คุณต้องการจัดเก็บลายนิ้วมือ เนื่องจากนี่เป็นลายนิ้วมือแรกของฉันฉันจึงพิมพ์ 1 ที่มุมบนซ้ายจากนั้นคลิกปุ่มส่ง
4.จากนั้นไฟบนเซ็นเซอร์ลายนิ้วมือจะกะพริบซึ่งแสดงว่าคุณควรวางนิ้วของคุณบนเซ็นเซอร์และหลังจากนั้นทำตามขั้นตอนที่แสดงบนจอภาพอนุกรมจนกว่าจะรับทราบว่าคุณลงทะเบียนสำเร็จ
การเขียนโปรแกรมสำหรับ RFID Keyless Ignition
รหัสที่สมบูรณ์สำหรับระบบจุดระเบิดไบโอเมตริกซ์นี้มีให้ในตอนท้ายของบทช่วยสอน เรากำลังอธิบายส่วนสำคัญบางส่วนของโค้ดที่นี่
สิ่งแรกคือการรวมไลบรารีที่จำเป็นทั้งหมด ในกรณีของฉันฉันได้รวม“ Adafruit_Fingerprint.h ” สำหรับการใช้เซ็นเซอร์ลายนิ้วมือ R305 จากนั้นกำหนดค่าพอร์ตอนุกรมที่จะเชื่อมต่อเซ็นเซอร์ลายนิ้วมือ ในกรณีของฉันฉันได้ประกาศ 12 เป็น RX Pin และ 11 เป็นพิน TX
# รวม # รวม
ในขั้นตอนต่อไปให้ประกาศตัวแปรทั้งหมดซึ่งจะใช้ตลอดทั้งรหัส จากนั้นกำหนดพินเชื่อมต่อ LCD กับ Arduino ตามด้วยการประกาศออบเจ็กต์ของคลาส LiquidCrystal
อินพุตถ่าน int นับ = 0; int a = 0; const int rs = 6, th = 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); }
จากนั้นอาร์เรย์ที่ได้รับจะถูกเปรียบเทียบกับรหัสแท็กที่เก็บไว้ หากรหัสตรงกันใบอนุญาตจะถือว่าถูกต้องซึ่งอนุญาตให้ผู้ใช้ใส่ลายนิ้วมือที่ถูกต้อง มิฉะนั้นจะแสดงใบอนุญาตที่ไม่ถูกต้อง
ถ้า ((strncmp (อินพุต "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("ใบอนุญาตถูกต้อง"); lcd.setCursor (0, 1); lcd.print ("ยินดีต้อนรับ"); ล่าช้า (1,000); ก = 1; ลายนิ้วมือ (); }
ในขั้นตอนต่อไปฟังก์ชัน getFingerprintID จะถูกเขียนขึ้นซึ่งจะส่งคืน ID ลายนิ้วมือที่ถูกต้องสำหรับลายนิ้วมือที่ลงทะเบียนแล้ว
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; }
ฟังก์ชั่นภายใน ลายนิ้วมือ () ,ซึ่งเรียกว่าหลังจากที่การแข่งขัน RFID ที่ประสบความสำเร็จ getFingerprintID ฟังก์ชั่นที่เรียกว่าจะได้รับรหัสลายนิ้วมือที่ถูกต้อง จากนั้นจะเปรียบเทียบโดยใช้ ลูป if-else เพื่อรับข้อมูลเกี่ยวกับข้อมูลบุคคลที่ได้รับการพิสูจน์ตัวตนและหากข้อมูลตรงกันรถจะติดไฟมิฉะนั้นจะแจ้งให้พิมพ์ลายนิ้วมือผิด
int FingerprintID = getFingerprintID (); ล่าช้า (50); ถ้า (รหัสลายนิ้วมือ == 1) { lcd.setCursor (0, 0); lcd.print ("ได้รับสิทธิ์การเข้าถึง"); lcd.setCursor (0, 1); lcd.print ("เริ่มต้นรถ"); digitalWrite (9, สูง); digitalWrite (10, ต่ำ); ในขณะที่ (1); }
นี่คือวิธีการทำงานของระบบจุดระเบิดรถ RFIDซึ่งเพิ่มความปลอดภัยสองชั้นให้กับรถของคุณ
รหัสที่สมบูรณ์และวิดีโอสาธิตมีอยู่ด้านล่าง