基于stm32的楼宇照明控制系统设计

基于stm32的楼宇照明控制系统设计
- 项目说明
- 一、绪论
- 1.1 研究背景
- 1.2 研究意义
- 1.4 研究内容
- 二、系统方案设计
- 2.1 微控制器方案选择
- 2.2 信息检测模块方案选择
- 2.3 WiFi模块选择
- 2.4 终端显示
- 2.5 WiFi无线通信实现方法
- 三、系统硬件电路图设计
- 3.1 整体电路图设计
- 3.2 主控制器设计
- 3.3 电源电路设计
- 3.4 红外线传感器电路设计
- 3.5 光敏电阻传感器电路设计
- 3.6 继电器控制电路设计
- 3.7 无线通信电路设计
- 3.8 按键控制电路
- 3.9 LED显示电路
- 四、系统软件设计
- 4.1 整体软件设计流程图
- 4.2 上位机通信设计
- 4.2.1 ESP8266初始化设计
- 4.2.2 单片机与云平台通信设计
- 4.3 按键控制电路
- 4.4 传感器检测电路设计
- 五、系统调试
- 5.1 ESP8266模块调试
- 5.2 云平台调试
- 5.2.1 准备工作
- 5.2.2 实现数据上传
- 5.3 红外线传感器模块调试
- 5.4 光敏电阻传感器模块调试
- 5.5 整体调试
- 5.5.1 照明系统自动控制
- 5.5.2 按键实现灯光开关
- 5.5.3 云平台控制灯光和监控
- 六、结 论
- 附件:PCB截图实物图
项目说明
楼宇照明在日常生活举足轻重,楼宇照明控制系统在一定程度上实现对能源的节约及便利管理者的使用和控制。本次设计以STM32F103C8T6为核心处理器,红外线传感器与光敏电阻传感器模块作为检测装置,用于检测光照强度及人员经过情况;继电器作为控制装置,通过继电器状态改变实现自动控制;ESP8266无线通信模块作为通信装置,实现远程通信功能,将相关数据上传至云平台,并且接收云平台下发控制命令。照明系统可通过传感器检测、单片机系统控制、终端控制三种方式进行,且终端可以对相关信息实现监控功能。传感器检测方面,在光照强度较弱的情况下的情况,若检测到有人经过,自动开启灯光照明,并延时熄灭。
实物图:

一、绪论
1.1 研究背景
当今社会飞速发展,投入生产生活的能源与日俱增,为实现可持续发展,我国倡导绿色发展理念。每个建筑物中都有大量的照明工具,楼宇照明作为日常生活中必不可少的一部分,为我们的生活提供许多便利,然而在提供便利的同时,其消耗的能源也是巨大的。传统照明方式一般采取定时开关或人工手动开关灯光的方式,灯具彻夜保持工作状态依然会消耗大量能源,并且减少灯具的使用寿命。在恶劣天气下,若管理者疏忽,则业主照明需求无法及时满足,在浪费能源的同时也为管理者工作和业主使用带来不必要的麻烦。
1.2 研究意义
使用楼宇智能照明系统可以最大化实现灯光方面节能减排,利用最少的能源保证要求的照明水平。所以在控制时,只需要在每个照明回路的开关上安装一个节点控制器就可以了。这样既可以满足建筑物中各种照明需求,又能节约能源。
智能照明控制系统依据当前环境光照强度进行判断,在光照较弱的情况下,通过传感器检测人员经过情况进行自动开关灯控制,实现“人来灯亮,人走灯灭”最大限度减少能源消耗。另外在主控制器设置控制按钮,管理者可以通过按钮控制灯光亮灭;与此同时,管理者也可以通过网页实现对灯光照明情况的监控,并可以实现对每层楼灯光的控制,对于管理方面更为快捷高效。
1.4 研究内容
本次设计完成楼宇照明系统设计,能够实现灯光自动照明以及远程控制,该系统以STM32F103C8T6单片机为核心处理器,在光照情况较弱时,利用传感器检测是否由人员经过,从而实现对楼层照明灯光控制,以求实现照明系统的高效性及节省能源。无线通信模块可以实现对照明系统工作情况的远程检测和控制,方便管理者工作。
具体工作如下:
(1)使用继电器作为照明系统的控制开关,实现对照明系统的自动控制;
(2)当传感器检测到人员经过时,照明系统自动开启,并延时熄灭;
(3)利用光敏电阻判断环境光照情况,确定自动照明控制系统是否开启;
(4)管理者可在终端监控不同楼层小灯的亮灭情况;
(5)管理者可以在终端控制不同楼层小灯分别亮灭。
二、系统方案设计
本课题基于STM32微处理器平台,实现对楼宇照明系统进行不同楼层经过人员检测、自动控制以及远程监控与控制等功能。在系统设计中,实现微处理器系统电路、信息检测电路、远程通信电路、继电器控制电路、按键控制电路以及电源电路等系统硬件设计,并对检测人员、控制、监控等功能进行代码化编程,实现系统软件设计。包括以下几部分:
(1)微控制器:楼宇智能照明系统采用STM32F103C8T6作为控制核心;
(2)信息检测模块:使用光敏电阻传感器模块实现对光照强度阈值限制,并在低于阈值(即光照强度较弱)的情况下,使用红外线传感器作为对人员经过检测工具;
(3)自动控制模块:利用继电器作为自动控制开关,根据红外线传感器输入信号进行判断,控制继电器的吸合实现对灯光的自动控制;
(4)按键电路:单片机模拟主控制台,通过按键控制可以实现模拟主控制台手动开关灯功能;
(5)无线通信模块:使用esp8266作为无线通信模块,连接至云平台上传数据、下发命令实现对灯光远程控制以及监控功能。
整体设计框图如图所示:

2.1 微控制器方案选择
微控制器是该楼宇照明系统的控制核心,在设计中有两种方案选择,分别是STC89C52与STM32F103C8T6。
STC89C52单片机是一个低功耗芯片内置8KB闪存,可以存储程序代码,具有32个IO管脚,支持串口、定时器、计数器、中断等功能,具备2个16位定时器与6个中断源、2级优先级,具有双工串行通信接口。
2.2 信息检测模块方案选择
-
信息采集模块主要实现在光照较弱环境下检测人体并输入信号,进而控制继电器工作功能。
对于光照检测模块有两种方案,分别是光敏电阻传感器模块与GY30光照强度传感器模块。光敏电阻传感器模块可以通过电位器调节检测光线亮度阈值,GY30光照强度传感器可以检测相当精确的光照值。结合实际考虑以及用户需求,光敏电阻传感器模块更为方便在实际使用中由用户改变所需光照阈值,且此设计对光照精确度要求较小,光敏电阻传感器足够满足设计需求。结合以上分析,选择光敏电阻传感器作为光照检测模块。 -
对于检测是否有人通过有以下两种方案可供选择,分别是红外线传感器以及声音传感器。使用红外线传感器作为人体检测信息采集,对环境光线的适应能力强,产品体积小、使用简单、功耗小、响应快、精度高、性能稳定、可以长期稳定可靠工作,并且可以手动调节阈值,方便改变检测需求。HCSR501为常见用于检测人体的红外线传感器,且该传感器模块具备检测到人员离开后,输出电平延时改变功能,满足“人来灯亮,人走延时熄灭”设计理念。但考虑其最小检测范围为3米,在调试与展示过程中难以展示效果,使用红外避障传感器模拟该传感器完成设计。
-
声音传感器通过检测周围声音强度,但传统声控灯若声音强度设定值偏低,易造成一个楼层经过人,所有楼层灯全部亮;
2.3 WiFi模块选择
- Wifi通信电路有以下两种芯片进行选择,ESP8266芯片和ESP32芯片。
ESP8266芯片是一款集成MCU芯片,将内存、计数器、接口、驱动等整合在单一芯片上,单核处理,运行频率为80MHZ。ESP32芯片为双核处理,同时支持WiFi和蓝牙通信。
本次设计主要考虑实现远距离通信,并且相较于ESP32而言,ESP8266价格更便宜且上市时间长,在软件方面会得到更多的支持,在使用上会更加方便兼容,因此选择ESP8266芯片作为WiFi通信芯片使用。
2.4 终端显示
使用WiFi进行无线通信,对应终端显示选择如下:
利用云平台接收数据,实现对不同楼层小灯亮灭情况的监控,并通过云平台发送数据,实现控制灯的亮灭。云平台可以实现实时控制监测,考虑使用方便以及直观性,选择云平台进行照明情况的显示以及远程控制。
对于显示和控制页面分为APP和网页,APP需要下载软件且考虑手机端与电脑端是否兼容,而网页则可点击网址即可打开并进行相关操作。考虑使用便利性,选择网页作为页面。
2.5 WiFi无线通信实现方法
本次设计实现远程通信,将WiFi模块连接至路由器或热点进行联网,使用OneNET云平台建立产品,通过MQTT协议连接至云平台。将ESP8266与STM32F103C8T6串口2(PA2与PA3)建立串口通信,通过AT指令与MQTT数据包上传实现WiFi的无线通信。
相关连接建立需要云平台产品设备ID、鉴权信息、产品ID等信息。同时本次设计需要可视化视图用于显示不同楼层灯光照明情况并且实现对不同楼层灯光照明的控制,设计可视化视图包括按钮、文本等区域,设定相关命令以及返回值,实现数据的上传与下发。
三、系统硬件电路图设计
3.1 整体电路图设计
电路部分包括电源电路、预留电源与GND部分、稳压电路、上电指示灯、按键电路、串口调试电路、单片机最小系统、WiFi通信电路、继电器控制电路、传感器检测电路、LED控制电路。

3.2 主控制器设计
STM32F103C8T6最小系统由晶振电路、电源电路、时钟电路、启动配置电路、复位电路以及调试电路组成。
STM32F103C8T6最小系统主频72MHz,具有3.3V稳压芯片,最大可提供800mA电流,具备预留USB通讯功能、复位按键,具有BOOT选择端口,电源指示灯与功能指示灯,预留串口接口及32768Hz晶振。
设计中试穿PA2、PA3串口2进行无线串口通信,PA9、PA10串口1用于程序下载以及调试。功能指示灯连接至PC13用于无线连接成功提醒,以及在调试过程中作为现象指示灯。

3.3 电源电路设计
本次设计使用器件工作电压分别为5V以及3.3V,在电源电路选择上使用5V外部电源供电,搭配稳压模块AMS1117,使电压降至3.3V供模块使用。


3.4 红外线传感器电路设计
上文中已说明,由于HCSR501由于检测范围过大,无法进行演示,故使用红外避障传感器模拟该传感器,两者在检测结果均通过高低电平输出判断,且工作电压以及接口相同,在实际应用中可替换。
红外避障传感器作为人体检测信息采集,有两个红外管,分别是发送管和接收管,特点是对环境光线的适应能力强,干扰较小,便于安装等。红外避障传感器引脚上有VCC、GND、OUT三个引脚。其工作原理是红外光线发射管发射红外光线,红外光线接收管接收红外光线,当没有接收到返回的红外光线时,OUT引脚输出高电平,当接收到返回的红外光线时,OUT引脚输出低电平。当传感器模块检测到障碍物或者有物体靠近时,其模块的指示灯会亮起,同时OUT引脚会变低电平。因模块是非接触式传感器,所以具有响应快,精度高等特点。
基于连接的红外传感器检测器,向主控制器发送关于设备工作状态的信号,继而使继电器控制电路完成相应功能。
利用三个红外线传感器作为不同楼层人员经过情况检测,采集数据供系统判断,进行开关灯状态改变。
三个红外线传感器输出端口分别与PB0、PB1、PB3连接,将检测结果输入至单片机内,用于后续继电器闭合状态判断。


3.5 光敏电阻传感器电路设计
光敏电阻传感器指的是利用光敏元件将光信号转换为电信号的传感器,敏感波长在可见光波长附近,可以根据光线的明暗变化,输出电信号,再将电信号放大处理。
当光照强度超过阈值时,传感器输出低电平,而当光照强度低于阈值时,输出高电平。
本设计中,光敏电阻传感器用作对当前环境光照情况的判断,避免在楼宇当前光照条件满足业主正常使用时开启灯光,造成不必要的能源浪费。由于整个楼宇光照水平相近,在设计中仅使用一个光敏电阻传感器作为对整个楼宇的光照水平判断,节约IO口的使用,提高效率。
光敏电阻传感器分别接3.3V电源、GND以及PA9。

3.6 继电器控制电路设计
继电器是一种电控制器件,具有输入回路和输出回路之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
使用继电器作为控制开关,LED灯作模拟楼道灯光。继电器为常开状态,当传感器检测人员经过或手动控制LED变为亮时,继电器闭合,LED变为亮;其余时刻继电器断开,LED为灭的状态。
每个继电器控制电路连接到主控制器,以接收关于设备状态的信息。如果从主机向从机发送任何信号,则根据接收到的数据执行相关操作。
继电器模块内部线圈分别与5V电源、GND、单片机输出端口相连。输出端的公用接口连接5V驱动电源,常开端口与LED电源端口连接。


3.7 无线通信电路设计
ESP8266专为移动设备,可穿戴电子产品和物联应用设计,可以通过AT指令配置,和单片机上的串口进行通信,利用WiFi进行数据传输。
设计中,利用AT指令连接手机热点,访问网址,实现WiFi模块与云平台的通信。
由于实际工作中,各灯光设备相距距离较远,无法通过WiFi分别对各个灯光设备实现通信。因此,STM32主控制器通过有线连接与灯光设备相连接,通过控制继电器,实现电流通断,在主控制器实现对各个灯光设备控制;再将STM32连接到云平台,云平台与主控制器进行通信,实现远程控制和监控功能。
云平台用于显示灯光的亮灭状态;也可以从云平台设备发送信号,以便可以远程控制它。该应用程序可以通过 MQTT协议与主控制器通信。
ESP8266的VCC引脚接3.3V工作电源,GND引脚接地,TX与RX分别与STM32的串口2的RX、TX连接,RST引脚与PA1连接,用于ESP8266每次工作初始化时复位。

3.8 按键控制电路
通过设置按键,控制继电器吸合和断开,实现对灯光亮灭的控制,模拟实现主控制器对灯光设备控制。

3.9 LED显示电路
使用三个5V供电的LED灯模拟楼道灯光,USB底座作为接口连接LED。LED电源输入端口连接至继电器的常开端口,当继电器吸合时,电路导通,LED亮。

四、系统软件设计
4.1 整体软件设计流程图
本次设计软件流程共分为三个部分,分别是WiFi通信部分,传感器部分,按键部分,三者均通过控制继电器状态实现对LED的控制。
设计分为上位机与下位机两部分,上位机实现数据的显示以及控制命令发送;下位机实现系统对LED的自动控制以及按键控制功能。
当硬件通电并连接热点后,连接至OneNET云平台产品,产品设可视化视图,并生成网页,用户可通过网页上按键控制下发命令,经程序解析后转换为对继电器状态的控制,实现控制功能;三个继电器状态打包为数据,每隔5s(OneNET最低刷新速率)上传至云平台,并在可视化视图文字显示部分展示。以上内容与光照强度及是否检测有人无关。
同时,光敏电阻传感器检测光照强度,当低于设定阈值时,若红外线传感器检测有人经过,控制继电器吸合,并持续至检测到无人后延时8s,实现“人来灯亮,人走延时熄灭”功能。
按键部分主要对输出至继电器端口的状态取反,实现主控制器控制功能,与光照强度及是否检测有人无关。
相关程序使用keil编写,flymcu烧录,使用C语言实现。
以下为整体软件设计流程图。

4.2 上位机通信设计
4.2.1 ESP8266初始化设计
ESP8266与单片机串口2进行串口通信。TX、RX分别与PA3、PA2连接用于串口通信,VCC接3.3V工作电压,GND接地,RST引脚接PA1用作复位功能。
ESP8266初始化,首先需要对串口2的PA2和PA3进行初始化设置,将PA1连接的RST引脚低电平复位,再将其设为高电平工作状态。接下来发送AT指令完成模式设置、DHCP功能打开,连接热点,与网址建立TCP连接等工作。
Station为客户端模式,即ESP8266可以连接至热点或路由器,然后通过其访问网络,发送或获取信息。
以下为ESP8266初始化程序流程图。

4.2.2 单片机与云平台通信设计
首先需完成ESP8266+STM32+OneNET云平台建立通信。通过OneNET云平台建立的产品ID、设备ID、鉴权信息,协议名等信息整合至MQTT数据包,使用AT+CIPSEND指令上传,建立连接。
关于数据上传云平台,需要将需上传数据整合为数组形式,集中发送。设定云平台数据源名称分别为LED1,LED2,LED3,当数据上传至云平台后,相应显示部分根据数据源数值显示对于内容,从而实现对数据的上传及显示,实现监控LED状态功能。
当数据返回值为1,即继电器状态为1,显示部分为灯x亮(x表示灯的序号);数据返回值为0,即继电器状态为0,显示部分为灯x灭。数据返回值设定在云平台可视化视图中创建。

关于命令下发程序,以控制LED1亮为例,命令内容为“LED1:1”,控制LED1灭命令内容为“LED1:0”。
命令下发通过可视化视图中的按键部分完成。
根据命令下发内容,首先判断平台是否返回数据,通过搜索IPD字头以及帧尾进行判断,若收到返回数据,返回数值为原数据,若为收到,返回值为空。获取平台返回数据后,搜索帧尾,若找到则将其中数字部分字符转换为数值形式,并判断命令中是否具有关键词LED1、LED2、LED3,若有,则匹配关键词至相应继电器状态中,实现对继电器的控制。
以下为数据下发流程图。

4.3 按键控制电路
按键控制设置中断方式为下降沿触发。读取输出至继电器的端口状态,当按下按键时,根据if条件语句判断,若端口输出为0,则继电器状态改为1;若输出为1,则继电器状态改为0,改变LED显示状态。

4.4 传感器检测电路设计
传感器检测电路主要包括光照强度检测电路以及红外线检测电路。
主要逻辑为当光照强度低于阈值,若红外线传感器检测到人,则继电器吸合,直至红外线传感器检测至人离开,延时8s,继电器断开。
光照强度低于阈值时,输出为1;高于阈值时,输出为0。使用while()函数,当光照强度低于阈值时才可以进行下一步程序。
继电器输入为1时,吸合,LED为亮,继电器输入为0时,断开,LED灭。
红外线传感器检测到人时输出为0,未检测到人时输出为1。使用中断函数,下降沿触发,检测到人中断开启,继电器状态变为1。使用while()函数,当检测到人员离开后方可进行下一步程序,即定时器开启,延时8s后继电器状态改为0。
设计中定时器用于模拟HCSR501模块延时改变电平功能,在实际使用中可删除定时器部分函数。

五、系统调试
5.1 ESP8266模块调试
将ESP8266模块与电脑连接,利用AT指令集查看该模块是否可以正常工作。由于设计采用MQTT协议,不能直接使用原始AT指令集直接连接至云平台产品,因此烧录MQTT固件库,但烧录后发现AT指令无法正常使用,查找相关资料后发现设计中原始固件库可以满足设计需求,因此烧录回原始固件库,并将ESP8266与STM32连接,利用编程语言实现对云平台产品的连接。
下图为AT指令调试结果,能够实现连接热点功能,手机端显示该连接设备。

5.2 云平台调试
5.2.1 准备工作
首先登入OneNET云平台,选择多协议接入中的MQTT协议,建立产品,并生成相关设备ID、鉴权信息、产品ID。以上信息在程序连接云平台以及建立数据源中需要用到[。
下图为创建的OneNET产品。

下图为设计的可视化视图,可以实现对不同楼层灯光的监控和控制。由于权限问题,按钮只能起控制作用,无法根据返回数值改变相应状态,因此设置显示文字用于显示LED状态。可视化视图可以发布,生成网址,手机端和电脑端点击网址即可进入控制页面。


依据上文中软件流程设计的连接云平台,实现STM32+ESP8266+OneNET平台连接,串口通信部分显示“连接成功”,云平台部分显示“在线”状态。
5.2.2 实现数据上传
设置显示部分数据源为AAAA,根据keil编程上传AAAA对于数据为2。文字部分显示内容返回值设定为,当返回数据为1时,显示内容为“1”,返回数据为其他时,显示内容为“2”。当前数据源值为2,因此显示部分为“2”。
实现这一功能时,由于对数据类型不熟悉,导致程序中数据类型错误,一直无法实现数据上传。查找相关资料后选择正确的数据类型,完成上传。
实现根据上传数据改变文字显示内容过程,由于最初数据源格式错误,未设定数据源格式,导致无法根据上传数据改变内容,查找相关资料,根据资料内容完成数据源格式创建,实现该功能。


5.3 红外线传感器模块调试
红外线传感器在检测到人后,指示灯亮,同时输出低电平,当为检测到人时输出为高电平。因此在设计中使用下降沿触发中断,当中断触发,串口输出“有人来”。
调试过程中以一个传感器为例,以下为调试现象。

5.4 光敏电阻传感器模块调试
因此,在调试该模块过程中,利用串口通信显示现象。首先对光照低于阈值时输出高电平进行调试,程序代码为输出低于阈值,单片机系统板PC13亮,此时光敏电阻传感器模块指示灯灭,且串口输出“光照弱”。现象如下图所示。


接下来将光照强度与红外线检测结合,当光照强度低于阈值时,判断是否有人经过,若有人经过,则输出“光照低于阈值 低于光照有人来”,此时模块现象为,光敏电阻传感器指示灯灭,红外线传感器指示灯亮,现象如下图所示。

5.5 整体调试
5.5.1 照明系统自动控制
起初使用delay延时函数实现延时功能,但在延时期间,其他指令无法响应,倘若另一红外传感器检测到人或云平台下发命令,单片机无法响应。因此使用定时器进行延时功能。
实际使用中,HCSR501红外热释电自带检测到人后延时改变输出电平功能,自带延时功能,且考虑STM32F103C8T6中定时器数量未必满足实际所需,综合以上,该延时功能仅在设计中为模拟红外热释电传感器使用,实际中可以去除。
下图为光照强度超过阈值,但红外线传感器检测到人,根据程序逻辑,此时LED应为灭的状态。现象如图。

下图为光照强度低于阈值,且红外线传感器检测到人,此时LED为亮。

5.5.2 按键实现灯光开关
下图可视化视图未下发命令,且光照强度超过阈值,此时LED为亮,状态由按键控制,且网页上对于LED2状态文字为“灯2亮”。

图5.16 按键控制LED状态
5.5.3 云平台控制灯光和监控
由于权限设置,该可视化视图中按钮仅能做命令下发功能,无法根据数据源返回数据改变相应状态。
可视化视图控制LED1按钮按下,对应继电器状态变为1,LED亮。此时光照强度超过阈值,因此该现象为云平台下发命令控制,且由图中可见,对应LED状态显示为“灯1亮”现象如下。

六、结 论
系统以STM32F103C8T6作为核心芯片,应用串口通信、中断、定时器等功能,利用WIFI进行无线通信,传感器进行检测,继电器实现自动开关功能,实现楼宇照明控制系统设计。
设计结合实际住宅、办公楼情况,以光照强度作为是否开启灯光标准,在低于设定光照强度阈值时,红外线传感器监测到人即开启灯光。同时设计在终端以及主控制器设置控制灯光按钮,对管理者而言更加方便,可以更好应对特殊情况。终端网页对于使用者而言更加方便,可以随时点击网址查看,网页上显示灯光的状态,实现监控功能。
设计内容从实际出发考虑,具备实用性,同时考虑节能环保,实现设计的基本功能,但设计内容仍存在不足,在节能性上可以对供电方式加以完善,例如太阳能供电。
附件:PCB截图实物图


希望你喜欢这个项目,并在构建过程中找到乐趣!如果你有任何问题或需要帮助,欢迎在评论区交流。
作者:Svan.
注意:本博文为不得在未经本人同意进行转载或者二次创作,违者必究!!!
相关文章:
基于stm32的楼宇照明控制系统设计
基于stm32的楼宇照明控制系统设计 项目说明一、绪论1.1 研究背景1.2 研究意义1.4 研究内容 二、系统方案设计2.1 微控制器方案选择2.2 信息检测模块方案选择2.3 WiFi模块选择2.4 终端显示2.5 WiFi无线通信实现方法 三、系统硬件电路图设计3.1 整体电路图设计3.2 主控制器设计3.…...
ESP32移植Openharmony外设篇(3)OLED屏
模块简介 产品介绍 OLED (Organic Light-Emitting Diode):有机发光二极管又称为有机电激光显示,OLED显示技术具有自发光的特性,采用薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且…...
人工智能:未来生活与工作的变革力量
人工智能(AI)作为21世纪最具变革性的技术之一,正以前所未有的速度改变着我们的生活和工作方式。从医疗行业的突破性进展到企业运营的智能化,以及日常生活中各种智能产品的普及,人工智能正在成为现代社会不可或缺的一部…...
AI自动生成PPT哪个软件好?智能生成PPT不再熬夜做课件
大概这世上,都是职场牛马对“PPT”这三个字母的头痛反应最大吧! 是的,就连各个年级段的老师也是很头痛——愁着怎样能在排版整齐的情况下,将必考知识点都呈现在PPT每一张幻灯片页面里...... 近期打听到用人工智能生成ppt课件&am…...
C# OOP面试题精选 面向新手/SOLID原则/设计模式++ 长期更新
1.整理目的 相当于0.1版本,旨在学习/提升/复习 关于面向对象模块的知识 目前,记录了一些比较容易混淆或者突然想不起的冷门内容 还有一些个人经过实战后总结的内容,其中还指明了很多实例和分析链接以更加方便地复习 【金山文档 | WPS云文…...
安全见闻(2)——开阔眼界,不做井底之蛙
内容预览 ≧∀≦ゞ 安全见闻二:Web程序构成与潜在漏洞声明导语前端语言及潜在漏洞前端语言前端框架与代码库代码库的概念和用途流行的JavaScript框架常见的代码库 前端潜在漏洞 后端语言及潜在漏洞常见后端语言协议问题后端潜在漏洞 数据库及潜在漏洞数据库分类数据…...
ProtoBuf 的含义和安装
ProtoBuf 是什么 Protocol Buffers 是 Google 的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤ 于(数据)通信协议、数据存储等。 Protocol Buffers 类⽐于、 XML,是⼀种灵活,⾼效,⾃动化机…...
C++位操作实战:掩码、提取与组装
在C编程中,位操作是一项基础且强大的技术,它允许程序员在二进制级别上直接操作数据。这种能力对于性能优化、内存节省以及底层硬件控制至关重要。本文将深入探讨C中的掩码操作、字节提取与组装,并通过实例展示这些技术的实际应用。 一、位运算…...
PVE虚拟机强制重启
在Proxmox VE (PVE) 中,强制重启虚拟机的方法有几种,取决于具体场景和虚拟机的状态。以下是常用的两种方法: 1. 使用PVE Web UI强制重启虚拟机 如果虚拟机无法正常关闭或重启,可以使用PVE Web界面中的强制关机/重启选项…...
Adobe Acrobat DC 打印PDF文件,没有打印出注释的解决方法
adobe acrobat在打印的时候,打印不出来注释内容(之前一直可以,突然就不行),升级版本、嵌入字体等等都试过,也在Google找了半天和问了GPT也么找着办法。 无奈之下,自己通过印前检查,…...
主机名学习
1.主机名 定义:主机名是一个人类可读的标识符,通常由字母、数字和连接符组成,用于标识网络中的设备。主机名可以是局部的(例如局域网中的设备名)或者全局的(通过 DNS 解析成 IP 地址)。 解析&…...
SpringBoot循环依赖
在Spring Boot(以及Spring框架)中,循环依赖是指两个或多个Bean互相依赖,导致Spring在创建这些Bean时无法正常进行依赖注入。例如,假设有两个类A和B,A依赖于B,而B又依赖于A。在这种情况下&#x…...
一道面试题:为什么要使用Docker?
先来笼统地看一下 1、环境一致性 众所周知,开发过程中一个常见的问题是环境一致性问题,由于开发环境,测试环境,生产环境不一致,导致有些bug并未在开发过程中被发现,而Docker的镜像提供了除内核外完整的运…...
类的创建、构造器、实例属性、实例方法
Creating Classes # Class: blueprint for creating new Objects # Object: instance of a class # Class: Human # Objects: John, Mary, Jack# 类名定义每个单词的首字母大写 class Point:# 每个方法至少有一个参数def draw(self):print("draw")# 创建Point对象 p…...
js读取.txt文件内容
方法一:FileReader() <input type"file" id"fileInput" /><script>const fileInput document.getElementById(fileInput)fileInput.addEventListener(change, function (e) {const file e.target.files[0]const reader new Fil…...
【AscendC算子开发】笔记2 算子高级开发和调试调优
算子调试 Tensor也可以通过特定的printf方法来打印,见上图。 gdb调试见上图。 为什么gdb调试无法成功,因为run.sh里面有两行export,如果直接通过.XX运行的话需要配置一下。 npu域也支持调试,可以使用上述的方法。 内存检测工…...
vscode连接keil-5 开发STM32 程序
Vs Code连接 keil-5 ,开发STM32 程序 为了不使用难用的 keil-5 软件 继续使用友好的 vscode开发 步骤: 1 安装Keil Assitant 扩展 2 将你的 Keil-5 这个程序的路径找到复制到这里 3 下载 Mingw 下载点此处 4 下载后只解压 就行了 不安装 下载完 放在…...
数据结构深度优先搜索遍历连通图+非连通图(C语言代码+遍历+终端输入内容)
首先数据结构(C语言版第二版)的关于深度优先搜索遍历连通图的图G4如下: 使用邻接表去创建上面这个无向图,然后再使用书本DFS函数以及DFSTraverse函数实现深度优先搜索遍历 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #…...
信息安全工程师(55)网络安全漏洞概述
一、定义 网络安全漏洞,又称为脆弱性,是网络安全信息系统中与安全策略相冲突的缺陷,这种缺陷也称为安全隐患。漏洞可能导致机密性受损、完整性破坏、可用性降低、抗抵赖性缺失、可控性下降、真实性不保等问题。 二、分类 网络安全漏洞可以根据…...
member access within null pointer of type ‘ListNode‘
文章目录 前言一、空指针解引用二、访问已释放的内存三、 结构体定义问题四、错误的链表操作五、代码上下文六、示例代码七、调试建议 前言 p -> next p1; p1 p1 -> next; p p->next;runtime error: member access within null pointer of type ListNode如果出现…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践
在电商行业蓬勃发展的当下,多平台运营已成为众多商家的必然选择。然而,不同电商平台在商品数据接口方面存在差异,导致商家在跨平台运营时面临诸多挑战,如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...
StarRocks 全面向量化执行引擎深度解析
StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计,相比传统行式处理引擎(如MySQL),性能可提升 5-10倍。以下是分层拆解: 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...
C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...
