编写程序实现智能停车场车位检测,有空位时指示灯亮起,方便找车位。

张开发
2026/4/5 8:57:57 15 分钟阅读

分享文章

编写程序实现智能停车场车位检测,有空位时指示灯亮起,方便找车位。
1. 实际应用场景描述在一个繁忙的地下停车场如商场、写字楼入口处虽有“剩余车位”显示屏但车主进入后仍需花费大量时间寻找具体空位。同时传统地感线圈安装复杂维护成本高。本场景设计利用超声波测距传感器HC-SR04模拟车辆检测单元安装在每个车位上方。当车位为空时该位置的LED指示灯或数码管显示亮起绿色当有车时指示灯熄灭或变红。中央控制器汇总所有车位状态并在入口处的大屏显示剩余车位数量。2. 引入痛点1. 寻车难车主盲目绕行增加油耗和拥堵。2. 管理滞后人工巡检效率低无法实时更新数据。3. 布线复杂传统有线传感器施工难度大成本高。4. 误判率高单一红外容易受环境光干扰而超声波测距抗干扰能力强精度高符合智能仪器中“信号采集与处理”的要求。3. 核心逻辑讲解本系统的核心是“数据采集 - 信号处理 - 逻辑判断 - 执行输出”的闭环控制流程这也是智能仪器的典型工作流1. 感知层数据采集使用 HC-SR04 超声波模块向地面发射声波。根据物理公式距离 (声速 × 往返时间) / 2 计算高度。注声速受温度影响实际工程中需加入温度传感器补偿此处简化。2. 决策层逻辑判断- 设定阈值假设车位净高 2.5 米。- 若测量距离 2.0 米 → 判定为无车Empty。- 若测量距离 1.5 米即被车身遮挡→ 判定为有车Occupied。采用滞回比较法Hysteresis防止临界抖动。3. 执行层输出控制- 检测到空位 → GPIO 引脚拉高 → LED 绿灯亮起。- 统计空位数 → 推送到 LCD1602 或 Web 界面。4. 代码模块化实现 (Python)我们将使用RPi.GPIO树莓派或gpiozero 库。这里以gpiozero 为例因为它封装更好适合教学。项目结构smart_parking/├── main.py # 主程序入口├── sensors/│ └── ultrasonic.py # 超声波传感器驱动├── actuators/│ └── led_indicator.py # LED指示灯模块├── core/│ └── logic.py # 核心判断逻辑└── README.md4.1 超声波传感器模块 (sensors/ultrasonic.py)# sensors/ultrasonic.pyfrom gpiozero import DistanceSensorfrom time import sleepclass UltrasonicDetector:封装HC-SR04超声波传感器基于gpiozero库简化底层时序操作def __init__(self, trigger_pin, echo_pin, max_distance4):初始化传感器:param trigger_pin: GPIO触发引脚编号:param echo_pin: GPIO回响引脚编号self.sensor DistanceSensor(echoecho_pin,triggertrigger_pin,max_distancemax_distance)def get_distance(self):获取当前测量的距离米:return: float, 距离值distance self.sensor.distancereturn round(distance, 2)4.2 指示灯模块 (actuators/led_indicator.py)# actuators/led_indicator.pyfrom gpiozero import LEDclass ParkingIndicator:车位状态指示灯绿灯表示空位红灯表示占用此处简化为单色LEDdef __init__(self, pin):self.led LED(pin)def turn_on(self):车位为空点亮指示灯self.led.on()print(指示灯: ON (车位空))def turn_off(self):车位被占关闭指示灯self.led.off()print(指示灯: OFF (车位满))4.3 核心逻辑 (core/logic.py)# core/logic.pyclass ParkingLogic:智能停车核心逻辑处理器包含阈值判断和状态机def __init__(self, empty_threshold2.0, occupied_threshold1.5)::param empty_threshold: 判定为空的最小距离:param occupied_threshold: 判定为占用的最大距离self.empty_threshold empty_thresholdself.occupied_threshold occupied_threshold# 使用滞回比较防止临界抖动self.current_state UNKNOWNdef process_distance(self, distance):处理距离数据并返回车位状态:param distance: float, 传感器测得的距离:return: str, EMPTY or OCCUPIEDif distance is None:return self.current_state# 滞回逻辑只有跨越不同阈值才改变状态if self.current_state EMPTY and distance self.occupied_threshold:self.current_state OCCUPIEDelif self.current_state OCCUPIED and distance self.empty_threshold:self.current_state EMPTY# 初始状态判定if self.current_state UNKNOWN:self.current_state EMPTY if distance self.empty_threshold else OCCUPIEDreturn self.current_state4.4 主程序 (main.py)# main.pyfrom sensors.ultrasonic import UltrasonicDetectorfrom actuators.led_indicator import ParkingIndicatorfrom core.logic import ParkingLogicimport timedef main():主函数串联传感器、逻辑处理和执行器print( 智能停车场车位检测系统启动 )# --- 硬件初始化 ---# 假设使用GPIO 23(Trigger), 24(Echo)sensor UltrasonicDetector(trigger_pin23, echo_pin24)# 假设LED连接在GPIO 17indicator ParkingIndicator(pin17)logic ParkingLogic()try:while True:# 1. 采集数据distance sensor.get_distance()print(f当前测量距离: {distance}m)# 2. 核心逻辑判断status logic.process_distance(distance)# 3. 执行动作if status EMPTY:indicator.turn_on() # 空位亮灯else:indicator.turn_off() # 有车灭灯print(- * 30)time.sleep(2) # 采样间隔2秒except KeyboardInterrupt:print(\n程序已手动终止清理GPIO资源...)finally:# 清理GPIO防止下次运行报错from gpiozero import DeviceDevice.close_all()if __name__ __main__:main()5. README 文件和使用说明README.md# 智能停车场车位检测系统 (Smart Parking System)## 项目简介本项目是基于树莓派Raspberry Pi和 Python 实现的智能停车场车位检测原型。利用超声波传感器检测车位状态并通过 LED 指示灯直观显示解决找车位难的问题。## ️ 硬件需求1. Raspberry Pi (3B/4B recommended)2. HC-SR04 超声波模块 x13. LED 指示灯 x14. 220Ω 电阻 x15. 杜邦线若干## 接线说明| 设备 | GPIO Pin ||------|----------|| HC-SR04 Trigger | GPIO 23 || HC-SR04 Echo | GPIO 24 || LED (正极) | GPIO 17 |*注意HC-SR04 Echo 输出为 5V建议通过分压电路连接树莓派 3.3V GPIO或使用电平转换模块。*## 运行步骤1. 克隆仓库bashgit clone https://github.com/yourusername/smart_parking.git (https://github.com/yourusername/smart_parking.git)cd smart_parking2. 安装依赖库bashpip install gpiozero3. 运行主程序bashsudo python3 main.py*(注意操作 GPIO 通常需要 root 权限)*## 预期效果- 当手或物体远离传感器2米LED 亮起。- 当手或物体靠近传感器1.5米模拟车辆停放LED 熄灭。6. 核心知识点卡片类别 知识点 说明硬件接口 GPIO (通用输入输出) 树莓派与外部硬件通信的基础控制高低电平。传感器原理 超声波测距 利用声波发射与回波接收的时间差计算距离非接触式测量。编程概念 面向对象 (OOP) 将 Sensor, Logic, Actuator 封装为类提高代码复用性。信号处理 滞回比较 (Hysteresis) 设置两个阈值防止信号在临界点频繁跳变防抖。系统架构 模块化设计 遵循“高内聚低耦合”sensor/logic/actuator 分离。7. 总结作为全栈工程师我们在本次实践中展示了如何将《智能仪器》课程中的传感器数据采集与Python后端逻辑完美结合。1. 从理论到落地我们将抽象的“距离测量”转化为具体的“车位状态”体现了工程思维。2. 代码质量通过模块化设计sensors,core,actuators这套代码不仅可用于学习稍作修改如加入 MQTT 协议即可接入物联网云平台实现真正的商业级应用。3. 扩展性当前仅检测一个车位实际项目中可通过多路 GPIO 扩展芯片如 MCP23017或分布式部署ESP32 WiFi来覆盖整个停车场。这个原型系统是通往工业级智能停车解决方案的坚实第一步。如果你对多车位组网或接入Web前端大屏感兴趣可以进一步探讨利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安汽牧笛

更多文章