شِفر (کود) جستجو

درس ۲۱/۳۱: استفاده از کنترل از راه دور مادون قرمز با آردوینو | سانفاندر روبوجَکس

درس ۲۱/۳۱: استفاده از کنترل از راه دور مادون قرمز با آردوینو | سانفاندر روبوجَکس

مقدمه

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

کنترل_مادون_قرمز
پایه‌های_گیرنده_IR

در اینجا چند ایده الهام‌بخش برای آنچه می‌توانید با این فناوری بسازید آورده شده است:

  • جایگزین کنترل از راه دور جهانی: یک کنترل سفارشی برای تلویزیون، سیستم صوتی یا سایر دستگاه‌های کنترل‌شونده با IR بسازید.
  • اتوماسیون خانگی: با فشردن یک دکمه روی کنترل استاندارد، چراغ‌ها، فن‌ها یا سایر لوازم را کنترل کنید.
  • پروژه‌های تعاملی: یک سیستم امنیتی بسازید که با فشردن یک دکمه خاص، آلارم را فعال کند.
  • کنترل رباتیک: از یک کنترل IR برای کنترل بی‌سیم حرکت و اقدامات ربات استفاده کنید.
  • ابزارهای دسترس‌پذیری: یک کنترل ساده با دکمه‌های بزرگ برای افراد با محدودیت حرکتی توسعه دهید.

سخت‌افزار و قطعات

این پروژه حول چند قطعه ساده ساخته شده است که همه آن‌ها معمولاً در کیت‌های شروع‌کار مانند کیت ۳ در ۱ SunFounder گنجانده شده‌اند. شما نیاز دارید:

  • یک برد آردوینو (مانند Uno)
  • یک ماجیول گیرنده IR (مانند TSOP38238 یا مشابه)
  • یک کنترل از راه دور IR استاندارد (با باتری CR2025)
  • یک بازر غیرفعال
  • سیم‌های جامپر و یک بردبورد

راهنمای سیم‌کشی

سیم‌کشی_کنترل_از_راه_دور_IR

در اینجا نمودار سیم‌کشی ساده برای این پروژه آمده است. گیرنده IR جزء کلیدی است. وقتی به سطح منحنی گیرنده نگاه می‌کنید، چیدمان پایه‌ها به صورت زیر است:

  • پایه راست: به پایه 5V آردوینو متصل کنید.
  • پایه وسط: به پایه GND آردوینو متصل کنید.
  • پایه چپ (سیگنال): به پایه دیجیتال ۱۱ آردوینو متصل کنید.

علاوه بر این، برای بخش اقدام پروژه، پایه مثبت (بلندتر) بازر را به پایه دیجیتال ۲ و پایه دیگر را به GND متصل کنید.

توضیح شِفر (کود)

این پروژه به کتابخانه IRremote برای انجام کار پیچیده رمزگشایی سیگنال‌های مادون قرمز متکی است. شِفر (کود) به گونه‌ای ساختار یافته است که ابتدا کدهای خاص کنترل شما را یاد بگیرد و سپس از آن‌ها برای فعال‌سازی اقدامات استفاده کند. بیایید بخش‌های قابل تنظیم توسط کاربر را بررسی کنیم.

ابتدا، پایه‌ای را که سیم سیگنال گیرنده IR به آن متصل است تعریف می‌کنیم. این یک پیکربندی حیاتی است که باید با سیم‌کشی فیزیکی شما مطابقت داشته باشد.

const int IR_RECEIVE_PIN = 11;  // شماره پایه حساس(حس کننده) IR را تعریف کنید

در تابع setup()، گیرنده IR با استفاده از پایه‌ای که تعریف کردیم مقداردهی اولیه می‌شود. این به کتابخانه می‌گوید که گوش دادن به سیگنال‌ها روی آن پایه را شروع کند.

IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // گیرنده IR را شروع کنید

هسته منطق اقدام در loop() است. شِفر (کود) بررسی می‌کند که آیا کلیدی فشرده شده است و آن را رمزگشایی می‌کند. تابع decodeKeyValue() یک تابع سفارشی است که شِفر (کود) هگزادسیمال خام از کنترل را به یک رشته قابل خواندن مانند "POWER" یا "MUTE" ترجمه می‌کند. این بخشی است که برای مطابقت با کنترل خاص خود تغییر می‌دهید. شِفر (کود) مثال یک buzzerPin تعریف می‌کند و آن را فقط زمانی روشن می‌کند که دکمه "POWER" فشرده شود.

const int buzzerPin = 2; // پایه بازر را تعریف کنید
// ... داخل loop()
if (decodedValue == "POWER") {
    digitalWrite(buzzerPin, HIGH); // بازر را روشن کنید
} else {
    digitalWrite(buzzerPin, LOW); // بازر را خاموش کنید
}

نحوه استفاده: تابع decodeKeyValue() کلید سفارشی‌سازی این پروژه است. برای استفاده با کنترل خود، ابتدا باید شِفر (کود) را با باز بودن Serial Monitor اجرا کنید. هر دکمه روی کنترل را فشار دهید و مقدار هگزادسیمال چاپ‌شده برای هر کدام را یادداشت کنید. سپس، عبارت switch در تابع decodeKeyValue() را به‌روزرسانی کنید تا آن مقادیر را به نام‌های معنادار نگاشت کند. سپس می‌توانید از این نام‌ها در عبارات if خود برای فعال‌سازی اقدامات مختلف استفاده کنید، همانطور که مثال برای دکمه "POWER" انجام می‌دهد.

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

پس از آپلود شِفر (کود)، Serial Monitor را با نرخ باود ۹۶۰۰ باز کنید. کنترل خود را به سمت گیرنده IR بگیرید و یک دکمه را فشار دهید. Serial Monitor نام کلید مربوطه (مانند "POWER"، "MUTE") را نمایش می‌دهد. برای مشاهده اقدام در عمل، دکمه "POWER" را فشار دهید. صدای روشن شدن بازر را خواهید شنید. فشردن هر دکمه دیگری مانند "MUTE" بازر را خاموش می‌کند. این یک مفهوم ساده اما قدرتمند را نشان می‌دهد: استفاده از یک کنترل از راه دور برای فعال‌سازی خروجی‌های دیجیتال روی آردوینو.

فصل‌ها

  • [00:00] مقدمه‌ای بر کنترل از راه دور مادون قرمز با آردوینو
  • [01:25] مرور کلی گیرنده و فرستنده مادون قرمز
  • [02:24] آشنایی با ماجیول گیرنده مادون قرمز و سیم‌بندی
  • [03:31] نصب کتابخانه IRremote
  • [04:22] باز کردن و توضیح شِفر (کود) رمزگشایی
  • [07:29] آپلود شِفر (کود) و امتحان کلیدهای کنترل از راه دور
  • [08:41] افزودن یک عمل: کنترل یک بازر
  • [10:37] پیش‌نمایش پروژه‌های آینده مادون قرمز

تصاویر

IR_receiver_pins
IR_receiver_pins
infrare_remote
infrare_remote
ir_remote_control_wiring
ir_remote_control_wiring
904-Lesson 21/31: Arduino code fpor decoding Infrared from remote signal
زبان: C++
/*
Lesson 21/31: Decoding Infrared from remote
Get this code and watch video Download and resource page https://robojax.com/RJT604
YouTube video https://www.youtube.com/watch?v=EAlqaVy8fYY

*/
#include <IRremote.h>

const int IR_RECEIVE_PIN = 11;  // Define the pin number for the IR Sensor
String lastDecodedValue = "";  // Variable to store the last decoded value

void setup() {
  Serial.begin(9600);                                     // Start serial communication at 9600 baud rate
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Start the IR receiver
}

void loop() {
  if (IrReceiver.decode()) {
    String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command);
    if (decodedValue != "ERROR") {
      Serial.println(decodedValue);
      delay(100);
    }
    IrReceiver.resume();  // Enable receiving of the next value
  }
}

String decodeKeyValue(long result)
{
  switch(result){
    case 0x16:
      return "0";
    case 0xC:
      return "1"; 
    case 0x18:
      return "2"; 
    case 0x5E:
      return "3"; 
    case 0x8:
      return "4"; 
    case 0x1C:
      return "5"; 
    case 0x5A:
      return "6"; 
    case 0x42:
      return "7"; 
    case 0x52:
      return "8"; 
    case 0x4A:
      return "9"; 
    case 0x9:
      return "+"; 
    case 0x15:
      return "-"; 
    case 0x7:
      return "EQ"; 
    case 0xD:
      return "U/SD";
    case 0x19:
      return "CYCLE";         
    case 0x44:
      return "PLAY/PAUSE";   
    case 0x43:
      return "FORWARD";   
    case 0x40:
      return "BACKWARD";   
    case 0x45:
      return "POWER";   
    case 0x47:
      return "MUTE";   
    case 0x46:
      return "MODE";       
    case 0x0:
      return "ERROR";   
    default :
      return "ERROR";
    }
}

مواردی که ممکن است به آن‌ها نیاز داشته باشید

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

کتابخانه‌های آردوینو (zip)