DIY 泊车雷达:Arduino UNO + 三路 HC-SR04 超声波传感器
项目概述
自制前/后保险杠泊车辅助系统:三路 HC-SR04 分别覆盖左、中、右三个方向,两块 TM1651 驱动的电池电量条显示模块(原用于显示电量)分别指示左右两侧最近障碍物距离。距离映射为 0~7 级光柱,超出设定最大距离(默认 20 cm)显示满格“安全”,最近侧优先显示,中间传感器同时影响双侧显示。
核心组件与物料清单
- Arduino UNO ×1
- HC-SR04 超声波测距模块 ×3
- TM1651 电池电量条显示模块 ×2(基于 TM1651 芯片)
- 面包板、跳线若干
工作逻辑
- 循环触发三路测距,获取
distanceL、distanceM、distanceR - 左侧显示取
min(distanceM, distanceL),右侧取min(distanceM, distanceR) - 距离 >
Maxdistance→ 显示第 7 级(满格) - 距离 ∈ (0, Maxdistance] →
map(d, 0, Maxdistance, 0, 7)映射为 0~7 级光柱 - 50 ms 刷新周期,实时响应
典型场景示例
- 仅右侧有障碍 → 右侧光柱低于左侧
- 中间最近 → 双侧同步显示中间距离等级
- 左右均有障碍 → 各自显示各自最近距离
改进方向
- 增加传感器覆盖更大区域
- 加装 OLED/LCD 显示数值距离
- 更换防水型 JSN-SR04T 传感器
- 增加蜂鸣器分级报警
核心代码
#include <TM1651.h>
#define CLK 3 // 右显示
#define DIO 2
#define CLK2 5 // 左显示
#define DIO2 4
#define trigPin 6 // 中
#define echoPin 7
#define trigPinR 8 // 右
#define echoPinR 9
#define trigPinL 10 // 左
#define echoPinL 11
#define Maxdistance 20
TM1651 DisplayR(CLK, DIO);
TM1651 DisplayL(CLK2, DIO2);
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
pinMode(trigPinR, OUTPUT); pinMode(echoPinR, INPUT);
pinMode(trigPinL, OUTPUT); pinMode(echoPinL, INPUT);
DisplayR.init(); DisplayR.set(BRIGHTEST);
DisplayL.init(); DisplayL.set(BRIGHTEST);
}
void loop() {
int dM = getDistance(trigPin, echoPin);
int dR = getDistance(trigPinR, echoPinR);
int dL = getDistance(trigPinL, echoPinL);
int R = min(dM, dR);
int L = min(dM, dL);
updateDisplay(DisplayR, R);
updateDisplay(DisplayL, L);
delay(50);
}
void updateDisplay(TM1651 &disp, int dist) {
if (dist > 0 && dist < Maxdistance) {
byte level = map(dist, 0, Maxdistance, 0, 7);
disp.displayLevel(level);
} else if (dist >= Maxdistance) {
disp.displayLevel(7);
}
}
int getDistance(int trig, int echo) {
digitalWrite(trig, LOW); delayMicroseconds(2);
digitalWrite(trig, HIGH); delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
return duration * 0.034 / 2; // cm
}
资源链接
- TM1651 库:fuel_display
- 原理图见项目附件(Schematics 部分)
制造工艺
- 树莓派 PIR 运动传感器控制 LED 实战指南
- 树莓派低成本土壤湿度传感器:智能灌溉 DIY 指南
- 树莓派 + MCP9808 + InfluxDB + Grafana:家庭温度监测系统
- 将 Acconeer A111 脉冲雷达与树莓派集成:实用指南
- 低成本情绪传感器与 EEG:实时情绪检测硬件方案
- 两块 Arduino 通过 Firebase 传递温湿度数据
- UnifiedWater v1 — 基于 Arduino MKR GSM 1400 的完整水质监测套件
- 氧传感器 (O2) 详解:作用、位置与故障征兆
- Mouser Electronics 在 2019 传感器博览会展示先进传感器技术
- 雷达传感器详解:工作原理与现代应用
- 泊车传感器:工作原理与关键应用
- Ambarella以3.075亿美元收购Oculii,拓展雷达感知与传感器融合布局自动驾驶