当前位置: 首页 > news >正文

stm32项目(8)——基于stm32的智能家居设计

目录

一.功能设计

二.演示视频

三.硬件选择

1.单片机

2.红外遥控

3.红外探测模块

4.光敏电阻模块

5.温湿度检测模块

6.风扇模块

7.舵机

8.WIFI模块

9.LED和蜂鸣器

10.火焰传感器

11.气体传感器

四.程序设计

1.连线方式

2.注意事项

3.主程序代码

五.课题意义


一.功能设计

本次设计的目标是想实现如下图所示的智能家居环境

本次设计所实现的功能:
        用红外遥控输入密码,密码正确,绿灯亮,系统工作,实现后面的功能,密码不正确红灯亮,不工作。
        红外避障检测到汽车靠近,自动抬杆
        检测光照强度,显示到TFTLCD屏幕上,天亮自动开窗
        检测温湿度数值,温度高,自动开风扇。
        火焰传感器检测到有火,烟雾传感器检测到有烟雾,蜂鸣器就报警。
       通过WIFI模块连接到原子云, 从云端远程控制开门、开窗,同时将温度 湿度 光照信息上传到原子云显示

二.演示视频

完成后的演示视频如下:

基于探索者开发板的智能家居_功能演示

正点原子WIFI模块连接原子云的讲解

三.硬件选择

        所有硬件的实物图如下:

1.单片机

        单片机选择stm32f407,用的是正点原子的探索者开发板。

        正点原子探索者开发板(Atomic Explorer)是一款基于STM32系列微控制器的开发板。它由正点原子推出,旨在方便开发者进行嵌入式系统的开发和调试。

        该开发板采用了常见的DIP封装,具有丰富的外设和接口,包括数字量输入输出口、模拟量输入输出口、串口、SPI、I2C等接口,以满足不同项目的需求。开发板还配备了丰富的功能模块,如LED指示灯、继电器、按键、温湿度传感器等,方便开发者快速验证和验证项目的可行性。

        开发者可以使用开发板上提供的开发环境和开源库进行程序开发,也可以与其他常用开发环境(如Keil、IAR)配合使用。开发板支持C语言和汇编语言编程,开发者可以根据自己的需要选择合适的编程方式。

        总之,正点原子探索者开发板是一款功能丰富、易于使用的嵌入式系统开发工具,适用于学习、原型开发和小型项目开发等各种场景。

2.红外遥控

        红外遥控用的是买单片机自带的。

        通常红外遥控为了提高抗干扰性能和降低电源消耗,红外遥控器常用载波的方式传送二进制编码,常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9kHz≈38kHz。也有一些遥控系统采用36kHz、40 kHz、56 kHz等,一般由发射端晶振的振荡频率来决定。所以,通常的红外遥控器是将遥控信号(二进制脉冲码)调制在38KHz的载波上,经缓冲放大后送至红外发光二极管,转化为红外信号发射出去的。 

        红外接收设备是探索者板子上自带的,由红外接收电路、红外解码、电源和应用电路组成。红外遥控接收器的主要作用是将遥控发射器发来的红外光信号转换成电信号,再放大、限幅、检波、整形,形成遥控指令脉冲,输出至遥控微处理器。近几年不论是业余制作还是正式产品,大多都采用成品红外接收头。成品红外接收头的封装大致有两种:一种采用铁皮屏蔽;一种是塑料封装。均有三只引脚,即电源正(VDD)、电源负(GND)和数据输出(VOUT)。

3.红外探测模块

        红外探测模块检测到有车靠近时,自动抬杆。使用模块如下所示:

        该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3v-5V。该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。

        其原理图如下所示

4.光敏电阻模块

        光敏电阻模块如下图所示: 

        光敏电阻模块(Photoresistor Module)是一种基于光敏电阻原理的传感器模块。它是一种被广泛应用于光敏感测领域的组件,常用于测量环境中的光强度。

        光敏电阻模块通常由光敏电阻元件和调节电路组成。光敏电阻元件是一种能随着光照强度变化而改变电阻值的组件。当光照强度增加时,电阻值会减小;反之,当光照强度减小时,电阻值会增加。调节电路通常用于对光敏电阻的输出进行放大和转换。

        光敏电阻模块可以通过数字或模拟信号进行输出。在数字输出模式下,当光敏电阻检测到的光强度超过预设阈值时,输出高电平;否则,输出低电平。在模拟输出模式下,光敏电阻模块会输出一个与光强度成正比的电压或电流信号。

        光敏电阻模块广泛应用于自动调节和感知光照的场景中。例如,它可以用于光敏感控灯系统、光敏感自动窗帘系统、光敏感安防系统等。通过与其他模块或控制器结合,光敏电阻模块可以实现光强度的实时监测和光敏感应控制。

        只要用单片机的AD转换功能,检测该模块输出电压的大小,都可以知道环境光照强度大小。

5.温湿度检测模块

         温湿度传感器选择的是DHT11,实物图如下:

        DHT11是一款广泛应用于温湿度测量的数字温湿度传感器。DHT代表Digital Humidity and Temperature(数字湿度和温度),11表示其具有11位的输出精度。

        DHT11传感器由温湿度感测元件、AD转换电路和数字信号处理电路组成。它采用单总线传输方式,通过一个总线线路即可同时获取温度和湿度数据。DHT11的测量范围为温度0℃至50℃,湿度20%RH至90%RH。

        DHT11传感器的使用非常简单,只需将其三个引脚分别连接到供电(VCC)、地(GND)和数据(DATA)引脚即可。通过单总线协议,可以通过读取引脚上的数字信号来获取温度和湿度值。通常情况下,开发者需要使用相应的库或驱动程序来与DHT11传感器进行交互,以便读取温湿度数据并进行进一步的处理和应用。

6.风扇模块

        风扇模块实物图:

         这种风扇自带驱动,直接用单片机IO口就可以控制它的转动,非常方便,不需要外加驱动模块,可以大大提高便利性。

7.舵机

        本次使用小型数字舵机。实物:

 

 可见,只要给该舵机一定时间的高电平,就能控制舵机转动到对应的角度!

8.WIFI模块

        WIFI模块使用正点原子的WIFI模块,实物图如下:

      

        WIFI模块(Wireless Fidelity Module)是一种用于无线网络通信的模块,可以使设备具备无线网络连接的能力。

        WIFI模块通常与设备的主控芯片或微控制器结合使用,通过无线局域网(WLAN)技术实现设备与网络的连接。它可以通过无线方式传输数据、接入互联网、与其他设备进行通信等。

        WIFI模块的工作原理主要基于标准的无线网络协议(如IEEE 802.11系列标准),其中常见的协议包括802.11b、802.11g、802.11n和802.11ac等。这些协议定义了WIFI模块与其他设备之间的通信规范,包括使用的频段、数据传输速率、安全认证等。

        使用WIFI模块,设备可以利用现有的无线网络基础设施(如无线路由器)与互联网进行连接,以实现各种应用场景。例如,智能家居设备可以通过WIFI模块连接到家庭无线网络,实现远程控制和监控;物联网设备可以通过WIFI模块与云服务器进行通信,实现数据传输和远程控制等。

       在探索者板子上,WIFI模块使用的是串口三,所以到时候直接用串口三控制这个WIFI模块就可以了。 

        在程序设计时,我用了一个按键控制了WIFI模块的连接,按下K0,才进行WIFI模块连接到原子云这一步工作。

9.LED和蜂鸣器

        LED和蜂鸣器直接用板子上自带就即可。

10.火焰传感器

        火焰传感器是专门用来探测火源的传感器。火焰传感器利用红外线对火焰非常敏感的特点,使用特制的红外线接收管来检测火焰,然后把火焰的亮度转化为模拟电压信号输出。  本次使用的火焰传感器,火焰强度越大,输出的电压越低。火焰强度越小,输出的电压越大。是一个反比例关系。

        所以,当有火焰时,该模块输出低电平。单片机检测到低电平就可以进行相关的控制操作。 

11.气体传感器

        气体传感器使用的是MQ2,MQ-2气体传感器对气体敏感,能检测出包括天然气、甲烷、酒精在内的多种可燃性气体,是一款高性价比传感器。下图为MQ-2传感器的实物图:

        本次只使用了它的数字输出口,当传感器检测到有烟雾时就会输出低电平,单片机检测到这个低电平就知道有烟雾产生了。 

四.程序设计

1.连线方式

/**
 ****************************************************************************************************
 红外避障端口  数字输出端“D” 接到单片机PB3口
 汽车抬杆控制口为PB0
 光照传感器接PA5
 控制开窗的舵机接PB1
 温湿度传感器接PG9
 风扇的INA接PC0  INB 接PC2
 火焰传感器 数字输出端“D” 接PB6
 气体传感器 数字输出端“D” 接PB7
 
 控制大门的舵机接 PB2
 ****************************************************************************************************
 */

2.注意事项

//开机后,用遥控输入开机密码  初始密码为 123456 输入时 按键按下去的时间必须非常短暂,避免重复触发 密码输入完成后 按下遥控器电源键进行密码判断
//密码输入过程中 如果输错了数字 可以按下删除键进行删除
//密码输入正确后  按下KEY0键 进行WIFI连接 连接过程会在LCD上显示
//连接上原子云后  温度 湿度 光照会传到原子云显示  从原子云发送1 控制大门的舵机会打开  发送0  大门关闭

3.主程序代码

/******************************************************************************************************红外避障端口  数字输出端“D” 接到单片机PB3口汽车抬杆控制口为PB0光照传感器接PA5控制开窗的舵机接PB1温湿度传感器接PG9风扇的INA接PC0  INB 接PC2火焰传感器 数字输出端“D” 接PB6气体传感器 数字输出端“D” 接PB7控制大门的舵机接 PB2*****************************************************************************************************///开机后,用遥控输入开机密码  初始密码为 123456 输入时 按键按下去的时间必须非常短暂,避免重复触发 密码输入完成后 按下遥控器电源键进行密码判断
//密码输入过程中 如果输错了数字 可以按下删除键进行删除
//密码输入正确后  按下KEY0键 进行WIFI连接 连接过程会在LCD上显示
//连接上原子云后  温度 湿度 光照会传到原子云显示  从原子云发送1 控制大门的舵机会打开  发送0  大门关闭
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/LCD/lcd.h"
#include "./BSP/BEEP/beep.h"
#include "./BSP/KEY/key.h"
#include "./BSP/ADC/adc.h"
#include "./BSP/DHT11/dht11.h"
#include "./BSP/SENSOR/sensor.h"
#include "./BSP/REMOTE/remote.h"
#include "./BSP/TIMER/btim.h"
#include "string.h"char mima[]="123456";               //密码
int  light_yuzhi=200;               //光照强度阈值(可根据实际情况修改)
int  temp_yuzhi=20;                 //温度阈值int main(void)
{uint8_t key;uint8_t flag=0;                 //若flag=1  说明输入的密码正确uint8_t i = 0;uint16_t adcx=0;                     //保存AD转换的值   该值的大小反应了光照强度uint8_t temperature=0;             //保存温度数据uint8_t humidity=0;                //保存湿度数据char str[]="";char *p;HAL_Init();                             /* 初始化HAL库 */sys_stm32_clock_init(336, 8, 2, 7);     /* 设置时钟,168Mhz */delay_init(168);                        /* 延时初始化 */usart_init(115200);                     /* 串口初始化为115200 */btim_timx_int_init(10 - 1, 8400 - 1); /* 84 000 000 / 84 00 = 10 000 10Khz的计数频率,计数10次为1ms */usart3_init(115200);		//WIFI 初始化 波特率必须为 9600led_init();                             /* 初始化LED */lcd_init();                             /* 初始化LCD */sensor_init();                           //各种开关量传感器初始化beep_init();                            /* 初始化蜂鸣器 */key_init();                             /* 初始化按键 */remote_init();                         /* 红外接收初始化 */dht11_init();                            //温湿度传感器初始化adc_init();                             /* 初始化ADC  采集光照强度要用到ADC */g_point_color = RED;lcd_show_string(50, 40, 300, 32, 32, "SMART HOME SYSTEM", RED);     //显示标题lcd_show_string(50,100, 300, 16, 16, "key:", RED);     //显示标题lcd_show_string(30, 160, 200, 16, 16, "Light_Intensity", BLUE);        //显示光照强度lcd_show_string(30, 180, 200, 16, 16, "Light_yuzhi", BLUE);        //显示光照强度阈值lcd_show_xnum(110, 180, light_yuzhi, 5, 16, 0, BLUE);      lcd_show_string(30, 200, 200, 16, 16, "Temp:  C", BLUE);            //显示温度lcd_show_string(30, 220, 200, 16, 16, "Humi:  %", BLUE);          //显示湿度lcd_show_string(30, 240, 200, 16, 16, "Temp_yuzhi:  C", BLUE);            //显示温度阈值lcd_show_num(30 + 84, 240, temp_yuzhi, 2, 16, BLUE); while (1){key = remote_scan();          //检测红外遥控是否有按键按下if(key)                     //如果按键被按下{switch (key){               case 22:str[i++] = '1';break;case 25:str[i++] = '2';break;case 13:str[i++] = '3';break;case 12:str[i++] = '4';break;case 24:str[i++] = '5';break;case 94:str[i++] = '6';break;case 8:str[i++] = '7';break;case 28:str[i++] = '8';break;case 90:str[i++] = '9';break;case 66:str[i++] = '0';break;case 74:str[--i] = ' ';       //如果按了回退键,那么指针左移一位 相当于删除最后一位数字                                     break;case 69:                 //69 是电源键      按下以后进行密码判断                if(strcmp(str,mima)==0)        //如果密码正确{flag=1;}else{flag=0;lcd_show_string(80, 100, 300, 16, 16, "        ", RED);     //清空前面输错的密码}i=0;strcpy(str,"");               //清空  便于下次输入密码                  break;}}lcd_show_string(80, 100, 300, 16, 16, str, RED);     //显示输入的密码if(flag==1){  LED1(0);         //密码正确 绿灯亮LED0(1);lcd_show_string(50,100, 300, 16, 16, "welcaom to my smart home system", RED);     lcd_show_string(30, 320, 200, 16, 16, "press key0 to connect wifi", BLUE);if(KEY0==0){lcd_show_string(30, 340, 200, 16, 16, "WIFI Connecting......", BLUE);           u3_printf("AT+CWMODE=1\r\n");delay_ms(3000);u3_printf("AT+CWJAP=\"FAST_0A5C\",\"123456789\"\r\n");      //FAST_0A5C改成你自己的WIFI名字  后面的一串数字改成你自己的WIFI密码delay_ms(8000);u3_printf("AT+ATKCLDSTA=\"22021955902980447838\",\"88888888\"\r\n");      //这里的数字是设备编号 和 设备密码  改成你自己原子云里面对应的就行delay_ms(3000);lcd_show_string(30, 340, 200, 16, 16, "WIFI Conneced!         ", BLUE);}if(Infrared==0)           //如果红外避障检测到有车{rod_ctrl(180);         //那么抬起杆子    (控制杆子的舵机接在PB0  角度控制范围为0-180°)}else{rod_ctrl(90);          //否则杆子不抬起}adcx = adc_get_result_average(ADC_ADCX_CHY, 10);   /* ADCX即为光照强度 范围为0-4095 值越大 代表光照越强 用手指蒙住传感器adcx为50左右 正常情况下为180左右   用手电筒照射,可达到3000多(设定光照阈值时 可供参考)*/lcd_show_xnum(160, 160, adcx, 5, 16, 0, BLUE);      /* 显示ADC采样后的原始值 */if(adcx>light_yuzhi)                           //光照强度阈值 我设置为100    window_ctrl(180);                            //开窗elsewindow_ctrl(90);             //关窗dht11_read_data(&temperature, &humidity);             /* 读取温湿度值 */lcd_show_num(30 + 40, 200, temperature, 2, 16, BLUE); /* 显示温度 */lcd_show_num(30 + 40, 220, humidity, 2, 16, BLUE);    /* 显示湿度 */if(temperature>temp_yuzhi)       //如果温度大于阈值{INB(1);INA(0);     //开风扇}else{INB(0);INA(0);     //关风扇}if(Fire==0 || Gas==0)BEEP(1);       //开启蜂鸣器elseBEEP(0);u3_printf("temp:%d,humi:%d,light:%d\r\n",temperature,humidity,adcx);       //向原子云发送数据}else{LED0(0);         //否则 红灯亮LED1(1);}delay_ms(1000);}
}

五.课题意义

        基于STM32单片机的智能家居课题具有以下意义:

        1. 提升生活品质:智能家居系统可以通过自动化和智能化的方式,优化家居环境,提供更加舒适和便捷的生活体验。例如,通过自动调节照明、温度和湿度等参数,提高室内的舒适度;通过远程控制和智能时间表,实现家电的智能化管理,提供更加方便的生活方式。

        2. 节能环保:智能家居系统可以通过智能控制和能耗监测,实现能源的有效利用和节约。例如,通过智能照明控制,合理调节灯光亮度和开启时间,降低能耗;利用智能化的能源管理系统,定时监控和控制家电的用电量,提高能源利用效率。

        3. 安全保障:智能家居系统可以提供更高的安全性和防护性。通过安防监控系统、智能锁、入侵报警等智能设备的联动,实现家居的安全防护功能,提供实时的安全监控和警报系统。

        4. 开发创新:基于STM32单片机的智能家居课题可以促使开发者深入研究和应用嵌入式系统、物联网以及传感器技术等方面的知识。通过设计和开发智能家居系统,创新出更加智能、高效和可靠的解决方案,推动技术的发展和应用。

        5. 学习与实践机会:智能家居课题为学生提供了学习和实践的机会。在实际项目中,学生可以通过设计、搭建和调试智能家居系统,提高嵌入式系统开发、网络通信、传感器应用等技能,培养解决问题和创新思维的能力。

        综上所述,基于STM32单片机的智能家居课题具有提升生活品质、节能环保、安全保障、开发创新和学习实践的重要意义,对于推动智能家居技术的发展和应用具有积极的推动作用。

相关文章:

stm32项目(8)——基于stm32的智能家居设计

目录 一.功能设计 二.演示视频 三.硬件选择 1.单片机 2.红外遥控 3.红外探测模块 4.光敏电阻模块 5.温湿度检测模块 6.风扇模块 7.舵机 8.WIFI模块 9.LED和蜂鸣器 10.火焰传感器 11.气体传感器 四.程序设计 1.连线方式 2.注意事项 3.主程序代码 五.课题意义…...

边缘计算:连接智能世界的变革之力

随着物联网和人工智能的迅猛发展,边缘计算作为一种新兴的计算模式正受到越来越多的关注。边缘计算将数据处理和分析的能力从云端向网络的边缘推移,为各行各业带来了巨大的机遇和挑战。本文将探讨边缘计算的定义、应用领域以及对未来智能世界的影响。 1.…...

多货币多汇率跨境电子商城建设(仓储管理、网络安全)

多货币多汇率跨境电子商城建设需要考虑到多个方面,包括仓储管理、网络安全、货币兑换、物流配送等。以下是具体的介绍: 一、仓储管理 仓储管理是跨境电子商城的重要组成部分,需要考虑到商品的存储、管理和分拣等环节。以下是需要注意的几个…...

笔记,ubuntu22安装header问题

描述: 需要/lib/modules/5.15.0-53-generic 安装linux-headers-5.15.0-53-generic_5.15.0-53.59_20.04.1_amd64.deb提示 Package libssl1.1 is not installed.,机器上只有libssl3.0,最后强制安装,并且打了快照,防止重…...

领航优配:股票分红为什么股价下降?分红有什么好处?

股票分红是一种报答股东的方法,也是一种表现公司价值的方法。那么股票分红为什么股价下降?分红有什么优点?领航优配也为大家准备了相关内容,以供参考。 股票分红为什么股价下降? 股票进行分红后股价出现跌落是一种很常…...

Spark(38):Streaming DataFrame 和 Streaming DataSet 转换

目录 0. 相关文章链接 1. 基本操作 1.1. 弱类型 api 1.2. 强类型 1.3. 直接执行 sql 2. 基于 event-time 的窗口操作 2.1. event-time 窗口理解 2.2. event-time 窗口生成规则 3. 基于 Watermark 处理延迟数据 3.1. 什么是 Watermark 机制 3.2. update 模式下使用 w…...

设计模式之六:命令模式(封装调用)

命令模式可以将请求的对象和执行请求的对象解耦(实际上是通过命令对象进行沟通,即解耦)。(个人感觉,这章讲的很一般) 按个人理解来讲: 假如需要一个遥控器,遥控器有一个插口可以插上…...

git删除历史提交中的某些文件

要从所有提交中删除PDF文件并保留本地文件,你需要使用git filter-repo命令或git filter-branch命令来重写历史。请注意,这将修改提交历史,因此需要小心操作,确保在执行之前备份数据。 以下是使用git filter-repo命令的示例&#…...

Java List(列表)

List 是一个有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List 集合默认按元素的添加顺序设置元素的索引,第一个添加到 List 集合中的元素的索引为 0&#xff…...

虚拟机的创建与使用

一、虚拟机的下载 链接:百度网盘下载链接 提取码:a9p4 二、新建虚拟机系统 需要有版本序列号 注意: 选择 第一个是纯dos 的窗口指令 桌面没有任何东西 选择第二个就是正常的操作系统.有文件夹 我的电脑之类的 三、从主机中复制文件到虚拟机中需要安装 …...

springboot传给前端日期少了八小时

在Spring Boot中,如果从MySQL数据库中获取日期,并在前端显示时少了8小时,这通常是由于时区的问题导致的。MySQL默认使用系统的时区,而Spring Boot默认使用UTC时区。 spring-boot默认使用Jackson对返回到前端的值进行序列化。Jack…...

链表数组OJ题汇总

前言: 在计算机科学中,数组和链表是两种常见的数据结构,用于存储和组织数据。它们分别具有不同的特点和适用场景。 本博客将深入讨论数组和链表在OJ题目中的应用。我们将从基本概念开始,介绍数组和链表的定义和特点,并…...

中间人攻击与 RADIUS 身份验证

在数字时代,中间人(MitM)攻击已成为一种日益严重的威胁。根据网络安全风险投资公司的网络安全统计数据,预计到2025年,网络犯罪每年将给世界造成10.5万亿美元的损失,比2015年的3万亿美元大幅增加。这种令人震…...

虚拟机安装国产操作系统的方法

1.这里以银河麒麟为例,其他以liunx为基础的国产操作系统都是一样的方法。 2.下载操作系统如下(选第一个就行): 任选其一下载: 3.安装虚拟机软件(这里以virtualbox为例,vmare也是一样都可以) 4.打开虚拟机…...

【Linux】云服务器自动化部署VuePress博客(Jenkins)

前言 博主此前是将博客部署在 Github Pages(基于 Github Action)和 Vercel 上的,但是这两种部署方式对于国内用户很不友好,访问速度堪忧。因此将博客迁移到自己的云服务器上,并且基于 Jenkins(一款开源持续…...

Golang字符串处理深入解析:探索 strings 标准库的全部方法

Golang 的 strings 标准库提供了许多用于处理字符串的函数。以下是一些主要的方法: Contains(s, substr string) bool: 检查字符串是否包含子串。ContainsAny(s, chars string) bool: 检查字符串是否包含字符集中的任何字符。ContainsRune(s string, r rune) bool:…...

如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透?

如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透? 文章目录 如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透?前言1. 在群辉NAS系统下安装cpolar套件2. 管理隧道列表3. 创建固定数据隧道 前言 群晖作为大容量存储系统,既可…...

opencv基础57-模板匹配cv2.matchTemplate()->(目标检测、图像识别、特征提取)

OpenCV 提供了模板匹配(Template Matching)的功能,它允许你在图像中寻找特定模板(小图像)在目标图像中的匹配位置。模板匹配在计算机视觉中用于目标检测、图像识别、特征提取等领域。 以下是 OpenCV 中使用模板匹配的基…...

搜索插入位置

题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target …...

Centos Linux快速复制文件并查看进度的方法(保留文件原始时间戳等属性)

用cp命令保证快速复制,screen保证不丢失你对cp命令执行情况的掌控。 需要用到screen软件包,防止复制过程中终端被关闭。 centos linux直到7默认都没有screen,需要安装一下 普通账户: sudo yum -y install screen root账户&am…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中&#xff0…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...