# STM32-SensorHub-AIoT **Repository Path**: Hmount/stm32-sensor-hub-aiot ## Basic Information - **Project Name**: STM32-SensorHub-AIoT - **Description**: 本项目是一个基于 STM32L475 的边缘智能系统 (AIoT),融合 多传感器数据采集、AI人类活动识别、实时调度与可靠性机制。系统通过 UART 与 Python 可视化前端联动,可动态展示各类传感器数据与推理结果,并支持 中断响应机制(如倾斜检测、高温预警)实现强鲁棒性。 - **Primary Language**: C - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-03-20 - **Last Updated**: 2025-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: AIoT, stm32l475, scheduler ## README # 🚀 STM32 Sensor Hub AIoT > A real-time embedded AI system for sensor fusion, human activity recognition, and emergency response — powered by STM32L4 and Python. 本项目是一个基于 **STM32L475** 的边缘智能系统,融合 **多传感器数据采集、AI人类活动识别、实时调度与可靠性机制**。系统通过 UART 与 Python 可视化前端联动,可动态展示各类传感器数据与推理结果,并支持 **中断响应机制**(如倾斜检测、高温预警)实现强鲁棒性。 ## ✨ 功能特性 - 🔹 **六大传感器融合采集** - 支持 **加速度、陀螺仪、磁力计、温度、湿度、气压** 等传感器 - 每个传感器采样周期独立,带有 jitter 抖动模拟真实误差 - 🧠 **边缘AI推理** - 内置轻量级 HAR-Net 网络,实时识别人类活动(静止 / 步行 / 奔跑) - 模型使用 CMSIS-NN 部署,26组加速度样本触发一次推理 - 🔁 **智能调度策略** - 通过 FIFO 队列管理每种传感器的数据,支持: - 随机策略(Random) - 满缓冲优先(FullBuffer) - 基于预测频率(Predictive) - 支持运行时动态切换策略,并通过 LED 实时指示当前调度模式 - 🧯 **系统可靠性机制** - **Tilt 倾斜中断**:由 LSM6DSL 硬件中断引发 - **高温软中断**:温度超阈后触发警报 - **心跳 LED**:每轮调度闪烁,表明系统活跃运行中 - **Backpressure 跳过策略**:避免 FIFO 过载导致资源拥塞 - 📊 **实时数据可视化** - Python 前端动态展示传感器数据曲线、活动识别与中断事件 - 自动注解中断时刻与 AI 推理输出,提升调试与可读性 ## 📦 依赖环境 ### 🔧 STM32 端(固件) - **硬件平台**:B-L475E-IOT01A 开发板 - **开发工具链**:STM32CubeIDE / Keil / ARM GCC - **传感器驱动**:STM32 HAL + BSP - **通信方式**:UART 串口通信 ### 🧠 模型结构与部署 本项目使用一个自定义训练的 **HAR-Net(Human Activity Recognition Network)** 模型,用于识别三种基础活动类型: - `stationary`(静止) - `walking`(步行) - `running`(奔跑) 该模型在 Keras 上训练完成,输入为 26 组加速度采样(每组 3 个轴向值,共 78 个浮点数)。模型结构经过轻量化设计,并通过 [X-Cube-AI](https://www.st.com/en/embedded-software/x-cube-ai.html) 工具转换后部署在 STM32L4 芯片上。 **部署流程:** 1. 离线训练模型 → `.h5` 文件 2. 使用 **STM32Cube.AI** 将 `.h5` 转换为 C 源码(`network.c`, `network.h` 等) 3. 集成进工程,通过 `aiRun()` 接口执行推理 4. 推理结果通过 UART 输出(softmax 概率 + 类别标签) **模型运行性能:** - 单次推理耗时约 12ms(测量自 HAL tick 时间戳) - 模型推理输入频率约为 4.6 秒一次 - 资源占用低,适用于 STM32L4 边缘设备 ### 🖥️ Python 前端(可视化) - **Python 3.13+** - `matplotlib` – 数据曲线绘图 - `pyserial` – 串口通信 ## 🛠️ 使用方法 ### 1️⃣ 烧录 STM32 固件 使用 STM32CubeIDE / Keil / ARM GCC 工具链编译并下载 `stm32-sensor-hub-aiot` 到开发板。 ### 2️⃣ 启动 Python 可视化前端 ```bash python visualize.py ``` 确保 串口设备正确连接,默认波特率 115200 macOS系统用户可以使用如下命令检查板子的设备号 ```bash ls /dev/tty.* ``` 并通过如下命令简单监听UART串口信息 ```bash sudo cu -s 115200 -l /dev/tty.[Your_Device_Name] ``` ## 🔹 Acknowledgement This project is part of the CEG5202 Embedded Software Systems & Security coursework at National University of Singapore (NUS). This CA manual for CEG5202 is prepared with the help of Dr. Rajesh C P and the EE2028 Teaching Team. The CEG5202 team acknowledges the original effort made in the EE2028 module on the SoC and software components prescribed.