پروژه گیرنده ریموت کد لرن

در این پروژه قصد داریم تا با میکروکنترلر هشت بیت ARM(STM8S003F3P6)یک گیرنده ریموت کد لرن بسازیم.

ریموت کنترل های موجود در بازار در سه نوع زیر دسته بندی می شوند:

1-ریموت کد فیکس

2-ریموت کد لرن

3-ریموت کد هاپینگ

در ریموت های نوع اول کدی که ریموت کنترل به گیرنده می فرستد ثابت بوده و توسط دیپ سوئیچ های داخلی ریموت تنظیم می شود.برای ست کردن یک ریموت به گیرنده باید وضعیت دیپ سوئیچ های گیرنده و فرستنده(ریموت) در وضعیت یکسانی باشند تا ریموت برای گیرنده قابل شناسایی باشد.بدلیل محدود بودن حالت های دیپ سویچ ها در این نوع از ریموت ها امکان کپی برداری از آنها وجود دارد.فرکانس مورد استفاده در ریموت ها نیز سه فرکانس 315MHz-433MHz و 868MHz می باشد.

شکل موج این ریموت ها بصورت زیر می باشد:

بخش اول شامل پالس سینک یا Preamble می باشد که بصورت زیر بوده و پهنای زمان صفر آن 31 برابر پهنای زمان یک بودن آن می باشد:

پس از آن داده مربوط به آدرس ریموت شامل 20 بیت فرستاده می شود که دو پالس با زمان صفر زیاد، برای بیت صفر و دو پالس با زمان یک بودن زیاد، برای بیت یک می باشد.در این حالت نیز زمان یک بودن در بیت یک، سه برابر زمان صفر بودن آن و زمان صفر بودن در بیت صفر، سه برابر زمان یک بودن آن می باشد.

بدلیل وجود 10 بیت دیپ سوئیچ در ریموت های کد فیکس، برای هر بیت دو پالس دیتا در نظر گرفته شده است.

در قسمت آخر دیتا نیز کد دگمه فشار داده شده ریموت فرستاده می شود که شکل کلی یک پک کامل دیتا بصورت زیر می باشد:

که با فشار دادن دکمه های ریموت، این دیتا بصورت پشت سرهم و با فاصله های زمانی ثابت ارسال می گردد:

در ریموت های نوع کدلرن، دیتا بصورت زیر ارسال میشود:

که فرق آن با دیتای ریموت کدفیکس این است که برای هر بیت از یک پالس دیتا استفاده می گردد.

در ریموت های نوع کد هاپینگ دیتای ارسالی از ریموت به گیرنده با هر بار فشرده شدن دکمه های ریموت فرق می کند و با استفاده از پروتوکل یکسانی در فرستنده و گیرنده دیتای های متغیر در گیرنده دیکد شده و به عنوان دیتای معتبر شناخنه می شود.

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

سخت افزار پروژه بصورت زیر می باشد:

از مسیر زیر نیز میتوانید سورس کامل پروژه را در یافت نمائید:

 

دریافت فایل های پروژه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *