สารบัญ:

Arduino RFID Door Lock: 5 ขั้นตอน (พร้อมรูปภาพ)
Arduino RFID Door Lock: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Arduino RFID Door Lock: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Arduino RFID Door Lock: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: โปรเจค เปิด-ปิด ประตูด้วย RFID (Arduino Based RFID Door Lock) 2024, กรกฎาคม
Anonim
ล็อคประตู Arduino RFID
ล็อคประตู Arduino RFID
ล็อคประตู Arduino RFID
ล็อคประตู Arduino RFID
ล็อคประตู Arduino RFID
ล็อคประตู Arduino RFID
ล็อคประตู Arduino RFID
ล็อคประตู Arduino RFID

***อัปเดตเมื่อ 8/9/2010*** ฉันต้องการสร้างวิธีที่ง่ายและปลอดภัยในการเข้าไปในโรงรถของฉัน RFID เป็นวิธีที่ดีที่สุดในการปลดล็อกประตู แม้ว่ามือของฉันจะเต็ม ฉันก็ยังสามารถปลดล็อกประตูและผลักให้เปิดได้! ฉันสร้างวงจรง่ายๆ ด้วยชิป Arduino พื้นฐาน ATMega 168 และเครื่องอ่าน RFID ID-20 เพื่อควบคุมการล็อคประตูแบบอิเล็กทรอนิกส์ วงจรประกอบด้วย 3 ส่วนแยกจากกัน คือ Reader สำหรับอ่านแท็ก RFID, คอนโทรลเลอร์สำหรับรับข้อมูลจากเครื่องอ่านและควบคุมเอาต์พุตของ RGB LED และล็อคประตูไฟฟ้า ล็อคประตูถูกติดตั้งครั้งแรกที่ประตูและทดสอบด้วยแบตเตอรี่ 9v เพื่อให้แน่ใจว่าการติดตั้งถูกต้อง ในกรณีส่วนใหญ่คุณต้องการให้วงจรเปิดตามปกติบนตัวล็อคประตูหรือ Fail Secure ซึ่งหมายความว่าประตูจะล็อคอยู่เมื่อไม่มีกระแสไหลผ่าน เมื่อผ่าน 12vDC ผ่านแม่เหล็กไฟฟ้าในล็อคประตู แผ่นในล็อคจะปล่อยและปล่อยให้ประตูถูกผลักเปิดได้อย่างอิสระ เครื่องอ่านถูกวางไว้ที่ด้านนอกของประตูและแยกออกจากตัวควบคุมภายในเพื่อไม่ให้ใครสามารถหลบเลี่ยงการรักษาความปลอดภัยได้โดยการเปิดเครื่องอ่านออกและพยายามลัดวงจรเครื่องอ่าน คอนโทรลเลอร์ได้รับข้อมูลอนุกรมจาก Reader และควบคุมไฟ LED RGB และล็อคประตู ในกรณีนี้ ฉันได้วางทั้งสองไว้บนแผงขนมปังแยกต่างหากสำหรับการทดสอบ นี่คือวิดีโอภาพรวมของระบบที่ใช้งานจริง อ่านต่อเพื่อดูวิธีสร้างระบบสำหรับตัวคุณเอง! **อัปเดต** การออกแบบโค้ด แผนผัง และ PCB ทั้งหมดได้รับการทดสอบและปรับปรุงแล้ว พวกเขาทั้งหมดถูกโพสต์ที่นี่เมื่อวันที่ 8/9/2553 วิดีโอที่อัปเดตของระบบสุดท้ายที่ติดตั้งและใช้งานได้

ขั้นตอนที่ 1: อะไหล่ที่จำเป็น

อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น

นี่คือรายการชิ้นส่วนและลิงก์ไปยัง SparkFun.com ที่ฉันซื้อมา นี่คือชุดส่วนประกอบพื้นฐานที่คุณต้องสร้างและ Arduino และวงจรเพื่ออ่านแท็ก RFID ลงใน Arduino ฉันสมมติว่าคุณมีเขียงหั่นขนม แหล่งจ่ายไฟ และสายเชื่อมต่ออยู่แล้ว

Arduino Stuff

ATmega168 พร้อม Arduino Bootloader $4.95

คริสตัล 16MHz $1.50

ตัวเก็บประจุเซรามิก 22pF $0.25 (x2)

ตัวต้านทาน 10k โอห์ม 1/6 วัตต์ PTH $0.25

สวิตช์ปุ่มกดขนาดเล็ก $0.35

RGB LED เอาต์พุตสามเท่า - กระจาย $1.95

สิ่งของ RFID

อย่างใดอย่างหนึ่งเหล่านี้ 20 มีช่วงที่ดีกว่า 12 มีขนาดเล็กกว่าRFID Reader ID-12 $29.95RFID Reader ID-20 $34.95

เครื่องอ่าน RFID ฝ่าวงล้อม $0.95

แบ่งส่วนหัว - ตรง $2.50

แท็ก RFID - 125kHz $1.95

อื่น

ทรานซิสเตอร์ TIP31A (เพิงวิทยุ/ร้านขายอุปกรณ์อิเล็กทรอนิกส์ในพื้นที่ $1.50)

ล็อคประตูมาจากอีเบย์ ประตูล้มเหลวการควบคุมการเข้าถึงที่ปลอดภัย Electric Strike v5 NO $ 17.50 (kawamall, อ่าว)

ขั้นตอนที่ 2: สร้าง Arduino Controller

สร้าง Arduino Controller
สร้าง Arduino Controller
สร้าง Arduino Controller
สร้าง Arduino Controller
สร้าง Arduino Controller
สร้าง Arduino Controller

ขั้นตอนแรกในการสร้างล็อคประตู RFID ด้วย Arduino พื้นฐานคือการสร้างบอร์ด Arduino ที่ใช้งานได้ขั้นพื้นฐาน ชิป ATMega 168 แบบแฟลชล่วงหน้าของ Arduino ส่วนใหญ่มาพร้อมกับโปรแกรมกะพริบเริ่มต้นที่ติดตั้งไว้ล่วงหน้า เชื่อมต่อ LED กับเอาต์พุตดิจิตอล 13 และตรวจสอบว่าทุกอย่างทำงาน

ส่วนฮาร์ดแวร์ของเครื่องอ่าน RFID นี้จะง่ายเกินไปถ้าเราใช้ Arduino ปกติที่มีโปรแกรมเมอร์ USB ในตัว เนื่องจากฉันวางแผนที่จะวางสิ่งนี้ลงในผนังและไม่แตะต้องมันอีก ฉันไม่ต้องการใช้บอร์ด Arduino ขนาดใหญ่ราคา 30 ดอลลาร์เมื่อฉันสามารถซื้อ ATMega 168 มูลค่า 5 ดอลลาร์และสร้าง PCB แบบกำหนดเองที่เล็กกว่ามาก

เนื่องจากฉันเลือกสร้างวงจร Arduino พื้นฐานด้วยตัวเอง ฉันจึงต้องการโปรแกรมเมอร์ USB->Serial FDIT ภายนอก ฉันได้รวมแผนผัง Eagle ของคอนโทรลเลอร์ด้วยแหล่งจ่ายไฟที่สร้างจากตัวควบคุมแรงดันไฟฟ้า 7805 ในการทดสอบฉันใช้แหล่งจ่ายไฟบอร์ดขนมปัง

ในการทำให้ Arduino ทำงานได้ ทั้งหมดที่คุณต้องการจริงๆ คือ ATMega168 ที่มีซอฟต์แวร์ Arduino กะพริบอยู่ ตัวเก็บประจุ 2x 22pF, คริสตัล 16mhz, ตัวต้านทาน 10k ohm, ปุ่มกด และเขียงหั่นขนม การเชื่อมต่อสำหรับสิ่งนี้เป็นที่รู้จักกันดี แต่ฉันได้รวมแผนผังทั้งหมดสำหรับวงจรแล้ว

Arduino กำลังจะทริกเกอร์ 4 เอาต์พุต 1 อันสำหรับ LED สีแดง / เขียว / น้ำเงินและ 1 ตัวเพื่อทริกเกอร์ TIP31A เพื่อส่ง 12vDC ไปที่ล็อคประตู Arduino ได้รับข้อมูลอนุกรมในสาย Rx จากเครื่องอ่าน RFID ID-20

ขั้นตอนที่ 3: สร้างเครื่องอ่าน RFID

สร้างเครื่องอ่าน RFID
สร้างเครื่องอ่าน RFID
สร้างเครื่องอ่าน RFID
สร้างเครื่องอ่าน RFID
สร้างเครื่องอ่าน RFID
สร้างเครื่องอ่าน RFID

ตอนนี้คุณมีบอร์ดขนมปัง Arduino และทำงานแล้ว คุณสามารถประกอบส่วนเครื่องอ่าน RFID ของวงจรซึ่งจะมี LED ID-10 หรือ ID-20 และ RGB เพื่อระบุสถานะของวงจร โปรดจำไว้ว่าเครื่องอ่านจะอยู่ด้านนอกและแยกออกจากตัวควบคุมภายในเพื่อไม่ให้ใครเข้ามาได้ง่าย

ในการสร้างสิ่งนี้ เราจะส่ง 5v/Ground over จาก bread board หลักไปยัง bread board รองที่เรากำลังสร้าง Reader ส่งสายไฟมากกว่า 3 เส้นจาก 3 พินเอาต์พุตของ Arduino เพื่อควบคุม RGB LED หนึ่งอันสำหรับแต่ละสี สายไฟสีน้ำตาลอีกหนึ่งเส้นในภาพจะเป็นการเชื่อมต่อแบบอนุกรมสำหรับ ID-20 เพื่อพูดคุยกับอินพุตอนุกรม Rx ของ Arduino นี่เป็นวงจรที่ง่ายมากในการเชื่อมต่อ LED ได้รับตัวต้านทานและจุดสองสามจุดบน ID-20 เชื่อมโยงกับกราวด์/5v เพื่อกำหนดสถานะที่ถูกต้อง

เพื่อให้ง่ายต่อการทำเขียงหั่นขนม ID-10/ID-20 Sparkfun ขายบอร์ดฝ่าวงล้อมที่ให้คุณติดส่วนหัวพินที่ยาวขึ้นซึ่งเว้นระยะห่างเพื่อให้พอดีกับบอร์ดขนมปัง ส่วนนี้และพินเฮดเดอร์และระบุไว้ในรายการชิ้นส่วน

แผนผังควรแคบไปข้างหน้าและง่ายต่อการปฏิบัติตาม

ขั้นตอนที่ 4: โปรแกรม

ถึงเวลาตั้งโปรแกรม Arduino ของคุณแล้ว การใช้ Arduino พื้นฐานอาจยุ่งยากเล็กน้อย คุณอาจต้องกดปุ่มรีเซ็ตหลายครั้งก่อนและระหว่างส่วนแรกของการอัปโหลด สิ่งสำคัญที่ต้องจำไว้คือ คุณจะได้รับข้อผิดพลาดในการอัปโหลด ถ้าคุณไม่ถอดสายซีเรียล ID-20 กับสาย Rx ของ Arduino ออกชั่วคราว ATMega168 มีอินพุต 1 Rx เท่านั้นและใช้เพื่ออัปโหลดโค้ดเพื่อพูดคุยกับโปรแกรมเมอร์ ถอด ID-20 ออกขณะตั้งโปรแกรม จากนั้นเสียบกลับเข้าไปใหม่เมื่อเสร็จแล้ว ฉันใช้โปรแกรมเมอร์ FTDI ซึ่งให้คุณตั้งโปรแกรม Arduino ผ่าน USB ด้วยสายไฟเพียง 4 เส้น แผนผังคอนโทรลเลอร์แสดงการเชื่อมต่อส่วนหัวของพินเพื่อให้คุณเสียบปลั๊กได้โดยตรง Sparkfun ก็ขายส่วนนี้เช่นกัน แต่หลายคนอาจมีแล้ว

คุณสามารถอัปโหลดรหัสของฉันไปยัง Arduino ของคุณได้อย่างง่ายดายและไม่ต้องหันหลังกลับ แต่ความสนุกในนั้นคืออะไร? ให้ฉันอธิบายแนวคิดพื้นฐานเกี่ยวกับวิธีการทำงาน

ก่อนอื่นฉันไม่ต้องการปุ่ม / สวิตช์ / ฯลฯ ภายนอกใด ๆ และฉันไม่ต้องการตั้งโปรแกรม Arduino ใหม่ทุกครั้งที่ฉันต้องการเพิ่มการ์ดใหม่ ดังนั้นฉันจึงต้องการใช้เพียง RFID เพื่อควบคุมการทำงานของวงจรและควบคุมการล็อคประตู

โปรแกรมเปิดไฟ LED สีน้ำเงินเพื่อระบุว่าพร้อมที่จะอ่านการ์ดใหม่ เมื่ออ่านบัตรแล้ว จะเป็นการพิจารณาว่าเป็นบัตรที่ถูกต้องหรือไม่โดยการเปรียบเทียบสิ่งที่อ่านกับรายการบัตรที่ถูกต้อง หากผู้ใช้ถูกต้อง Arduino จะปิดไฟ LED สีน้ำเงินและเปิดไฟ LED สีเขียวเป็นเวลา 5 วินาที นอกจากนี้ยังเปิดเอาต์พุตอื่นสูงเป็นเวลา 5 วินาที เอาต์พุตนี้เชื่อมต่อกับทรานซิสเตอร์ TIP31A และช่วยให้ Arduino ขนาดเล็กสามารถควบคุมล็อคประตู 12v 300mA ที่ใหญ่กว่ามากโดยไม่เกิดความเสียหาย หลังจากผ่านไป 5 วินาที ตัวล็อคประตูจะล็อคอีกครั้งและไฟ LED จะเปลี่ยนเป็นสีน้ำเงินเพื่อรออ่านการ์ดอีกใบ หากการ์ดใช้งานไม่ได้ ไฟ LED จะเปลี่ยนเป็นสีแดงเป็นเวลาสองสามวินาที และกลับไปเป็นสีน้ำเงินเพื่อรอการ์ดใบอื่น

สิ่งสำคัญคือล็อคประตูยังคงทำงานแม้ว่า Arduino จะสูญเสียพลังงานในชั่วข้ามคืนหรือถูกรีเซ็ต ดังนั้น ID บัตรที่ถูกต้องทั้งหมดจะถูกเก็บไว้ในหน่วยความจำ EEPROM ATMega168 มีหน่วยความจำ EEPROM 512 ไบต์ การ์ด RFID แต่ละใบมีหมายเลขซีเรียล 5 Hex Byte และ 1 Hex Byte Check ผลรวมที่เราสามารถใช้เพื่อตรวจสอบว่าไม่มีข้อผิดพลาดในการส่งสัญญาณระหว่าง ID-20 และ Arduino

