สารบัญ:
- ขั้นตอนที่ 1: ชิ้นส่วนและเครื่องมือ
- ขั้นตอนที่ 2: ฮาร์ดแวร์ที่มีอยู่แล้ว
- ขั้นตอนที่ 3: วงจร
- ขั้นตอนที่ 4: การเดินสายไฟเข้าด้วยกัน
- ขั้นตอนที่ 5: รหัส
วีดีโอ: Cryptap: ล็อคประตูตามจังหวะ: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:09
ด้วยแรงบันดาลใจจากกลไกการปลดล็อกประตูหลายอย่างที่ฉันเคยเห็นบน hackaday.com ฉันจึงตัดสินใจสร้างกลไกนี้ขึ้นมาเอง อันนี้มีส่วนต่อประสานสองปุ่ม หนึ่งเพื่อเริ่มและสิ้นสุดการส่งรหัสผ่าน และอีกอันหนึ่งแตะในจังหวะที่เป็นรหัสผ่านของคุณจริงๆ มีไฟแสดงสถานะด้วย ฉันสามารถสร้างสิ่งนี้ขึ้นมาได้ในราคาถูกจริงๆ โดยใช้ชิ้นส่วนที่ฉันเก็บสะสมมาในช่วงไม่กี่เดือนที่ผ่านมา สิ่งเดียวที่ฉันต้องจ่ายคือไมโครคอนโทรลเลอร์ซึ่งก็คือ 21 ดอลลาร์ (https://www.pjrc.com/teensy/) และลวดแขวนรูปภาพบางรูปที่ฉันเคยมีมาก่อน
สนุกมากที่จะแตะในธีม Star Wars หรืออะไรก็ตามเพื่อเข้าห้องของฉัน ตอนนี้ฉันไม่ต้องกังวลกับการล็อคตัวเองออกจากห้องอีกต่อไป! นอกจากนี้ยังรู้สึกดีและเกินบรรยาย
ขั้นตอนที่ 1: ชิ้นส่วนและเครื่องมือ
ฉันเลือก Teensy เพราะนี่เป็นไมโครคอนโทรลเลอร์ตัวแรกของฉัน และฉันยังไม่มีโปรแกรมเมอร์ Teensy ต้องการเพียงสายเคเบิล A-miniB USB และซอฟต์แวร์ฟรีเพื่อติดตั้ง เข้ากันได้กับ Mac/Windows/Linux นอกจากนี้ยังง่ายต่อการอัปโหลดไฟล์ฐานสิบหก เพียงคอมไพล์แล้วกดปุ่มบน Teensy
ค่าใช้จ่ายของโครงการนี้สำหรับฉันคือ 21 เหรียญ บวกกับลวดแขวนรูปภาพ ชิ้นส่วนจากท้องถนนมาจากเครื่องต้มกาแฟ (รีเลย์, LED, ตัวเก็บประจุ) และเราเตอร์ (LED, แจ็คโมดูลาร์, แจ็คไฟ, ตัวเก็บประจุ) ตัวอย่างฟรีคือตัวควบคุม 7805 5 โวลต์ ปุ่มและสวิตช์ ฉันยังพบสิ่งต่างๆ มากมายในกล่อง "ชิ้นส่วนที่ชำรุด" ในห้องปฏิบัติการ EE ของฉัน: ขั้วต่อกล้วยและสายเคเบิล สายไฟ ไดรเวอร์ sn754410 ส่วนหัวแบบสี่พินและตัวต้านทาน ฉันมีที่ชาร์จแล็ปท็อปเสริมวางอยู่รอบๆ ที่ฉันใช้สำหรับจ่ายไฟ และสายเคเบิลโมเด็มของ Apple ที่แท็บพัง ฮาร์ดแวร์อื่นๆ: แผ่นผนัง ฉันใช้ปืนกาวร้อน หัวแร้ง ตะไบเข็ม และสว่านไฟฟ้า ซึ่งเป็นมาตรฐานที่ค่อนข้างดี สิ่งที่ผิดปกติที่สุดที่ฉันใช้คือเครื่องมือคว้านที่ยาวและยืดหยุ่นได้
ขั้นตอนที่ 2: ฮาร์ดแวร์ที่มีอยู่แล้ว
ฉันโชคดีมากที่มีการติดตั้งไว้แล้วมากมาย ห้องของฉันเข้าถึงได้โดย ADA และมีท่อต่างๆ กล่องไฟฟ้า และประตูไฟฟ้าติดตั้งไว้แล้ว เมื่อถอดกลอนประตูออกด้วยความอยากรู้ ฉันพบว่ามันไม่ได้เชื่อมต่อกัน มีท่อจากประตูชนกับแผ่นผนังเปล่าในห้องของฉัน และท่ออื่นจากที่นั่นไปยังแผ่นผนังเปล่าด้านนอก
การชนที่ประตูบอกว่าต้องใช้ 24V@3A เพื่อใช้งาน แต่ฉันสามารถใช้แหล่งจ่ายไฟ 19V, 7.9A ที่ฉันมีได้ กลอนประตูเป็นแบบโพลาไรซ์ ดังนั้นตรวจสอบให้แน่ใจว่าคุณได้ขั้วที่ถูกต้อง!
ขั้นตอนที่ 3: วงจร
เพื่อควบคุมการชนประตู ฉันใช้รีเลย์ที่พบในเครื่องต้มกาแฟ รีเลย์นี้ต้องใช้ TTL มากกว่า 5V เพื่อขับเคลื่อน ดังนั้น sn754410 จึงถูกใช้เพื่อแปล TTL เป็น 19V ซึ่งขับเคลื่อนรีเลย์ sn754410 เป็นไดร์เวอร์ quad half-H จริงๆ ดังนั้นฉันจึงเสีย 3/4 ของชิป แต่ฉันไม่มีทรานซิสเตอร์กำลังเลย นั่นคือสิ่งที่ฉันใช้
ชิป sn754410 มีพิน VCC สองตัว อันหนึ่งสำหรับ 5V และอีกอันสำหรับแรงดันไฟที่คุณต้องการให้ออกมา ซึ่งเท่ากับ 19V สำหรับฉัน เป็นชิปที่เจ๋งจริงๆ คุณสามารถใช้สิ่งนี้เพื่อขับเคลื่อนมอเตอร์และรีเลย์ได้โดยตรง เนื่องจากสามารถเปลี่ยนชิปได้ 1A ต่อไตรมาส และมีไดโอดป้องกันในตัว ลองดูที่แผ่นข้อมูล ในวงจรของฉัน ฉันเชื่อมต่อ sn754410 กับพินเอาต์พุตของ Teensy โดยตรง ปุ่มต่างๆ ถูกเชื่อมต่อแบบแอ็คทีฟ-ต่ำ ซึ่งเป็นเรื่องปกติสำหรับไมโครคอนโทรลเลอร์ พวกเขาเชื่อมต่อโดยตรงกับ Teensy ซึ่งหมายความว่าฉันต้องทำให้ซอฟต์แวร์เสียหาย ไฟแสดงสถานะเชื่อมต่อกับ Teensy ผ่านตัวต้านทาน 1K ohm; ไม่มีอะไรพิเศษ. วงจรทำงานโดยไม่มีตัวเก็บประจุ แต่ฉันใส่ไว้เผื่อไว้ มีฝาครอบป้องกันบนรางไฟทั้ง 19V และ 5V ถึงกราวด์ ขณะเขียนโปรแกรม Teensy 5V มาจาก USB แต่เมื่อทำงานด้วยตัวเอง พลังงานจะมาจากแหล่งพลังงานของแล็ปท็อป เมื่อฉันเชื่อมต่อตัวควบคุม 7805 กับ 19V โดยตรง มันร้อนมาก ฉันจึงใส่เครือข่ายตัวต้านทานเพื่อจำกัดแรงดันไฟขาเข้าและกระแสไฟให้กับตัวควบคุม นี่เป็นเรื่องเหลวไหล แต่ตอนนี้ทุกอย่างอยู่ในอุณหภูมิที่สามารถจัดการได้
ขั้นตอนที่ 4: การเดินสายไฟเข้าด้วยกัน
Teensy ก็ไม่มีปัญหา มันมาพร้อมกับหมุด คุณจึงสามารถเสียบเข้ากับเขียงหั่นขนมได้โดยตรง
ฉันตัดสินใจกำหนดสีสายไฟที่ประตูด้วยสายกล้วยสีแดง (+) และสีดำ (-) จากกล่องชิ้นส่วนที่ชำรุดของห้องปฏิบัติการ มีปลั๊กบางตัวถูกตัดออกจากสายไฟ ดังนั้นฉันจึงลอกพลาสติกบางส่วนออกเพื่อแสดงจุดบัดกรี ฉันชอบที่ปลั๊กกล้วยของแล็บสามารถเสียบเข้าด้วยกันได้ ฉันใช้สายโทรศัพท์ของ Apple เพื่อเชื่อมต่อปุ่มและไฟแสดงสถานะภายนอกห้องกับ Teensy ภายใน เนื่องจากด้านหนึ่งหัก ฉันจึงตัดปลายนั้นออกแล้วบัดกรีในส่วนหัวแบบสี่พิน ปิดผนึกด้วยกาวร้อน สิ่งนี้เสียบเข้ากับเขียงหั่นขนมของฉันอย่างดี ด้านที่ฉันเสียบปลั๊กทิ้งไว้เข้าไปในแจ็คโมดูลาร์ที่ฉันกู้มาจากเราเตอร์ ใช้สายไฟทั้งสี่เส้น (GND, ไฟแสดงสถานะ, ปุ่มเริ่ม/หยุด, ปุ่มรหัส) ในกรณีที่คุณไม่ได้สังเกต ฉันชอบปลั๊กและคอนเนคเตอร์ พาวเวอร์บริคที่เชื่อมต่อกับแจ็คไฟที่ฉันปัดจากเราเตอร์ การร้อยสายไฟผ่านท่อผนังไม่ใช่เรื่องยาก เพราะตัวจับที่ยืดหยุ่นได้ นั่นช่วยชีวิตฉันไว้จริงๆ
ขั้นตอนที่ 5: รหัส
ฉันพยายามแสดงความคิดเห็นรหัสของฉัน โปรดทราบว่านี่คือซอฟต์แวร์ 1.0 ซึ่งหมายความว่าไม่มีข้อผิดพลาด## การทำงาน ## 1. กดปุ่มเริ่ม/หยุดเพื่อส่งสัญญาณว่าคุณพร้อมที่จะเริ่มการป้อนโค้ด ไฟแสดงสถานะเริ่มกะพริบช้าๆ 2. แตะที่รหัสของคุณบนปุ่มรหัส ไฟแสดงสถานะจะกะพริบที่ 120 BPM คุณจึงสามารถใช้เป็นเครื่องเมตรอนอมได้หากต้องการ อย่างไรก็ตาม โปรแกรมเข้ารหัสลับจะวัดความยาวพัลส์ที่สัมพันธ์กันตามสัดส่วน คุณจึงสามารถใช้จังหวะของคุณเองได้ เพียงให้แน่ใจว่าคุณมีความถูกต้องเพียงพอ! 3. เมื่อป้อนรหัสเสร็จแล้ว ให้กดปุ่มเริ่ม/หยุดอีกครั้ง จากนั้นโปรแกรมจะตัดสินใจว่าจะให้คุณเข้าไปหรือไม่ เนื่องจากมนุษย์ไม่ได้เป็นผู้จับเวลาที่แม่นยำมาก (ซึ่งจริงๆ แล้วคุณไม่ใช่) ฉันจึงกำหนดอัตราส่วนความอดทนเป็น +/- 30% นั่นหมายความว่าความยาวของจังหวะอาจไม่ถูกต้องตามจำนวนนั้น และยังผ่านการรวบรวม นี่เป็นสิ่งที่ดีพอที่จะบอกความแตกต่างระหว่างเพลงที่คล้ายคลึงกัน มีการทับซ้อนกันที่ยากต่อการเข้าถึงเล็กน้อยระหว่างบีตที่มีความยาวสองถึงสามจังหวะ แต่โค้ดก็ยังค่อนข้างยากที่จะทำลาย ในการปลดล็อคประตู จังหวะจะต้องอยู่ในสัดส่วนที่ถูกต้องต่อกัน (+/- อัตราส่วนความอดทน) และจำนวนครั้งจะต้องถูกต้อง หากป้อนรหัสผ่านที่ไม่ถูกต้อง โปรแกรมจะรอสองสามวินาทีโดยไม่สนใจข้อมูลที่ผู้ใช้ป้อน นอกจากนี้ยังจะกะพริบไฟแสดงสถานะอย่างรวดเร็ว หากป้อนรหัสที่ถูกต้อง ไฟแสดงสถานะจะเปิดขึ้นอย่างต่อเนื่องและประตูจะปลดล็อกเป็นเวลา 8 วินาที## การกำหนดค่าผู้ใช้ ## คีย์ถูกเก็บไว้ในอาร์เรย์ดังนี้: #define keylength 5 const int key = { 2, 1, 3, 3, 3 }; // "Happy birthday to you" อาร์เรย์เก็บระยะเวลาที่เกิดขึ้นระหว่างจังหวะ ดังนั้นหากรหัสผ่านของคุณมีโน้ตหกตัว เช่น "สุขสันต์วันเกิด" ควรมีห้าองค์ประกอบในอาร์เรย์ หากรหัสผ่านของคุณยาวมาก และคุณมีมากกว่า 16 จังหวะในนั้น (ยากจริงๆ ฉันไม่แนะนำ) คุณต้องเพิ่มจำนวนที่กำหนดไว้ในบรรทัดนี้: #define inputCodeLength 16## THE REST OF THE CODE # # ฉันอยากรู้เกี่ยวกับการขัดจังหวะ ดังนั้นฉันจึงมีปุ่มทริกเกอร์การขัดจังหวะ ในการทำให้อินเตอร์รัปต์เหล่านี้ใช้งานง่าย ฉันได้ให้ตัวจัดการอินเตอร์รัปต์ตรวจสอบพอยน์เตอร์ของฟังก์ชันบางอย่าง หากไม่ได้ตั้งค่าตัวชี้เป็น NULL ฟังก์ชันที่ชี้ไปจะถูกเรียกใช้ สิ่งเหล่านี้ถูกตั้งค่าด้วยฟังก์ชัน "การตั้งค่าโหมด" ต่างๆ ภายใน cryptap.c ฉันพยายามหลีกเลี่ยงบัฟเฟอร์ล้นโดยการตั้งค่าจำนวนพัลส์ที่ป้อนสูงสุด หากป้อนจำนวนพัลส์สูงสุด โปรแกรมจะเริ่มการวิเคราะห์รหัสผ่านทันทีและตัดสินใจว่าจะปลดล็อกประตูหรือไม่ ฉันหวังว่าความคิดเห็นของฉันในโค้ดจะช่วยได้ ## BUGS ## ฉันพยายามลบรหัสดีบัก USB แต่รหัสจะไม่ทำงานหากฉันลบ ดังนั้นฉันจึงทิ้งไว้ใน usb_init() และคำสั่ง print() ต่างๆ ฉันจะขอบคุณมากถ้ามีคนสามารถลบออกและยังมีโปรแกรมทำงานอยู่ ดียิ่งขึ้นถ้าพวกเขาสามารถอธิบายได้ว่าทำไมมันไม่ทำงานให้ฉัน ทันทีหลังจากตั้งโปรแกรม Teensy บางครั้งไม่ยอมรับการป้อนรหัส เพื่อแก้ปัญหานี้ ให้เปิดเครื่องวงจร
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง