ESP RFID - การควบคุมการเข้าถึงด้วย ESP8266, RC522 PN532 Wiegand RDM6300
ระบบควบคุมการเข้าถึงโดยใช้ MFRC522 ราคาถูก, PN532 RFID, เครื่องอ่าน RDM6300 หรือเครื่องอ่าน WIEGAND RFID และไมโครคอนโทรลเลอร์ ESP8266 ของ ESPRISPLEIF
คุณสมบัติ
สำหรับผู้ใช้
- ความพยายามขั้นต่ำสำหรับการตั้งค่าระบบควบคุมการเข้าถึงของคุณเพียงแค่แฟลชและทุกอย่างสามารถกำหนดค่าได้ผ่าน Web UI
- ความสามารถในการจัดการผู้ใช้สูงสุด 1.000 (เป็นไปได้มากยิ่งขึ้น)
- เหมาะสำหรับพื้นที่ของผู้ผลิตห้องปฏิบัติการโรงเรียน ฯลฯ
- ราคาถูกในการสร้างและง่ายต่อการบำรุงรักษา
สำหรับคนจรจัด
- โอเพ่นซอร์ส (จำนวนน้อยที่สุดของตัวแปร hardcoded ซึ่งหมายถึงอิสระมากขึ้น)
- การใช้ WebSocket Protocol เพื่อแลกเปลี่ยนข้อมูลระหว่างฮาร์ดแวร์และเว็บเบราว์เซอร์
- ข้อมูลถูกเข้ารหัสเป็นวัตถุ JSON
- ระเบียนมีการประทับเวลา (เวลาซิงค์จากเซิร์ฟเวอร์ NTP)
- เปิดใช้งาน MQTT
- bootstrap, jQuery, footables สำหรับหน้าเว็บที่สวยงามสำหรับทั้งหน้าจอมือถือและเดสก์ท็อป
- ขอบคุณการสื่อสารห้องสมุด EspasyncWebserver เป็นแบบอะซิงโครนัส
ฮาร์ดแวร์อย่างเป็นทางการ
- ตัวประกอบขนาดเล็กบางครั้งอาจเป็นไปได้ที่จะติดกาวเป็นผู้อ่านที่มีอยู่
- แหล่งพลังงานเดียวกับ Power 12V/2A Powers โมดูล ESP12, RFID Wiegand Reader และ Magnetic Lock สำหรับเปิดประตู
- หมุดโปรแกรมที่เปิดเผยสำหรับ esp8266
- เกี่ยวกับการออกแบบฮาร์ดแวร์คุณจะได้รับตัวเลือกการตั้งค่าที่เป็นไปได้หลายอย่าง:
- ส่งเสียงระฆังส่งเสียงเรียกเข้ามาที่ผู้อ่านไปยัง MCU หรือส่งออกจากกระดาน
- ติดตามสถานะประตู
- LED สถานะของผู้อ่านควบคุม
- เสียงออดของผู้อ่านสถานะของผู้อ่าน *
- เครื่องอ่านไฟล็อคและบอร์ดผ่าน 12V เดี่ยว 2A PSU
- เลือกใช้พลังงานแม่เหล็กล็อคผ่าน AC/DC ภายนอก PSU
- เป็นไปได้ที่จะใช้ผู้อ่าน Wiegand ทุกประเภทและทุกประเภท
- ช่วยให้คุณสามารถทำให้ระบบการเข้าถึง IoT มีสายไฟน้อยมาก
- พอดีกับสิ่งกีดขวางสากลกับ DIN Mount
- ฮาร์ดแวร์โอเพ่นซอร์ส
รับข้อมูลเพิ่มเติมและดูตัวเลือกอุปกรณ์เสริมจาก Tindie Store
| มีคนอื่นพูดถึง ESP-RFID อย่างไร? |
|---|
| “ สวัสดีโครงการดี” - @rotzbua |
| “ แอพของคุณทำงานได้อย่างมีเสน่ห์” - @tueddy |
| “ เพิ่งสะดุดกับโครงการนี้ในขณะที่วางแผนที่จะทำสิ่งที่คล้ายกันทำได้อย่างสวยงามมาก!” - @lifep |
| “ สวัสดีฉันเจอโครงการของคุณและก่อนอื่น…ว้าว - ขอบคุณผู้มีส่วนร่วมทุกคนสำหรับการทำงานหนักของคุณ!” - @byt3w4rri0r |
| “ งานที่ยอดเยี่ยม” - @danbicks |
| “ นี่เป็นโครงการที่น่าประทับใจ” - @appi1 |
| “ ฉันอยากจะขอบคุณผู้สนับสนุนทุกคนที่สร้างโครงการมหากาพย์นี้” - @thecellmc |
| “ ขอแสดงความยินดีกับผลงานที่ยอดเยี่ยมของคุณ! โครงการนี้ยอดเยี่ยมมาก” - @quikote |
เริ่มต้น
โครงการนี้ยังคงอยู่ในขั้นตอนการพัฒนา มีการแนะนำคุณสมบัติใหม่ (และข้อบกพร่อง) บ่อยครั้งและฟังก์ชั่นบางอย่างอาจเลิกใช้ โปรดอย่าลังเลที่จะแสดงความคิดเห็นหรือให้ข้อเสนอแนะ
- รับรุ่นล่าสุดจากที่นี่
- ดูปัญหาที่ทราบก่อนเริ่มทันที
- ดูความปลอดภัยเพื่อความปลอดภัยของคุณ
- ดู Changelog
สิ่งที่คุณต้องการ
ฮาร์ดแวร์
- คณะกรรมการรีเลย์ ESP-RFID อย่างเป็นทางการหรือ
- โมดูล ESP8266 หรือบอร์ดการพัฒนาเช่น WEMOS D1 MINI หรือ NODEMCU 1.0 ที่มี แฟลชอย่างน้อย 32MBit (เท่ากับ 4MBYTES) (ESP32 ไม่รองรับตอนนี้)
- โมดูล MFRC522 RFID PCD หรือโมดูลเครื่องอ่าน PN532 NFC หรือ RDM6300 125KHz RFID โมดูล Wiegand Reader RFID ที่ใช้
- โมดูลรีเลย์ (หรือคุณสามารถสร้างวงจรของคุณเองได้)
- n ปริมาณของ mifare คลาสสิก 1KB (แนะนำเนื่องจากฐานรหัสที่มีอยู่) PICCS (แท็ก RFID) เทียบเท่ากับหมายเลขผู้ใช้
ซอฟต์แวร์
ใช้ไบนารีที่รวบรวม
ดาวน์โหลด Binaries Compiled จาก GitHub เผยแพร่หน้า https://github.com/esprfid/esp-rfid/releases
บน Windows คุณสามารถใช้ "flash.bat" มันจะถามคุณว่าพอร์ต COM ที่เชื่อมต่อ ESP ใดแล้วกะพริบ คุณสามารถใช้เครื่องมือกระพริบและทำการกระพริบด้วยตนเอง กระบวนการกระพริบนั้นได้รับการอธิบายในหลาย ๆ ที่บนอินเทอร์เน็ต
การสร้างด้วย platformio
สภาพแวดล้อมการสร้างขึ้นอยู่กับแพลตฟอร์ม ทำตามคำแนะนำที่พบที่นี่: http://platformio.org/#!/get-started สำหรับการติดตั้ง แต่ข้ามขั้นตอน platform init ตามที่ได้ทำไปแล้วแก้ไขแล้วและรวมอยู่ในที่เก็บนี้ โดยสรุป:
sudo pip install -U pip setuptools
sudo pip install -U platformio
git clone https://github.com/esprfid/esp-rfid.git
cd esp-rfid
platformio run
เมื่อคุณเรียกใช้ platformio run เป็นครั้งแรกมันจะดาวน์โหลดเครื่องมือและไลบรารีที่จำเป็นทั้งหมดโดยอัตโนมัติ
คำสั่งที่มีประโยชน์:
-
platformio run - กระบวนการ/สร้างเป้าหมายทั้งหมด -
platformio run -e generic -t upload -กระบวนการ/build และ flash เพียงเป้าหมาย esp12e (nodemcu v2) -
platformio run -t clean - Clean Project (ลบไฟล์ที่รวบรวม)
ภาพที่เกิดขึ้น (สร้าง) สามารถพบได้ในไดเรกทอรี /bin ที่สร้างขึ้นในระหว่างกระบวนการสร้าง
วิธีแก้ไขโครงการ
หากคุณต้องการแก้ไขรหัสคุณสามารถอ่านข้อมูลเพิ่มเติมในไฟล์ที่มีส่วนร่วม
เค้าโครงพิน
ตารางต่อไปนี้แสดงเค้าโครงพินทั่วไปที่ใช้สำหรับการเชื่อมต่อฮาร์ดแวร์เครื่องอ่านกับ ESP:
| esp8266 | Nodemcu/wemos | wiegand | PN532 | MFRC522 | RDM6300 |
|---|
| GPIO-16 | D0 | | SS (Wemos D1) | SDA/SS | |
| GPIO-15 | D8 | | | SDA/SS | |
| GPIO-13 | D7 | D0 | Mosi | Mosi | |
| GPIO-12 | D6 | D1 | มิโซะ | มิโซะ | |
| GPIO-14 | D5 | | SCK | SCK | |
| GPIO-04 | D2 | | | | TX |
| GPIO-05 | D1 | | เอสเอส | | |
สำหรับผู้อ่านที่ใช้ Wiegand คุณสามารถกำหนดค่าพิน D0 และ D1 ผ่านหน้าการตั้งค่า โดยค่าเริ่มต้น D0 คือ GPIO-4 และ D1 คือ GPIO-5
ขั้นตอน
- ก่อนอื่นเฟิร์มแวร์แฟลช (คุณสามารถใช้ /bin/flash.bat บน windows) ไปยัง ESP ของคุณโดยใช้ Arduino IDE หรือด้วยเครื่องมือแฟลชที่คุณชื่นชอบ
- (ไม่บังคับ) ไฟมอนิเตอร์อนุกรมของคุณเพื่อรับข้อมูล
- ค้นหาเครือข่ายไร้สาย "ESP-RFID-XXXXXX" และเชื่อมต่อกับมัน (ควรเป็นเครือข่ายแบบเปิดและไม่จำเป็นต้องใช้รหัสผ่าน)
- เปิดเบราว์เซอร์ของคุณและเยี่ยมชม "http://192.168.4.1" หรือ "http: //esp-rfid.local" (.local ต้องการ bonjour ติดตั้งบนคอมพิวเตอร์ของคุณ)
- เข้าสู่ระบบ ESP รหัสผ่านเริ่มต้นคือ "ผู้ดูแลระบบ"
- ไปที่หน้า "การตั้งค่า"
- กำหนดค่าอุปกรณ์ควบคุมการเข้าถึงที่น่าทึ่งของคุณ กดปุ่ม "สแกน" เพื่อเข้าร่วมเครือข่ายไร้สายของคุณกำหนดค่าฮาร์ดแวร์ RFID โมดูลรีเลย์
- บันทึกการตั้งค่าเมื่อรีบูต ESP ของคุณจะพยายามเข้าร่วมเครือข่ายไร้สายของคุณ
- ตรวจสอบที่อยู่ IP ใหม่ของคุณจาก Serial Monitor และเชื่อมต่อกับ ESP ของคุณอีกครั้ง (คุณสามารถเชื่อมต่อกับ "http: //esp-rfid.local"))
- ไปที่หน้า "ผู้ใช้"
- สแกน PICC (แท็ก RFID) จากนั้นควรเหลือบบนหน้าจอเบราว์เซอร์ของคุณ
- พิมพ์ "ชื่อผู้ใช้" หรือ "ป้ายกำกับ" สำหรับ PICC ที่คุณสแกน
- เลือก "อนุญาตการเข้าถึง" หากคุณต้องการ
- คลิก "เพิ่ม"
- ขอแสดงความยินดีทุกอย่างเป็นไปด้วยดีถ้าคุณพบปัญหาใด ๆ อย่าลังเลที่จะขอความช่วยเหลือเกี่ยวกับ GitHub
MQTT
คุณสามารถรวม ESP-RFID เข้ากับระบบอื่น ๆ โดยใช้ MQTT อ่านเอกสารเพิ่มเติมสำหรับรายละเอียดทั้งหมด
ปัญหาที่รู้จัก
- คุณต้องเชื่อมต่อเครื่องอ่าน MFRC522 ของคุณเข้ากับ ESP ของคุณอย่างถูกต้องหรือคุณจะจบลงด้วยการวนรอบบูต
- โปรดตรวจสอบปัญหา GitHub ด้วย
เวลา
เรากำลังซิงค์เวลาจากเซิร์ฟเวอร์ NTP (ในโหมดโครงสร้างพื้นฐาน - ไคลเอนต์) สิ่งนี้จะทำให้ ESP มีการเชื่อมต่ออินเทอร์เน็ต นอกจากนี้ ESP ของคุณยังสามารถทำงานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต (โหมด Access Point -Aka Ad-Hoc-) โดยไม่ต้องเลิกใช้งาน สิ่งนี้จะทำให้คุณต้องซิงค์เวลาด้วยตนเอง ESP สามารถจัดเก็บและค้างไว้เวลาสำหรับคุณประมาณ 51 วันโดยไม่มีปัญหาสำคัญเวลาอุปกรณ์สามารถล่องลอยจากเวลาจริงขึ้นอยู่กับการใช้งานอุณหภูมิ ฯลฯ ดังนั้นคุณต้องเข้าสู่หน้าการตั้งค่าและซิงค์ในเวลาที่เหมาะสม เขตเวลาได้รับการสนับสนุนด้วยสวิตช์อัตโนมัติไปและกลับจากเวลาประหยัดเวลากลางวัน
ความปลอดภัย
เราถือว่าโครงการ ESP-RFID- ทั้งหมด-ไม่ได้ให้ความปลอดภัยที่แข็งแกร่ง มี PICC ที่มีอยู่ที่ UID (หมายเลขประจำตัวที่ไม่ซ้ำกัน) สามารถตั้งค่าด้วยตนเอง (ปัจจุบัน ESP-RFID อาศัย UID เท่านั้นที่จะระบุผู้ใช้) นอกจากนี้อาจมีข้อผิดพลาดในรหัสที่อาจส่งผลให้เข้าถึงข้าวของของคุณได้ฟรี และเช่นเดียวกับอุปกรณ์ที่เชื่อมต่อเครือข่ายอื่น ๆ ESP-RFID นั้นมีความเสี่ยงต่อการโจมตีจำนวนมากรวมถึงการอยู่ตรงกลาง-กลาง, เดรัจฉาน-กำลัง ฯลฯ
นี่เป็นโครงการเกรดงานอดิเรกที่เรียบง่ายอย่าใช้ในที่ที่ต้องการความปลอดภัยที่แข็งแกร่ง
สามารถทำอะไรได้บ้างเพื่อเพิ่มความปลอดภัย? (โดยคุณและโดยเรา)
- เรากำลังทำงานกับวิธีที่ปลอดภัยยิ่งขึ้นในการตรวจสอบแท็ก RFID
- คุณสามารถปิดการใช้งานเครือข่ายไร้สายเพื่อลดพื้นผิวการโจมตี (สามารถกำหนดค่าได้ในหน้าการตั้งค่าเว็บ UI)
- เลือกรหัสผ่านที่แข็งแกร่งสำหรับเว็บ UI
ความยืดหยุ่น
เนื่องจากเราถูก จำกัด ทั้งเรื่องขนาดแฟลชและขนาดแรมอาจน่าเกลียดในบางจุดในอนาคต คุณสามารถค้นหาผลการทดสอบด้านล่าง
การทดสอบ
1) สามารถจัดการแท็ก RFID ได้กี่แท็ก?
กู้คืนข้อมูลผู้ใช้ที่สร้างขึ้นแบบสุ่มในระบบไฟล์มูลค่า:
- 1,000 "userfile" แยกต่างหาก
- สุ่ม 4 ไบต์ยาว UID และ
- ชื่อผู้ใช้แบบสุ่มและ
- การประทับเวลา UNIX แบบสุ่ม 4 ไบต์
- แต่ละคนมี "ประเภทการเข้าถึง" 1 ไบต์จำนวนเต็ม "1" หรือ "0"
รวม 122,880 ไบต์
สามารถจัดการกับผู้ใช้ที่ไม่ซ้ำกันได้อย่างน้อย 1,000 คน (แท็ก RFID) การทดสอบจะดำเนินการกับ Wemos D1 Mini
จำเป็นต้องมีการทดสอบเพิ่มเติม:
- การบันทึกความต้องการการทดสอบ ควรบันทึกการเข้าถึงนานแค่ไหน? เกิดอะไรขึ้นถ้าเจ้านายต้องการบันทึกตลอดทั้งปี?
- ความน่าเชื่อถือของ Flash (Flash เหล่านี้มีวงจรการเขียนที่ จำกัด บนเซลล์ของพวกเขา) ขึ้นอยู่กับตัวเลือกของผู้ผลิตชิปแฟลชและการใช้งาน
ชุมชน
เข้าร่วมการแชทชุมชนบน Gitter
โครงการที่อยู่บนพื้นฐานของ ESP-RFID
- โครงการ ESP-IO เพื่อจัดการ GPIOS ด้วย EventGhost
- ESP-RCM ห้องตรวจสอบสภาพภูมิอากาศด้วย ESP8266, HTU21D, SI7021, AM2320
- การใช้งาน micro-Python ESP-RFID-PY ของ ESP-RFID นั้นมีให้โดย @ibobik
กิตติกรรมประกาศ
- @rneurink
- @thunderace
- @zeraien
- @Nardev
- @romanzava
- @Arduino12
- @pako2
- @marelab
ดู Changelog
เงินบริจาค
การพัฒนาซอฟต์แวร์ฝังตัวที่เปิดกว้างและผ่านการทดสอบอย่างกว้างขวางนั้นยากและใช้เวลานาน โปรดพิจารณาบริจาคเพื่อสนับสนุนนักพัฒนาที่อยู่เบื้องหลังซอฟต์แวร์ที่สวยงามนี้
การบริจาคประมวลผล อย่างโปร่งใส โดย Open Collective และค่าใช้จ่ายจะถูกเปิดเผยต่อสาธารณชนโดยบัญชีแยกประเภท Open ของ OC
- 2017-10-03 Steinar-T
- 2017-12-10 Saschaludwig
- 2018-10-02 Dennis Parsch
- 2019-01-12 Chris-Topher Slater
- 2019-04-23 Klaus Blum
- 2019-04-25 Andre Dieteich
ผู้มีส่วนร่วม
โครงการนี้มีอยู่ขอบคุณทุกคนที่มีส่วนร่วม
ใบอนุญาต
ชิ้นส่วนรหัสที่เขียนโดยผู้เขียนโครงการ ESP-RFID ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT ห้องสมุดบุคคลที่สามที่ใช้โดยโครงการนี้ได้รับอนุญาตภายใต้แผนการใบอนุญาตที่แตกต่างกันโปรดตรวจสอบพวกเขาเช่นกัน