فهرست مطالب:

Cryptap: قفل درب مبتنی بر ریتم: 5 مرحله
Cryptap: قفل درب مبتنی بر ریتم: 5 مرحله

تصویری: Cryptap: قفل درب مبتنی بر ریتم: 5 مرحله

تصویری: Cryptap: قفل درب مبتنی بر ریتم: 5 مرحله
تصویری: Ритмический комбо-замок 2024, جولای
Anonim
Cryptap: قفل درب مبتنی بر ریتم
Cryptap: قفل درب مبتنی بر ریتم
Cryptap: قفل درب مبتنی بر ریتم
Cryptap: قفل درب مبتنی بر ریتم
Cryptap: قفل درب مبتنی بر ریتم
Cryptap: قفل درب مبتنی بر ریتم

با الهام از چندین مکانیسم باز کردن قفل درهایی که در hackaday.com دیده ام ، تصمیم گرفتم به تنهایی یکی از آنها را ایجاد کنم. این یکی دارای رابط دو دکمه است. یکی برای شروع و پایان دادن به ارسال رمز عبور ، و دیگری برای ضربه زدن به ریتمی که رمز عبور شما است. چراغ وضعیت نیز وجود دارد. من با استفاده از قطعاتی که طی چند ماه گذشته جمع آوری کرده بودم ، واقعاً ارزان قیمت ساختم. تنها چیزی که باید برای آن هزینه می کردم ، خود میکروکنترلر بود که 21 دلار (https://www.pjrc.com/teensy/) بود و چند سیم آویزان که قبلا داشتم.

استفاده از تم جنگ ستارگان یا چیزی برای ورود به اتاق من بسیار سرگرم کننده است. در حال حاضر ، من نگران این نیستم که خودم را دوباره از اتاقم قفل کنم! علاوه بر این ، احساس خوب و جالبی دارد.

مرحله 1: قطعات و ابزارها

قطعات و ابزار
قطعات و ابزار
قطعات و ابزار
قطعات و ابزار

من Teensy را انتخاب کردم زیرا این اولین میکروکنترلر من است و هنوز برنامه نویس ندارم. Teensy فقط به یک کابل USB A-miniB و نرم افزار رایگان برای نصب ، سازگار با Mac/Windows/Linux نیاز دارد. همچنین ، بارگذاری فایل hex بسیار آسان است. فقط کامپایل کنید و دکمه Teensy را فشار دهید.

هزینه این پروژه برای من 21 دلار بود ، به علاوه سیم آویزان تصویر. قسمتهایی از خیابان از یک قهوه ساز (رله ، LED ، خازن) و روتر (LED ، جک مدولار ، جک قدرت ، خازن) به دست می آمد. نمونه های رایگان تنظیم کننده 5 ولت 7805 ، دکمه ها و سوئیچ بودند. من همچنین موارد زیادی را در جعبه "قطعات شکسته" در آزمایشگاه EE خود پیدا کردم: اتصالات موز و کابل ، سیم ، درایور sn754410 ، سربرگ چهار پین و مقاومت. من یک شارژر لپ تاپ اضافی داشتم که برای تغذیه از آن استفاده می کردم و یک کابل مودم اپل که زبانه آن شکسته بود. سخت افزار دیگر: یک صفحه دیواری. من از تفنگ چسب حرارتی ، آهن لحیم کاری ، یک سوزن و یک مته قدرت استفاده کردم که تقریباً استاندارد هستند. غیر معمول ترین چیزی که من استفاده کردم یک ابزار بلند و انعطاف پذیر بود.

مرحله 2: سخت افزار موجود

سخت افزار از قبل موجود
سخت افزار از قبل موجود
سخت افزار از قبل موجود
سخت افزار از قبل موجود
سخت افزار از قبل موجود
سخت افزار از قبل موجود
سخت افزار از قبل موجود
سخت افزار از قبل موجود

من بسیار خوش شانس بودم که قبلاً آنقدر نصب شده بود. اتاق من از طریق ADA قابل دسترسی است و لوله های مختلف ، جعبه های برقی و ضربه گیر درب برقی قبلاً نصب شده بود. با برداشتن ضربات در از روی کنجکاوی ، متوجه شدم که وصل نیست. یک لوله از ضربات در به یک صفحه دیواری خالی در داخل اتاق من و یک لوله دیگر از آنجا به یک صفحه دیواری خالی خارج وجود داشت.

اعتصاب درب می گوید که برای کار به 24 ولت@3A نیاز دارد ، اما من توانستم با منبع تغذیه 19 ولت و 7.9 آمپر که داشتم کار کنم. اعتصاب درب قطبی بود ، بنابراین مطمئن شوید که قطبیت را درست کرده اید!

مرحله 3: مدارها

مدارها
مدارها
مدارها
مدارها
مدارها
مدارها
مدارها
مدارها

برای کنترل ضربات در ، از رله ای که در دستگاه نفوذ کننده قهوه پیدا کردم استفاده کردم. این رله برای رانندگی به بیش از 5 ولت TTL نیاز داشت ، بنابراین از sn754410 برای ترجمه TTL به 19 ولت استفاده شد که رله را هدایت می کرد. sn754410 در واقع یک راننده چهارنفره H است ، بنابراین من 3/4 تراشه را هدر می دادم ، اما هیچ ترانزیستور قدرت نداشتم ، بنابراین من از آن استفاده کردم.

تراشه sn754410 دارای دو پین VCC است ، یکی برای 5 ولت ، دیگری برای ولتاژی که می خواهید بیرون بیاید ، که برای من 19 ولت بود. واقعا چیپ باحالیه می توانید از این دستگاه برای حرکت مستقیم موتورها و رله ها استفاده کنید ، زیرا می تواند 1A در هر چهارم تراشه را تغییر دهد و دارای دیودهای محافظ داخلی است. به برگه اطلاعات نگاهی بیندازید. در مدارم ، sn754410 را مستقیماً به پین خروجی Teensy وصل کردم. دکمه ها بصورت active-low متصل می شوند که برای میکروکنترلرها بسیار رایج است. آنها مستقیماً به Teensy متصل هستند ، به این معنی که من باید در نرم افزار debouncing را انجام دهم. چراغ وضعیت از طریق مقاومت 1 کیلو اهم به Teensy متصل می شود. چیز خاصی نیست. مدار بدون خازن کار می کرد ، اما در هر صورت آنها را در هر صورت قرار دادم. در هر دو ریل قدرت 19 و 5 ولت به زمین درپوش محافظ وجود دارد. هنگام برنامه نویسی Teensy ، 5 ولت از USB تهیه می شد ، اما وقتی به تنهایی کار می کرد ، قدرت از آجر قدرت لپ تاپ تامین می شد. وقتی رگولاتور 7805 را مستقیماً به 19 ولت وصل کردم ، واقعاً داغ شد ، بنابراین شبکه ای از مقاومت ها را برای محدود کردن ولتاژ و جریان ورودی به رگولاتور وارد کردم. این یک کلدج بود ، اما اکنون همه چیز در دمای قابل کنترل است.

مرحله 4: سیم کشی آن با هم

سیم کشی آن با هم
سیم کشی آن با هم
سیم کشی آن با هم
سیم کشی آن با هم

نوجوان مشکلی نداشت. دارای پین است ، بنابراین می توانید آن را مستقیماً به تخته نان متصل کنید.

تصمیم گرفتم سیم ها را به رنگ قرمز (+) و کابل های موز سیاه (-) از جعبه قطعات شکسته آزمایشگاه کدگذاری کنم. برخی از دوشاخه ها از سیم های آنها جدا شده بود ، بنابراین من مقداری پلاستیک را با چسب دور کردم تا نقطه لحیم کاری نمایان شود. من واقعاً دوست دارم که شاخه های موز آزمایشگاهی چگونه می توانند به یکدیگر متصل شوند. من از کابل تلفن اپل برای اتصال دکمه ها و چراغ وضعیت خارج اتاق به Teensy داخل استفاده کردم. از آنجا که یک طرف آن شکسته بود ، آن قسمت را جدا کردم و در سربرگ چهار پین لحیم کردم و آن را با چسب حرارتی مهر و موم کردم. این به خوبی به تخته نان من متصل شد. طرفی که پریز را رها کردم به جک ماژولار که از روتر نجات دادم رفت. هر چهار سیم مورد استفاده قرار گرفت (GND ، چراغ وضعیت ، دکمه شروع/توقف ، دکمه کد). اگر توجه نکرده اید ، من از دوشاخه ها و اتصالات استفاده می کنم. آجر برق متصل به جک پاور که من آن را از روتر حذف کردم. عبور سیم ها از طریق لوله های دیواری چندان دشوار نبود ، زیرا به وسیله چنگال انعطاف پذیر بود. این واقعا روز من را نجات داد.

مرحله 5: کد

کد
کد
کد
کد

من سعی کردم کد خود را کامنت کنم. به خاطر داشته باشید که این نرم افزار 1.0 است ، بدین معنا که بدون اشکال نیست. چراغ وضعیت به آرامی شروع به چشمک زدن می کند. 2. روی دکمه کد روی کد خود ضربه بزنید. چراغ وضعیت در 120 BPM چشمک می زند ، بنابراین در صورت تمایل می توانید از آن به عنوان مترونوم خود استفاده کنید. با این حال ، برنامه رمزنگاری طول پالس را نسبت به یکدیگر متناسب اندازه گیری می کند ، بنابراین می توانید از سرعت خود نیز استفاده کنید. فقط مطمئن شوید که از دقت کافی برخوردار هستید! 3. پس از اتمام ورود کد ، دکمه شروع/توقف را دوباره فشار دهید. سپس برنامه تصمیم می گیرد که آیا به شما اجازه ورود می دهد یا خیر. از آنجا که انسانها زمان نگهدارنده دقیقی نیستند (شما واقعاً چنین نیست) ، من نسبت تحمل را به +/- 30 set تنظیم کردم. این بدان معناست که طول ضربات می تواند در آن مقدار نادرست باشد و همچنان از تعداد بیشتری عبور کند. این به اندازه کافی خوب است تا تفاوت بین آهنگهای تقریباً مشابه را تشخیص دهد. مقدار کمی همپوشانی بین ضربه های دو و سه طول وجود دارد ، اما شکستن کد هنوز بسیار سخت است. برای باز کردن قفل درب ، ضربان ها باید نسبت صحیح با یکدیگر داشته باشند (+/- نسبت تحمل) ، و تعداد ضربه ها باید صحیح باشد. اگر گذرواژه نامعتبری وارد شود ، برنامه چند ثانیه منتظر می ماند در حالی که هیچگونه ورودی کاربر را نادیده می گیرد. همچنین چراغ وضعیت را به سرعت چشمک می زند. اگر کد صحیح وارد شود ، چراغ وضعیت به طور مداوم روشن می شود و درب به مدت 8 ثانیه باز می شود. ## پیکربندی کاربر ## کلید در یک آرایه به این صورت ذخیره می شود: 1 ، 3 ، 3 ، 3} ؛ // "تولدت مبارک برای شما" آرایه مقدار زمانی را که بین ضربه ها اتفاق می افتد ذخیره می کند. بنابراین اگر رمز عبور شما دارای شش یادداشت مانند "تولدت مبارک باشد" ، باید پنج عنصر در آرایه وجود داشته باشد. اگر رمز عبور شما واقعاً طولانی است و بیش از 16 ضربه در آن دارید (واقعاً سخت است ، من آن را توصیه نمی کنم) ، باید تعداد تعریف شده در این خط را افزایش دهید: #تعریف ورودی کد طول 16 ## بقیه کد # # من در مورد وقفه کنجکاو بودم ، بنابراین دکمه های من باعث وقفه می شد. برای سهولت استفاده از این وقفه ها ، من از کنترل کننده های وقفه خود برای نشانگرهای عملکردی خاصی استفاده کردم. اگر اشاره گر روی NULL تنظیم نشده باشد ، تابع مورد نظر فراخوانی می شود. اینها با توابع مختلف "تنظیم حالت" در داخل cryptap.c تنظیم شده اند. من سعی کردم با تنظیم حداکثر تعداد پالس های ورودی ، از سرریز بافر جلوگیری کنم. اگر حداکثر تعداد پالس ها وارد شوند ، برنامه بلافاصله تجزیه و تحلیل رمز عبور را آغاز می کند و تصمیم می گیرد که قفل در را باز کند یا خیر. امیدوارم نظرات من در کد کمک کند. ## اشکالات ## من سعی کردم کد اشکال زدایی USB را حذف کنم ، اما اگر این کار را انجام دهم ، کد کار نمی کند. بنابراین ، من عبارت usb_init () و دستورات مختلف print () را ترک کردم. اگر کسی بتواند آنها را حذف کند و هنوز هم برنامه کار کند ، از آن قدردانی می کنم. حتی بهتر است اگر آنها توضیح دهند که چرا برای من کار نکرد. بلافاصله پس از برنامه نویسی ، Teensy گاهی اوقات ورودی کد را نمی پذیرد. برای حل این مشکل ، مدار را با چرخه قدرت تغذیه کنید.

توصیه شده: