ในบทนี้ เราจะได้เรียนรู้วิธีสร้างระบบง่ายๆ ที่จะปลดล็อคโดยใช้กุญแจอิเล็กทรอนิกส์ (Tag)
ในอนาคตคุณสามารถปรับแต่งและขยายฟังก์ชันการทำงานได้ ตัวอย่างเช่น เพิ่มฟังก์ชัน "การเพิ่มคีย์ใหม่และลบออกจากหน่วยความจำ" ในกรณีพื้นฐาน ลองพิจารณาตัวอย่างง่ายๆ ที่มีการตั้งค่าตัวระบุคีย์เฉพาะไว้ล่วงหน้าในโค้ดโปรแกรม
ในบทช่วยสอนนี้เราจะต้อง:
ในการดำเนินโครงการเราจำเป็นต้องติดตั้งไลบรารี:
2) ตอนนี้คุณต้องเชื่อมต่อ Buzzer ซึ่งจะส่งเสียงสัญญาณหากกุญแจทำงานและล็อคเปิดอยู่ และสัญญาณที่สองเมื่อล็อคปิด
เราเชื่อมต่อออดตามลำดับต่อไปนี้:
อาร์ดูโน่ | ออด |
---|---|
5V | วีซีซี |
จีเอ็นดี | จีเอ็นดี |
พิน 5 | ไอโอ |
3) เซอร์โวไดรฟ์จะถูกใช้เป็นกลไกการปลดล็อค สามารถเลือกเซอร์โวไดรฟ์ใดก็ได้ ขึ้นอยู่กับขนาดที่คุณต้องการและแรงที่เซอร์โวไดรฟ์สร้างขึ้น เซอร์โวมีผู้ติดต่อ 3 ราย:
คุณสามารถดูได้ชัดเจนยิ่งขึ้นว่าเราเชื่อมต่อโมดูลทั้งหมดอย่างไรในภาพด้านล่าง:
ตอนนี้หากทุกอย่างเชื่อมต่อกันแล้ว คุณสามารถดำเนินการเขียนโปรแกรมต่อได้
ร่าง:
#รวม
มาดูภาพร่างโดยละเอียดเพิ่มเติม:
ในการค้นหา UID ของการ์ด (แท็ก) คุณต้องเขียนแบบร่างนี้ลงใน Arduino ประกอบวงจรที่อธิบายไว้ด้านบนแล้วเปิดคอนโซล (การตรวจสอบพอร์ตอนุกรม) เมื่อคุณสัมผัสแท็ก RFID คอนโซลจะแสดงตัวเลข
ต้องป้อน UID ผลลัพธ์ในบรรทัดต่อไปนี้:
ถ้า (uidDec == 3763966293) // เปรียบเทียบ Uid ของแท็ก ถ้ามันเท่ากับอันที่กำหนด เซอร์โวไดรฟ์จะเปิดวาล์ว
การ์ดแต่ละใบมีตัวระบุที่ไม่ซ้ำกันและไม่มีการซ้ำกัน ดังนั้นเมื่อคุณแสดงการ์ดที่คุณกำหนดตัวระบุไว้ในโปรแกรม ระบบจะเปิดการเข้าถึงโดยใช้เซอร์โวไดรฟ์
วิดีโอ:
เช่นเดียวกับคนส่วนใหญ่ที่มีหนึ่งเชื่อมโยงกระท่อมกับคำว่า: การผ่อนคลายบาร์บีคิวความสะดวกสบายและการเคลื่อนไหวที่น่าพึงพอใจอื่น ๆ สำหรับจิตวิญญาณและร่างกาย แต่ก็มีข้อเสียเช่นกัน: การทำสวน การขุด การซ่อมแซม การก่อสร้าง ฯลฯ
เป็นเวลา 10 ปีที่ครอบครัวของฉันและฉันพยายามปรับปรุงและสร้างความสะดวกสบายสูงสุดในบ้านเดชาของเรา เราสร้าง ซ่อมแซม ฯลฯ บ้าน โรงนา โรงอาบน้ำ…..และในที่สุดก็มาถึงรั้วถนน ประตู และประตูรั้ว ทำเช่นนี้ตามมโนธรรม งบประมาณ และความสะดวก
หลังจากหารือในรายละเอียดบางอย่างแล้ว ก็ตัดสินใจว่าประตูควรเป็นแบบอัตโนมัติ และประตูควรมีคุณสมบัติบางอย่างของระบบควบคุมการเข้าออก เมื่อใช้เกต ปัญหาได้รับการแก้ไขโดยการซื้อชุดระบบอัตโนมัติ (ไดรฟ์ ชั้นวาง รีโมทคอนโทรล ฯลฯ) แต่เมื่อใช้เกต จำเป็นต้องแก้ไขปัญหาบางอย่าง โปรดดูข้อมูลเพิ่มเติมด้านล่าง
งานมีดังต่อไปนี้:
การค้นหาใน RuNet นำเสนอช่วงราคาต่อไปนี้ตั้งแต่ 7,000 ถึงอนันต์ การซื้อโซลูชันสำเร็จรูปไม่จำเป็นอีกต่อไป และเกิดทางเลือกที่เป็นไปได้มากมาย กล่าวคือ การตัดประตูด้วยตัวเอง!
หลังจากการคำนวณและการคำนวณบางอย่างแล้วก็ตัดสินใจซื้อล็อคระบบเครื่องกลไฟฟ้าราคาประมาณ 2,000 รูเบิล แป้นพิมพ์กันน้ำราคา 350 รูเบิล และไมโครคอนโทรลเลอร์ที่จะขับมาที่นี่ เนื่องจากมีบอร์ด Arduino nano รีเลย์และชิ้นส่วนหลวมและสายไฟบางอันหลายตัว ความแตกต่างระหว่างราคาของชุดอุปกรณ์สำเร็จรูปจึงมากกว่า 4,000 รูเบิล สำหรับฉัน มันเป็นโบนัสที่ยอดเยี่ยมสำหรับกระเป๋าเงินของคุณและการพัฒนาตนเอง
ตอนนี้จากคำพูดสู่การกระทำ:
หลังจากซื้อส่วนประกอบที่จำเป็นทั้งหมดแล้ว ฉันก็เริ่มเลื่อย
แผนภาพการเชื่อมต่อคีย์บอร์ด
ไฟ LED แสดงสถานะเพิ่มเติม (สีขาว, สีเขียว, สีแดง) ของสัญญาณแผงปุ่มกด (อินพุต, รหัสผ่านที่ถูกต้อง, ประตูเปิด, ถูกปฏิเสธ)
แผง (ตาราง) ทำจากลูกแก้ว ตัดเป็นกล่องช็อคโกแลต และเพื่อนบ้านในออฟฟิศยิ้ม แต่คัตเตอร์ที่เล็กที่สุดกลับอ้วนขึ้นเล็กน้อยดังนั้นฉันจึงต้องทำงานกับตะไบเข็ม
มันเป็นวันหยุดสุดสัปดาห์ฉันไปเดชา
หากต้องการเปิดล็อคแบบเครื่องกลไฟฟ้า คุณต้องมี 12 V. แหล่งจ่ายไฟที่จ่าย MK คือ 5 V การตัดสินใจคือการติดตั้งตัวแปลง dc-dc บูสต์จากอาณาจักรกลางสำหรับปราสาท ฉันเชื่อมต่อทุกอย่างและเริ่มตรวจสอบ มันใช้งานได้ แต่เมื่อแรงดันไฟฟ้าถูกจ่ายไปที่โซลินอยด์ล็อค Dunya จะรีบูทใหม่ ส่งผลให้แหล่งจ่ายไฟลัดวงจร ยิ่งไปกว่านั้น หลังจากเชื่อมต่อแผงการโทรจากวิดีโออินเตอร์คอมเข้ากับล็อคแล้ว เมื่อคุณกดปุ่มเพื่อเปิดประตู ก็ไม่มีอะไรเกิดขึ้น มีกระแสไฟฟ้าเล็กน้อยไปที่ตัวล็อค การเดินสายไฟใหม่ไม่ใช่ทางเลือก แต่ได้ปูคอนกรีตไว้ที่ทางออกจากบ้านแล้ว ฉันตัดสินใจเพิ่มรีเลย์อีกอันสำหรับแผงควบคุมและติดตั้งแหล่งจ่ายไฟ 12 V เพิ่มเติม สำหรับปราสาท หลังจากแยกวิเคราะห์/ประกอบ ทุกอย่างทำงานได้ MK หยุดการรีบูต ฉันซ่อนของทั้งหมดไว้ในกล่องรวมสัญญาณกันความชื้น ซ่อนสายไฟ กาว ซิลิโคน แล้วก็พร้อม!
ขอแนะนำล็อคประตูที่ควบคุมด้วยปุ่ม RF
ล็อคทำงานดังนี้: แสดงกุญแจของเรา (แท็ก RFID) - ล็อคปิด, แสดงกุญแจอีกครั้ง - ล็อคเปิด เพื่อให้เห็นภาพการทำงานของล็อค มีการใช้ไฟ LED สองสี (เส้น) จำนวน 6 ดวง เมื่อปิดไฟสีแดงจะกะพริบ เมื่อเปิดไฟสีเขียวจะกะพริบ หากคุณนำกุญแจของคนอื่นมา ไฟ LED สีแดงจะกะพริบ
“เครื่องจักร” ถูกควบคุมด้วยสายไฟสองเส้น ขั้วหนึ่งยืดก้านออก ขั้วกลับขั้วดึงก้านกลับ ที่แรงดันไฟฟ้า 12 โวลต์ กระแสไฟฟ้า 6 แอมแปร์ มาก...
ไม่มีลิมิตสวิตช์ใน "เครื่องจักร"
จากข้อเท็จจริงที่ว่าวงจรล็อค (ตามการออกแบบ) มีแหล่งจ่ายไฟที่รับประกัน แบตเตอรี่จะมีขนาด 12 โวลต์ เพื่อให้มั่นใจในการทำงานของล็อค ในกรณีที่ไฟฟ้าดับ ~220 โวลต์ พัฒนาวงจรควบคุมบริดจ์สำหรับ “เครื่องจักร” คุณสมบัติพิเศษของวงจรคือความไม่เชิงเส้นซึ่งช่วยให้มั่นใจได้ถึงการทำงานที่เชื่อถือได้ของกลไกการล็อคและในขณะเดียวกันก็การทำงานที่นุ่มนวลของ "เครื่องจักร" และทรานซิสเตอร์หลัก
ในแผนภาพ (ด้านบน) แขน “ปิด” จะถูกเน้นด้วยสีแดง และแขน “เปิด” จะถูกเน้นด้วยสีเขียว แขนได้รับพลังงานแยกจากกันผ่านตัวต้านทาน (อยู่ในแหล่งจ่ายไฟ) มีการนำการแยกกำลังของแขนสะพานเพื่อกำจัดผลบวกลวง
คำอธิบาย: ผ่านตัวต้านทาน 33 โอห์ม (ในแผนภาพแหล่งจ่ายไฟ) แรงดันไฟฟ้า 12 โวลต์จะชาร์จตัวเก็บประจุ (2000-μF ในแต่ละแขน) เมื่อแรงดันไฟฟ้าควบคุมมาถึงจากคอนโทรลเลอร์ Arduino_ProMini 168
ไปที่อินพุต "ปิด" (หรือคล้ายกับ "เปิด") ผ่านออปโตคัปเปลอร์ PVT322 - แขนกุญแจที่เกี่ยวข้องจะเปิดขึ้น ในกรณีนี้สิ่งต่อไปนี้จะเกิดขึ้น: ในขณะที่เปิดกุญแจพลังงานจากตัวเก็บประจุจะ "ดึง" มอเตอร์ของ "เครื่องจักร" อย่างมีพลัง เมื่อตัวเก็บประจุคายประจุ (สิ่งนี้เกิดขึ้นอย่างรวดเร็ว) มอเตอร์ของ "เครื่องจักร" จะถูกขับเคลื่อนโดยกระแสที่จำกัดโดยตัวต้านทาน (33 โอห์ม) ด้วยเหตุนี้เมื่อสิ้นสุดกระบวนการ "ปิด" - "เปิด" ล็อคแกนจึงเคลื่อนที่ค่อนข้างช้า
วิธีการควบคุมเครื่องยนต์นี้เหมาะสมที่สุด
วงจรจ่ายไฟเป็นหม้อแปลงไฟฟ้า โดยทั่วไป วงจรล็อคจะใช้พลังงานจากแบตเตอรี่ 12 โวลต์ 2.8 Ah และวงจรจ่ายไฟจะรักษาแบตเตอรี่ให้อยู่ในระดับที่กำหนด ไฟ LED แสดงการทำงานบ่งชี้การทำงานปกติของแหล่งจ่ายไฟ
ไดโอดทั้งหมดคือ 1N4007 (ฉันลืมระบุบนแผนภาพและมีคนถามคำถาม - อันไหน?)
(1)
มีการประกอบเครื่องจำกัดกระแสไฟฟ้าสูงสุดแล้ว ตัวต้านทานอาร์ 1
เกณฑ์กระแสบนตั้งไว้ที่ 300 mA
บนโคลงแบบรวม LM317 (2)
ประกอบตัวปรับแรงดันไฟฟ้า แรงดันไฟฟ้าเสถียรภาพจะถูกปรับโดยตัวต้านทานร 2
- แรงดันไฟฟ้าของแบตเตอรี่ควรเป็น 13.7 โวลต์
แรงดันไฟฟ้าจากแบตเตอรี่จ่ายไปสามจุด
ผ่านตัวต้านทาน (ตัวละ 33 โอห์ม) บน (X), (Y) - แหล่งจ่ายไฟไปที่แขนของปุ่ม "ไดรเวอร์" ของมอเตอร์ "เครื่องจักร"
ฉันประกอบอุปกรณ์ส่วนใหญ่ของฉันจากสิ่งที่ได้รับ โครงการนี้ก็ไม่มีข้อยกเว้น ฉันใช้ตัวเรือนเป็นที่อยู่อาศัย :) จากบัลลาสต์อิเล็กทรอนิกส์:
LEDs No.-2 ... No.-7 เป็นแบบสองสี พวกเขาอยู่ในแถว ใช้เพื่อแสดงภาพกระบวนการ “เปิด” และ “ปิด” ล็อค การจัดแต่ง.
ความคืบหน้าไม่หยุดนิ่งและ "ล็อคอัจฉริยะ" ปรากฏมากขึ้นที่ประตูอพาร์ทเมนต์ โรงรถ และบ้านเรือน
ล็อคที่คล้ายกันจะเปิดขึ้นเมื่อคุณกดปุ่มบนสมาร์ทโฟนของคุณ โชคดีที่สมาร์ทโฟนและแท็บเล็ตเข้ามาในชีวิตประจำวันของเราแล้ว ในบางกรณี “ล็อคอัจฉริยะ” เชื่อมต่อกับ “บริการคลาวด์” เช่น Google Drive และเปิดจากระยะไกล นอกจากนี้ตัวเลือกนี้ยังช่วยให้ผู้อื่นสามารถเข้าถึงการเปิดประตูได้
โปรเจ็กต์นี้จะใช้สมาร์ทล็อคเวอร์ชัน DIY บน Arduino ซึ่งสามารถควบคุมจากระยะไกลได้จากทุกที่ในโลก
นอกจากนี้โครงการยังได้เพิ่มความสามารถในการเปิดล็อคหลังจากระบุลายนิ้วมือแล้ว เพื่อจุดประสงค์นี้ เซ็นเซอร์ลายนิ้วมือจะถูกรวมเข้าด้วยกัน ตัวเลือกการเปิดประตูทั้งสองแบบจะขับเคลื่อนโดยแพลตฟอร์ม Adafruit IO
การล็อคแบบนี้อาจเป็นก้าวแรกที่ยอดเยี่ยมในโครงการสมาร์ทโฮมของคุณ
ในการทำงานกับเซ็นเซอร์ลายนิ้วมือมีไลบรารี่ที่ยอดเยี่ยมสำหรับ Arduino ซึ่งช่วยให้กระบวนการตั้งค่าเซ็นเซอร์ง่ายขึ้นอย่างมาก โปรเจ็กต์นี้ใช้ Arduino Uno บอร์ด Adafruit CC3000 ใช้สำหรับเชื่อมต่ออินเทอร์เน็ต
เริ่มต้นด้วยการเชื่อมต่อพลังงาน:
มาดูการเชื่อมต่อเซ็นเซอร์ลายนิ้วมือกัน:
ตอนนี้เรามาดูโมดูล CC3000 กันดีกว่า:
ในตอนท้ายคุณต้องจ่ายไฟ: Vin - ไปยัง Arduino 5V (รางสีแดงบนแผงวงจรของคุณ) และ GND ถึง GND (รางสีน้ำเงินบนเขียงหั่นขนม)
ภาพของโครงการที่ประกอบเสร็จแล้วแสดงอยู่ด้านล่าง:
ก่อนที่จะพัฒนาภาพร่างที่จะโหลดข้อมูลไปยัง Adafruit IO คุณต้องถ่ายโอนข้อมูลเกี่ยวกับลายนิ้วมือของคุณไปยังเซ็นเซอร์ก่อน ไม่เช่นนั้นเขาจะจำคุณไม่ได้ในอนาคต;) เราขอแนะนำให้ปรับเทียบเซ็นเซอร์ลายนิ้วมือโดยใช้ Arduino แยกต่างหาก หากนี่เป็นครั้งแรกที่คุณใช้งานเซ็นเซอร์นี้ เราขอแนะนำให้คุณทำความคุ้นเคยกับกระบวนการสอบเทียบและคำแนะนำโดยละเอียดสำหรับการทำงานกับเซ็นเซอร์ลายนิ้วมือ
หากคุณยังไม่ได้ดำเนินการ โปรดสร้างบัญชีกับ Adafruit IO
หลังจากนี้ เราจะก้าวไปสู่ขั้นตอนต่อไปของการพัฒนา "ล็อคอัจฉริยะ" บน Arduino กล่าวคือ การพัฒนาแบบร่างที่จะส่งข้อมูลไปยัง Adafruit IO เนื่องจากโปรแกรมมีขนาดค่อนข้างใหญ่ ในบทความนี้ เราจะเน้นและพิจารณาเฉพาะส่วนหลักของโปรแกรม จากนั้นเราจะให้ลิงก์ไปยัง GitHub ซึ่งคุณสามารถดาวน์โหลดภาพร่างฉบับเต็มได้
ร่างเริ่มต้นด้วยการโหลดไลบรารีที่จำเป็นทั้งหมด:
#รวม
#รวม
#รวม
#รวม "Adafruit_MQTT.h"
#รวม "Adafruit_MQTT_CC3000.h"
#รวม
#รวม
หลังจากนี้คุณจะต้องแก้ไขภาพร่างเล็กน้อยโดยใส่พารามิเตอร์ของเครือข่าย WiFi ของคุณโดยระบุ SSID และรหัสผ่าน:
#กำหนด WLAN_SECURITY WLAN_SEC_WPA2>
นอกจากนี้ คุณต้องป้อนชื่อและรหัส AIO ของคุณเพื่อเข้าสู่บัญชี Adafruit IO ของคุณ:
#กำหนด AIO_SERVERPORT 1883
#กำหนด AIO_USERNAME "adafruit_io_name"
#กำหนด AIO_KEY "adafruit_io_key">
บรรทัดต่อไปนี้มีหน้าที่รับผิดชอบในการโต้ตอบและประมวลผลข้อมูลจากเซ็นเซอร์ลายนิ้วมือ หากเซ็นเซอร์ถูกเปิดใช้งาน (ลายนิ้วมือตรงกัน) จะมี "1":
const ถ่าน FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/fingerprint";
ลายนิ้วมือ Adafruit_MQTT_Publish = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);
นอกจากนี้ เราจำเป็นต้องสร้างอินสแตนซ์ของวัตถุ SoftwareSerial สำหรับเซ็นเซอร์ของเรา:
ซอฟต์แวร์อนุกรม mySerial(3, 4);
หลังจากนี้เราสามารถสร้างวัตถุสำหรับเซ็นเซอร์ของเราได้:
นิ้ว Adafruit_Fingerprint = Adafruit_Fingerprint(&mySerial);
ภายในภาพร่าง เราระบุว่า ID นิ้วใดควรเปิดใช้งานการล็อคในอนาคต ตัวอย่างนี้ใช้ 0 ซึ่งสอดคล้องกับ ID ของลายนิ้วมือแรกที่เซ็นเซอร์ใช้:
รหัสนิ้ว int = 0;
หลังจากนี้ เราจะเริ่มต้นตัวนับและทำให้โปรเจ็กต์ของเราล่าช้า โดยพื้นฐานแล้ว เราต้องการให้ล็อคทำงานโดยอัตโนมัติเมื่อเปิดแล้ว ตัวอย่างนี้ใช้การหน่วงเวลา 10 วินาที แต่คุณสามารถปรับค่านี้ให้เหมาะกับความต้องการของคุณได้:
การเปิดใช้งาน intCounter = 0;
int การเปิดใช้งานครั้งล่าสุด = 0;
เวลาเปิดใช้งาน int = 10 * 1,000;
ในส่วนเนื้อหาของฟังก์ชัน setup() เราจะเริ่มต้นเซ็นเซอร์ลายนิ้วมือและตรวจสอบให้แน่ใจว่าชิป CC3000 เชื่อมต่อกับเครือข่าย WiFi ของคุณ
ในเนื้อความของฟังก์ชัน loop() เราเชื่อมต่อกับ Adafruit IO บรรทัดต่อไปนี้รับผิดชอบสิ่งนี้:
หลังจากเชื่อมต่อกับแพลตฟอร์ม Adafruit IO เราจะตรวจสอบลายนิ้วมือสุดท้าย หากตรงกันและไม่ได้เปิดใช้งานการล็อค เราจะส่ง "1" ไปที่ Adafruit IO เพื่อประมวลผล:
ถ้า (รหัสลายนิ้วมือ == รหัสลายนิ้วมือ && lockState == เท็จ) (
Serial.println(F("ได้รับสิทธิ์การเข้าถึงแล้ว!"));
lockState = จริง;
Serial.println(F("ล้มเหลว"));
Serial.println(F("ตกลง!"));
LastActivation = มิลลิวินาที();
หากภายในฟังก์ชัน loop() มีการเปิดใช้งานการล็อคและเราถึงค่าการหน่วงเวลาที่ระบุไว้ข้างต้นแล้ว เราจะส่ง "0":
ถ้า ((activationCounter - LastActivation > การเปิดใช้งาน) && lockState == จริง) (
lockState = เท็จ;
ถ้า (! ลายนิ้วมือเผยแพร่ (สถานะ)) (
Serial.println(F("ล้มเหลว"));
Serial.println(F("ตกลง!"));
คุณสามารถดาวน์โหลดโค้ดเวอร์ชันล่าสุดได้ที่ GitHub
ถึงเวลาทดสอบโครงการของเราแล้ว! อย่าลืมดาวน์โหลดและติดตั้งไลบรารี่ที่จำเป็นทั้งหมดสำหรับ Arduino!
ตรวจสอบให้แน่ใจว่าคุณได้ทำการเปลี่ยนแปลงที่จำเป็นทั้งหมดกับร่างและอัปโหลดไปยัง Arduino ของคุณ หลังจากนั้นให้เปิดหน้าต่าง Serial Monitor
เมื่อ Arduino เชื่อมต่อกับเครือข่าย WiFi เซ็นเซอร์ลายนิ้วมือจะเริ่มกะพริบเป็นสีแดง วางนิ้วของคุณบนเซ็นเซอร์ ควรแสดงหมายเลข ID ในหน้าต่างมอนิเตอร์แบบอนุกรม หากตรงกัน ข้อความ "ตกลง!" จะปรากฏขึ้น ซึ่งหมายความว่าข้อมูลได้ถูกส่งไปยังเซิร์ฟเวอร์ Adafruit IO แล้ว
ตอนนี้เรามาดูส่วนของโครงการที่รับผิดชอบโดยตรงในการควบคุมล็อคประตูกัน หากต้องการเชื่อมต่อกับเครือข่ายไร้สายและเปิดใช้งาน/ปิดใช้งานการล็อค คุณจะต้องมีโมดูล Adafruit ESP8266 เพิ่มเติม (โมดูล ESP8266 ไม่จำเป็นต้องมาจาก Adafruit) จากตัวอย่างด้านล่าง คุณสามารถประเมินความง่ายในการแลกเปลี่ยนข้อมูลระหว่างสองแพลตฟอร์ม (Arduino และ ESP8266) โดยใช้ Adafruit IO
ในส่วนนี้เราจะไม่ทำงานโดยตรงกับการล็อค แต่เราจะเชื่อมต่อ LED เข้ากับพินที่จะเชื่อมต่อล็อคในภายหลังแทน นี่จะทำให้เรามีโอกาสทดสอบโค้ดของเราโดยไม่ต้องเจาะลึกรายละเอียดของการออกแบบตัวล็อค
รูปแบบค่อนข้างง่าย: ก่อนอื่นให้ติดตั้ง ESP8266 บนเขียงหั่นขนม หลังจากนั้นให้ติดตั้ง LED อย่าลืมว่าขายาว (บวก) ของ LED เชื่อมต่อผ่านตัวต้านทาน ขาที่สองของตัวต้านทานเชื่อมต่อกับพิน 5 บนโมดูล ESP8266 เราเชื่อมต่อ LED ตัวที่สอง (แคโทด) เข้ากับพิน GND บน ESP8266
วงจรที่ประกอบเสร็จสมบูรณ์แสดงไว้ในภาพด้านล่าง
ตอนนี้เรามาดูแบบร่างที่เราใช้สำหรับโปรเจ็กต์นี้ ขอย้ำอีกครั้งว่าโค้ดมีขนาดค่อนข้างใหญ่และซับซ้อน ดังนั้นเราจะดูเฉพาะส่วนหลักเท่านั้น:
เราเริ่มต้นด้วยการเชื่อมต่อไลบรารีที่จำเป็น:
#รวม
#รวม "Adafruit_MQTT.h"
#รวม "Adafruit_MQTT_Client.h"
การกำหนดการตั้งค่า WiFi:
#กำหนด WLAN_SSID "your_wifi_ssid"
#กำหนด WLAN_PASS "your_wifi_password"
#กำหนด WLAN_SECURITY WLAN_SEC_WPA2
เรายังกำหนดค่าพารามิเตอร์ Adafruit IO อีกด้วย เช่นเดียวกับในส่วนก่อนหน้า:
#define AIO_SERVER "io.adafruit.com"
#กำหนด AIO_SERVERPORT 1883
#กำหนด AIO_USERNAME "adafruit_io_username"
#กำหนด AIO_KEY "adafruit_io_key"
เราระบุว่าเราเชื่อมต่อ LED กับพินใด (ในอนาคตนี่จะเป็นล็อคหรือรีเลย์ของเรา):
อินท์รีเลย์พิน = 5;
การโต้ตอบกับเซ็นเซอร์ลายนิ้วมือ ดังเช่นในส่วนก่อนหน้า:
const ถ่าน LOCK_FEED PROGMEM = AIO_USERNAME "/feeds/lock";
Adafruit_MQTT_สมัครสมาชิกล็อค = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);
ในส่วนเนื้อหาของฟังก์ชัน setup() เราระบุว่าพินที่ LED เชื่อมต่ออยู่ควรทำงานในโหมด OUTPUT:
pinMode(รีเลย์พิน, เอาท์พุต);
ภายในลูป loop() เราจะตรวจสอบก่อนว่าเราเชื่อมต่อกับ Adafruit IO หรือไม่:
หลังจากนี้เราจะตรวจสอบว่ารับสัญญาณอะไรอยู่ หากส่ง "1" เราจะเปิดใช้งานพินที่เราประกาศไว้ก่อนหน้านี้ซึ่ง LED ของเราเชื่อมต่ออยู่ หากเราได้รับ "0" เราจะโอนผู้ติดต่อไปที่สถานะ "ต่ำ":
Adafruit_MQTT_สมัครสมาชิก *สมัครสมาชิก;
ในขณะที่ ((สมัครสมาชิก = mqtt.readSubscription(1,000))) (
ถ้า (สมัครสมาชิก == &ล็อค) (
Serial.print(F("ได้: "));
Serial.println((ถ่าน *)lock.lastread);
// บันทึกคำสั่งลงในข้อมูลสตริง
คำสั่ง String = String((char *)lock.lastread);
ถ้า (คำสั่ง == "0") (
digitalWrite (รีเลย์พิน, ต่ำ);
ถ้า (คำสั่ง == "1") (
digitalWrite (รีเลย์พิน, สูง);
คุณสามารถค้นหาสเก็ตช์เวอร์ชันล่าสุดได้บน GitHub
ถึงเวลาทดสอบโครงการของเราแล้ว อย่าลืมดาวน์โหลดไลบรารีที่จำเป็นทั้งหมดสำหรับ Arduino ของคุณ และตรวจสอบว่าคุณได้ทำการเปลี่ยนแปลงร่างที่ถูกต้องหรือไม่
หากต้องการตั้งโปรแกรมชิป ESP8266 คุณสามารถใช้ตัวแปลง USB-FTDI แบบธรรมดาได้
อัปโหลดภาพร่างไปยัง Arduino และเปิดหน้าต่าง Serial Monitor ในขั้นตอนนี้ เราเพียงแค่ตรวจสอบว่าเราสามารถเชื่อมต่อกับ Adafruit IO ได้หรือไม่: เราจะดูฟังก์ชันการทำงานที่ใช้งานได้ต่อไป
ตอนนี้เรามาเริ่มการทดสอบกันดีกว่า! ไปที่เมนูผู้ใช้ของ Adafruit IO ใต้เมนูฟีด ตรวจสอบว่าสร้างลายนิ้วมือและช่องล็อคหรือไม่ (ในหน้าจอการพิมพ์ด้านล่างคือเส้นลายนิ้วมือและล็อค):
หากไม่มี คุณจะต้องสร้างมันขึ้นมาด้วยตนเอง
ตอนนี้เราต้องแน่ใจว่ามีการแลกเปลี่ยนข้อมูลระหว่างลายนิ้วมือและช่องล็อค ช่องล็อคต้องใช้ค่า "1" เมื่อช่องลายนิ้วมือรับค่า "1" และในทางกลับกัน
ในการดำเนินการนี้ เราใช้เครื่องมือ Adafruit IO ที่ทรงพลังมาก: ทริกเกอร์ ทริกเกอร์เป็นเงื่อนไขหลักที่คุณสามารถนำไปใช้กับช่องที่กำหนดค่าได้ นั่นคือสามารถใช้เพื่อเชื่อมต่อระหว่างสองช่องสัญญาณได้
สร้างทริกเกอร์เชิงโต้ตอบใหม่จากส่วนทริกเกอร์ใน Adafruit IO ซึ่งจะให้ความสามารถในการแลกเปลี่ยนข้อมูลระหว่างเซ็นเซอร์ลายนิ้วมือและช่องล็อค:
นี่คือสิ่งที่ควรมีลักษณะเช่นนี้เมื่อมีการกำหนดค่าทริกเกอร์ทั้งสอง:
ทั้งหมด! ตอนนี้เราสามารถทดสอบโครงการของเราได้แล้ว! เราวางนิ้วบนเซ็นเซอร์และดูว่า Arduino เริ่มกระพริบตาด้วย LED ที่สอดคล้องกับการส่งข้อมูลได้อย่างไร หลังจากนั้นไฟ LED บนโมดูล ESP8266 ควรเริ่มกระพริบ ซึ่งหมายความว่าได้เริ่มรับข้อมูลผ่าน MQTT แล้ว ไฟ LED บนแผงวงจรควรเปิดขึ้นในขณะนี้
หลังจากการหน่วงเวลาที่คุณกำหนดไว้ในแบบร่าง (ค่าเริ่มต้นคือ 10 วินาที) ไฟ LED จะดับลง ยินดีด้วย! คุณสามารถควบคุม LED ด้วยลายนิ้วมือของคุณได้จากทุกที่ในโลก!
เรามาถึงส่วนสุดท้ายของโครงการแล้ว: เชื่อมต่อและควบคุมล็อคอิเล็กทรอนิกส์โดยตรงโดยใช้ Arduino และเซ็นเซอร์ลายนิ้วมือ โครงการไม่ใช่เรื่องง่ายคุณสามารถใช้แหล่งที่มาทั้งหมดในรูปแบบที่แสดงไว้ด้านบนได้ แต่เชื่อมต่อรีเลย์แทน LED
ในการเชื่อมต่อล็อคโดยตรงคุณจะต้องมีส่วนประกอบเพิ่มเติม: แหล่งจ่ายไฟ 12 V, แจ็คสำหรับเชื่อมต่อพลังงาน, ทรานซิสเตอร์ (ในตัวอย่างนี้ใช้ IRLB8721PbF MOSFET แต่คุณสามารถใช้อันอื่นได้เช่นทรานซิสเตอร์สองขั้ว TIP102 หากคุณใช้ทรานซิสเตอร์แบบไบโพลาร์ คุณจะต้องเพิ่มตัวต้านทาน
ด้านล่างนี้เป็นแผนภาพไฟฟ้าสำหรับเชื่อมต่อส่วนประกอบทั้งหมดเข้ากับโมดูล ESP8266:
โปรดทราบว่าหากคุณใช้ทรานซิสเตอร์ MOSFET คุณไม่จำเป็นต้องมีตัวต้านทานระหว่างพิน 5 ของโมดูล ESP8266 กับทรานซิสเตอร์
โครงการที่ประกอบเสร็จสมบูรณ์แสดงไว้ในภาพด้านล่าง:
จ่ายไฟให้กับโมดูล ESP8266 โดยใช้โมดูล FTDI และเชื่อมต่อแหล่งจ่ายไฟ 12V เข้ากับแจ็ค หากคุณใช้หมุดที่แนะนำข้างต้นในการเชื่อมต่อ คุณจะไม่ต้องเปลี่ยนแปลงอะไรในภาพร่าง
ตอนนี้คุณสามารถวางนิ้วของคุณบนเซ็นเซอร์ได้แล้ว: ล็อคควรจะทำงานเพื่อตอบสนองต่อลายนิ้วมือของคุณ วิดีโอด้านล่างแสดงการทำงานของโครงการล็อคอัจฉริยะอัตโนมัติ:
โครงการของเราได้เปิดตัวการควบคุมระยะไกลของล็อคประตูโดยใช้ลายนิ้วมือ
รู้สึกอิสระที่จะทดลอง ปรับเปลี่ยนภาพร่างและการเข้าเล่ม ตัวอย่างเช่น คุณสามารถเปลี่ยนล็อคประตูแบบอิเล็กทรอนิกส์เป็นรีเลย์เพื่อควบคุมพลังของเครื่องพิมพ์ 3D แขนหุ่นยนต์ หรือควอดคอปเตอร์...
คุณสามารถพัฒนา "บ้านอัจฉริยะ" ของคุณได้ ตัวอย่างเช่น เปิดใช้งานระบบชลประทานจากระยะไกลบน Arduino หรือเปิดไฟในห้อง... อย่าลืมว่าคุณสามารถเปิดใช้งานอุปกรณ์ได้ไม่จำกัดจำนวนโดยใช้ Adafruit IO
แสดงความคิดเห็น คำถาม และแบ่งปันประสบการณ์ส่วนตัวของคุณด้านล่าง แนวคิดและโครงการใหม่ ๆ มักเกิดในการสนทนา!
พิธีกรช่อง YouTube “AlexGyver” ถูกขอให้ทำล็อคอิเล็กทรอนิกส์ด้วยมือของเขาเอง ยินดีต้อนรับสู่ซีรีส์วิดีโอเกี่ยวกับการล็อคแบบอิเล็กทรอนิกส์บน Arduino อาจารย์จะอธิบายแนวคิดนี้โดยทั่วไป
มีหลายทางเลือกในการสร้างระบบล็อคแบบอิเล็กทรอนิกส์ ส่วนใหญ่มักใช้เพื่อล็อคประตู ลิ้นชัก และตู้ และสำหรับการสร้างแคชและตู้เซฟลับด้วย จึงต้องจัดวางผังที่สะดวกต่อการทำงานและสามารถแสดงโครงสร้างของระบบได้ชัดเจนและละเอียดทั้งภายในและภายนอก ฉันจึงตัดสินใจทำกรอบประตู ในการทำเช่นนี้คุณจะต้องมีคานสี่เหลี่ยม 30 x 30 ไม้อัด 10 มม. บานพับประตู. ตอนแรกอยากทำกล่องไม้อัด แต่จำได้ว่าในห้องเต็มไปด้วยอะไหล่ ไม่มีที่ไหนที่จะใส่กล่องแบบนี้ จึงจะทำการจำลองขึ้นมา. หากใครต้องการติดตั้งล็อคแบบอิเล็กทรอนิกส์สำหรับตนเองลองดูที่เค้าโครงพวกเขาสามารถทำซ้ำทุกอย่างได้อย่างง่ายดาย
คุณจะพบทุกสิ่งที่คุณต้องการสำหรับปราสาทในร้านจีนแห่งนี้
เป้าหมายคือการพัฒนาวงจรและเฟิร์มแวร์ที่มีประสิทธิภาพสูงสุดสำหรับล็อคแบบอิเล็กทรอนิกส์ คุณสามารถใช้ผลลัพธ์เหล่านี้เพื่อติดตั้งระบบเหล่านี้ที่ประตู ลิ้นชัก ตู้ และที่ซ่อนของคุณ
ประตูพร้อมแล้ว ตอนนี้เราต้องหาวิธีเปิดและปิดด้วยระบบอิเล็กทรอนิกส์ สลักโซลินอยด์อันทรงพลังจาก aliexpress เหมาะสำหรับวัตถุประสงค์เหล่านี้ (ลิงก์ไปยังร้านค้าด้านบน) หากคุณจ่ายแรงดันไฟฟ้าไปที่ขั้วต่อ มันจะเปิดขึ้น ความต้านทานของคอยล์เกือบ 12 โอห์ม ซึ่งหมายความว่าที่แรงดันไฟฟ้า 12 โวลต์ คอยล์จะกินไฟประมาณ 1 แอมแปร์ ทั้งแบตเตอรี่ลิเธียมและโมดูลบูสต์สามารถรับมือกับงานนี้ได้ ปรับแรงดันไฟฟ้าให้เหมาะสม แม้ว่าจะเป็นไปได้อีกสักหน่อยก็ตาม สลักติดอยู่ที่ด้านในประตูโดยเว้นระยะห่างเพื่อไม่ให้ติดกับขอบและสามารถปิดกระแทกได้ สลักควรมีคู่กันในรูปของกล่องโลหะ การใช้โดยไม่ได้สิ่งนี้จะไม่สะดวกและไม่ถูกต้อง เราจะต้องติดตั้งขั้นตอนอย่างน้อยก็เพื่อสร้างลักษณะการทำงานตามปกติ
ในโหมดไม่ได้ใช้งานสลักจะเปิดตามปกตินั่นคือหากมีที่จับที่ประตูเราจะใช้พัลส์แล้วเปิดประตูด้วยที่จับ แต่ถ้าคุณใช้สปริงวิธีนี้จะไม่เหมาะอีกต่อไป บูสต์คอนเวอร์เตอร์ไม่สามารถรับมือกับโหลดได้ หากต้องการเปิดประตูแบบสปริง คุณจะต้องใช้แบตเตอรี่ขนาดใหญ่ขึ้นและอินเวอร์เตอร์ที่ทรงพลังกว่า หรือใช้แหล่งพลังงานเครือข่ายและลืมเรื่องความเป็นอิสระของระบบไปได้เลย ร้านค้าในจีนจะมีสลักขนาดใหญ่ เหมาะสำหรับลิ้นชัก สามารถจ่ายไฟได้โดยใช้รีเลย์หรือทรานซิสเตอร์มอสเฟต หรือสวิตช์ไฟบนทรานซิสเตอร์ตัวเดียวกัน ตัวเลือกที่น่าสนใจและราคาไม่แพงกว่าคือเซอร์โวไดรฟ์ที่เชื่อมต่อกับก้านสูบที่มีองค์ประกอบล็อคใด ๆ - สลักหรือสลักเกลียวที่จริงจังกว่า คุณอาจต้องใช้เข็มถักเหล็กหนึ่งชิ้นเพื่อทำหน้าที่เป็นก้านต่อ ระบบดังกล่าวไม่ต้องการกระแสไฟฟ้าสูง แต่ใช้พื้นที่มากกว่าและมีตรรกะการควบคุมที่ชาญฉลาดกว่า
เซอร์โวมีสองประเภท อันที่อ่อนแอขนาดเล็กและอันทรงพลังขนาดใหญ่ที่สามารถดันเข้าไปในรูด้วยหมุดโลหะที่ร้ายแรงได้อย่างง่ายดาย ทั้งสองตัวเลือกแสดงให้เห็นว่าใช้ได้กับทั้งบานตู้และลิ้นชัก คุณจะต้องคนจรจัดกล่องโดยทำเป็นรูในผนังแบบยืดหดได้
ส่วนที่สอง