สารบัญ:

Cryptap: ล็อคประตูตามจังหวะ: 5 ขั้นตอน
Cryptap: ล็อคประตูตามจังหวะ: 5 ขั้นตอน

วีดีโอ: Cryptap: ล็อคประตูตามจังหวะ: 5 ขั้นตอน

วีดีโอ: Cryptap: ล็อคประตูตามจังหวะ: 5 ขั้นตอน
วีดีโอ: CrypTap Bitcoin Maden Kazarak Para Kazanma 2024, พฤศจิกายน
Anonim
Cryptap: ล็อคประตูตามจังหวะ
Cryptap: ล็อคประตูตามจังหวะ
Cryptap: ล็อคประตูตามจังหวะ
Cryptap: ล็อคประตูตามจังหวะ
Cryptap: ล็อคประตูตามจังหวะ
Cryptap: ล็อคประตูตามจังหวะ

ด้วยแรงบันดาลใจจากกลไกการปลดล็อกประตูหลายอย่างที่ฉันเคยเห็นบน 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 บางครั้งไม่ยอมรับการป้อนรหัส เพื่อแก้ปัญหานี้ ให้เปิดเครื่องวงจร

แนะนำ: