آردوینو آردوینو Arduino Uno آموزش آردوینو پروژه های آردوینو

تبدیل ریموت کنترل رادیویی به ریموت چند کاره پروژه ریموت کد لرن با آردوینو

RF-Remote-with-Arduino-and-ASK-RF-Module--digispark-
نوشته شده توسط بهزاد ستاره

پیش از این در مورد کنترل از راه دور، شیوه راه اندازی و پروتکل‌های مختلف آن در دیجی اسپارک، مفصل بحث شده است.  واژه کنترل از راه دور یا remote control به طور معمول برای صدور فرمان از فاصله دور، تلویزیون یا دیگر وسایل مصرفی الکترونیکی مانند سیستم‌های صوتی استفاده می‌شود. در ادامه این آموزش بسیار جذاب، شیوه دریافت کد ریموت رادیویی و استفاده از آن جهت ارسال فرمان به یک مدار را آموزش خواهیم داد. با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

انواع ریموت کنترل‌ها

۱- ریموت کنترل کد فیکس Fix code

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

 

۲- ریموت های کد لرنینگ Code Learner

ریموت‌های کد لرن نسبت به کد فیکس دارای امنیت بالاتری هستند. ولی بازهم احتمال کپی برداری از این ریموت‌ها وجود دارد. به صورت دستی کد روی این ریموت‌ها ست نمی‌شود. ابتدا لازم است که گیرنده در وضعیت شناسایی قرار گیرد سپس با فشردن کلیدهای ریموت، کد آن در حافظه گیرنده ذخیره شده و مجوز ثبت صادر می‌شود. لازم است بدانید که ظرفیت حافظه هر گیرنده در حدود ۲۵۰ تا ۵۰۰ ریموت است. برای شناسایی ریموت جدید به گیرنده باید حتما در حالت تعریف کد قرار گرفته باشد.

 

۳- ریموت‌های هاپینگ

در روش هاپینگ ارتباط میان ریموت و رسیور بر اساس یک کد ارتباطی برقرار می‌شود. این کد بر خلاف مدل کد لرنینگ ثابت نبوده و در هر بار ارتباط یک کد ارتباطی جدید توسط ریموت مورد استفاده قرار می‌گیرد. در این نوع ارتباط در حدود ۱۶ میلیون حالت برای کددهی وجود داشته که عملا کپی برداری از این مدل ریموت کنترل را غیر ممکن می‌سازد. همچنین شناساندن ریموت به رسیور فقط از طریق خود رسیور امکان پذیر می‌باشد. این ویژگی امنیت استفاده از این نوع ریموت‌ها را بسیار بالا برده و کپی برداری از ریموت Remote را غیرممکن می‌کند.

ماژول گیرنده رادیویی ASK در باند فرکانسی 433 - آموزش آردوینو Arduino -دیجی اسپارک

 

ماژول گیرنده رادویی DX-RF433

Ask مخفف Amplitude-Shift keying به دلیل سادگی و مقرون به صرفه بودن یکی از پرکاربردترین مدولاسیون‌های دیجیتال است. در مدولاسیون ASK سیگنال‌های صفر و یک با تغییر دامنه‌ی فرکانس حامل ارسال می‌شوند. گیرنده‌های رایج در دو فرکانس ۴۳۳ مگاهرتز و ۳۱۴ مگاهرتز موجود می‌باشند. این نوع ماژول بدون کریستال می باشد و با تغییر ولتاژ کاری فرکانس مرکزی شیفت پیدا می‌کنید. در اثر این وضعیت حساسیت و برد دریافت به شدت کاهش می‌یابد. ولی در ولتاژ ۵ ولت نسبت به گیرنده‌ی سوپرهترود این حساسیت بهتری دارد. عمده‌ترین کاربرد گیرنده‌های ASK در ریموت کنترل درهای اتوماتیک و سیستم‌های امنیتی، دزدگیر منازل و خودرو می‌باشد. استفاده از آنتن مناسب می‌تواند تاثیر محسوسی روی برد ارسالی داشته باشد. طول آنتن ربع موج برای این ماژول‌ها حدودا ۲۰ سانتی‌متر می‌باشد. می‌توانید از یک سیم افشانی با این طول به عنوان آنتن استفاده کنید.

 

هدف آموزش ریموت کد لرن دو کاناله

در این آموزش با استفاده از مازول گیرنده رادیویی ۴۳۳ مگاهرتزی و همچنین یک ریموت Remote لرنینگ ۴۳۳ مگاهرتزی به همراه برد آردوینو قصد داریم یک مدار کنترل از راه دور بسازیم. ریموت کنترل دو کاناله جهت کنترل وسایل و تجهیزات با قابلیت تعریف ریموت جدید طراحی می‌کنیم. در ادامه آموزش به بررسی وسایل مورد نیاز و کد برنامه خواهیم پرداخت.ریموت فرستنده رادیویی 433MHz آموزش خواندن کدهای ریموت کنترل با آردوینو - دیجی اسپارک

 

اتصالات مدار:

  • پایه VCC ماژول رله Relay را به پایه ۵ ولت آردوینو اتصال دهید.
  • پایه GND ماژول رله Relay را به پایه GND آردوینو اتصال دهید.
  • پایه IN رله شماره یک را به پایه ۵۰ اردوینو اتصال دهید .
  • پایه IN رله شماره دو را به پایه ۵۱ اردوینو اتصال دهید.
  • پایه data ماژول گیرنده ۴۳۳ مگاهرتزی را به پایه شماره ۲ اردوینو اتصال دهید.
  • پایه VCC ماژول گیرنده ۴۳۳ مگاهرتزی را به پایه ۵ ولت اردوینو اتصال دهید.
  • پایه GND ماژول گیرنده ۴۳۳ مگاهرتزی را به پایه GND اردوینو اتصال دهید.

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

 

ال سی دی LCD 20*4 با رابط I2C

در این آموزش از ال سی دی گرافیکی ۴*۲۰ با درایور راه انداز I2C استفاده می‌کنیم. ماژول راه انداز LCD با تراشه PCF8574 و رابط I2C مناسب برای مدیریت ال سی دی های کاراکتری و باعث کاهش حجم سیم کشی در طی پروژه خواهد شد. راه انداز LCD کاراکتری با رابط I2C دارای ۴ پایه SCL , SDA, VCC و GND است. در ادامه اتصال ال سی دی LCD به آردوینو را توضیح خواهم داد.

LCD کاراکتری در آموزش ریموت کنترل رادیویی با آردوینو - دیجی اسپارک

 

اتصال ال سی دی I2C به آردوینو

  • پایه SCL ماژول راه انداز ال سی دی با رابط I2C را به پایه SCL (پایه شماره ۲۱) آردوینو اتصال دهید.
  • پایه SDA ماژول راه انداز ال سی دی با رابط I2C را به پایه SDA (پایه شماره ۲۰) آردوینو اتصال دهید.
  • پایه VCC ماژول راه انداز ال سی دی با رابط I2C را به پایه ۵ ولت آردوینو اتصال دهید.
  • پایه GND ماژول راه انداز ال سی دی با رابط I2C را به پایه GND آردوینو اتصال دهید.

 

کدهای مدار ریموت کنترل با آردوینو

 

مهمان گرامی، جهت دسترسی به کدهای این پروژه، اسپارکر پلاس شوید.

 

 

وسایل مورد نیاز:

ماژول رله تک کانال ۵ ولت

کابل فلت نری به نری

کابل فلت نری مادگی

ریموت کد لرن ۴۳۳ مگاهرتز

برد اردوینو UNO یا Mega2560

راه انداز LCD کاراکتری با رابط I2C

LCD کاراکتری ۲۰*۴

ماژول گیرنده ۴۳۳ مگاهرتز

 

در ابتدا کتابخانه rc-switch-master را دانلود نموده و نصب کنید سپس کد را در نرم افزار آردوینو کپی کنید. بعد طبق اطلاعات گفته شده اتصالات را انجام دهید و کد را به نرم افزار آردوینو انتقال دهید. در این آموزش من از ریموت کنترل ۴۳۳ مگاهرتز به همراه ماژول گیرنده ۴۳۳ استفاده کردم چنانچه میخواهید از ریموت ۳۱۵ مگاهرتز استفاده نمایید باید ماژول گیرنده را نیز به ۳۱۵ مگاهرتز تغییر دهید. دقت کنید که  کلید های هر ریموت کد منحصر به فرد خود را دارند بنابراین با توجه به اینکه کد ریموت نوشته شده در آموزش منحصر به ریموت استفاده شده من در آموزش است، باید کد ریموت خود را دریافت و در کد برنامه آردوینو جایگزین کنید.

RF Remote control code with ardun o-digispark

دریافت کد ریموت در LCD

پس از کامپایل برنامه تغذیه اردوینو را متصل کنید. روی LCD عبارت  :CODE را مشاهده خواهید نمود که با فشار دادن هر کلید ریموت ، کدهای آن را روی LCD مشاهده خواهید کرد . کافیست ۴ کلید ریموت را فشار داده و کدهای آن را یادداشت نمایید . سپس باید کدهای ریموت استفاده شده را در کد آردوینو جایگزین کنید. به عنوان مثال برای جایگزین کردن کد کلید اول شما باید پس از مشاهده  آن در LCD کافیست به خط ۲۶ برنامه ( if(data==548803  مراجعه کرده و آن را با این عدد جایگزین کنید.  برای جایگزینی سایر کدها نیز به خطوط ۳۱ ، ۳۶ ، ۴۱ رفته و آن ها را با کد جدید جایگزین کنید.

 

تحلیل کد برنامه

پس از جایگزین کدها دوباره برنامه را کامپایل کرده و به اردوینو ارسال میکنیم . با فشار دادن کلیدها میتوان دو رله را خاموش یا روشن کرده و وضعیت فعلی هر رله را نیز روی LCD مشاهده نمایید . در صورتی که قصد تعریف یک ریموت جدید را نیز داشتید میتوانید مراحل بالا را دوباره تکرار نمایید.

 

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

 

پروژه

اخیرا تصمیم گرفته‌ایم برای تعامل بیشتر با شما کاربران و ایجاد موقعیتی در راستای رقابت دانش کاربران، در انتهای هر آموزش یک پروژه تعریف می‌کنیم. به اولین کاربری که به پروژه تعریف شده پاسخ صحیح بدهد، بن خرید به ارزش ۳۰ هزار تومان از فروشگاهدانشجوکیت ارایه خواهد شد. پروژه: با استفاده از یک ماژول GSM موارد تغییرات در مدار توسط ریموت رادیویی را به صورت SMS ارسال کنید. قسمت سیم کارت این مدار فقط برای ارسال بازخورد است. با هر فعالیت توسط ریموت رادیویی، موارد به صورت SMS جهت اطلاع رسانی ارسال می‌شوند.

 

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

بهزاد ستاره

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۸ دیدگاه

    • سلام ، ممنون از توجه شما
      شما میتوانید از یک اردوینو دیگر و ماژول رادیویی فرستنده و چند کلید فشاری یک فرستنده بسازید که با فشاردادن هر کلید کد خاصی ارسال شود و در گیرنده نیز همان کد باید تعریف شود.
      استفاده از ریموت هزینه کمتری خواهد داشت.

  • سلام تشکر از آموزش خوبتون

    حالا میشه همین کار روی رزبری انجام بشه و به صورت وایرلس انجام بشه یعنی دیگه لازم نباشه با سیم به برد متصل کنیم؟ آیا رله وایرلس وجود داره ؟ ممنون میشم پاسخ بدین

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

      • ممنون از جوابی که دادی

        منظورم این بود که شبیه دستگاه های کنترل کننده بیسیم تجهیزات خانه هوشمند میتونه بشه که رله را به صورت بیسیم کنترل کند

        • در مواردی مانند خانه های هوشمند هم رله به یک مدار کنترل متصل شده است که دستورات را از طریق ان دریافت میکند . شما قطعا باید رله را همراه با یک مدار کنترل مثل اردوینو به کار ببرید . دو راه وجود دارد : رله و اردوینو را نزدیک هم قرار دهید یا اینکه با سیم ان ها را در فاصله بیشتری قرار دهید .

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

    • سلام
      بیشتر ریموت های موجود در تجهیزات الکترونیکی یا از کریستال ۴۳۳ مگاهرتزی استفاده میکنند و یا ۳۱۵ مگاهرتز .
      اگر با فشردن یکی از کلیدهای ریموت کد رو مشاهده کردید یعنی اینکه فرکانس ریموت با ماژول گیرنده شما یکسان است .
      شما میتوانید از هر دو ماژول گیرنده همزمان در مدار استفاده کنید و البته باید کدهای برنامه رو گسترش دهید .

  • سلام , ممنون از آموزش
    اگر بخواهیم یک برد که از گیرنده و فرستنده استفاده میکنه و تغییر بدیم و به حالت غیر ریموت دربیاد , چه راهی داره ؟

      • من یک برد دارم که از ریموت برای باز و بسته کردن استفاده میکنه . میخوام که از حالت ریموت خارج بشه و بتونم با کلید معمولی با کابل وصل بشه و بتونم با کلید کلنگی یا هر کلیدی باز بسته کنم

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

  • سلام
    من یه ریموت کنترل کد لرن۳۱۵ مگاهرتز دارم که مال باز و بسته کردن در هست. آیا میشه با گیرنده با همین فرکانس ست کنم و در موارد دیگه هم استفاده کنم؟
    یا باید طبق آموزش شما برم؟

  • با سلام
    برای استفاده از آردینو UNO به جای استفاده از مگا پایه های ماژول I2C را به کدام یک از پایه های آردینو UNO متصل و چه تغییری در کد آن ایجاد کنم ؟
    با توجه به آموزش زیر و تغییر در آن برای استفاده از UNO
    پایه SCL ماژول راه انداز ال سی دی با رابط I2C را به پایه SCL (پایه شماره ۲۱) آردوینو اتصال دهید.
    پایه SDA ماژول راه انداز ال سی دی با رابط I2C را به پایه SDA (پایه شماره ۲۰) آردوینو

    • سلام اگه به پایه های اردوینو uno با دقت نگاه کنید پایه های SDA و SCL رو میتوانید پیدا کنید کنارشون نوشته شده است. فکر میکنم دو پایه اخر میباشد کنارشون نوشته شده است.

      • ممنون از شما….برای تغییر پایه پیش فرض دیتای ماژول fsk از پایه ی ۲ به پایه ی A5 و یا پایه دیگر کدام قسمت از کد باید ویرایش شود؟
        بنده هرچی گشتم پیدا نکردم جز این کد mySwitch.enableReceive(0); که با تغییر صفر به A5 تغییری نکرد.
        ممنون میشوم راهنماییم بفرمایید

    • مهندس این مشکل حل شد.
      حالا مشکلی که دارم اینه که وقتی کلید های ریموت رو میزنم هیچ اتفاقی نمیوفته
      من از گیرنده ask 433 استفاده کردم

      • سلام ، مطمین شوید ریموتی که دارید استفاده میکنید فرکانس اش ۴۳۳ مگاهرتز باشد ! برای دونستن فرکانس ریموت ، ابتدا پیچ های ان را باز کرده و روی برد ان یک کریستال فلزی شکل میبینید که فرکانس روی ان باید ۴۳۳ باشد . در واقع فرکانس ریموت و ماژول گیرنده باید یکی باشند .
        اگه فرکانس ها برابر بود و کار نکرد ترجیحا از یک ریموت دیگر با همین فرکانس استفاده کنید . مطمین شوید که اتصالات را درست بسته اید.

  • با سلام ممنون بابت اموزش خوبتان سوالی دارم در این مورد که در ریموت های و گیرنده های موجود در بازار هر دکمه وظیفه قطع و وصل رله مربوطه خود را دارد در اینجا اگر بخواهیم چگونه باید عمل کرد

    • سلام ، ممنون از توجه شما
      هر کلید یک کد مختص به خود را دارد . شما میتوانید با تعریف هر کلید یک وظیفه برای ان ایجاد کنید مثلا یک led را کنترل کنید یا ان را به یک رله متصل کنید.

  • با سلام سوالی دارم در مورد اینکه گیرنده های موجود در بازار هر کلید از ریموت علاوه بر وظیفه فعال کردن رله می تواند با تنظیم رله را نیز با همان کلید قطع کرد در خصوص اجرای چنین مورد چگونه باید عمل کرد

    • سلام بله میشه . این بستگی به دانش برنامه نویسی شما دارد . مثلا تعریف میکنیم که اگه یک کلید دوبار فشرده شد برنامه حالت قبل کلید رو بررسی کنه و بلعکس کنه .

  • مطالب رو خیلی با سلیقه و مرتب چیده شده ولی کل مطلب ناقص هست. و متاسفانه به درد نمیخوره.
    بخش ریموت که اصلی ترین بخش هست فقط تیتر وار ذکر شده. نام قطعه گفته نشده.. خوب با چی کار میشه ؟؟؟
    هیچی…