news 2026/9/23 18:36:10

[开源]基于STM32单片机WiFi智能教室设计 Onenet智能教室管理系统 云平台智慧教室监控系统 APP多功能教室设计HK-012

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[开源]基于STM32单片机WiFi智能教室设计 Onenet智能教室管理系统 云平台智慧教室监控系统 APP多功能教室设计HK-012

1、前言

本设计以STM32F103C8T6单片机为主控芯片,WIFI模块ESP8266-01S作为通信模块连接onenet云平台,通过DHT11温湿度传感器采集温度和湿度、MQ-2烟雾传感器检测烟雾浓度是否正常、BH1750光照传感器检测光照数据、火焰传感器检测是否发生火灾,OLED屏幕显示当前温度、湿度、烟雾浓度、是否发生火灾和手自动模式。通过WIFI连接ONENET云平台,手机APP连接ONENET云平台,APP可以查看当前环境信息数据,可调节阈值范围。操作简单易懂,手把手教小白完成整套设计,UniAPP开发环境搭建非常简单,可打包生成手机APP。

2、元器件组成

本设计由STM32F103C8T6单片机+WIFI模块ESP8266-01S+OLED屏幕+SNR9813语音识别模块+JQ8400语音播报模块+DHT11温湿度传感器+MQ-2烟雾传感器+BH1750光照传感器+火焰传感器+ULN2003步进电机+SG90舵机+风扇+灭火水泵+继电器+LED+电源电路组成组成

3、功能简介

1、环境采集:DHT11温湿度传感器采集温度和湿度、MQ-2烟雾传感器检测烟雾浓度是否正常、BH1750光照传感器检测光照数据、火焰传感器检测是否发生火灾。
2、屏幕显示:OLED屏幕显示当前温度、湿度、烟雾浓度、是否发生火灾和手自动模式
3、阈值设置:可设置温度、湿度、烟雾和光照阈值
4、火灾检测:通过火焰传感器检测是否发生火灾,当检测到发生火灾时,自动开启灭火器灭火
5、温度报警:温度大于设置的阈值时语音播报提醒
6、湿度报警:湿度大于设置的阈值时语音播报提醒
7、模式切换:可切换选择手动模式和自动模式
8、语音识别:可通过语音识别切换模式,控制窗帘、窗户、风扇和照明的开关
9、风扇降温:自动模式下,当温度大于设置的温度阈值时,自动开启风扇降温,反正关闭风扇。
10、自动照明:自动模式下,通过光敏传感器检测光照强度,当光照强度小于阈值,自动点亮LED灯照明,当光强度大于阈值,自动关闭LED照明灯。
11、窗帘控制:可通过app控制窗帘开启和关闭
12、窗户控制:可通过app控制窗户开启和关闭
13、远程控制:通过WIFI连接ONENET云平台,手机APP连接ONENET云平台,APP可以查看当前环境信息数据,可调节阈值范围

4、设计实现效果

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1owYu6BEyo/?spm_id_from=333.1387.homepage.video_card.click

资料分享看文章末尾

5、设计原理图

6、设计PCB图

7、程序设计

#include "stm32f10x.h" #include "delay.h" #include "usart.h" #include "USART2/usart2.h" #include "timer.h" #include "menu.h" #include "key.h" #include "modules.h" #include "oled.h" #include "usart3.h" #include "play.h" #include "voice.h" #include "adc.h" #include "mq2.h" #include "fire.h" #include "DHT11/dht11.h" #include "bh1750.h" #include "led.h" #include "relay.h" #include "uln2003.h" #include "sg90.h" /****************洪科单片机工作室******************* *** 破晓单片机 *** 项目:STM32单片机WiFi智能教室 *** BILIBILI:洪科单片机 *** 小红书:洪科单片机 *** 授权IP:洪科单片机 *** 淘宝:洪科单片机 *** 闲鱼:洪科单片机 *** 版本:V01.01 *** MCU:STM32F103C8T6 ******************洪科单片机***********************/ //显示界面 CaiDanJieGouTi KeyTab[SIZE_CAIDAN]= { {0 ,0 ,0 ,0 ,0 ,Main_Menu0}, / {1 ,1 ,1 ,1 ,1 ,Main_Menu1}, {2 ,2 ,2 ,2 ,2 ,Main_Menu2}, {3 ,3 ,3 ,3 ,3 ,Main_Menu3}, {4 ,4 ,4 ,4 ,4 ,Main_Menu4}, {5 ,5 ,5 ,5 ,5 ,Main_Menu5}, {6 ,6 ,6 ,6 ,6 ,Main_Menu6}, {7 ,7 ,7 ,7 ,7 ,Main_Menu7}, {8 ,8 ,8 ,8 ,8 ,Main_Menu8}, {9 ,9 ,9 ,9 ,9 ,Main_Menu9}, {10,10,10,10,10,Main_Menu10}, {11,11,11,11,11,Main_Menu11}, {12,12,12,12,12,Main_Menu12}, } ; //传感器变量声明 typedef struct { u8 temp;// u8 humi;// uint16_t smoke;// uint16_t fire;// uint16_t light;// uint16_t yuyin; }SensorModulesValue; typedef struct { uint8_t tempTV;//阈值 uint8_t humiTV;//阈值 uint16_t smokeTV;//阈值 uint16_t lightTV;//阈值 }SensorThresholdValue; typedef struct { uint8_t MODEFlag; uint8_t MOTORFlag; uint8_t MOTORKZFlag; uint8_t RELAY1Flag; uint8_t RELAY2Flag; uint8_t LEDFlag; uint8_t SG90Flag; uint8_t BEEPFlag; uint8_t BJ1Flag; uint8_t BJ2Flag; uint8_t BJ3Flag; uint8_t BJ4Flag; uint8_t BJ5Flag; uint8_t BJ6Flag; uint16_t sendcount; }DriveFlag; int main(void) { delay_init(); TIM3_Int_Init(499,7199);//1MS系统定时 OLEDGUI_Config(); //OLED初始化 OLEDGUI_DispString(30,0,"Init...",16,1); key_Init();//按键初始化 Adc_Init();//Adc初始化 MQ2_Init();//初始化MQ2 FIRE_Init(); DHT11_Init();//DHT11初始化 GY_Init(); Single_Write_BH1750(0x01); Single_Write_BH1750(0x01); Single_Write_BH1750(0x10); delay_ms(100); led_Init();//led初始化 relay_Init();//relay初始化 ULN2003_IO_Init();//ULN2003初始化 SG90_Init(); SG90_SetAngle(0); delay_ms(100); uart2_init(115200); delay_ms(100); uart1_init(115200); delay_ms(100); OLEDGUI_DispString(0,0,"Hardware init OK",16,1); //WiFi初始化 ESP8266_Init(); //初始化ESP8266 OLEDGUI_Clear(); //OLED清屏 OLEDGUI_DispString(0,0,"Connect MQTTs Server...",16,1); while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT")) DelayXms(500); OLEDGUI_DispString(0,16,"Connect MQTT Server Success",16,1); DelayXms(500); OLEDGUI_Clear(); //OLED清屏 OLEDGUI_DispString(0,0,"Device login ...",16,1); while(OneNet_DevLink()) //接入OneNET { OLEDGUI_DispString(0,32,"CONNECT",16,1); ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT"); DelayXms(500); OLEDGUI_DispString(0,32,"CONNECT",16,1); } OneNET_Subscribe(); OLEDGUI_Clear(); //OLED清屏 SensorThresholdSet();//阈值设置 SensorDataGet(); //获取传感器数据 OLEDGUI_Clear(); while(1) { //获取按键值 key_scan(); //进入菜单界面显示处理数据 GetKeylnput(&Keystatus); //获取传感器数据 SensorDataGet(); delay_ms(100); } }

8、设计包含内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 18:35:18

日语N2时间管理实战:拆解165分钟的分值-认知负荷三维结构

1. 日语N2考试时间分配与分值:一张表看懂“为什么总差那几分”你是不是也这样:模拟题能考130分,正式考试却卡在129、128,甚至125?翻开成绩单,听力明明拿了满分,阅读却只对了28题,语法…

作者头像 李华
网站建设 2026/9/23 18:31:39

TensorRT-LLM部署Qwen1.5实战:从权重转换到推理性能优化

简介:面向大语言模型部署实践者,针对TensorRT-LLM优化部署Qwen1.5模型,内容覆盖从环境配置、模型转换到推理引擎部署的全流程演示。项目提供完整Python源码与配套Markdown教程,实际解决推理速度慢、硬件资源占用高等部署难题&…

作者头像 李华
网站建设 2026/9/23 18:29:06

电影票房预测实战:从特征工程到FastAPI部署,避开数据泄露

简介:基于机器学习的电影票房预测平台,是一套面向毕业设计、课程设计与期末大作业的高分实战项目,适合具备Python和一定机器学习基础的学生直接学习与部署。平台以历史票房、影片信息、市场趋势等真实数据为基础,完整实现从数据清…

作者头像 李华
网站建设 2026/9/23 18:22:10

RBF vs BP神经网络时间序列预测:选型、实现与避坑指南

简介:这份资源面向时间序列预测的初学者与进阶学习者,提供基于RBF径向基神经网络与BP反向传播神经网络两套完整实现方案,可用于股票、销售、气象等趋势预测场景的对比实验。压缩包共5个文件,约349KB,包含2个m脚本文件作…

作者头像 李华
网站建设 2026/9/23 18:20:53

碳粉原理与实操:从静电成像到兼容粉选择及故障排查

1. 碳粉到底是什么?先拆一盒粉看门道很多人以为碳粉就是“磨细的炭”,其实差远了。打印机、复印机里用的碳粉,标准名称叫“墨粉”或者“显影剂”,它是静电成像系统的核心耗材。你在电商平台搜“碳粉”,出来一堆几十块钱…

作者头像 李华
网站建设 2026/9/23 18:18:14

Linux安全基线整改实践:修复 Business Use Notice MOTD ISSUE Existence 检查项

目录 一、背景二、问题分析三、排查过程四、修复方案五、验证修复结果六、自动化修复脚本七、风险评估八、总结 一、背景 在企业 Linux 安全基线扫描过程中,发现服务器存在如下基线告警: Category: Business Use NoticeName: Business Use Notice MOT…

作者头像 李华