亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用Arduino红外遥控控制任意设备:分步教程

本Arduino红外教程将讲解如何使用电视遥控器和Arduino控制电子设备。我们将从控制简单LED开始,进阶到控制直流风扇转速,最后控制高压家用电器。您可以观看以下视频或阅读下方文字教程。

工作原理

按下遥控器按键时,遥控器前端的红外LED会闪烁。这只能通过摄像头看到,因为红外光人眼不可见。

使用Arduino红外遥控控制任意设备:分步教程

闪烁意味着按键按下时红外LED发出一连串光脉冲,需用红外接收器接收。

使用Arduino红外遥控控制任意设备:分步教程

本教程使用V 34838红外接收器,其框图显示它将放大、滤波并解调接收信号,输出适合Arduino数字输入的干净逻辑信号。

使用Arduino红外遥控控制任意设备:分步教程

使用Ken Shirriff的Arduino-IRremote库及其演示示例,可在串口监视器看到每个按键对应的唯一十六进制代码,供编程使用。

使用Arduino红外遥控控制任意设备:分步教程

Ken Shirriff Arduino-IRremote库地址:https://github.com/z3t0/Arduino-IRremote

用电视遥控器控制RGB LED


所需组件:

  • 红外接收器………………………………
  • RGB LED…………………………………
  • 3个220欧姆电阻………….……
  • Arduino开发板………………………………..
  • 面包板和杜邦线…………..

我们将用遥控器的4个颜色按键控制LED颜色。首先上传IRrecvDemo示例并打开串口监视器,按下各颜色按键记录其十六进制代码。

使用Arduino红外遥控控制任意设备:分步教程

修改演示代码,添加if语句判断按键代码,设置相应RGB值,调用setColor()函数点亮LED。RGB LED详细用法请参考我的Arduino RGB教程。

/*
 * 用电视遥控器控制RGB LED
 * 修改自Ken Shirriff IRremote库的IRrecvDemo示例
 * Ken Shirriff https://arcfn.com
 * 修改:Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include <IRremote.h>
int RECV_PIN = 8; // 红外接收器接Arduino 8号引脚
IRrecv irrecv(RECV_PIN);
decode_results results;
int redPin = 5; int greenPin = 6; int bluePin = 7;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // 启动接收器
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    if (results.value == 0xF21D7D46) { // 红色按键
      setColor(255, 0, 0); delay(100);
    }
    if (results.value == 0x87CF1B29) { // 绿色按键
      setColor(0, 255, 0); delay(100);
    }
    if (results.value == 0x6623D37C) { // 黄色按键
      setColor(255, 255, 0); delay(100);
    }
    if (results.value == 0x854115F2) { // 蓝色按键
      setColor(0, 0, 255); delay(100);
    }
    if (results.value == 0x1639AB6E) { // 停止按键
      setColor(0, 0, 0); delay(100);
    }
    irrecv.resume(); // 接收下一个值
  }
  delay(100);
}

// 自定义函数:激活RGB LED
void setColor(int red, int green, int blue) {
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}
代码语言: Arduino (arduino)

Arduino红外控制RGB LED电路原理图:

使用Arduino红外遥控控制任意设备:分步教程

用电视遥控器控制直流风扇转速


所需组件:

  • 直流电机……………….
  • 或直流风扇……………….
  • NPN三极管………
  • 二极管…………………….
  • 电容 - 1uF ……..
  • 电阻 - 1k欧姆 ..

本示例用遥控器的前进/后退按键控制风扇转速。电路原理图用于控制风扇转速,实际是通过按键控制PWM信号。电路原理详见我的Arduino电机教程。

使用Arduino红外遥控控制任意设备:分步教程

源代码:用analogWrite()向三极管基极发送PWM信号。PLAY键启动电机全速(PWM占空比100%),STOP键停止。前进键每按一次增加占空比(加速),后退键减少占空比(减速)。

/*
 * 用电视遥控器控制直流风扇转速
 * 修改自Ken Shirriff IRremote库的IRrecvDemo示例
 * Ken Shirriff https://arcfn.com
 * 修改:Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include <IRremote.h>
int RECV_PIN = 8; int pwmPin = 7; int pwmValue;
IRrecv irrecv(RECV_PIN); decode_results results;

void setup() {
  Serial.begin(9600); irrecv.enableIRIn();
  pinMode(pwmPin, OUTPUT); pwmValue = 0; // 启动时电机关闭
}

void loop() {
  if (irrecv.decode(&results)) {
    analogWrite(pwmPin, pwmValue);
    if (results.value == 0xAFAF8374) { // PLAY键
      pwmValue = 255; // 100%占空比 | 最大速度
    }
    if (results.value == 0x98519C65) { // STOP键
      pwmValue = 0; // 0%占空比 | 关闭
    }
    if (results.value == 0x93F1BA08) { // 前进键
      if(pwmValue <= 245){ pwmValue += 10; delay(20); }
    }
    if (results.value == 0x71D086FF) { // 后退键
      if(pwmValue >= 20){ pwmValue -= 10; delay(20); }
    }
    Serial.print(pwmValue); Serial.print(" "); Serial.println(results.value, HEX);
    irrecv.resume();
  }
  delay(100);
}
代码语言: Arduino (arduino)

用电视遥控器控制高压家用电器


所需组件:

  • 5V继电器模块……. Amazon / Banggood / AliExpress
  • 电缆、插头、插座

最后示例:用遥控器控制高压家电。需继电器模块,我用HL-52S,额定10A @ 250V和125V AC。电路原理图:Arduino 7号引脚控制继电器,继电器上有插座可接任意高压设备。

使用Arduino红外遥控控制任意设备:分步教程

警告:使用高压,操作不当可能导致严重伤害或死亡,后果自负。 继电器用法及制作插座详见我的Arduino继电器教程。

使用Arduino红外遥控控制任意设备:分步教程

源代码:

/*
 * 用电视遥控器控制高压家用电器
 * 修改自Ken Shirriff IRremote库的IRrecvDemo示例
 * Ken Shirriff https://arcfn.com
 * 修改:Dejan, www.HowToMechatronics.com
 */
#include <IRremote.h>
int RECV_PIN = 8; int relayOut = 7; int buttonState;
IRrecv irrecv(RECV_PIN); decode_results results;

void setup() {
  Serial.begin(9600); irrecv.enableIRIn();
  pinMode(relayOut, OUTPUT);
  buttonState = HIGH; // 启动时继电器关闭。继电器输入反相,HIGH=断开
}

void loop() {
  buttonState = digitalRead(relayOut);
  if (irrecv.decode(&results)) {
    if (results.value == 0xAFAF8374) { // PLAY键
      digitalWrite(relayOut, LOW); // 激活继电器
    }
    if (results.value == 0x98519C65) { // STOP键
      digitalWrite(relayOut, HIGH); // 断开继电器
    }
    irrecv.resume();
  }
  Serial.print(" "); Serial.println(results.value, HEX);
  delay(100);
}
代码语言: Arduino (arduino)

制造工艺

  1. 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
  2. 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
  3. 自制 Arduino 电视遥控器:3D 打印外壳、电池供电、支持三大品牌协议
  4. Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
  5. Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
  6. 让大嘴鲈鱼玩具随音频起舞:分步制作指南
  7. ThimbleKrox:基于 Arduino Micro 与 MPU-6050 的指戴式鼠标控制器
  8. DIY Arduino 蟑螂控制系统 —— 30 美元以内自制指南
  9. 使用 Arduino Uno 和蓝牙实现遥控小车:分步指南
  10. 通过专用 Android App 蓝牙控制 Arduino 机械臂
  11. 基于 ACS712 传感器的 Arduino 交流电流精准测量(真有效值)
  12. Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试