
对于嵌入式爱好者来说,STM32项目实战是提升能力的关键,今天就给大家带来一个兼具实用性和趣味性的实战案例------基于STM32的智能摄像头巡检系统演示。
这个项目不仅能上手STM32硬件控制,还结合了前端网页界面,实现了AI人脸识别、设备控制、数据监控的完整流程,新手也能跟着一步步搭建,赶紧收藏起来~
一、项目概述
本项目是一套完整的智能摄像头巡检系统演示方案,以STM32为核心控制单元,搭配前端网页监控界面和后端逻辑模拟,实现了从AI识别到设备响应的全流程闭环,适合作为嵌入式入门进阶的实战案例。
核心目标:掌握STM32 GPIO口控制、前端界面交互,理解MQTT通信(模拟)和AI人脸识别的基础逻辑,完成一个可演示、可复现的小型智能巡检系统。
二、系统架构拆解
整个系统分为硬件和软件两大部分,结构清晰,上手难度适中,下面逐一拆解细节,方便大家搭建。
(一)硬件部分(核心组件)
硬件是系统的基础,本次项目用到的组件都很常见,成本较低,新手可直接按需采购:
-
STM32开发板:核心控制中枢,负责驱动LED、蜂鸣器,接收和处理信号,本次演示采用STM32F103系列(其他兼容型号也可通用);
-
LED灯3个:分别为红、绿、蓝三色,用于状态指示,连接在STM32的GPIOA引脚;
-
蜂鸣器1个:用于报警提示,连接在GPIOB引脚,采用低电平触发方式。
(二)软件部分(功能支撑)
软件部分分为前端和后端,无需复杂的开发环境,新手也能快速上手:
-
前端网页:模拟智能摄像头监控界面,直观展示监控画面、人员信息和设备状态;
-
后端逻辑:模拟AI人脸识别功能和MQTT通信过程,实现前端与硬件的联动。
三、核心功能特性
这个系统虽然是演示版,但功能完整,涵盖了嵌入式开发中常见的核心需求,具体如下:
1. 智能摄像头监控
前端网页模拟摄像头实时画面,支持AI人脸识别模拟,能够显示识别精度、处理时间等关键信息,还原真实巡检场景中的人脸检测流程。
2. 人员信息管理
系统会自动记录检测到的人员信息,包括姓名、ID、所属部门,同时记录人员进入时间和上次访问时间,实现基础的人员巡检登记功能。
3. 设备控制(核心实战点)
通过STM32控制LED流水灯效果,搭配蜂鸣器报警功能,LED按照预设顺序依次闪烁,蜂鸣器同步触发,模拟巡检过程中的异常报警场景;同时通过MQTT协议(模拟)实现前端与STM32的通信联动。
4. 系统状态监控
前端界面实时显示系统运行状态、MQTT通信日志和设备工作状态,方便大家排查问题,直观了解系统运行情况。
四、硬件连接教程(必看!)
硬件连接是项目成功的关键,大家按照以下表格接线,避免接错引脚导致设备损坏,建议接线后再次核对:
| 设备 | 连接引脚 | 备注说明 |
|---|---|---|
| LED1(红色) | PA0 | 共阳极接法,低电平时点亮 |
| LED2(绿色) | PA3 | 共阳极接法,低电平时点亮 |
| LED3(蓝色) | PA6 | 共阳极接法,低电平时点亮 |
| 蜂鸣器 | PB12 | 低电平触发,低电平时发声 |
⚠️ 注意:接线时请关闭开发板电源,避免短路损坏元器件;LED共阳极接法需注意电源正负极,蜂鸣器需区分正负极(长脚为正极)。
五、软件实现(附完整代码)
软件部分分为STM32代码和前端网页,下面提供完整代码,大家可直接复制使用,无需修改核心逻辑(根据自己的开发板型号微调引脚即可)。
(一)STM32核心代码(C语言)
代码实现了LED流水灯和蜂鸣器的联动控制,注释详细,新手可轻松看懂每一步操作:
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB的时钟
//使用各个外设前必须开启时钟,否则对外设的操作无效
/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
//初始化GPIOA的0、3、6引脚(LED)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO模式,赋值为推挽输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_3 | GPIO_Pin_6; //GPIO引脚,赋值为第0、3、6号引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO速度,赋值为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //将赋值后的构体变量传递给GPIO_Init函数
//初始化GPIOB的12引脚(蜂鸣器)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //GPIO引脚,赋值为第12号引脚
GPIO_Init(GPIOB, &GPIO_InitStructure); //将赋值后的构体变量传递给GPIO_Init函数
/*主循环,循环体内的代码会一直循环执行*/
while (1)
{
/*设置PA0引脚的高低电平,实现LED闪烁,下面展示3种方法*/
/*方法1:GPIO_ResetBits设置低电平,GPIO_SetBits设置高电平*/
GPIO_ResetBits(GPIOA, GPIO_Pin_0); //将PA0引脚设置为低电平
GPIO_ResetBits(GPIOB, GPIO_Pin_12); //将PB12引脚设置为低电平(蜂鸣器响)
Delay_ms(100); //延时100ms
GPIO_SetBits(GPIOB, GPIO_Pin_12); //将PB12引脚设置为高电平(蜂鸣器停)
Delay_ms(400); //延时400ms
GPIO_SetBits(GPIOA, GPIO_Pin_0); //将PA0引脚设置为高电平
Delay_ms(500); //延时500ms
GPIO_ResetBits(GPIOA, GPIO_Pin_3); //将PA3引脚设置为低电平
GPIO_ResetBits(GPIOB, GPIO_Pin_12); //将PB12引脚设置为低电平(蜂鸣器响)
Delay_ms(100); //延时100ms
GPIO_SetBits(GPIOB, GPIO_Pin_12); //将PB12引脚设置为高电平(蜂鸣器停)
Delay_ms(400); //延时400ms
GPIO_SetBits(GPIOA, GPIO_Pin_3); //将PA3引脚设置为高电平
Delay_ms(500);
GPIO_ResetBits(GPIOA, GPIO_Pin_6); //将PA6引脚设置为低电平
GPIO_ResetBits(GPIOB, GPIO_Pin_12); //将PB12引脚设置为低电平(蜂鸣器响)
Delay_ms(100); //延时100ms
GPIO_SetBits(GPIOB, GPIO_Pin_12); //将PB12引脚设置为高电平(蜂鸣器停)
Delay_ms(400); //延时400ms
GPIO_SetBits(GPIOA, GPIO_Pin_6); //将PA6引脚设置为高电平
Delay_ms(500);
}
}
(二)前端网页实现
前端网页文件命名为camera-monitor.html,采用高科技简约风格,模拟摄像头监控界面,无需复杂的后端部署,直接打开文件即可运行,核心功能包括:
-
模拟摄像头实时画面,还原巡检场景;
-
AI人脸识别效果模拟,显示识别精度和处理时间;
-
人员信息展示模块,同步显示检测到的人员详情;
-
设备状态监控和MQTT通信日志,直观查看系统运行情况。
大家可根据自己的需求,修改网页的样式和文字,适配自己的演示场景。
六、使用方法(一步一步来,零失败)
按照以下步骤操作,就能快速实现系统演示,新手也能轻松上手:
-
硬件连接:对照前面的硬件连接表,将LED和蜂鸣器正确连接到STM32开发板,核对无误后接通电源;
-
编译烧录:将上述STM32代码复制到Keil软件中,编译通过后,烧录到STM32开发板(烧录方法可参考对应开发板教程);
-
运行网页 :将
camera-monitor.html文件保存到电脑,双击打开,即可看到监控界面; -
观察效果:烧录完成后,开发板上的LED会按照"PA0→PA3→PA6"的顺序实现流水灯效果,每个LED点亮时,蜂鸣器会同步响100ms,前端网页会显示对应的设备状态。
七、演示效果说明
项目演示的核心效果的如下,大家可对照检查自己的搭建是否成功:
-
LED流水灯:红色(PA0)→ 绿色(PA3)→ 蓝色(PA6)依次点亮、熄灭,循环往复;
-
蜂鸣器报警:每个LED点亮的瞬间,蜂鸣器会发声100ms,随后停止,与LED流水效果同步;
-
网页界面:实时显示模拟摄像头画面、识别到的人员信息、设备运行状态和MQTT通信日志,模拟真实巡检场景。
八、技术栈总结
本项目涉及的技术栈难度适中,适合嵌入式入门进阶,具体包括:
-
硬件:STM32F103系列微控制器(核心);
-
编程语言:C语言(STM32硬件控制)、HTML/CSS/JavaScript(前端界面);
-
通信协议:MQTT协议(模拟,实际应用可替换为真实通信);
-
核心技术:GPIO口控制、前端界面开发、AI人脸识别模拟。
九、注意事项(避坑指南)
为了避免大家搭建过程中踩坑,这里整理了几个关键注意事项,一定要仔细看:
-
本项目为演示版,实际应用中需添加真实的AI人脸识别模块和MQTT通信功能,才能实现真正的智能巡检;
-
蜂鸣器为低电平触发,只有当PB12引脚为低电平时,蜂鸣器才会发声,接线时注意正负极;
-
LED采用共阳极接法,GPIO引脚为低电平时LED点亮,高电平时熄灭,若LED不亮,可检查接线和引脚电平;
-
烧录代码前,需确认Keil软件中选择的开发板型号与实际使用的一致,避免编译失败。
十、项目结构
项目文件结构清晰,方便大家整理和管理,具体如下:
智能摄像头巡检系统/
├── User/
│ └── main.c # STM32主代码
├── camera-monitor.html # 前端监控界面
└── README.md # 项目说明文档
最后总结
这个基于STM32的智能摄像头巡检系统,是一个非常适合嵌入式新手的实战项目,既涵盖了STM32硬件控制的核心知识点,又结合了前端界面开发,能够快速提升实战能力。
大家可以按照教程一步步搭建,遇到问题可对照注意事项排查,也可以根据自己的需求扩展功能(比如添加真实的AI识别模块、实现远程控制等)。
收藏本文,后续搭建时直接对照操作,新手也能轻松搞定~ 祝大家实战顺利,早日掌握STM32开发技巧!
本文为智能摄像头巡检系统实战系列第一讲,重点讲解了项目整体架构、硬件接线、软件代码及基础使用方法,后续将持续更新进阶内容,拆解更多实战细节,大家记得持续关注哦!
智能巡检摄像头