Arduino UNO 红外避障/接近传感器入门实战指南
所需组件
| 组件 | 数量 | 说明 |
|---|---|---|
| Arduino UNO R3 | 1 | 主控板 |
| 红外避障/接近传感器模块 (FC-51 或类似) | 1 | 含 LM393 比较器,数字量输出,可调灵敏度 |
| LED (任意颜色) | 1 | 指示灯,建议串联 220Ω 电阻 |
| 面包板 & 杜邦线 | 若干 | |
| USB 数据线 | 1 | 供电与下载 |
原理知识
Arduino UNO 简介
Arduino UNO 基于 ATmega328P,14 路数字 I/O(6 路 PWM)、6 路模拟输入、16MHz 主频、32KB Flash。开源硬件平台,适合入门学习与快速原型开发。
红外接近传感器工作原理
模块包含红外发射管和红外接收管。发射管发射不可见红外光(通常 940nm),遇障碍物反射回接收管。内部 LM393 比较器将接收光强转换为数字信号输出:
- 无障碍物/反射弱:输出 高电平 (1)
- 有障碍物/反射强:输出 低电平 (0)
板载蓝色电位器可调节检测距离(通常 2-30cm)。绿色指示灯亮表示检测到障碍(输出低电平)。
注意:此为有源红外反射式传感器,非人体热释电红外(PIR)传感器,不能直接检测人体热辐射,仅检测物体反射。
接线图
| 传感器引脚 | Arduino UNO | 备注 |
|---|---|---|
| VCC | 5V | |
| GND | GND | |
| OUT | D2 | 数字输入 |
LED:正极(长脚)接 D13 串联 220Ω 电阻,负极接 GND。UNO 板载 LED 也接在 D13,可直接复用无需外接。
完整代码
const int IR_SENSOR_PIN = 2; // 红外传感器 OUT 接 D2
const int LED_PIN = 13; // 板载 LED 或外接 LED
void setup() {
pinMode(IR_SENSOR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
Serial.println("IR Sensor Test Started");
}
void loop() {
int sensorState = digitalRead(IR_SENSOR_PIN);
// 传感器输出低电平(0)表示检测到障碍物
if (sensorState == LOW) {
digitalWrite(LED_PIN, HIGH); // 点亮 LED
Serial.println("Obstacle Detected!");
} else {
digitalWrite(LED_PIN, LOW); // 熄灭 LED
Serial.println("Clear");
}
delay(100); // 简单去抖动
}
进阶玩法与扩展
1. 测量检测距离
打开串口绘图器,观察不同距离下的输出状态,调节电位器找到所需触发距离。
2. 计数器应用
利用中断计数经过物体数量:
volatile int count = 0;
void setup() {
attachInterrupt(digitalPinToInterrupt(2), countISR, FALLING);
}
void countISR() { count++; }
3. 智能小车避障
双传感器左/右安装,检测到障碍转向,配合 L298N 电机驱动。
4. 液位/料位检测
固定在容器侧壁,检测液面/物料高度。
常见问题排查
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| LED 常亮/常灭 | 电位器未调节/接线错误 | 顺时针调节电位器增大灵敏度,检查 VCC/GND/OUT 接线 |
| 检测距离太近 | 发射管功率弱/接收管脏污 | 清洁透镜,检查 5V 供电稳定性 |
| 阳光下误触发 | 环境红外干扰 | 加遮光罩,或改用调制红外/超声波/TOF 传感器 |
| 串口乱码 | 波特率不匹配 | 统一设为 9600 |
总结
红外避障模块价格低廉(~¥5)、接线简单、数字量输出易读取,是 Arduino 入门学习传感器交互、制作避障小车、计数器的理想起点。掌握其"发射-反射-比较-输出"原理,有助于理解更复杂的光电传感器。
制造工艺
- DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
- K30 CO₂ 传感器:室内空气质量实时监测
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
- DFRobot 电容指纹传感器 (ID809) 接入 Arduino/ESP8266 完整教程
- Arduino Cloud 传感器塔:温度、动作与气体监测
- MAX30100脉搏血氧传感器与Arduino接入指南:获取PPG波形与SpO2
- 分步指南:将 YL-39/YL-69 土壤湿度传感器连接到 Arduino UNO
- 高精度空气质量监测仪:Sharp GP2Y1010AU0F 粉尘传感器 + Arduino Nano
- Arduino UNO + 以太网盾板实现低成本太阳辐射测量仪(热电堆原理)
- 紧凑型Arduino雷达系统:HC-SR04超声波传感器配1.8英寸显示屏