Skip to content

arraytechcn/array-adb

Repository files navigation

Array ADB - 自适应远光灯系统

基于视觉识别 + ESP32 的夜间车辆检测与自适应远光灯(ADB)控制系统。

系统架构

┌─────────────────┐     UART 500000     ┌─────────────────┐     ESP-NOW     ┌─────────────────┐
│   视觉识别模块   │ ──────────────────► │     ESP32       │ ──────────────► │   透镜模块      │
│   (YOLOv5)      │      0-100 数值      │     (MCU)       │                 │   (左/右)       │
└─────────────────┘                     └─────────────────┘                 └─────────────────┘

功能特性

视觉识别模块 (adb-12-24.py)

功能 说明
YOLOv5 目标检测 识别夜间车辆(汽车、摩托车)
停车/行车检测 四区域混合检测算法
环境亮度感知 Weber-Fechner 对数模型,0-100
目标平滑 防止检测闪烁,保持 12 帧
24 区域分区 画面水平分为 24 个控制区域
中心扩展遮光框 CESB 动态框选效果
LED 网格可视化 实时显示左右车灯 LED 状态

中心扩展遮光框 (CESB)

Center Expand Shade Box - 用于可视化遮光区域的动态框选效果。

工作原理:

画面中心
    │
    │◄──── 左框向左扩展
    │
    ├────► 右框向右扩展
    │

特性:

特性 说明
起始位置 画面中心 (X=270)
扩展方向 左框向左,右框向右
扩展速度 box_smooth_speed = 0.15
单向扩展 框只会变大,不会收缩
保持时间 目标消失后保持 50 帧
Y 轴 跟随目标上下边界

参数调整:

box_smooth_speed = 0.15   # 扩展速度 (越小越慢)
box_hold_frames = 50      # 目标消失后保持帧数

LED 网格可视化

在画面底部显示两个 LED 网格,实时反映左右车灯的 LED 状态。

布局:

┌─────────────────────────────────────────────────┐
│                    画面内容                      │
│                                                 │
├─────────────────────────────────────────────────┤
│  [左灯 LED 网格]              [右灯 LED 网格]    │
│  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○  │
│  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○  │
│  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○  │
│  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○  │
└─────────────────────────────────────────────────┘

特性:

特性 说明
网格尺寸 28 列 x 4 行
LED 直径 8 像素
点亮状态 白色圆点
遮挡状态 灰色圆点
联动 与 CESB 遮光框同步

参数调整:

LED_COLS = 28      # LED 列数
LED_ROWS = 4       # LED 行数
LED_SIZE = 8       # LED 直径
LED_GAP = 1        # LED 间距

ESP32 MCU (array_now.ino)

功能 说明
双 UART 接收 长焦 + 广角摄像头数据
ESP-NOW 控制 无线控制左右透镜模块
BLE 配置 蓝牙远程配置和调试
状态指示 WS2812 LED 状态显示

通信协议

视觉模块 → ESP32 (UART)

数值 含义
0-12 目标在左半区,控制左透镜
13-23 目标在右半区,控制右透镜(值-12)
99 无目标,全开远光
100 目标过多,关闭远光

ESP32 → 透镜模块 (ESP-NOW)

设备 ID 格式: array996000100290X
- 左透镜: array9960001002908 (尾数 8)
- 右透镜: array9960001002916 (尾数 6)

控制命令 (ID + 控制码):
- 1-12: 调整角度档位 (adb1~adb12)
- 666: 开启远光
- 777: 关闭远光
- 100: 近光模式

硬件配置

视觉识别模块

  • 摄像头: 1080x720 → 540x360
  • 串口: /dev/ttyS0, 500000 波特率
  • 模型: model_159818.mud

ESP32

  • uart_long: GPIO 5(RX), 4(TX) - 长焦
  • uart_wide: GPIO 16(RX), 17(TX) - 广角
  • LED: WS2812

参数调整

停车检测 (adb-12-24.py)

stable_threshold = 0.95  # 稳定比例阈值
max_stable_count = 12    # 连续稳定次数 (约3秒)
check_interval = 5       # 每5帧检测一次

目标平滑

smooth_frames = 5  # 目标消失后保持显示帧数

检测参数

conf_th = 0.5   # 置信度阈值
iou_th = 0.45   # IOU 阈值

状态显示

边框颜色

颜色 状态
绿色 无目标
红色 检测到目标 (≤3个)
白色 目标过多 (>3个)
黄色 停车模式

目标信息

显示 含义
近/中/远 目标距离估算
目标向右移动(可能对向车)
目标向左移动(可能对向车)
0.85 检测置信度

画面信息

  • 左下角: FPS
  • 上方中间: 环境亮度 (L:0-100)
  • 中心紫框: 亮度测量区域
  • 中心黄块: 停车状态 (STOP)

可扩展参数

参数 获取方式 对 ADB 的帮助
目标距离 检测框大小估算 ✅ 已实现
对向/同向车 目标移动方向 ✅ 已实现
接近速度 连续帧位置变化 预判目标轨迹
车灯类型 训练模型区分 区分远光灯、尾灯
画面对比度 图像统计 雨雾天气检测

文件结构

maix/
├── adb-12-24.py          # 视觉识别主程序
├── array_now/
│   ├── array_now.ino     # ESP32 主程序
│   └── action.h          # 动作定义
├── logo320.png           # 启动 Logo
└── README.md             # 本文档

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •