فهرست مطالب:

رمزگشای سنسور RF آردوینو: 5 مرحله
رمزگشای سنسور RF آردوینو: 5 مرحله

تصویری: رمزگشای سنسور RF آردوینو: 5 مرحله

تصویری: رمزگشای سنسور RF آردوینو: 5 مرحله
تصویری: simple DIY two wheel robot || utilizes RF communication || uses encoder and decoder IC || 2024, جولای
Anonim
رمزگشای سنسور RF آردوینو
رمزگشای سنسور RF آردوینو

خانه قبلی من دارای یک سیستم امنیتی از پیش نصب شده بود که دارای سنسورهای در ، یک سنسور حرکت و یک صفحه کنترل بود. همه چیز به سختی به یک جعبه بزرگ لوازم الکترونیکی در گنجه وصل شده بود و دستورالعمل هایی برای سیم کشی تلفن ثابت وجود داشت تا در صورت زنگ خطر به طور خودکار شماره گیری کند. وقتی سعی کردم با آن بازی کنم ، متوجه شدم که یکی از سنسورهای درب به طور ناقص نصب شده است و دیگری به دلیل تراز نادرست متناوب است. در مورد نصب و راه اندازی حرفه ای که روی کارت ویزیت شرکت امنیتی تبلیغ می شود ، بسیار اهمیت دارد. راه حل من در آن زمان خرید چند دوربین امنیتی اینترنتی و یک زنگ هشدار امنیتی بی سیم ارزان بود.

به سرعت به جلو بروید و آن زنگ بی سیم در جعبه ای در زیرزمین من نشسته است. پس از خرید یک گیرنده RF ارزان ، تصمیم گرفتم ببینم آیا می توانم پیام های منتقل شده توسط انواع سنسورهای زنگ هشدار و ریموت های کنترل شده را رمزگشایی کنم یا نه. من متوجه شدم که همه آنها با جعبه زنگ ارزان کار می کردند ، بنابراین همه آنها باید از یک فرمت پیام با یک شناسه متفاوت استفاده کنند. به زودی متوجه شدم که آنها فقط در ساختار کلی پیامها مشابه هستند. بنابراین پروژه به سرعت از بی اهمیت به بسیار جالب تبدیل شد.

مرحله 1: ماژول های حسگر

ماژول های سنسور
ماژول های سنسور
ماژول های سنسور
ماژول های سنسور
ماژول های سنسور
ماژول های سنسور
ماژول های سنسور
ماژول های سنسور

همانطور که در تصاویر بالا مشاهده می کنید ، فرستنده ها شامل سنسورهای باز شدن درها ، آشکارسازهای حرکت ، کنترل از راه دور و صفحه کلید بی سیم است که برای برنامه ریزی جعبه زنگ هشدار استفاده می شود. همانطور که پیداست ، هیچ یک از این دستگاه ها از طول همگام سازی یا مدت زمان بیت یکسان استفاده نمی کنند. تنها ویژگی مشترک ، به غیر از طول پیام ، قالب اولیه بیت ها است. هر بیت یک دوره زمانی مشخص را به خود اختصاص می دهد که تفاوت بین صفر و یک چرخه وظیفه قسمتهای بالا/پایین است.

شکل موج زیبا نشان داده شده در بالا چیزی نیست که من برای اولین بار دریافت کردم. از آنجا که ترافیک بسیار زیادی در باند فرکانسی 433 مگاهرتز وجود دارد ، مجبور شدم مطمئن شوم که سنسور را درست قبل از تعیین محدوده برای انجام یک ماشه فعال می کنم. خوشبختانه سنسورها چندین کپی از پیام داده را هنگام فعال شدن ارسال می کنند و تا زمانی که یک کلید فشار داده شود ، کنترل از راه دور و صفحه کلید به خروجی پیام ها ادامه می دهد. با استفاده از محدوده می توانم طول همگام سازی و مدت زمان بیت داده برای هر مورد را تعیین کنم. همانطور که قبلاً ذکر شد ، زمان های همگام سازی متفاوت است و زمان بیت ها متفاوت است ، اما قالب های پیام همه دارای همگام سازی سطح پایین هستند که به دنبال آن 24 بیت داده و یک بیت توقف وجود دارد. این برای من کافی بود تا بتوانم یک رمزگشای عمومی را در نرم افزار ایجاد کنم بدون نیاز به کدگذاری همه جزئیات مختلف برای هر دستگاه.

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

سخت افزار
سخت افزار
سخت افزار
سخت افزار

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

اگر دفترچه راهنمای من را در "نمایش زمان و آب و هوا 3 در 1" بخوانید خواهید دید که من از یک گیرنده RXB6 معمولی ، 433 مگاهرتز استفاده می کنم. ممکن است بتوانید گیرنده های بسیار ارزان قیمت را در محدوده کوتاه مورد نیاز برای این پروژه مجبور کنید اما من هنوز توصیه می کنم از یک گیرنده فوق هترودین استفاده کنید.

مرحله 3: نرم افزار

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

زمان پالس همگام سازی و بیت های داده با استفاده از ورودی وقفه خارجی INT0 برای راه اندازی کنترل کننده وقفه تعیین می شود. INT0 می تواند در بالا ، پایین آمدن یا هر دو لبه یا در سطح پایین ثابت ایجاد شود. نرم افزار در هر دو لبه قطع می شود و مدت زمان کم بودن پالس را اندازه گیری می کند. این کار را ساده می کند زیرا پیام شروع/همگام سازی یک پالس سطح پایین است و بیت ها را می توان بر اساس زمان سطح پایین آنها تعیین کرد.

کنترل کننده وقفه ابتدا تعیین می کند که آیا تعداد ضبط شده به اندازه کافی طولانی است تا یک پالس شروع/همگام سازی باشد. دستگاه های مختلف من از پالس های همگام سازی 4 ، 9 ، 10 و 14 میلی ثانیه استفاده می کنند. دستورات تعریف شده برای مقادیر حداقل/حداکثر مجاز همگام سازی در نرم افزار وجود دارد و در حال حاضر برای 3 و 16 میلی ثانیه تنظیم شده است. زمان بیت نیز بین سنسورها متفاوت است ، بنابراین الگوریتم رمزگشایی بیت ها باید آن را در نظر بگیرد. زمان بیت اولین بیت همانند زمان بیت بعدی ذخیره می شود که تفاوت قابل توجهی با بیت اول دارد. مقایسه مستقیم زمانهای بعدی امکان پذیر نیست ، بنابراین از تعریف "fudge factor" ("تنوع") استفاده می شود. رمزگشایی بیت با این فرض شروع می شود که اولین بیت داده همیشه به عنوان منطق 1 ثبت می شود. این مقدار ذخیره می شود و سپس برای آزمایش بیت های بعدی استفاده می شود. اگر تعداد بیت های بعدی در پنجره واریانس مقدار ذخیره شده باشد ، همچنین به عنوان منطق 1 ثبت می شود. اگر خارج از پنجره واریانس مقدار ذخیره شده باشد ، به عنوان منطق 0. ثبت می شود. اگر منطق 0 زمان بیت کوتاه تر از زمان بیت اول است ، سپس یک پرچم تنظیم می شود تا به نرم افزار بگوید که بایت ها قبل از نمایش باید معکوس شوند. تنها موردی که این الگوریتم از کار می افتد این است که بیت های یک پیام همه 0 باشند. ما می توانیم این محدودیت را بپذیریم زیرا چنین پیامی بی معنی است.

سنسورهای مورد علاقه من همگی دارای طول پیام 24 بیت داده هستند ، اما نرم افزار به این طول محدود نمی شود. یک بافر تا حداکثر هفت بایت وجود دارد (می توان تعداد بیشتری را اضافه کرد) و حداقل و حداکثر طول پیام را در بایت تعریف می کند. این نرم افزار برای جمع آوری بیت ها ، تبدیل آنها به بایت ، ذخیره موقت آنها و سپس خروجی آنها با فرمت ASCII از طریق پورت سریال تنظیم شده است. رویدادی که باعث خروجی پیام می شود ، دریافت یک پالس شروع/همگام سازی جدید است.

مرحله 4: ثبت اطلاعات

ثبت اطلاعات
ثبت اطلاعات

این نرم افزار طوری تنظیم شده است که داده های تبدیل شده را به صورت کاراکتر ASCII از طریق خروجی سریال (TX) آردوینو خروجی دهد. وقتی نسخه PIC را تهیه کردم ، برای نمایش داده ها نیاز به رابط با یک برنامه ترمینال روی رایانه داشتم. یکی از مزایای Arduino IDE این است که دارای عملکرد Serial Monitor است. من نرخ پورت سریال را روی 115.2k تنظیم کردم و سپس پنجره Serial Monitor را به همان میزان تنظیم کردم. اسکرین شات در اینجا یک صفحه معمولی با خروجی های مختلف سنسورهایی که من دارم نشان می دهد. همانطور که می بینید ، داده ها گاهی اوقات کامل نیستند ، اما می توانید به راحتی تعیین کنید که ارزش واقعی هر سنسور چقدر باید باشد.

مرحله 5: نمونه نرم افزار گیرنده

نمونه نرم افزار گیرنده
نمونه نرم افزار گیرنده

من یک نمونه نرم افزار را درج کرده ام که نشان می دهد چگونه می توانید از اطلاعات جمع آوری شده برای دریافت مجموعه خاصی از کدها برای برنامه خود استفاده کنید. این مثال برای شبیه سازی یکی از خروجی های راه دور Etekcity من تنظیم شده است. یک فرمان LED تعبیه شده در نانو (D13) و فرمان دیگر LED را خاموش می کند. اگر LED خود را در Arduino خود نصب نکرده اید ، مقاومت و LED را همانطور که در نمودار نشان داده شده است اضافه کنید. در یک کاربرد واقعی ، این عملکرد باعث خاموش/خاموش شدن یک پریز برق (با استفاده از رله یا تریاک) می شود. زمان های همگام سازی ، بیت های بیتی و بایت های مورد انتظار داده ها همه از قبل برای سهولت اصلاح تعریف شده اند. می توانید از هر یک از خطوط داده باقی مانده برای روشن/خاموش کردن موارد و غیره برای برنامه خاص خود استفاده کنید. فقط کافی است کد فرمان قابل تعریف را اضافه کرده و منطق روشن/خاموش LED را در "حلقه" متناسب با نیازهای خود جایگزین کنید.

توصیه شده: