# AccessControlTerminal **Repository Path**: mj_yyfddca/access_control_terminal ## Basic Information - **Project Name**: AccessControlTerminal - **Description**: 基于全志T113+QT实现的门径系统,其中包括人脸识别,指纹识别,密码识别,语音通话等功能 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-06 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AccessControlTerminal 基于全志 T113 + Qt5 的智能门禁终端应用。 ## 功能概览 | 模块 | 说明 | |------|------| | 人脸识别 | V4L2 摄像头采集 + OpenCV 人脸检测 + LBPH 识别,支持人脸注册和实时比对。 | | 指纹识别 | 海凌指纹模块通过 UART 通信,支持自动识别和录入。 | | 密码开门 | 本地密码输入与校验。 | | 可视对讲 | TCP 信令 + UDP 视频推流 + UDP/ALSA 音频收发,支持终端与室内机双向通话。 | | 硬件控制 | 通过 GPIO 控制 PIR 人体感应、补光灯和门锁相关硬件。 | ## 硬件平台 - 主控:Allwinner T113,ARM Cortex-A7 - 系统:Tina Linux,OpenWrt 系分支 - 外设: - USB 摄像头,V4L2 - 海凌指纹模块,UART,默认 `/dev/ttyS4` - PIR 人体感应,PE4 - 补光灯,PE5 - 继电器或电磁锁 - 麦克风和扬声器,ALSA ## 项目结构 ```text main.cpp # 程序入口 app/ # 主界面与全局流程协调 main_widget.* # 主界面 MainWidget app_coordinator.* # 模块协调器 AppCoordinator ui/ # Qt Designer .ui 文件 assets/ # 图片资源,随 res.qrc 打包 camera_manager/ # V4L2 摄像头采集与 UDP 视频推流 face_manager/ # OpenCV 人脸检测、训练与识别 fingerprint_manager/ # 指纹串口协议、识别、录入界面 password_manager/ # 密码输入界面与本地校验 audio_manager/ # ALSA 播放/采集与 UDP 音频收发 intercom_manager/ # 对讲状态机与对讲界面 network_manager/ # TCP 信令连接 hal_manager/ # GPIO、PIR、补光灯等硬件抽象 ``` ## 架构说明 `MainWidget` 只负责主界面显示和按钮事件转发。`AppCoordinator` 是主要编排层,负责初始化各模块、连接 Qt 信号槽、刷新摄像头画面、处理人脸/指纹/密码结果,以及驱动对讲流程。 模块边界如下: - `camera_manager/` 只处理摄像头帧和视频流。 - `face_manager/` 只处理人脸检测、采样、训练和识别。 - `audio_manager/` 只处理音频设备、提示音播放和 UDP 音频收发。 - `intercom_manager/` 只处理呼叫、接通、挂断等对讲状态。 - `hal_manager/` 只处理 T113 板端 GPIO 相关逻辑。 更详细的架构、流程和部署说明见 [PROJECT_ARCHITECTURE.md](PROJECT_ARCHITECTURE.md)。 ## 依赖 | 依赖 | 用途 | |------|------| | Qt 5.12+ | Core、Gui、Widgets、Network、SerialPort、Concurrent | | OpenCV 4.x | 人脸检测和 LBPH 识别 | | ALSA | 音频采集和播放 | | libgpiod | GPIO 控制 | | pthread | 多线程 | ## 构建 项目同时支持 qmake 和 CMake。 ### qmake ```bash mkdir build && cd build qmake ../AccessTerminal.pro make -j$(nproc) ``` ### CMake ```bash mkdir build && cd build cmake .. -DOpenCV_DIR=/path/to/opencv make -j$(nproc) ``` ### T113 交叉编译 根据 Tina SDK 环境调整 `CMakeLists.txt` 或工具链文件中的编译器、sysroot、Qt 路径和 OpenCV 路径。例如: ```cmake set(CMAKE_C_COMPILER arm-openwrt-linux-gcc) set(CMAKE_CXX_COMPILER arm-openwrt-linux-g++) set(CMAKE_SYSROOT /path/to/tina-sdk/staging_dir/target) ``` ## 运行 ```bash ./AccessTerminal ``` 终端启动后进入待机状态,通过 PIR 判断是否有人靠近,并支持人脸、指纹、密码三种开门方式,以及一键呼叫室内机进行可视对讲。 ## 部署注意事项 上板前请确认以下配置与实际硬件一致: - 摄像头节点,例如 `/dev/video0` - 指纹串口,例如 `/dev/ttyS4` - ALSA 设备名,例如 `hw:audiocodec` - GPIO 编号,例如 PE4、PE5 - 室内机 IP、TCP 信令端口、UDP 音视频端口 - `/tmp/pcm/` 下提示音文件 - OpenCV Haar cascade 文件路径 当前仍有部分设备路径和 IP 写在代码中,后续建议集中到配置文件。