บัตรที่ถูกต้องจะถูกเก็บไว้ใน EEPROM โดยใช้ไบต์แรกเป็นตัวนับ ตัวอย่างเช่น หากมีการ์ดที่ถูกต้อง 3 ใบที่จัดเก็บไว้ ไบต์แรกใน EEPROM จะเป็น 3 EEPROM.read(0); = 3. รู้อย่างนี้แล้วจริง ๆ แล้วแต่ละ ID ยาว 5 Bytes เรารู้ว่า 1-5 คือการ์ด 1 6-10 คือการ์ด 2 และ 11-15 คือการ์ด 3 เราสามารถสร้าง loop ที่มองผ่าน EEPROM ได้ ครั้งละ 5 ไบต์และพยายามค้นหาการ์ดที่ผู้อ่านอ่าน

แต่เราจะเพิ่มการ์ดใหม่ลงใน EEPROM หลังจากติดตั้งวงจรได้อย่างไร ?? ฉันได้อ่านหนึ่งในการ์ด RFID ที่ฉันมีและฮาร์ดโค้ดให้เป็นการ์ด Master RFID ดังนั้นแม้ว่า EEPROM ทั้งหมดจะถูกล้าง แต่มาสเตอร์การ์ดก็ยังทำงานได้ ทุกครั้งที่อ่านการ์ด ระบบจะตรวจสอบก่อนว่าเป็นมาสเตอร์การ์ดหรือไม่ หากไม่ใช่ การ์ดจะดูต่อไปว่าเป็นการ์ดที่ถูกต้องหรือไม่ หากการ์ดเป็นมาสเตอร์การ์ด เรามี Arduino ให้ไปที่ "โหมดการเขียนโปรแกรม" โดยจะกะพริบ RGB และรออ่านแท็กที่ถูกต้องอีกอัน แท็กถัดไปที่อ่านจะถูกเพิ่มไปยังจุดว่างถัดไปใน EEPROM และตัวนับจะเพิ่มขึ้น 1 หากการ์ดไม่มีอยู่ในหน่วยความจำ EEPROM จากนั้นเครื่องอ่านจะกลับสู่โหมดปกติและรออ่านการ์ดใหม่

ขณะนี้ฉันยังไม่ได้ตั้งโปรแกรมวิธีการลบบัตร เนื่องจากสาเหตุของการลบบัตรน่าจะเป็นเพราะบัตรสูญหายหรือถูกขโมย เนื่องจากน่าจะใช้กับคน 1-10 คน วิธีที่ง่ายที่สุดคือตั้งโปรแกรมการ์ด Master Erase อย่างหนัก ซึ่งจะล้างการ์ดทั้งหมดจาก EEPROM แล้วเพิ่มใหม่ทั้งหมด ซึ่งใช้เวลาเพียงไม่กี่วินาที ฉันได้เพิ่มรหัสเพื่อล้าง EEPROM แต่ยังไม่ได้ใช้งานคุณลักษณะนี้.

รหัสถูกแนบมาในไฟล์ข้อความพร้อมกับสำเนาของรายการชิ้นส่วน

ขั้นตอนที่ 5: ขยาย

นี่เป็นเพียงสิ่งดีๆ บางส่วนที่คุณสามารถทำได้ด้วย RFID คุณสามารถขยายเพิ่มเติมได้อีกมากด้วยเอาต์พุต LCD การบันทึกว่าใครเข้ามาและเมื่อใด การเชื่อมต่อเครือข่าย / twitter ฯลฯ ฉันวางแผนที่จะสร้างวงจร PCB เวอร์ชันที่เสร็จแล้ว ฉันไม่เคยทำ PCB มาก่อน ดังนั้นฉันจึงยังคงทำงานเกี่ยวกับการออกแบบและเลย์เอาต์ของชิ้นส่วนต่างๆ ได้ครบแล้วจะเอามาลงให้ชมครับ ฉันขอแนะนำให้ทุกคนใช้โค้ดที่ฉันเขียนและแก้ไขเพื่อทำสิ่งที่ยอดเยี่ยมยิ่งขึ้น!

เข้ารอบสุดท้ายในการแข่งขัน Arduino

แนะนำ: