HX1838红外遥控小车


头像
电子DIY
原创
发布时间: 2026-06-27 18:15:17 | 阅读数 0收藏数 0评论数 0
封面
本项目基于 Arduino Nano 主控、MX1508 双路电机驱动模块搭配四台 TT 减速电机,搭配 HX1838 红外接收模块实现无线遥控控制,同时外接 D12 引脚 LED 实现灯光独立控制。硬件布局简洁,左右侧电机分别并联接入驱动输出端,模块共地保障信号稳定。程序适配新版 IRremote 函数库,预设固定遥控按键编码区分功能:0x44 控制前进、0x40 控制倒车、0x47 原地左转、0x4A 原地右转,其余按键触发整车停车;0x45 点亮 D12 外接 LED,0x46 熄灭灯光,灯光状态不受小车启停影响。

准备工作:

材料:

  1. Arduino Nano 主控板 ×1
  2. MX1508 直流电机驱动模块 ×1
  3. TT 减速直流电机 ×4
  4. HX1838 红外接收模块 ×1
  5. 红外遥控器 ×1
  6. 红色 LED 发光二极管 ×1
  7. 220Ω 限流电阻 ×1
  8. 小车底盘、车轮、电机固定支架一套
  9. 杜邦线若干(公对公、公对母)
  10. 供电电池组(适配电机电压,如 18650 电池盒)
  11. 电池开关 ×1



工具:

  1. 电脑(安装 Arduino IDE 软件)
  2. USB 数据下载线(适配 Arduino Nano)
  3. 剥线钳
  4. 电工胶带 / 扎带(线束整理)
  5. 十字螺丝刀(固定底盘、电机)
  6. 万用表(可选,测通断、电压调试)
  7. 热熔胶枪 / 双面胶(固定模块)


1

基础车身制作

车身组装+电机驱动+电池+电池主板等基础功能的制作,参考往期制作项目:MX1508智能小车1.0入门版

链接直达:MX1508智能小车1.0入门版-DOIT社区

2

制作思路

  1. 添加HX1838红外接收模块,遥控实现前进、后退、左转、右转
  2. 添加LED灯,控制亮、灭
3

编程-测试按键值

  1. 本步骤为测试遥控器的按键值
  2. 下载本附件程序,上传程序后-,打开串口监视器,按键,会在串口监视器显示对应的键值,最后再程序中使用时,前面加上“0X”即可
INO
2026-6-26.ino
456B
4

编程-完整程序

本步骤为完整的程序

  1. 引脚定义请参考截图
  2. 下载附件程序即可使用
  3. 完整程序:

#include <IRremote.h>


// 硬件引脚

#define INA1 2

#define INA2 3

#define INB1 4

#define INB2 5

#define IR_PIN 7

#define LED_PIN 12

#define SPEED 255//全局调速


IRrecv irrecv(IR_PIN);

decode_results results;


void setup() {

Serial.begin(9600);


// 电机引脚输出

pinMode(INA1, OUTPUT);

pinMode(INA2, OUTPUT);

pinMode(INB1, OUTPUT);

pinMode(INB2, OUTPUT);

// LED引脚输出,默认熄灭

pinMode(LED_PIN, OUTPUT);

digitalWrite(LED_PIN, LOW);


// 红外初始化

IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK);

// 上电停车

stopCar();


Serial.println("=== 遥控小车就绪 ===");

Serial.println("0x44 前进 | 0x40 倒车");

Serial.println("0x45 LED亮 | 0x46 LED灭");

Serial.println("其他按键:小车停止");

}


// 小车前进

void forward() {

digitalWrite(INA1, HIGH);

digitalWrite(INA2, LOW);

digitalWrite(INB1, HIGH);

digitalWrite(INB2, LOW);

analogWrite(INA1, SPEED);

analogWrite(INB1, SPEED);

Serial.println("小车:前进");

}


// 小车后退

void backward() {

digitalWrite(INA1, LOW);

digitalWrite(INA2, HIGH);

digitalWrite(INB1, LOW);

digitalWrite(INB2, HIGH);

analogWrite(INA2, SPEED);

analogWrite(INB2, SPEED);

Serial.println("小车:倒车");

}

// 小车右转

void RIGHT() {

digitalWrite(INB1, LOW);//左侧轮

digitalWrite(INB2, HIGH);//左侧轮

digitalWrite(INA1, LOW);//右侧

digitalWrite(INA2, LOW);//右侧

analogWrite(INA1, SPEED);

analogWrite(INB1, SPEED);

Serial.println("小车:前进");

}


// 小车左转

void LEFT() {

digitalWrite(INB1, LOW);

digitalWrite(INB2, LOW);

digitalWrite(INA1, LOW);//右侧电机前进

digitalWrite(INA2, HIGH);//右侧电机前进

analogWrite(INA1, SPEED);

analogWrite(INB1, SPEED);

Serial.println("小车:前进");

}


// 全车停止

void stopCar() {

digitalWrite(INA1, LOW);

digitalWrite(INA2, LOW);

digitalWrite(INB1, LOW);

digitalWrite(INB2, LOW);

}


void loop() {

if (IrReceiver.decode()) {

uint16_t key = IrReceiver.decodedIRData.command;

Serial.print("收到按键码:0x");

Serial.println(key, HEX);


// 小车控制逻辑

if (key == 0x44) {

forward();

} else if (key == 0x40) {

backward();

}

else if (key == 0x7) {

LEFT();

}

else if (key == 0x15) {

RIGHT();

}

else {

stopCar();

}


// D12 LED灯光

if (key == 0x45) {

digitalWrite(LED_PIN, HIGH);

Serial.println("LED 点亮");

} else if (key == 0x46) {

digitalWrite(LED_PIN, LOW);

Serial.println("LED 熄灭");

}


IrReceiver.resume();

}

}


INO
2026-6-26-whole.ino
2.56KB
5

安装注意

  1. hx1838接收模块的正极必须接5V
  2. 信号引脚接D7
  3. 电池使用12V直接供电Arduino开发板
6

测试视频

按键功能:

CH-:开灯

CH+:关灯

左:前进

右:后退

-:左转

+:右转


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
头像
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报