การทำล็อค RFID ด้วย Arduino ล็อครหัสด้วยตัวเองบน Arduino

กุญแจรหัส DIY บน Arduino


พื้นหลัง

มันเกิดขึ้นมากจนเราตัดสินใจติดตั้งรหัสล็อคที่ประตูของเราในที่ทำงาน เพราะเมื่อเราวิ่งเข้าไปเรื่อย ๆ เราออกจากสำนักงาน ประตูที่จะต้องปิดตลอดเวลาเมื่อไม่มีคนอาศัยอยู่ กุญแจมักจะถูกลืมอยู่ข้างใน โดยทั่วไปแล้ว เราตัดสินใจว่ารหัสล็อคเป็นวิธีที่ดี

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

ที่ประตู ด้านนอกประตู จะต้องมีปุ่มกดสำหรับป้อนรหัสผ่านด้วย ข้างในแก้ไขส่วนที่เหลือของโครงสร้าง ใช้สวิตช์กกเพื่อควบคุมการปิดประตูโดยสมบูรณ์ ออกจากสำนักงานมีคนกด "*" บนแป้นพิมพ์และโดยไม่ต้องรอให้ประตูปิดประตูที่ใกล้ชิดกว่าจะไปเกี่ยวกับธุรกิจของเขาเมื่อประตูปิดสนิทสวิตช์กกจะปิดและล็อคจะปิด ประตูเปิดโดยป้อนรหัสผ่าน 4 หลักแล้วกด "#"

เครื่องประดับ

Arduino UNO = 18 เหรียญ
Arduino protoshield + เขียงหั่นขนม = $6
L293D = $1
มัดสายไฟ 30 ชิ้นสำหรับกระดานเพาะพันธุ์ = $4
ช่องเสียบ RJ45 2 ช่อง = $4
ปลั๊ก RJ45 2 อัน = 0.5 เหรียญสหรัฐ
ตัวกระตุ้นเซ็นทรัลล็อค = 250 รูเบิล
สวิตช์กก = ขาดฟรีจากหน้าต่างเก่า
โลหะ Espagnolette ขนาดมหึมา = ฟรี
เคสจากดุม D-LINK เก่า เหล็ก 1.5 mm = ฟรี
แหล่งจ่ายไฟจากฮับ D-LINK เดียวกันสำหรับ 12 และ 5v = ฟรีเช่นกัน
สกรูและน็อตจำนวนมากสำหรับยึดสิ่งของทั้งหมดนี้เข้ากับเคส = 100 รูเบิล
แผงควบคุมจาก สัญญาณกันขโมย= ฟรี

รวม: $33.5 และ 350 rubles

คุณพูดไม่น้อยและคุณจะพูดถูก แต่คุณต้องจ่ายเพื่อความสุข! และเป็นการดีเสมอที่จะรวบรวมบางสิ่งด้วยมือของคุณเอง นอกจากนี้ การออกแบบสามารถลดราคาได้อย่างมากหากคุณใช้ MK เปล่าโดยไม่มี Arduino

การเตรียมการประกอบ

ฉันอยากจะพูดสองสามคำเกี่ยวกับการซื้อองค์ประกอบหลักของการออกแบบแอคทูเอเตอร์ ที่ร้านขายรถยนต์ในท้องถิ่น พวกเขาเสนอแอคทูเอเตอร์ให้ฉันสองประเภท: "มีสายสองสายและมีห้าสาย" ตามที่พนักงานขายบอก พวกเขาเหมือนกันทุกประการ และความแตกต่างในจำนวนสายไฟไม่ได้มีความหมายอะไรเลย อย่างไรก็ตาม มันกลับกลายเป็นว่าไม่เป็นเช่นนั้น! ฉันเลือกอุปกรณ์ที่มีสายไฟสองเส้น ใช้ไฟ 12v ดีไซน์แบบห้าสายมีสวิตช์จำกัดเพื่อควบคุมการเคลื่อนไหวของคันโยก ฉันรู้ว่าฉันซื้อมาผิดก็ต่อเมื่อฉันถอดมันออกจากกันและมันก็สายเกินไปที่จะเปลี่ยน ระยะชักของคันโยกนั้นสั้นเกินไปที่จะดันสลักได้อย่างเหมาะสม ดังนั้นจึงจำเป็นต้องปรับเปลี่ยนเล็กน้อย กล่าวคือ ถอดแหวนรองยางสองอันออกซึ่งจะทำให้จังหวะของคันโยกแอคชูเอเตอร์สั้นลง การทำเช่นนี้ต้องเลื่อยร่างกายตาม ด้วยเลื่อยวงเดือนธรรมดาเพราะเครื่องซักผ้าที่สองอยู่ข้างใน เทปพันท่อสีน้ำเงินสำหรับเราเช่นเคย ช่วยเราประกอบกลับในภายหลังได้เสมอ

ในการควบคุมมอเตอร์แอคชูเอเตอร์ ไดรเวอร์มอเตอร์ L293D ถูกใช้ ซึ่งสามารถทนต่อโหลดสูงสุดได้ถึง 1200 mA ในกรณีของเรา เมื่อมอเตอร์แอคทูเอเตอร์หยุด โหลดสูงสุดเพิ่มขึ้นเป็น 600 mA เท่านั้น

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

การเขียนโปรแกรม

เนื่องจากฉันไม่เคยมีประสบการณ์กับการเขียนโปรแกรม Arduino มาก่อนเลยจนถึงตอนนี้ ฉันใช้ประโยชน์จากการพัฒนาและบทความของผู้อื่นจากเว็บไซต์ arduino.cc ใครสนใจสามารถดูรหัสน่าเกลียดนี้ได้ :)

ภาพถ่ายและวิดีโอ

โฮสต์ของช่อง youtube "AlexGyver" ถูกขอให้ทำล็อคอิเล็กทรอนิกส์ด้วยมือของเขาเอง ยินดีต้อนรับสู่วงจรวิดีโอเกี่ยวกับการล็อคอิเล็กทรอนิกส์บน Arduino ใน ในแง่ทั่วไปอาจารย์จะอธิบายความคิด

มีหลายตัวเลือกสำหรับการสร้างระบบล็อคอิเล็กทรอนิกส์ ส่วนใหญ่มักใช้ล็อกประตู ลิ้นชัก ตู้ และยังสร้างที่ซ่อนและตู้เซฟลับ ดังนั้นคุณต้องสร้างเลย์เอาต์ที่สะดวกในการทำงานและคุณสามารถแสดงโครงสร้างระบบได้ชัดเจนและละเอียดจากภายในและภายนอก ดังนั้นฉันจึงตัดสินใจทำกรอบที่มีประตู สิ่งนี้จะต้อง แท่งสี่เหลี่ยม 30 x 30. ไม้อัด 10 มม. บานพับประตู. ตอนแรกฉันต้องการทำกล่องไม้อัด แต่ฉันจำได้ว่าทุกอย่างในห้องเกลื่อนไปด้วยอะไหล่ ไม่มีที่ไหนที่จะใส่กล่องดังกล่าว ดังนั้นจะทำการจัดวาง หากมีคนต้องการใส่กุญแจอิเล็กทรอนิกส์ให้ตัวเองจากนั้นดูที่เลย์เอาต์คุณสามารถทำซ้ำทุกอย่างได้อย่างง่ายดาย

ทุกสิ่งที่คุณต้องการสำหรับปราสาทมีอยู่ในร้านค้าจีนแห่งนี้

เป้าหมายคือการพัฒนาวงจรและเฟิร์มแวร์ที่มีประสิทธิภาพสูงสุดสำหรับ ล็อคอิเล็กทรอนิกส์. คุณจะสามารถใช้ผลลัพธ์เหล่านี้ในการติดตั้งระบบเหล่านี้บนประตู ลิ้นชัก ตู้ และสถานที่หลบซ่อนของคุณได้

ประตูพร้อมแล้ว ตอนนี้คุณต้องหาวิธีเปิดและปิดด้วยระบบอิเล็กทรอนิกส์ เพื่อจุดประสงค์เหล่านี้ สลักโซลินอยด์อันทรงพลังจาก aliexpress นั้นเหมาะสม (ลิงก์ไปยังร้านค้าด้านบน) หากคุณใช้แรงดันไฟฟ้ากับขั้ว เครื่องจะเปิดขึ้น ความต้านทานของคอยล์อยู่ที่เกือบ 12 โอห์ม ซึ่งหมายความว่าที่แรงดัน 12 โวลต์ คอยล์จะกินประมาณ 1 แอมแปร์ จะรับมือกับงานนี้และ แบตเตอรี่ลิเธียมและเพิ่มโมดูล เราปรับให้เข้ากับแรงดันไฟฟ้าที่เหมาะสม แม้ว่าอาจจะมากกว่าเล็กน้อย สลักติดอยู่กับด้านในของประตูในระยะไกลเพื่อไม่ให้ไปติดขอบและสามารถปิดกระแทกได้ ห่าควรเป็นคู่ในรูปแบบของกล่องโลหะ การใช้โดยไม่ได้ใช้งานจะไม่สะดวกและไม่ถูกต้อง เราจะต้องวางขั้นตอน อย่างน้อยก็สร้างลักษณะการทำงานปกติ

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

เซอร์โวมีสองประเภท อันทรงพลังขนาดเล็กและขนาดใหญ่ซึ่งสามารถดันเข้าไปในรูได้อย่างง่ายดายด้วยหมุดโลหะที่จริงจัง ทั้งสองตัวเลือกที่แสดงทำงานทั้งสองประตูและ ลิ้นชัก. คุณจะต้องปรับแต่งกล่องให้เป็นรูในผนังเลื่อน

ส่วนที่สอง

มันเกิดขึ้นที่ที่ทำงานเราตัดสินใจติดตั้งรหัสล็อคที่ประตูของเราเพราะเมื่อเราวิ่งเข้าอย่างต่อเนื่องเราออกจากสำนักงานประตูซึ่งจะต้องปิดตลอดเวลาหากไม่มีผู้อยู่อาศัย กุญแจมักจะถูกลืมอยู่ข้างใน โดยทั่วไปแล้ว เราตัดสินใจว่ารหัสล็อคเป็นวิธีที่ดี

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

ความคิด

ที่ประตู ด้านนอกของประตู ควรมีแป้นพิมพ์สำหรับใส่รหัสผ่าน และโครงสร้างที่เหลือจะยึดไว้ด้านใน ใช้สวิตช์กกเพื่อควบคุมการปิดประตูโดยสมบูรณ์ ออกจากสำนักงานมีคนกด "*" บนแป้นพิมพ์และโดยไม่ต้องรอให้ประตูปิดประตูที่ใกล้ชิดกว่าจะไปเกี่ยวกับธุรกิจของเขาเมื่อประตูปิดสนิทสวิตช์กกจะปิดและล็อคจะปิด ประตูเปิดโดยป้อนรหัสผ่าน 4 หลักแล้วกด "#"

เครื่องประดับ

Arduino UNO = 18 เหรียญ
Arduino protoshield + เขียงหั่นขนม = $6
L293D = $1
มัดสายไฟ 30 ชิ้นสำหรับกระดานเพาะพันธุ์ = $4
ช่องเสียบ RJ45 2 ช่อง = $4
ปลั๊ก RJ45 2 อัน = 0.5 เหรียญสหรัฐ
ตัวกระตุ้นเซ็นทรัลล็อค = 250 รูเบิล
สวิตช์กก = ขาดฟรีจากหน้าต่างเก่า
โลหะ Espagnolette ขนาดมหึมา = ฟรี
เคสจากดุม D-LINK เก่า เหล็ก 1.5 mm = ฟรี
แหล่งจ่ายไฟจากฮับ D-LINK เดียวกันสำหรับ 12 และ 5v = ฟรีเช่นกัน
สกรูและน็อตจำนวนมากสำหรับยึดสิ่งของทั้งหมดนี้เข้ากับเคส = 100 รูเบิล
แผงควบคุมจากระบบสัญญาณกันขโมย = ฟรี

รวม: 33.5 ดอลลาร์และ 350 รูเบิล

คุณพูดไม่น้อยและคุณจะพูดถูก แต่คุณต้องจ่ายเพื่อความสุข! และเป็นการดีเสมอที่จะรวบรวมบางสิ่งด้วยมือของคุณเอง นอกจากนี้ การออกแบบสามารถลดราคาได้อย่างมากหากคุณใช้ MK เปล่าโดยไม่มี Arduino

การเตรียมการประกอบ

ฉันอยากจะพูดสองสามคำเกี่ยวกับการซื้อองค์ประกอบหลักของการออกแบบแอคทูเอเตอร์ ที่ร้านขายรถยนต์ในท้องถิ่น พวกเขาเสนอแอคทูเอเตอร์ให้ฉันสองประเภท: "มีสายสองสายและมีห้าสาย" ตามที่พนักงานขายบอก พวกเขาเหมือนกันทุกประการ และความแตกต่างในจำนวนสายไฟไม่ได้มีความหมายอะไรเลย อย่างไรก็ตาม มันกลับกลายเป็นว่าไม่เป็นเช่นนั้น! ฉันเลือกอุปกรณ์ที่มีสายไฟสองเส้น ใช้ไฟ 12v ดีไซน์แบบห้าสายมีสวิตช์จำกัดเพื่อควบคุมการเคลื่อนไหวของคันโยก ฉันรู้ว่าฉันซื้อมาผิดก็ต่อเมื่อฉันถอดมันออกจากกันและมันก็สายเกินไปที่จะเปลี่ยน ระยะชักของคันโยกนั้นสั้นเกินไปที่จะดันสลักได้อย่างเหมาะสม ดังนั้นจึงจำเป็นต้องปรับเปลี่ยนเล็กน้อย กล่าวคือ ถอดแหวนรองยางสองอันออกซึ่งจะทำให้จังหวะของคันโยกแอคชูเอเตอร์สั้นลง ในการทำเช่นนี้ต้องเลื่อยร่างกายพร้อมกับเลื่อยเลือยตัดโลหะธรรมดาเพราะเครื่องซักผ้าที่สองอยู่ข้างใน เทปพันท่อสีน้ำเงินสำหรับเราเช่นเคย ช่วยเราประกอบกลับในภายหลังได้เสมอ
ในการควบคุมมอเตอร์แอคชูเอเตอร์ ไดรเวอร์มอเตอร์ L293D ถูกใช้ ซึ่งสามารถทนต่อโหลดสูงสุดได้ถึง 1200 mA ในกรณีของเรา เมื่อมอเตอร์แอคทูเอเตอร์หยุด โหลดสูงสุดเพิ่มขึ้นเป็น 600 mA เท่านั้น
ผู้ติดต่อจากแป้นพิมพ์ ลำโพง และไฟ LED สองดวงถูกลบออกจากแผงควบคุมจากสัญญาณเตือนความปลอดภัย รีโมตคอนโทรลและอุปกรณ์หลักควรจะเชื่อมต่อโดยใช้ขั้วต่อแบบบิดเกลียวและ RJ45

การเขียนโปรแกรม

เนื่องจากฉันไม่เคยมีประสบการณ์กับการเขียนโปรแกรม Arduino มาก่อนเลยจนถึงตอนนี้ ฉันใช้ประโยชน์จากการพัฒนาและบทความของผู้อื่นจากเว็บไซต์ arduino.cc ใครสนใจสามารถดูรหัสน่าเกลียดนี้ได้ :)

ภาพถ่ายและวิดีโอ



Arduino และแอคชูเอเตอร์


พาวเวอร์ซัพพลาย


แป้นพิมพ์


Espagnolette (เชื่อมต่อกับแอคชูเอเตอร์ด้วยเข็มโลหะและติดการหดตัวด้วยความร้อนเพื่อความสวยงาม)

วิดีโอขั้นตอนการทำงานของอุปกรณ์:

ความคืบหน้าไม่หยุดนิ่งและ "ล็อคอัจฉริยะ" ปรากฏขึ้นที่ประตูอพาร์ทเมนท์ โรงรถ และบ้านมากขึ้นเรื่อยๆ

ล็อคที่คล้ายกันจะเปิดขึ้นเมื่อคุณกดปุ่มบนสมาร์ทโฟนของคุณ โชคดีที่สมาร์ทโฟนและแท็บเล็ตเข้ามาในชีวิตประจำวันของเราแล้ว ในบางกรณี "ล็อคอัจฉริยะ" จะเชื่อมต่อกับ "บริการคลาวด์" เช่น Google ไดรฟ์และเปิดจากระยะไกล นอกจากนี้ ตัวเลือกนี้ช่วยให้ผู้อื่นสามารถเปิดประตูได้

ในโครงการนี้ สมาร์ทล็อครุ่น DIY จะถูกใช้งานบน Arduino ซึ่งสามารถควบคุมจากระยะไกลได้จากทุกที่ในโลก

นอกจากนี้ โครงการยังได้เพิ่มความสามารถในการเปิดล็อคหลังจากการจดจำลายนิ้วมือ สำหรับสิ่งนี้ เซ็นเซอร์ลายนิ้วมือจะถูกรวมเข้าด้วยกัน ทั้งสองตัวเลือกสำหรับการเปิดประตูจะทำงานบนแพลตฟอร์ม Adafruit IO

การล็อคแบบนี้อาจเป็นก้าวแรกที่ดีในโครงการบ้านอัจฉริยะของคุณ

การตั้งค่าเซ็นเซอร์ลายนิ้วมือ

ในการทำงานกับเซ็นเซอร์ลายนิ้วมือ มีห้องสมุดที่ยอดเยี่ยมสำหรับ Arduino ซึ่งทำให้ขั้นตอนการตั้งค่าเซ็นเซอร์ง่ายขึ้นอย่างมาก โครงการนี้ใช้ Arduino Uno. บอร์ด Adafruit CC3000 ใช้สำหรับเชื่อมต่ออินเทอร์เน็ต

เริ่มต้นด้วยการเชื่อมต่อพลังงาน:

  • เชื่อมต่อพิน 5V จากบอร์ด Arduino เข้ากับรางไฟสีแดง
  • พิน GND จาก Arduino เชื่อมต่อกับรางสีน้ำเงินบนแผงวงจรแบบบัดกรี

ไปที่การเชื่อมต่อเซ็นเซอร์ลายนิ้วมือ:

  • ต่อไฟก่อน. เมื่อต้องการทำเช่นนี้ สายสีแดงเชื่อมต่อกับราง +5 V และสายสีดำกับราง GND
  • สายเซ็นเซอร์สีขาวเชื่อมต่อกับพิน 4 บน Arduino
  • สายเขียวไปที่พิน 3 บนไมโครคอนโทรลเลอร์

ทีนี้มาดูโมดูล CC3000:

  • เชื่อมต่อพิน IRQ จากบอร์ด CC3000 เข้ากับพิน 2 บน Arduino
  • VBAT - เพื่อตรึง 5
  • CS - เพื่อตรึง 10
  • หลังจากนั้นคุณต้องเชื่อมต่อพิน SPI กับ Arduino: MOSI, MISO และ CLK - กับพิน 11, 12 และ 13 ตามลำดับ

และสุดท้าย คุณต้องจัดหาพลังงาน: Vin - ถึง Arduino 5V (รางสีแดงบนแผงวงจรของคุณ) และ GND ถึง GND (รางสีน้ำเงินบนเขียงหั่นขนม)

ภาพของโครงการที่ประกอบเสร็จแล้วแสดงไว้ด้านล่าง:

ก่อนพัฒนาร่างที่จะอัปโหลดข้อมูลไปยัง Adafruit IO คุณต้องส่งข้อมูลลายนิ้วมือของคุณไปยังเซ็นเซอร์ก่อน มิฉะนั้นเขาจะจำคุณไม่ได้ในอนาคต;) เราขอแนะนำให้ปรับเทียบเซ็นเซอร์ลายนิ้วมือโดยใช้ Arduino แยกต่างหาก หากคุณกำลังใช้งานเซ็นเซอร์นี้เป็นครั้งแรก เราขอแนะนำให้คุณทำความคุ้นเคยกับกระบวนการสอบเทียบและคำแนะนำโดยละเอียดสำหรับการทำงานกับเซ็นเซอร์ลายนิ้วมือ

หากคุณยังไม่ได้ดำเนินการ ให้ลงชื่อสมัครใช้บัญชี Adafruit IO

หลังจากนั้น เราสามารถไปยังขั้นตอนต่อไปของการพัฒนา "ล็อคอัจฉริยะ" บน Arduino กล่าวคือ การพัฒนาร่างที่จะส่งข้อมูลไปยัง Adafruit IO เนื่องจากโปรแกรมมีขนาดใหญ่มาก ในบทความเราจะเน้นและพิจารณาเฉพาะส่วนหลักๆ จากนั้นเราจะให้ลิงก์ไปยัง GitHub ซึ่งคุณสามารถดาวน์โหลดภาพร่างแบบเต็มได้

สเก็ตช์เริ่มต้นด้วยการโหลดไลบรารีที่จำเป็นทั้งหมด:

#รวม

#รวม

#รวม

#รวม "Adafruit_MQTT.h"

#รวม "Adafruit_MQTT_CC3000.h"

#รวม

#รวม >

หลังจากนั้น คุณต้องแก้ไขภาพร่างเล็กน้อยโดยแทรกพารามิเตอร์ของเครือข่าย WiFi ของคุณ โดยระบุ SSID และรหัสผ่าน (รหัสผ่าน):

#define WLAN_SECURITY WLAN_SEC_WPA2>

นอกจากนี้ คุณต้องป้อนชื่อและคีย์ AIO (คีย์) เพื่อเข้าสู่บัญชี Adafruit IO ของคุณ:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

บรรทัดต่อไปนี้มีหน้าที่รับผิดชอบในการโต้ตอบและประมวลผลข้อมูลจากเซ็นเซอร์ลายนิ้วมือ หากเปิดใช้งานเซ็นเซอร์ (จับคู่ลายนิ้วมือ) จะเป็น "1":

อักขระ const FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/fingerprint";

Adafruit_MQTT_เผยแพร่ลายนิ้วมือ = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

นอกจากนี้ เราจำเป็นต้องสร้างอินสแตนซ์ของอ็อบเจ็กต์ SoftwareSerial สำหรับเซ็นเซอร์ของเรา:

ซอฟต์แวร์Serial mySerial(3, 4);

หลังจากนั้น เราสามารถสร้างวัตถุสำหรับเซ็นเซอร์ของเราได้:

นิ้ว Adafruit_Fingerprint = Adafruit_Fingerprint (&mySerial);

ภายในภาพร่าง เราระบุว่ารหัสนิ้วใดที่จะเปิดใช้งานการล็อกในอนาคต ในตัวอย่างนี้ ใช้ 0 ซึ่งสอดคล้องกับ ID ของลายนิ้วมือแรกที่เซ็นเซอร์ใช้:

int fingerID = 0;

หลังจากนั้นเราเริ่มต้นตัวนับและความล่าช้า (ล่าช้า) ในโครงการของเรา โดยพื้นฐานแล้ว เราต้องการให้ล็อคทำงานโดยอัตโนมัติหลังจากเปิด ตัวอย่างนี้ใช้การหน่วงเวลา 10 วินาที แต่คุณสามารถปรับค่านี้ให้เหมาะกับความต้องการของคุณได้:

int ActivationCounter = 0;

int lastActivation = 0;

int การเปิดใช้งานเวลา = 10 * 1,000;

ในส่วนเนื้อหาของฟังก์ชัน setup() เราเริ่มต้นเซ็นเซอร์ลายนิ้วมือและตรวจสอบให้แน่ใจว่าชิป CC3000 เชื่อมต่อกับเครือข่าย WiFi ของคุณ

ในเนื้อความของฟังก์ชัน loop() เราเชื่อมต่อกับ Adafruit IO บรรทัดต่อไปนี้รับผิดชอบสิ่งนี้:

หลังจากเชื่อมต่อกับแพลตฟอร์ม Adafruit IO เราจะตรวจสอบลายนิ้วมือสุดท้าย หากตรงกันและไม่ได้เปิดใช้งานการล็อก เราจะส่ง "1" ไปยัง Adafruit IO เพื่อดำเนินการ:

ถ้า (fingerprintID == fingerID && lockState == false) (

Serial.println(F("การเข้าถึงที่ได้รับ!"));

lockState=จริง;

Serial.println(F("ล้มเหลว"));

Serial.println(F("ตกลง!"));

LastActivation = มิลลิวินาที ();

หากภายในฟังก์ชัน loop() การล็อกถูกเปิดใช้งาน และเรามาถึงค่าการหน่วงเวลาที่ระบุข้างต้นแล้ว เราจะส่ง "0":

ถ้า ((activationCounter - lastActivation > enableTime) && lockState == true) (

lockState=เท็จ;

ถ้า (! fingerprint.publish(สถานะ)) (

Serial.println(F("ล้มเหลว"));

Serial.println(F("ตกลง!"));

คุณสามารถดาวน์โหลดโค้ดเวอร์ชันล่าสุดได้ที่ GitHub

ได้เวลาทดสอบโครงการของเราแล้ว! อย่าลืมดาวน์โหลดและติดตั้งไลบรารี Arduino ที่จำเป็นทั้งหมด!

ตรวจสอบให้แน่ใจว่าคุณได้ทำการเปลี่ยนแปลงที่จำเป็นทั้งหมดกับสเก็ตช์แล้วอัปโหลดไปยัง Arduino ของคุณ จากนั้นเปิดหน้าต่างมอนิเตอร์แบบอนุกรม

เมื่อ Arduino เชื่อมต่อกับ เครือข่าย WiFi, เซ็นเซอร์ลายนิ้วมือจะกะพริบเป็นสีแดง วางนิ้วของคุณบนเซ็นเซอร์ หน้าต่างมอนิเตอร์ซีเรียลควรแสดงหมายเลข ID หากตรงกัน จะมีข้อความปรากฏขึ้นว่า "ตกลง!" ซึ่งหมายความว่าข้อมูลถูกส่งไปยังเซิร์ฟเวอร์ Adafruit IO แล้ว

แบบแผนและแบบร่างสำหรับการตั้งค่าล็อคเพิ่มเติมโดยใช้ตัวอย่างของ LED

ตอนนี้เรามาจัดการกับส่วนของโครงการที่รับผิดชอบโดยตรงในการจัดการ ล็อคประตู. ในการเชื่อมต่อกับเครือข่ายไร้สายและเปิด/ปิดการล็อก คุณจะต้องมีโมดูล Adafruit ESP8266 เพิ่มเติม (โมดูล ESP8266 ไม่จำเป็นต้องมาจาก Adafruit) ตัวอย่างด้านล่างจะแสดงให้เห็นว่าการสื่อสารระหว่างสองแพลตฟอร์ม (Arduino และ ESP8266) นั้นง่ายเพียงใดโดยใช้ Adafruit IO

ในส่วนนี้ เราจะไม่ดำเนินการกับล็อคโดยตรง แต่เราเพียงแค่เชื่อมต่อ LED กับพินที่จะเชื่อมต่อล็อคในภายหลัง ซึ่งจะทำให้สามารถทดสอบโค้ดของเราได้โดยไม่ต้องเจาะลึกถึงรายละเอียดเฉพาะของการออกแบบล็อค

วงจรค่อนข้างง่าย: ก่อนอื่นให้ติดตั้ง ESP8266 บนเขียงหั่นขนม จากนั้นติดตั้ง LED อย่าลืมว่าขา LED ยาว (บวก) เชื่อมต่อผ่านตัวต้านทาน ขาที่สองของตัวต้านทานเชื่อมต่อกับพิน 5 บนโมดูล ESP8266 LED (แคโทด) ดวงที่สองเชื่อมต่อกับพิน GND บน ESP8266

อย่างเต็มที่ วงจรประกอบแสดงในภาพด้านล่าง


ตอนนี้ มาดูภาพสเก็ตช์ที่เราใช้สำหรับโปรเจ็กต์นี้กัน อีกครั้ง โค้ดมีขนาดค่อนข้างใหญ่และซับซ้อน ดังนั้นเราจะครอบคลุมเฉพาะส่วนหลักของโค้ดเท่านั้น:

เราเริ่มต้นด้วยการรวมไลบรารีที่จำเป็น:

#รวม

#รวม "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

กำหนดการตั้งค่า WiFi:

#define WLAN_SSID "ของคุณ_wifi_ssid"

#define WLAN_PASS "รหัสผ่านของคุณ"

#define WLAN_SECURITY WLAN_SEC_WPA2

นอกจากนี้เรายังกำหนดค่าพารามิเตอร์ Adafruit IO เช่นเดียวกับในส่วนก่อนหน้า:

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_username"

#define AIO_KEY "adafruit_io_key"

เราระบุพินที่เราเชื่อมต่อ LED (ในอนาคตจะเป็นล็อคหรือรีเลย์ของเรา):

int รีเลย์พิน = 5;

การโต้ตอบกับเซ็นเซอร์ลายนิ้วมือ เช่นเดียวกับในส่วนก่อนหน้า:

อักขระ const LOCK_FEED PROGMEM = AIO_USERNAME "/feeds/lock";

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

ในส่วนของฟังก์ชัน setup() เราระบุว่าพินที่เชื่อมต่อ LED ควรทำงานในโหมด OUTPUT:

โหมดพิน (รีเลย์พิน, เอาต์พุต);

ภายในลูปลูป () ก่อนอื่นให้ตรวจสอบว่าเราเชื่อมต่อกับ Adafruit IO หรือไม่:

หลังจากนั้นเราตรวจสอบสัญญาณที่กำลังมา หากส่ง "1" เราจะเปิดใช้งานพินที่เราประกาศไว้ก่อนหน้านี้ซึ่ง LED ของเราเชื่อมต่ออยู่ หากเราได้รับ "0" เราจะใส่ผู้ติดต่อในสถานะ "ต่ำ":

Adafruit_MQTT_Subscribe *สมัครสมาชิก;

ในขณะที่ ((สมัครสมาชิก = mqtt.readSubscription(1000)))) (

ถ้า (สมัครสมาชิก == &ล็อค) (

Serial.print(F("ได้:"));

Serial.println((ถ่าน *)lock.lastread);

// บันทึกคำสั่งเป็นข้อมูลสตริง

คำสั่งสตริง = สตริง ((ถ่าน *) lock.lastread);

ถ้า (คำสั่ง == "0") (

digitalWrite (รีเลย์พิน ต่ำ);

if (คำสั่ง == "1") (

digitalWrite (รีเลย์พิน สูง);

การค้นหา รุ่นล่าสุดคุณสามารถดูภาพสเก็ตช์ได้ที่ GitHub

ได้เวลาทดสอบโครงการของเราแล้ว อย่าลืมดาวน์โหลดไลบรารี่ที่จำเป็นทั้งหมดสำหรับ Arduino ของคุณและตรวจดูว่าคุณได้ทำการเปลี่ยนแปลงที่ถูกต้องกับสเก็ตช์หรือไม่

ตัวแปลง USB-FTDI แบบธรรมดาสามารถใช้เพื่อตั้งโปรแกรมชิป ESP8266 ได้

อัปโหลดภาพร่างไปยัง Arduino และเปิดหน้าต่างมอนิเตอร์แบบอนุกรม ในขั้นตอนนี้ เราเพิ่งตรวจสอบว่าเราสามารถเชื่อมต่อกับ Adafruit IO ได้หรือไม่: เราจะพิจารณาฟังก์ชันที่พร้อมใช้งานเพิ่มเติม

ทดสอบโครงการ

มาเริ่มการทดสอบกันเลย! ไปที่เมนูผู้ใช้ของ Adafruit IO ของคุณในเมนูฟีด ตรวจสอบว่าช่องสำหรับลายนิ้วมือและล็อคถูกสร้างขึ้นหรือไม่ (บนหน้าจอพิมพ์ด้านล่าง นี่คือลายนิ้วมือและสายล็อค):


หากไม่มีอยู่ คุณจะต้องสร้างด้วยตนเอง

ตอนนี้เราต้องตรวจสอบให้แน่ใจว่ามีการแลกเปลี่ยนข้อมูลระหว่างลายนิ้วมือและช่องล็อค ช่องล็อคต้องตั้งค่าเป็น "1" เมื่อตั้งค่าช่องลายนิ้วมือเป็น "1" และในทางกลับกัน

ในการทำเช่นนี้ เราใช้เครื่องมือ Adafruit IO ที่ทรงพลังมาก: ทริกเกอร์ ทริกเกอร์คือเงื่อนไขพื้นฐานที่คุณสามารถนำไปใช้กับแชนเนลที่กำหนดค่าได้ นั่นคือสามารถใช้เชื่อมต่อสองช่องสัญญาณเข้าด้วยกัน

สร้างทริกเกอร์ปฏิกิริยาใหม่จากส่วนทริกเกอร์ใน Adafruit IO สิ่งนี้จะช่วยให้สามารถแลกเปลี่ยนข้อมูลระหว่างช่องสัญญาณของเซ็นเซอร์ลายนิ้วมือกับการล็อค:


นี่คือสิ่งที่ควรมีลักษณะเมื่อกำหนดค่าทริกเกอร์ทั้งสอง:

ทุกอย่าง! ตอนนี้เราสามารถทดสอบโครงการของเราได้แล้ว! เราวางนิ้วลงบนเซ็นเซอร์และดูว่า Arduino เริ่มกระพริบด้วย LED ซึ่งสอดคล้องกับการถ่ายโอนข้อมูลอย่างไร หลังจากนั้น LED บนโมดูล ESP8266 ควรเริ่มกะพริบ ซึ่งหมายความว่าเขาเริ่มรับข้อมูลผ่าน MQTT ไฟ LED บนแผงวงจรควรเปิดขึ้น ณ จุดนี้

หลังจากหน่วงเวลาที่คุณตั้งค่าไว้ในแบบร่าง (ค่าเริ่มต้นคือ 10 วินาที) ไฟ LED จะดับลง ยินดีด้วย! คุณสามารถควบคุม LED ด้วยลายนิ้วมือได้จากทุกที่ในโลก!

การตั้งค่าล็อคอิเล็กทรอนิกส์

เรามาถึงส่วนสุดท้ายของโครงการแล้ว: การเชื่อมต่อและการควบคุมโดยตรง ล็อคอิเล็กทรอนิกส์โดยใช้ Arduino และเซ็นเซอร์ลายนิ้วมือ โครงการไม่ใช่เรื่องง่าย คุณสามารถใช้แหล่งที่มาทั้งหมดในรูปแบบที่นำเสนอข้างต้น แต่แทนที่จะเชื่อมต่อ LED กับรีเลย์

ในการเชื่อมต่อล็อคโดยตรง คุณจะต้องมีส่วนประกอบเพิ่มเติม: แหล่งจ่ายไฟ 12 V, แจ็คไฟ, ทรานซิสเตอร์ (in ตัวอย่างนี้ใช้ IRLB8721PbF MOSFET แต่อีกอันหนึ่ง เช่น ทรานซิสเตอร์สองขั้ว TIP102 สามารถใช้ได้ หากคุณใช้ทรานซิสเตอร์แบบไบโพลาร์ คุณจะต้องเพิ่มตัวต้านทาน

แสดงด้านล่าง แผนภูมิวงจรรวมการเชื่อมต่อส่วนประกอบทั้งหมดเข้ากับโมดูล ESP8266:


โปรดทราบว่าหากคุณใช้ทรานซิสเตอร์ MOSFET คุณไม่จำเป็นต้องมีตัวต้านทานระหว่าง ESP8266 พิน 5 กับทรานซิสเตอร์

โครงการที่ประกอบเสร็จแล้วแสดงในภาพด้านล่าง:


เพิ่มพลังให้กับโมดูล ESP8266 โดยใช้โมดูล FTDI และเชื่อมต่อแหล่งจ่ายไฟ 12V เข้ากับแจ็ค หากคุณใช้หมุดที่แนะนำข้างต้นสำหรับการเชื่อมต่อ คุณจะไม่ต้องเปลี่ยนแปลงอะไรในภาพร่าง

ตอนนี้คุณสามารถวางนิ้วบนเซ็นเซอร์ได้แล้ว: ล็อคควรทำงานเพื่อตอบสนองต่อลายนิ้วมือของคุณ วิดีโอด้านล่างแสดงการทำงานของโปรเจ็กต์สมาร์ทล็อคอัตโนมัติ:

การพัฒนาเพิ่มเติมของโครงการ Smart Lock

ในโครงการของเราเปิดตัว รีโมทล็อคประตูด้วยลายนิ้วมือ

รู้สึกอิสระที่จะทดลอง ปรับเปลี่ยนภาพสเก็ตช์และสายรัด ตัวอย่างเช่น คุณสามารถเปลี่ยนล็อคประตูอิเล็กทรอนิกส์ด้วยรีเลย์เพื่อควบคุมพลังของเครื่องพิมพ์ 3 มิติ แขนหุ่นยนต์ หรือควอดคอปเตอร์...

คุณสามารถพัฒนา สมาร์ทเฮาส์" ตัวอย่างเช่น เปิดใช้งานระบบชลประทานจากระยะไกลบน Arduino หรือเปิดไฟในห้อง ... อย่าลืมว่าคุณสามารถเปิดใช้งานอุปกรณ์ได้เกือบไม่ จำกัด จำนวนโดยใช้ Adafruit IO

แสดงความคิดเห็นคำถามและแบ่งปันของคุณ ประสบการณ์ส่วนตัวด้านล่าง. ในการอภิปราย มักมีแนวคิดและโครงการใหม่ๆ เกิดขึ้น!

บทช่วยสอนวันนี้เกี่ยวกับวิธีใช้เครื่องอ่าน RFID กับ Arduino เพื่อสร้างระบบล็อคอย่างง่าย ในแง่ง่าย- ล็อคอาร์เอฟไอดี

RFID (อังกฤษ. การระบุความถี่วิทยุ, การระบุความถี่วิทยุ) เป็นวิธีการระบุอัตโนมัติของวัตถุซึ่งข้อมูลที่เก็บไว้ในช่องสัญญาณที่เรียกว่าหรือแท็ก RFID จะถูกอ่านหรือเขียนโดยใช้สัญญาณวิทยุ ระบบ RFID ใดๆ ประกอบด้วยเครื่องอ่าน (เครื่องอ่าน เครื่องอ่าน หรือเครื่องสอบปากคำ) และช่องสัญญาณ (หรือที่เรียกว่าแท็ก RFID ซึ่งบางครั้งใช้คำว่าแท็ก RFID ด้วย)

บทช่วยสอนนี้จะใช้แท็ก RFID กับ Arduino อุปกรณ์อ่านตัวระบุที่ไม่ซ้ำกัน (UID) ของแท็ก RFID แต่ละรายการที่เราวางไว้ข้างเครื่องอ่านและแสดงบนจอแสดงผล OLED หาก UID ของแท็กเท่ากับค่าที่กำหนดไว้ล่วงหน้าซึ่งจัดเก็บไว้ในหน่วยความจำ Arduino เราจะเห็นข้อความ "ปลดล็อก" บนหน้าจอ หากตัวระบุที่ไม่ซ้ำไม่เท่ากับค่าที่กำหนดไว้ล่วงหน้า ข้อความ "ปลดล็อกแล้ว" จะไม่ปรากฏขึ้น - ดูรูปด้านล่าง

ปราสาทถูกปิด

ปราสาทเปิดแล้ว

รายละเอียดที่จำเป็นในการสร้างโครงการนี้:

  • เครื่องอ่าน RFID RC522
  • จอแสดงผล OLED
  • เขียงหั่นขนม
  • สายไฟ

รายละเอียดเพิ่มเติม:

  • แบตเตอรี่ (พาวเวอร์แบงค์)

ต้นทุนรวมของส่วนประกอบโครงการอยู่ที่ประมาณ 15 เหรียญ

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

แท็ก RFID แต่ละอันมีชิปขนาดเล็ก (ในภาพ) การ์ดสีขาว). หากคุณเล็งไฟฉายไปที่การ์ด RFID นี้ คุณจะเห็นเศษเล็กๆ และขดลวดที่อยู่รอบๆ การ์ด ชิปนี้ไม่มีแบตเตอรี่เพื่อสร้างพลังงาน รับพลังงานจากเครื่องอ่านแบบไร้สายโดยใช้สิ่งนี้ ม้วนใหญ่. สามารถอ่านบัตร RFID แบบนี้ได้จากระยะสูงสุด 20 มม.

มีชิปตัวเดียวกันอยู่ในแท็ก fob คีย์ RFID

แท็ก RFID แต่ละรายการมีหมายเลขเฉพาะที่ระบุ นี่คือ UID ที่แสดงบนจอแสดงผล OLED ยกเว้น UID นี้ แต่ละแท็กสามารถเก็บข้อมูลได้ การ์ดประเภทนี้สามารถเก็บข้อมูลได้มากถึง 1,000 ข้อมูล น่าประทับใจใช่มั้ย คุณลักษณะนี้จะไม่ถูกใช้งานในวันนี้ ทุกวันนี้ สิ่งที่น่าสนใจคือการระบุบัตรเฉพาะโดยใช้ UID เครื่องอ่าน RFID และการ์ด RFID สองใบนี้มีราคาประมาณ 4 เหรียญ

ขั้นตอนที่ 3จอแสดงผล OLED

บทช่วยสอนนี้ใช้จอภาพ OLED ขนาด 0.96" 128x64 I2C

นี่เป็นจอแสดงผลที่ดีมากสำหรับใช้กับ Arduino เป็นจอแสดงผล OLED และนั่นหมายความว่ามีการใช้พลังงานต่ำ การใช้พลังงานของจอแสดงผลนี้อยู่ที่ประมาณ 10-20mA และขึ้นอยู่กับจำนวนพิกเซล

จอแสดงผลมีความละเอียด 128 x 64 พิกเซลและมีขนาดเล็ก มีสองตัวเลือกการแสดงผล หนึ่งคือขาวดำ และอีกอัน เช่นเดียวกับที่ใช้ในบทช่วยสอน สามารถแสดงสองสี: สีเหลืองและสีน้ำเงิน ส่วนบนหน้าจอต้องเป็นสีเหลืองเท่านั้นและ ส่วนล่าง- สีฟ้า.

จอแสดงผล OLED นี้สว่างมากและมีคลังที่ยอดเยี่ยมและดีมากที่ Adafruit ได้พัฒนาขึ้นสำหรับจอแสดงผลนี้ นอกจากนี้ จอภาพยังใช้อินเทอร์เฟซ I2C ดังนั้นการเชื่อมต่อกับ Arduino เป็นเรื่องง่ายอย่างเหลือเชื่อ

คุณต้องเชื่อมต่อสายไฟสองเส้นเท่านั้น ยกเว้น Vcc และ GND หากคุณเพิ่งเริ่มใช้ Arduino และต้องการใช้จอแสดงผลราคาไม่แพงและเรียบง่ายในโครงการของคุณ นี่คือจุดเริ่มต้น

ขั้นตอนที่ 4: ประกอบชิ้นส่วนทั้งหมดเข้าด้วยกัน

มีอะไรให้อ่านอีกบ้าง