Arduino Light & Knock Detecting Door Lock: 4 ขั้นตอน

Arduino Light & Knock Detecting Door Lock: 4 ขั้นตอน

สารบัญ:

Anonim

นี่เป็นอุปกรณ์ที่ยอดเยี่ยมสำหรับสโมสรลับและสำหรับคนอย่างฉันที่มักจะทำกุญแจหาย! โครงงานนี้เป็นไปตามความลับดั้งเดิมของ Knock Lock ที่ Grathio สามารถใช้ได้ (ด้านล่าง) โดยมีการดัดแปลงหลักดังต่อไปนี้:

1) มีการป้อนข้อมูลลับที่สองสำหรับเมื่อคนรอบตัวที่สามารถได้ยินเสียงเคาะของคุณ ตอนนี้ photo-diode สามารถลงทะเบียน "photo knock" (flash light) ผ่านรู peep!

2) รวมถึง H-Bridge ที่ให้ทั้งความสามารถในการ Unlock และ Lock a door (เปลี่ยนทิศทางของแรงดันไฟฟ้าข้ามมอเตอร์)

3) การตั้งโปรแกรมตอนนี้บันทึกระดับเสียง (พื้นหลัง) โดยเฉลี่ย / ระดับเสียงและปรับความไว (ค่าเกณฑ์) ตามลำดับ

*** ข้อมูลที่นี่ถูกดัดแปลงจากคำแนะนำของ Grathio ขอขอบคุณและเครดิตมากมายไปที่ Grathio Labs สำหรับการทำคู่มือที่ครอบคลุมให้กับพวกเราที่เหลือ! ฉันจะนำคุณผ่านขั้นตอนการเขียนโปรแกรมและเดินสายอุปกรณ์อิเล็กทรอนิกส์แล้วส่งคุณไปยังขั้นตอนในการสอนของ Grathio สำหรับการติดตั้งประตู PVC (เศร้าฉันยังอยู่ในขั้นตอนการสร้างเคสที่ใช้งานได้)

สำหรับคำสั่งสอน Knock-Lock ดั้งเดิมของ Grathio ไปที่

วัสดุ:

ขั้นตอนที่ 1: เครื่องมือวัสดุสิ้นเปลืองและทักษะ

ทักษะ:

เพื่อให้โครงการนี้สำเร็จคุณควรจะสามารถ:

ทำการบัดกรีเบื้องต้น

อ่านแผนผัง

มีความรู้เกี่ยวกับไมโครคอนโทรลเลอร์ (ฉันจะใช้ Arduino)

กระทำอย่างไม่ได้

เครื่องมือ

สว่าน (การกดดอกสว่าน) และดอกสว่าน

เลื่อยสามารถตัดท่อพีวีซี (เช่น: mcuh สวย ๆ เห็น)

หัวแร้งและหัวแร้ง

คีม.

ไดรเวอร์สกรู

ท่อหดแบบใช้ความร้อนและ / หรือเทปไฟฟ้า

เครื่องปอกสายไฟ

รอง.

แว่นตานิรภัย

ถุงมือ

สิ่งอื่น ๆ ที่คุณอาจพบว่ามีประโยชน์: ไม้บรรทัด / เทปวัดมัลติมิเตอร์เขียงหั่นขนมเทปบางปากกาเมจิกมาร์กเกอร์กระดาษทรายไฟล์กาวร้อน และถ้าคุณเป็นเหมือนฉันชุดปฐมพยาบาลที่ครบครัน

วัสดุ:

อิเล็กทรอนิกส์:

1 ไมโครคอนโทรลเลอร์ Arduino Uno (หรือคล้ายกัน)

มอเตอร์ 12v 1 ตัวลดเกียร์ที่มีแรงบิดสูง

1 ไมโครโฟนขนาดเล็ก

ปุ่มกดชั่วขณะ 1 SPST (ปกติ "ปิด" / "เปิด")

1 LED สีแดง

1 ไฟ LED สีเขียว

1 โฟโตไดโอด

1 Quadruple half H-Bridge SN754410NE ชิป

1 ตัวต้านทาน 100k โอห์ม (1/4 วัตต์)

ตัวต้านทาน 1 10k ohm (1/4 วัตต์)

1 1 โอห์มตัวต้านทาน (1/4 วัตต์)

2 ตัวต้านทาน 560 โอห์ม (หรืออะไรก็ตามที่เรียกใช้ LED สีแดงและสีเขียวของคุณที่ 5v)

กระดานขนาดเล็ก 1 ชิ้น 5x15 หลุมหรือนานกว่านั้น

1 ปลั๊ก 12V Wall Adapter สำหรับ Arduino

เป็นความคิดที่ดีที่จะมีเขียงหั่นขนมสำหรับติดตั้งและทดสอบวงจรก่อนที่จะบัดกรี เราจะทำสิ่งนี้ในขั้นตอนที่ 3

กรณี:

(การออกแบบนี้มาโดยตรงจากแหล่ง Grathio)

20 "ท่อพีวีซี 1/2"

3 มุมฉาก 1/2 "ช่องเสียบ PVC

1 5-way 1/2 "ตัวเชื่อมต่อ PVC (ตัวอย่าง)

ปลายปลั๊ก 2 1/2 "PVC

3 1 1/2 "ถ้วยดูด (มีจำหน่ายที่ร้านฮาร์ดแวร์และศูนย์งานฝีมือ) หมายเหตุ: หากประตูของคุณไม่เหมาะสมสำหรับถ้วยดูดให้เปลี่ยนฝาครอบเหล่านี้ด้วยฝาปิดสามอันและคุณสามารถใช้แถบกาวหรือสกรูเพื่อยึดล็อค

6 "ของ 1/2" กว้าง 1/64 "แถบโลหะหนา (เหล็กดีบุกทองแดง ฯลฯ) (มีจำหน่ายที่ร้านฮาร์ดแวร์งานฝีมือและร้านจำหน่ายอุปกรณ์ศิลปะ)

4.5 "จาก 1" แผ่นโลหะขนาดกว้าง 1/32 "หนา (เหล็กดีบุกทองแดง ฯลฯ) (มีจำหน่ายที่ร้านฮาร์ดแวร์งานฝีมือและร้านจำหน่ายอุปกรณ์ศิลปะ)

2 3/32 "x 3/8" สกรูพร้อมน็อต (1/8 "จะทำงานได้เช่นกันหากคุณไม่สามารถหาอันที่เล็กกว่านี้ได้)

2 1.6M (เมตริก) สกรู 16 มม. เป็นการดีที่มีหัว countersunk ถ้าคุณสามารถค้นหาได้ (สำหรับการรักษาความปลอดภัยของมอเตอร์ตรวจสอบรายละเอียดมอเตอร์ของคุณเพื่อดูว่าต้องใช้สกรูใดมอเตอร์หนึ่งที่ฉันลองใช้ 1.6M หรืออีก 2M คุณอาจต้องซื้อตัวยาวและตัดให้ยาว)

1 ถ้วยดูดขนาดใหญ่ (สำหรับโฟโตไดโอด)

ขั้นตอนที่ 2: ตั้งโปรแกรม Arduino ของคุณ

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

1) ดาวน์โหลดไฟล์แนบด้านล่าง

2) เชื่อมต่อ Arduino กับอินพุต USB บนคอมพิวเตอร์ของคุณ

3) เปิดไฟล์ใน Arduino Sketch (หรือถ้ามันทำให้คุณมีปัญหา, ให้เปลี่ยนไฟล์เป็น. txt และคัดลอก / วางรหัสเป็นแบบร่างเปล่า) และคอมไพล์ / ตรวจสอบมัน

4) อัปโหลดไปยัง Arduino ของคุณ!

ในขั้นตอนต่อไปฉันจะให้คำแนะนำการแก้ไขปัญหาที่เกี่ยวข้องกับส่วนเฉพาะของรหัส (พารามิเตอร์บางอย่างจะต้องมีการ tweaked สำหรับแต่ละระบบ) สำหรับทุกคนที่สนใจข้อมูลเฉพาะของรหัสฉันได้รวมข้อมูลสรุปไว้ด้านล่าง ร่างเป็นความเห็นที่ดีในตลอด แต่มันเป็นไฟล์ขนาดใหญ่และค่อนข้างงุ่มง่ามในการตีความในบางครั้ง (อย่าลังเลที่จะทำให้มันสวยงามมากขึ้นและให้แน่ใจว่าได้แบ่งปันความสำเร็จในความคิดเห็นใด ๆ !)

บรรทัดที่ 4-33: กำหนดหมุด Arduino ค่าคงที่และตัวแปรที่เราจะใช้ในรหัส

- คุณอาจต้องการปรับแต่งเหล่านี้สำหรับประตู / ระบบของคุณโดยเฉพาะ ฉันจะแนะนำคุณผ่านสิ่งนี้

เส้น 35-47 (ตั้งค่า): กำหนดโหมดพินและเริ่มการตรวจสอบแบบอนุกรม

บรรทัดที่ 49-84, (ลูป): กำหนดพฤติกรรมของวงจรขณะรอฟัง (ดู) เสียงเคาะ (แฟลช)

- นี่คือที่เราตั้งค่าคุณสมบัติพื้นหลัง / ค่าเฉลี่ยซึ่งตัวอย่างข้อมูลอย่างต่อเนื่องและปรับค่าเกณฑ์ตาม หากมีการลงทะเบียนสัญญาณแสงหรือเสียงเหนือค่าเกณฑ์มันจะเรียกใช้งาน "ListenToSecretKnock"

บรรทัดที่ 86-161 (ListenToSecretKnock): บันทึกการชนที่บันทึกโดยไมโครโฟน

- บันทึกเวลาระหว่างการเคาะ (ความยาวการหน่วงเวลา) ในอาร์เรย์และส่งข้อมูลไปยัง validateKnock ส่วนหนึ่งของส่วนนี้มีไว้สำหรับควบคุมทิศทางไฟ LED ซึ่งจะกะพริบตามเวลาด้วยการเคาะที่ลงทะเบียน หากล็อคได้รับการตรวจสอบแล้วประตูจะล็อคหรือปลดล็อคประตูเมื่อขึ้นอยู่กับ "doorState" (ซึ่งจะบอกว่าล็อคหรือปลดล็อคครั้งสุดท้ายของเรา)

บรรทัดที่ 163-238 (ListenToSecretPhotoKnock): บันทึกแสงแฟลชที่ลงทะเบียนโดยโฟโตไดโอด

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

สาย 239-255 (ทริกเกอร์ประตูปลดล็อค): เปิดมอเตอร์เพื่อปลดล็อคประตู

- การทำความเข้าใจในส่วนนี้เกี่ยวข้องกับการรู้พฤติกรรมของสะพานเอชซึ่งกำหนดทิศทางของแรงดันไฟฟ้าข้ามมอเตอร์ คุณอาจต้องการค้นหาแผ่นจุดเพื่อให้ชิปของคุณเข้าใจมากขึ้น (นี่คือสิ่งที่ฉันใช้: http://html.alldatsheet.com/html-pdf/28616/TI/SN754410NE/24/1/SN754410NE.html)

สาย 257-272 (ทริกเกอร์ประตูล๊อค): ใช้มอเตอร์ด้านหลังเพื่อล็อคประตู

- ส่วนนี้ยังทำซ้ำการเข้ารหัสบางส่วนและอาจได้รับประโยชน์จากการทำความสะอาดเล็กน้อย

บรรทัดที่ 274-349 (validateKnock): ตรวจสอบว่ารูปแบบที่บันทึกนั้นตรงกับคีย์หรือไม่

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

ขั้นตอนที่ 3: ทดสอบวงจรบน Breadboard

เรากำลังจะต่ออุปกรณ์อิเล็กทรอนิกส์ทั้งหมดเข้ากับเขียงหั่นขนมและตรวจสอบว่าทุกอย่างทำงานได้ตามที่เราไป คุณสามารถค้นหาแผนผัง Breadboard และเค้าโครงไดอะแกรมที่แนบมาในภาพด้านบน ระวังอย่าให้สายใด ๆ สัมผัสโดยไม่ได้ตั้งใจและจำไว้ว่าให้ถอด ARDUINO / วงจรของคุณออกจากแหล่งพลังงานในขณะที่เดินสาย!

1) วางสายไมโครโฟน

ประสานคู่ของ 12 "(30 ซม.) นำไปสู่ไมโครโฟนเชื่อมต่อระหว่าง Analog pin 0 และกราวด์นอกจากนี้ยังแนบตัวต้านทาน 1M ohm ระหว่าง Analog pin 0 และกราวด์

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

การแก้ไขปัญหา:

- หากคุณไม่เห็นสิ่งใดหรือขยะจากการตรวจสอบพอร์ตอนุกรมตรวจสอบให้แน่ใจว่าพอร์ตอนุกรมของคุณตั้งค่าไว้ที่ 9600 บอดและรีเซ็ตพลังงาน

- หากต้องการปรับความไวในการรับรู้ / ตรวจสอบรูปแบบการเคาะให้เล่นด้วยค่าของ "rejectValue" และ "averageRejectValue" (บรรทัดที่ 13 และ 14) หากการเคาะแต่ละครั้งถูกปิดมากกว่าการปฏิเสธมูลค่า (เปอร์เซ็นต์) หรือถ้าการเคาะโดยเฉลี่ยมากกว่าการปฏิเสธการประเมินค่าเฉลี่ยค่าเฉลี่ยการกระแทกจะไม่ตรวจสอบการเคาะหรือกระตุ้นมอเตอร์

- หากมีการบันทึกการเคาะครั้งเดียวมากกว่าหนึ่งครั้งหรือการเคาะสองครั้งเป็นการลงทะเบียนแบบเดียวกันให้ปรับ "knockFadeTime" (บรรทัดที่ 15) ซึ่งตั้งค่ามิลลิวินาทีเราอนุญาตให้การเคาะหายไปก่อนที่เราจะฟังอีกครั้ง จับเวลา)

2) วางสายโฟโตไดโอด

