📡 گیرندهی مادون قرمز (IR Receiver (TSOP / VS1838B))
| اسم انگلیسی | IR Receiver (TSOP / VS1838B) |
|---|---|
| در ووکوی (Wokwi) | wokwi-ir-receiver |
| دسته | 🌡️ سنسورها |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
گیرندهی مادون قرمز (IR Receiver) قطعهی سهپایهی کوچکی مثل TSOP38238 یا VS1838B است که نور مادون قرمز چشمکزن ریموت را میگیرد و به یک سیگنال دیجیتال تمیز تبدیل میکند. با یک گیرنده و کتابخانهی IRremote، هر ریموت خانگی فرمان آردوینو میشود: روشن و خاموش کردن چراغ، راندن ربات، تنظیم دما یا ورق زدن منوی LCD. در این صفحه گیرنده را همراه ریموت مجازی ووکوی میچینیم و یک LED را با سه دکمه در سه حالت کنترل میکنیم.
گیرنده IR در ووکوی (Wokwi)
در ووکوی گیرنده با شناسهی wokwi-ir-receiver و ریموت با wokwi-ir-remote اضافه میشوند. گیرنده سه پایه دارد: GND، VCC و DAT (خروجی داده). ریموت سیم ندارد؛ وقتی شبیهسازی اجرا شد، روی دکمههایش کلیک کن تا فرمان به گیرنده برسد.
{
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-ir-receiver", "id": "ir1", "top": -110, "left": 160, "attrs": {} },
{ "type": "wokwi-ir-remote", "id": "remote1", "top": -40, "left": 380, "attrs": {} }
],
"connections": [
[ "ir1:GND", "uno:GND.1", "black", [] ],
[ "ir1:VCC", "uno:5V", "red", [] ],
[ "ir1:DAT", "uno:2", "green", [] ]
]
}
| پایه در ووکوی | وصل به |
|---|---|
ir1:GND | uno:GND.1 |
ir1:VCC | uno:5V |
ir1:DAT | uno:2 |
remote1 | بدون سیم؛ با کلیک روی دکمهها کار میکند |
در تینکرکد فارسی هم گیرنده و ریموت مجازی رایگاناند؛ مدار آمادهی کنترل با ریموت و درس کنترل با ریموت همین کار را قدمبهقدم نشان میدهند.
سیمکشی با آردوینو
| پایهی قطعه | وصل به |
|---|---|
| GND (یا −) | GND |
| VCC (یا +) | 5V |
| DAT / OUT (یا S) | پین 2 |
| LED نشانگر | LED داخلی برد روی پین 13 |
ترتیب پایهها در گیرندهی تنها و ماژولهای آماده فرق دارد؛ قبل از وصل کردن، برگهی مشخصات یا نوشتهی روی ماژول را ببین. اگر گیرندهی تنها داری و ریموت از دور خوب جواب نمیدهد، یک خازن ۱۰ میکروفاراد بین VCC و GND نزدیک گیرنده نویز تغذیه را کم میکند.
کد نمونه
کتابخانهی IRremote نسخهی ۴ را از Library Manager نصب کن (در ووکوی، اسمش را به فهرست کتابخانههای پروژه اضافه کن). برنامه هر فرمان را با کد هگز چاپ میکند و سه دکمه را به سه حالت LED وصل میکند: روشن، خاموش و چشمکزن. فرمانهای تکراری، یعنی وقتی دکمه را نگه میداری، نادیده گرفته میشوند تا هر فشار فقط یک فرمان باشد.
// IR remote: key 1 = LED on, key 2 = LED off, key 3 = blink.
#include <IRremote.hpp>
const int IR_PIN = 2;
// Command codes - check yours in the Serial Monitor first.
// The Wokwi virtual remote sends 1 = 0x30, 2 = 0x18, 3 = 0x7A.
const uint8_t KEY_ON = 0x30;
const uint8_t KEY_OFF = 0x18;
const uint8_t KEY_BLINK = 0x7A;
int mode = 0; // 0 = off, 1 = on, 2 = blink
bool blinkState = false;
unsigned long lastBlink = 0;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
IrReceiver.begin(IR_PIN);
}
void loop() {
if (IrReceiver.decode()) {
uint8_t cmd = IrReceiver.decodedIRData.command;
bool repeat = IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT;
if (!repeat) {
Serial.print("command 0x");
Serial.println(cmd, HEX);
if (cmd == KEY_ON) mode = 1;
else if (cmd == KEY_OFF) mode = 0;
else if (cmd == KEY_BLINK) mode = 2;
}
IrReceiver.resume(); // ready for the next button
}
if (mode == 2) {
if (millis() - lastBlink >= 300) {
lastBlink = millis();
blinkState = !blinkState;
digitalWrite(LED_BUILTIN, blinkState ? HIGH : LOW);
}
} else {
digitalWrite(LED_BUILTIN, mode == 1 ? HIGH : LOW);
}
}
اگر ریموت واقعیات کدهای دیگری چاپ کرد، فقط سه ثابت بالای برنامه را با عددهای خودت عوض کن.
اشتباههای رایج
- کد قدیمی IRremote: خیلی از مثالهای اینترنتی با
IRrecvوdecode_resultsبرای نسخههای قدیمی نوشته شدهاند و با نسخهی جدید خطا میدهند. ازIrReceiverوdecodedIRData.commandاستفاده کن. - فراموش کردن resume: بدون
IrReceiver.resume()گیرنده بعد از اولین فرمان دیگر چیزی تحویل نمیدهد. - tone و IRremote با هم: روی اونو هر دو از تایمر ۲ استفاده میکنند و با هم تداخل دارند؛ اگر هم صدا و هم ریموت میخواهی، بهجای
toneاز بازر فعال با digitalWrite استفاده کن. - آفتاب مستقیم یا لامپ کممصرف: این منبعها مادون قرمز زیادی دارند و برد ریموت را کم میکنند. گیرنده را در سایه بگذار.
آموزشهای مرتبط
- کنترل آردوینو با ریموت مادون قرمز (IRremote جدید)
- ۴۰ مدار آردوینو برای ووکوی، از جمله کنترل با ریموت
- اضافه کردن کتابخانه در ووکوی
- رله؛ ریموت را به یک لامپ واقعی برسان
سؤالهای رایج
ریموت ووکوی را چطور به گیرنده وصل کنم؟
لازم نیست وصلش کنی. wokwi-ir-remote سیم ندارد؛ کافی است گیرندهی wokwi-ir-receiver در مدار باشد و حین اجرا روی دکمههای ریموت کلیک کنی.
چرا کد دکمههای ریموت من با مثال فرق دارد؟
هر ریموت کدهای خودش را دارد. اول برنامه را اجرا کن، دکمهها را بزن و کدی را که در سریال مانیتور چاپ میشود در ثابتهای بالای برنامه بنویس.
IRremote با tone تداخل دارد؟
روی آردوینو اونو بله، چون هر دو از تایمر ۲ استفاده میکنند. اگر صدا هم لازم داری، از بازر فعال با digitalWrite استفاده کن.