Arduino 智能自动停车场系统:红外检测 + 舵机闸门 + LED 余位显示
核心硬件清单
- Arduino UNO(或任意兼容板) ×1
- 红外接近传感器 ×3(入口 1 个、车位 2 个)
- 舵机(如 Tower Pro MG996R) ×1 — 控制入口闸杆
- LED 红/绿 ×3 — 入口红绿灯、两车位指示灯
- 330 Ω 电阻 ×3(LED 限流)
- 纸箱/纸板 — 搭建停车场模型
- 移动电源(5V 1A+) — 全系统供电,无需外接电源模块
软件环境
- Arduino IDE
系统工作流程
- 车辆驶入入口,入口红外传感器被遮挡(输出低电平)。
- MCU 读取两车位传感器状态:
- 全空 → 绿灯亮、闸门开、两车位绿灯亮。
- 仅 1 号占用 → 绿灯亮、闸门开、仅 2 号绿灯亮。
- 仅 2 号占用 → 绿灯亮、闸门开、仅 1 号绿灯亮。
- 满车 → 红灯闪烁、闸门保持关闭、两车位红灯亮。
- 车辆通过后,入口传感器恢复高电平,闸门延时关闭,入口绿灯慢闪待机。
电路设计要点
- 红外传感器直供 5V,信号线直连数字输入口(内部上拉或外接 10 kΩ 上拉)。
- 舵机供电直接取自 Arduino VIN 引脚(移动电源经 USB 输入 5V,VIN 可直接输出 5V/1A,避免经过板载稳压器的 500 mA 限流)。
- LED 阳极接数字输出口,阴极串 330 Ω 接地。
引脚分配表
| 功能 | Arduino 引脚 |
|---|---|
| 入口红外 | D3 |
| 车位 1 红外 | D5 |
| 车位 2 红外 | D4 |
| 舵机信号 | D7 |
| 车位 1 指示灯 | D13 |
| 车位 2 指示灯 | D12 |
| 入口绿灯 | D11 |
| 入口红灯 | D10 |
核心代码(关键逻辑已精简注释)
#include <Servo.h>
Servo gate;
int slot1 = 5, slot2 = 4, gateSensor = 3;
int slot1_l = 13, slot2_l = 12, gate_grn = 11, gate_red = 10;
void setup() {
gate.attach(7);
pinMode(slot1, INPUT); pinMode(slot2, INPUT); pinMode(gateSensor, INPUT);
pinMode(slot1_l, OUTPUT); pinMode(slot2_l, OUTPUT);
pinMode(gate_grn, OUTPUT); pinMode(gate_red, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool gateTrig = !digitalRead(gateSensor); // 低电平触发
bool s1Free = digitalRead(slot1); // 高电平=空闲
bool s2Free = digitalRead(slot2);
if (gateTrig) {
if (s1Free && s2Free) { openGate(); showSlots(HIGH, HIGH); }
else if (!s1Free && s2Free) { openGate(); showSlots(LOW, HIGH); }
else if (s1Free && !s2Free) { openGate(); showSlots(HIGH, LOW); }
else { closeGate(); showFull(); }
} else {
closeGate(); idleBlink();
}
}
void openGate() {
digitalWrite(gate_grn, HIGH);
gate.write(75); delay(1000);
}
void closeGate() { gate.write(5); }
void showSlots(byte s1, byte s2) {
digitalWrite(slot1_l, s1); digitalWrite(slot2_l, s2);
}
void showFull() {
digitalWrite(slot1_l, LOW); digitalWrite(slot2_l, LOW);
for (int i=0;i<3;i++){ digitalWrite(gate_red,HIGH);delay(100);digitalWrite(gate_red,LOW);delay(100); }
}
void idleBlink() {
digitalWrite(slot1_l,LOW); digitalWrite(slot2_l,LOW); digitalWrite(gate_red,LOW);
digitalWrite(gate_grn,HIGH);delay(100);digitalWrite(gate_grn,LOW);delay(100);
}
进阶版本(GitHub 开源)
- 基础版: GitHub 仓库
- LCD 显示版: 替换 LED 为 LCD1602/I²C OLED,显示具体余位数量,代码见仓库
Parking_garage_with_LCD_Code.c。
制作贴士
- 纸板模型:剪折斜坡、热熔胶固定舵机闸杆、筷子支撑 LED 显示牌。
- 红外传感器朝向:入口传感器斜向下避免误触发,车位传感器贴地面检测车底。
- 移动电源供电:全系统功耗 < 500 mA,10000 mAh 移动电源可连续运行 15+ 小时。
制造工艺
- 自制LUMAZOID:基于Arduino的音乐可视化灯光控制器
- Arduino Uno 自动化乐高星球大战发射器
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- SunGlass-BOT:基于 Arduino 的智能变色墨镜自制指南
- 从零构建智能 Arduino 四足机器人:完整指南
- Arduino 洗手计时器:抗击 COVID-19 的简易 DIY 工具
- Arduino RGB LED调色器:三电位器混色入门项目
- Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
- Arduino 自动化 Chrome 恐龙游戏 - LDR 光敏电阻 + Python 实现全自动跳跃
- DIY Arduino 电子波疗设备 - 基于拉德尼克疗法的 EMR 治疗仪
- 户外DMX控制RGB投光灯:低成本高性能舞台灯光DIY方案
- Arduino 自动除湿机排水泵控制系统:从原理到落地的完整实现