เชื่อมต่อด้านขั้วบวก (โดยทั่วไปจะใช้ลวดที่สั้นกว่า) กับ 5V และขั้วลบกับขาอะนาล็อก 3 และต่อเข้ากับตัวต้านทาน 100K (ดูแผนผัง)

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

การแก้ไขปัญหา:

- หากคุณไม่เห็นอะไรเลยเมื่อคุณส่องแสงบนไดโอดลองทดสอบแรงดันไฟฟ้าของตัวต้านทาน 100k และตรวจสอบให้แน่ใจว่ามันทำงานตามที่คาดไว้ (แรงดันไฟฟ้าสูงถึง + 5V เมื่ออิ่มตัวด้วยแสงและ 0 เมื่อมืด).

- หากมีการลงทะเบียนแฟลชครั้งเดียวมากกว่าหนึ่งครั้งหรือมีการลงทะเบียนแฟลชสองครั้งเป็นหนึ่งครั้งให้ปรับ "photoknockFadeTime" (บรรทัดที่ 16)

3) ต่อสายไฟ LED

ให้สายไฟ LED บางเส้นเราไม่ต้องใช้สายเคเบิลอนุกรมเพื่อดูว่าเกิดอะไรขึ้น เชื่อมต่อ LED สีแดงเข้ากับขาดิจิตอล 4 และ LED สีเขียวเข้ากับขาดิจิตอล 5 ด้วยตัวต้านทาน 560 * ohm ที่สอดคล้องกันในสาย

การทดสอบ: ถ้าคุณจ่ายไฟให้กับวงจรไฟ LED สีเขียวควรสว่างและหรี่ลงสักครู่สำหรับการเคาะแต่ละครั้ง หาก arduino ตรวจสอบลำดับที่ถูกต้องไฟ LED สีเขียวควรกระพริบสองสามครั้ง ลำดับที่ไม่ถูกต้องควรกะพริบสีแดง

การแก้ไขปัญหา:

- ตรวจสอบขั้วบน LED และการเชื่อมต่อทั้งหมดของคุณ ไฟ LED ของคุณอาจต้องการความต้านทานที่แตกต่างกันเพื่อให้ทำงานบน 5V ดังนั้นหากมันหรี่เกินไปหรือปิดเกินไปคุณสามารถลองลดความต้านทานลงได้

4) เชื่อมโยงปุ่มการเขียนโปรแกรม

Solder 8 "นำไปสู่ปุ่มเชื่อมต่อด้านหนึ่งของปุ่มไปที่ + 5v. เมื่อใช้ขาอื่น ๆ บนปุ่มให้เชื่อมต่อกับขาดิจิตอล 2 และผ่านตัวต้านทาน 10K กับกราวด์

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

การแก้ไขปัญหา:

- ตรวจสอบให้แน่ใจว่าปุ่มของคุณมักจะเปิด ("ปิดชั่วขณะ") โดยใช้โอห์มมิเตอร์เพื่อบันทึกความต้านทานด้วยการกดปุ่ม ถ้าสิ่งนี้คืนค่าศูนย์หรือค่าต่ำแสดงว่าคุณมีปุ่มกดผิดประเภท

5) ลวดใน h-bridge และมอเตอร์

สำหรับ h-bridge ให้เชื่อมต่อ: หมุด 1 และ 16 ถึง + 5V; พิน 4 และ 5 ถึง GND, พิน 2 ถึงขาดิจิตอล Arduino 3, พิน 7 ถึงอาร์ดิโนดิจิตอลพิน 6, และพิน 8 ถึงอาร์ดิโน่ Vin ประสาน 8 "ของสายนำไปสู่มอเตอร์และเชื่อมต่อเหล่านี้ไปยังหมุด h-bridge 3 และ 6

การทดสอบ: เปิดวงจร เคาะเคาะ "โกนหนวดและตัดผม" เริ่มต้นอย่างถูกต้องและมอเตอร์ควรทำงาน แตะลวดลายที่ถูกต้องอีกครั้งและมอเตอร์จะหมุนไปในทิศทางตรงกันข้าม

การแก้ไขปัญหา:

- ตรวจสอบให้แน่ใจว่าชิปของคุณใช้พลังงานและต่อลงดิน

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

- เพื่อให้มอเตอร์ของคุณหมุน 180 องศาให้ปรับ "lockTurnTime" (บรรทัดที่ 17) จนกระทั่งมอเตอร์หมุน 1/2 รอบในแต่ละครั้งที่มีการเรียกใช้

ขอแสดงความยินดี! คุณได้ทำวงจรตรวจจับเสียงเคาะที่ทำงานเป็นความลับ!

ขั้นตอนที่ 4: สร้าง Case และ Photodiode Attachment

สำหรับขั้นตอนอย่างละเอียดเกี่ยวกับการติดตั้งที่ประตู / เคสไปที่นี่:

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

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