سلام خدمت همه شما مایکروالکامی ها. ریموت ها یکی از دستگاه های کاربردی در بسیاری از وسایل با قابلیت کنترل از راه دور میباشند. بعنوان مثال دستگاه پخش صوتی خانگی یا اتومبیل، تلویزیون، دستگاه های خنک کننده هوا (مثلا کولر گازی) و… . هر ریموت IR (مادون قرمز) میتواند از یکی از پروتکل های مطرح استفاده نماید. در این مطلب پروتکل NEC مورد بررسی قرار خواهد گرفت. پس با من تا انتهای مطلب همراه باشید. همچنین شما میتویند سایر مطالب من رو از این لینک مطالعه و بررسی کنید.
ریموت مادون قرمز IR
ریموت های مادون قرمز یا IR، یکی از ساده ترین، راحت ترین و ارزان ترین راه حل ها برای انتقال دیتا بصورت بیسیم میباشند. مسافت تحت پوشش این ریموت ها آنچنان زیاد نیست اما با این حال راه گشا بوده و در بسیاری از کاربرد ها مانند ریموت های تلویزیون، اتوماسیون های خانگی (خانه هوشمند) و … کاربرد دارد.
پروتکل های ریموت مادون قرمز IR
در کد های ایجاد شده در ریموت IR (مادون قرمز) پروتکل هایی مانند NEC و RC5 وجود دارند. در این مطلب به بررسی NEC پرداخته خواهد شد. جهت جلوگیری از ایحاد تداخل در سیگنال های خروجی LED مادون قرمز، در پروتکل NEC از سیگنال حامل 38KHz استفاده میگردد. دیتا ها (سیگنال پیام) در حقیقت با استفاده از یک سیگنال حامل 38KHz مدوله شده و توسط یک LED با امواج مادون قرمز در محیط ارسال خواهند شد. تصویر زیر شمای کلی از یک سیگنال ساخته شده را نشان میدهد.
تصویری که مشاهده میکنید بیانگر دیکد کردن دیتا میباشد. در حقیقت یک تصویر ساده از دیتای مدوله شده و دیتا اصلی میباشد. اما در حقیقت سیگنال ارسالی در فرستنده و دریافتی در گیرنده چیز دیگری است. در تصویر زیر یک سیگنال کامل ارسال شده از یک ریموت IR مشاهده میشود.
همیشه اصل اساسی در برقراری یک ارتباط رادیویی یا بیسیم، حفظ اصل محرمانگی اطلاعات، خواهد بود. لذا از همین رو پروتکل های مختلفی جهت ارسال و دریافت دیتا بوجود آمده است. پروتکل های موجود در ریموت های IR به نوعی همین موضوع را انجام میدهند. هنگامی یک کلید ریموت فشرده میشود، فرستنده مادون قرمز طیفی از داده ها و پالس ها را شروع به ارسال کرده و در سمت گیرنده دریافت و مورد پردازش قرار خواهند گرفت. تصویر قبلی دیتا های دریافت شده در گیرنده مادون قرمز در دستگاه گیرنده میباشد.
پروتکل NEC
همانطور که پیش تر ذکر شد، اصل اساسی در برقراری یک ارتباط بیسیم، حفظ محرمانگی دیتا میباشد. چنانچه دیتا ها بصورت خام و بدون هیچ گونه فرایند کد گذاری ارسال گردد، براحتی یک شخص ثالث میتواند آنها را دریافت و تغییرات مد نظر خود را اعمال کرده (فرایند خراب کاری) و مجددا آن را بسوی دستگاه گیرنده ارسال کند.
با این کار نه تنها دیتا صحیح مد نظر فرستنده اصلی توسط گیرنده دریافت نشده بلکه دیتا جعلی و اشتباه دریافت شده و در برخی موارد باعث ایجاد خسارت هایی خواهد شد. لذا، کد گذاری از اصلی ترین و پایه ای ترین اقدامات در ارسال دیتا بصورت بیسیم خواهد بود. در تصویر زیر پالس هایی که توسط پروتکل NEC ساخته و ارسال خواهند شد را مشاهده مینمایید.
بررسی پروتکل NEC
در NEC سیگنال با یک پالس/سیگنال طولانی بنام leader code به طول 9ms و به دنبال آن 4.5ms دیگر با منطق معکوس ، شروع خواهد شد. با دریافت و آشکار سازی بیت طولانی 9ms و بیت نات شده دیگر به طول 4.5ms، میتوان فهمید سیگنال دریافتی پروتکل NEC بوده و بدنبال آن دیتا های اصلی خود را خواهیم داشت.
پس از سیگنال شروع یا leader code دیتا های مربوط به آدرس که منحصر به فرد دستگاه میباشد و دیتا اصلی یا Command ارسال میگردد. آدرس و کامند دو بار ارسال میگردد. یک بار بصورت معمولی و یک بار دیگر بصورت نات شده.
دیکد کردن صفر و یک در سیگنال NEC
در پروتکل NEC با استفاده از فاصله بین پالس ها فرانید رمزگذاری اجرا میشود. هر پالس بصورت سری و پشت سر هم است و مدت زمانی آن برابر 562.5us با فرکانس 38KHz میباشد.
- صفر منطقی: یک پالس به طول 562.5us با منطق ‘1’ و به دنبال آن یک پالس دیگر به طول 562.5us با منطق ‘0’ خواهیم داشت. مدت زمان این دو پالس برابر 1125us میباشد.
- یک منطقی: یک پالس به طول 562.5us با منطق ‘1’ و به دنبال آن یک پالس دیگر به طول 1687us (در حقیقت معادل 3×562.5us) با منطق ‘0’ خواهیم داشت. مدت زمان این مجموع برابر 2250us خواهد بود.
بررسی دقیق سیگنال ایجاد شده در پروتکل NEC
هنگام فشردن یک کلید در ریموت کنترل مادون قرمز، سیگنال ایجاد شده دارای بخش های زیر خواهد بود.
- سیگنال شروع به طول 13.5ms (دو قسمت پشت سر هم: 9ms یک منطقی و 4.5ms صفر منطقی یا فاصله)
- آدرس 8 بیتی گیرنده
- آدرس 8 بیتی گیرنده نات شده
- 8 بیت برای دیتا اصلی یا کامند (دستورات)
- 8 بیت برای دیتا اصلی یا کامند (دستورات) نات شده
- پالس نهایی 562.5us به نشانه پایان ارسال
نکته: در ارسال 4 بایت دیتا شامل آدرس و کامند، ابتدا بیت کم ارزش یا LSB آنها در هر بخش ارسال میشود.
مثال
در تصویر زیر یک فرمت NEC را برای ارسال دیتا با آدرس 00 هگزا دسیمال (00000000 باینری) و کامند AD هگزا دسیمال (10101101 باینری).
نکته 1: مدت زمان ارسال هر 2 بایت (8 بیت آدرس + 8 بیت نات آدرس) یا (8 بیت کامند + 8 بیت نات کامند) برابر 27ms است. این زمان از مدت زمان های مربوط به هر 0 و 1 شدن پالس ها طبق زمان های بیان شده در قبل بوجود آمده است.
نکته 2: مدت زمان مورد نیاز برای ارسال کامل معادل 67.5ms است. این زمان بدون در نظر گرفتن پالس نهایی 562.5us که بیانگر پایان ارسال است بیان شده است.
کد تکرار
چنانچه کلید روی ریموت در حالت فشرده باقی بماند، یک کد تکرار صادر میشود. معمولا بعد از حدود 40ms بعد از پالس پایان ارسال. مادامی که کلید در حالت فشرده باقی بماند این کد در فواصل هر 108ms مدام ارسال شده تا کلید رها شود. کد تکرار شامل موارد زیر است.
- یک پالس شروع به مدت 9ms
- یک پالس فاصله به طول 2.25ms
- یک پالس 562.5us به معنی پایان کد تکرار
نکته: با توجه به 3 قسمت مطرح شده کد تکرار، مدت زمان این فرایند شامل جمع 3 بخش (9ms+2.25ms+562.5us) و معادل 11.8125ms خواهد بود.
گیرنده مادون قرمز TSOP38238
TSOP38238 یک گیرنده مادون قرمز است که میتواند فرکانس حامل را حذف کرده و دیتا اصلی را دیکد کند. تصویر قطعه و بلوک دیاگرام داخلی آن در ادامه آمده است.
هنگامی که یک کلید روی ریموت کنترل فشرده شود، امواج تولید شده مادون قرمز پس از فرایند رمز گذاری (با فرکانس حامل 38KHz و پروتکل NEC) توسط LED تعبیه شه منتشر خواهند شد. نور منتشر شده IR بدلیل اینکه خورشید نیز از خود امواج مادون قرمز ساطع میکند مدوله شده تا از وقوع اختلال جلوگیری به عمل آید.
نتیجه گیری
در این مطلب به بیان و بررسی دقیق پروتکل NEC یکی از پروتکل های موجود و مورد کاربرد در ریموت های مادون قرمز (IR) پرداخته شد. با دانستن شمای کلی و جزئیات این پروتکل به راحتی میتوان سیگنال آن را دیکد و دیتا اصلی را خارج نمود.
امیدوارم از این آموزش کمال بهره را برده باشید. در صورت داشتن هرگونه نظر یا سوال درباره این آموزش اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما به اشتراک بگذارید. همینطور میتونید این آموزش راداخل اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.
سلام بسیار عااااااااالی و کامل
من میخوام این دیتارو با میکرو بخونم امکانش هست بصورت شفاهی یه توضیحی بهم بدید که چطور اینکار رو انجام بدم .نمیدونم چطور باید تعریف کنم که برای مثال برای صفر منتقی هر وقت ۵۶۰ میلی ۱ اومد و بعدش ۵۶۰ میلی ۰ این رو صفر سیو کنه .نحوه خوندنش برام گنگه.ممنون میشم
سلام ارادت؛
توضیح بنده در قالب متن در کامنت زیاد موثر نخواهد بود. بهتره از سورس های آماده استفاده کنید و اول ببینید اونا چجوری انجام دادند شما هم همین رویه رو پیش برید. استفاده از لاجیک آنالایزر هم برای درک نحوه عملکرد کد ها خیلی موثر در برنامه نویسی و کار شما خواهد بود.
دم شما گرم بابت اطلاعات مفیدتون
سلام، از اینکه مطلب مفید واقع شده خوشحالیم.