自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 收藏
  • 关注

原创 【Arm+Qt+Opencv】基于人脸识别考勤系统实战

问题1:配套使用opencv-4.5.4,opencv_contrib-4.5.4,cmake3.22.3问题会少一点问题2:在windows下哪里执行该命令解决:问题3:在对应cmake中搜索不到要修改的配置解决:自己添加。

2025-03-24 19:15:34 1130

原创 esp32cam实现WIFI摄像头

可以直接问我要,点击运行,就不用在Arduino ide中配置。

2025-03-08 12:34:54 476

原创 【Arm+Qt】基于Nanopi duo2的WiFi智能摄像头

基于Nanopi duo2实现的WiFi智能摄像头,知识点(TCP,UDP,交叉编译,json-c,Linux,多线程,Qt,舵机的使用)

2025-02-21 20:29:02 911

原创 【STM32】外部时钟|红外反射光电开关

单片机如何对外部触发进行计数?先看一下内部时钟,内部时钟是接在APB1和APB2时钟线上的,APB1,APB2来自stm32单片机内部的脉冲信号,也叫内部时钟。我们用来定时。同样我们可以把外部的信号接入单片机,来对其进行计数功能呢?这个GPIO口的数据就是外部的信号,当时为了保证稳定性,而是采用下面这种做法。

2025-02-16 11:40:46 1223

原创 【STM32】DRV8833驱动电机

只需要给电机两个端子加一正一负的极性就会转起来了,但是要注意的是不要将电机两端直接接在5v和gnd之间,这种电机一般要提供几百毫安的电流,而GPIO口只能提供几毫安,所以我们使用一个DRV8833来驱动DRV8833输入口要接PA0,PA1,并且供电,通过OUT1,OUT2连接电机IN1,IN2对应PA0,PA1。如果要使电机转速发生改变,我们可以将通入DRV8833的IN1,IN2接PWM即可。通过改变高电平时间实现转速的快慢。

2025-02-14 14:08:14 819

原创 【STM32】舵机SG90

舵机内部有一个电位器,当转轴随电机旋转,电位器的电压会发生改变,电压会带动转一定的角度,舵机中的控制板就会电位器输出的电压所代表的角度,与输入的PWM所代表的角度进行比较,从而得出一个旋转的方向与角度。该舵机可以控制0°~180°旋转舵机0°~180°旋转对应高电平的时间为500us ~2500us,而一般舵机的频率为50Hz,也就是周期为20ms,对应的占空比就是2.5% ~12.5%,2.5%对应舵机转0°,12.5%对应舵机转180°,7.5%就对应着转90°。

2025-02-13 22:30:10 972

原创 【STM32】增量型旋钮编码器

该编码器有A,B两相,当顺时针旋转时B相会提前A相90度(匀速转的时候),也就是A相上升沿时,B相对应高电平,计数器会+1,A相下降沿时,B相为低电平时,计数器也会+1;当逆时针转时B相会落后A相90度(匀速转的时候),也就是A相上升沿时,B相对应低电平,计数器会-1,A相下降沿时,B相为高电平时,计数器也会-1;编码器旋转一圈,会有20个脉冲信号,360°分20,一个脉冲是18°。而单片机有他的编码器模式,只需要将编码器的A,B相接入TI1,TI2。

2025-02-13 18:04:09 601

原创 【STM32】输入捕获实现超声波测距

(超声波发出到 遇到障碍物反弹回来的时间)*声速/2就是到障碍物的距离操作过程:单片机给TRIG引脚输出一个脉冲,然后超声波模块会将ECHO电平拉高,当超声波遇到障碍物回来时,ECHO电平就会被拉低,而ECHO高电平的时间就是2倍的距离。

2025-02-12 14:06:26 299

原创 【STM32】ADC|多通道ADC采集

所以对应的过程是1.启动ADC 2.采样&转换 3.获取&计算,针对STM32F103C8T6芯片有10个外部通道,和两个内部通道(内部温度传感器,内部参考电压)进行ADC的转化,ADC1和ADC2,两个转化结构,每个转化结构都有一个注入组和一个规则组,我们现在只讲讲规则组,我们要对一个通道的电压值进行采集的时候,我们需要将这个通道注册进这个通道中,当启动ADC,然后采样转化的电压值就会放在规则通道数据寄存器(12位二进制值)中,等待获取。假如要确定0.8v对应的数字信号的值。y就是x对应的模拟信号。

2025-02-10 21:54:08 1210

原创 【STM32】AHT20温湿度模块

AHT20温度模块采用的是I2C硬件通信协议。本篇文章会根据时序图实现AHT20模块初始化,以及读取温湿度AHT20温度模块对应电路图得到设备地址,读地址的话设备地址为0x71,写的话为0x70。

2025-02-07 18:15:06 672

原创 【STM32】蓝牙模块&数据包解析

AA 05 01 FF AF 该数据包表示包头为AA,05表示该数据包的大小,01表示蓝灯 FF表示亮 AF为校验和,是前面数据相加后的后两位用来检验数据传输的准确性。按照电路图接线,然后使用串口3来进行通信,rx接tx,tx接rx。AA 05 02 00 B1 表示绿灯灭。也就是 包头 +数据大小+哪个灯+灯状态+校验和,所以不确定数据包大小就可以用不定长数据接收。手机下载一个蓝牙助手。

2025-02-06 18:18:18 499 1

原创 【STM32】串口原理

单片机有自己的RX(接收端),TX(发送端),有的需要再共同接一个底线,为了保证有相同的参考电势,数据如果是高电平的话,发送过去也是高电平。

2025-02-06 15:56:43 631

原创 【Qt】事件

当鼠标进入enterEvent重写的那个控件,就会触发enterEvent,如果鼠标离开该控件,就会触发leaveEvent新建一个c++的类使用多态重写enterEvent函数来实现自己想要的功能。

2024-12-10 10:21:55 327

原创 【Qt】控件9

ui实现,可以通过代码向list widget中插入数据,或者通过输入在lineedit中,点击插入按钮进行插入,删除按钮删除选中的数据也可以右击list Widget,点击+号添加数据。

2024-12-09 18:41:06 326

原创 【QT】控件8

这里说从一天的23:55到第二天的0:05也算一天,我们可以直接通过秒来计算出天数即可。计算按钮按下,计算两个时间的差值,然后显示显示在label上。使用valuechanged槽函数实现窗口的大小变化。上面正确的时间应该是7个小时,我们可以查看一下文档。实现水平/竖直方向的滑动条控制窗口大小。通过自定义按钮实现滑动条的移动。但是上述的有一个问题。

2024-11-29 12:43:07 522

原创 【Qt】控件7

使用简单的QTextEdit,获取到的内容显示到标签上使用textChanged信号。

2024-11-26 10:36:07 623

原创 【Qt】控件LineEdit

获取点击的时间,显示在lineedit上。

2024-11-24 15:02:35 478

原创 【qt】控件QLabel

但是发现三个显示效果是一样的富文本在文本两边加 < b> <\b>就会有加粗的效果,而纯文本不会有markdown下文本前面加#就是一级标题。

2024-11-19 20:51:55 641

原创 【qt】控件4

ui界面有三个按钮,应该文本框,根据不同的按钮来改变不同文本框的内容根据不同的单选按钮改变不同的文本框。

2024-11-18 15:50:01 485

原创 【qt】控件3

setToolTip这个函数用来设置提醒内容setToolTipDuration这个函数用来设置提醒时间效果演示:qt实现提示功能。

2024-11-17 12:46:07 642

原创 【qt】控件2

frameGeometry是开始从红圈开始算,Geometry从黑圈算程序证明:使用一个按键,当按键按下,qdebug打印各自左上角的坐标(相当于屏幕左上角),以及窗口大小视频演示:frameGeometry和Geometry区别。

2024-11-14 12:57:19 1110

原创 【qt】控件1

当设置该控件不能使用的话,对应控件的子控件也不能使用通过isEnabled()函数可以查看对应控件状态演示:一个按键按下就会输出out,另一个按键检测第一个按键的状态,并改变第一个按键的使能状态enble。

2024-11-11 16:11:49 721

原创 【FreeRTOS】信号量

当访问一个共享资源时,两个任务,并发访问出现不一致的问题,需要通过信号量解决那么信号量是如何解决这个问题的呢?任务量你可以认为是一把锁,一个任务拿到这个锁之后访问这个临界资源,其他任务是不能访问的,比方说正在执行的任务时间片到了,他会带走这个锁(信号量),然后其他任务也访问不了。

2024-09-21 20:59:17 371

原创 【FreeRTOS】队列

定义一个全局变量,通过串口接收上位机发来的数据,然后保存在全局变量中,然后LED任务根据全局变量数据决定点哪个灯还需要一个标记flag充当锁的角色,如果没收到数据flag=0,就不会实现灯的反转,和锁一样1.串口接收数据放到全局变量中,将flag=1,2.当flag=0说明数据没就绪,如果就绪,就开始灯反转。

2024-09-17 11:12:22 372

原创 【FreeRTOS】任务

我们需要在MX_FREERTOS_Init()里面创建任务我们根据上面的任务创建方式,实现GPIO_PIN_10的反转1.任务句柄2.任务结构体3.任务执行函数4.任务函数声明5.创建线程执行任务hal_delay和osDelay区别?hal_delay是hal库提供的,当调用该函数的任务就死等时间结束。

2024-09-16 20:18:53 487

原创 【STM32】esp8266通过MQTT连接服务器|订阅发布

该协议为应用层协议,传输层使用的是tcp,MQTT的订阅和发布,就相当于在抖音中你关注了某个领域的博主(订阅),如果有其他人发了作品就会推给你(发布),默认已经安装好了简单演示订阅mosquitto_sub 订阅指令-h 主机ip-p 端口号1883-t 主题发布mosquitto_pub 发布指令。

2024-09-15 10:21:40 950

原创 【STM32】esp8266连接wifi

使用串口二接收esp8266的数据,单片机接收,使用串口1将数据发送给串口助手串口2波特率设置74880,串口1设置115200在初始化的时候需要将复位引脚拉低20ms,然后再拉高20ms,设置GPIOB的输出模式对PB12做输出处理。

2024-09-13 13:22:55 1713

原创 【设计模式】观察者模式

小王借了好多钱,分别问boss1,boss2,boss3借钱,但是小王暂时没有能力还钱,如果小王有钱的话,就会通知债主,让债主来要钱。

2024-09-12 09:57:29 556

原创 【STM32】BH1750光敏传感

BH1750是一个光敏传感,采用I2C协议,对于I2C的从机,都有自己的地址,用来主机选择和哪个从机通信,对于OLED来说,只有单片机通过I2C往OLED中写数据。而BH1750来说,有单片机往BH1750写指令也需要单片机读取测量的数据,还需要处理数据.而从机的地址是可选的根据原理图可知addr引脚悬空,则是低电平,所以就是addr为‘L’.

2024-09-11 22:48:00 1483 1

原创 【STM32】OLED

OLED使用的是I2C协议,使用ssd1306芯片对所有灯进行控制,如果一个灯需要一个引脚的话,屏幕分为8页,每页有128列,8行 .共有128* 88个灯这样引脚是算不过来的,所以我们使用了ssd1306芯片,在上个博客我们用到的每个从机都有自己的地址同时要控制这么多的灯,也不能只给数据,比方说我们要对其显示进行重置,亮度改变,光标位置 ,如果是指令的话,就把对应指令数据写入寄存器0x00, ,如果是数据的话,就写入0x40寄存器。

2024-09-11 16:50:06 769

原创 【硬件通信协议】I2C

在这之前先说一下串口TX发送数据,RX接收数据,并且要接地,两者都有自己的时钟,因为没有时钟线,属于异步通信,并且是全双工,就是两者可以同时发送数据,同时接收数据。

2024-09-10 08:49:48 346

原创 【STM32】呼吸灯实现

对应pwm概念可以去看我的博客51实现的呼吸灯根据对应图我们可知预分频系数为999,重装载值为2000,因为设置内部时钟晶振频率为100MHZ,1s跳 100 000000次 ,跳一次需要1/100 000000s 20ms=0.02s 对应跳的次数为我们使用通用定时器最大计数为65536,所以我们必须采用预分频,设置预分频值为1000,一跳为1/100000 s所以重装载值为2000。

2024-09-08 19:38:34 792

原创 【STM32】串口

使用printf函数向串口发送东西使用微库,用到了printf,但是我们发现是不能发送的因为底层printf是fputc,我们需要自己实现后面FILE*P不用管,在fputc中调用第一个参数为uart1的句柄第二个为要输出的字符第三个为一次要发送几个字节第四个为采用轮询,一直死等,就绪1s发送一次。

2024-09-08 16:29:33 598

原创 【STM32】定时器

定时器实现也是依靠中断实现定时器分为嘀嗒定时器:在STM32操作系统中可以用到基本定时器:TIM6 TIM7 (定时)通用定时器:TIM2-TIM5 (测量PWM)高级定时器:TIM1 TIM8 (电机,数字电源)定时器本质就是计数器我们在stmcubemx里面设置最大频率为100MHZ假如说我们要定时500ms,500ms进行一次中断,执行中断执行函数这个我们使用通用定时器,TIM2最大计数为65536。

2024-09-07 13:03:59 540

原创 【STM32】外部中断

当程序正常运行执行main函数,此时如果外部中断来了,执行外部中断函数,实现相应的功能,然后就可以回到main.一般stm32芯片每个引脚都有自己的外部中断,但是为了限制,会有一个中断线,对应一个中断线执行一个外部中断函数PA0,PB0,PC0为中断线0PA1,PB1,PC1为中断线1我们实现PA7,按键1按下触发中断,然后使LED1(PB10)翻转配置stmcubemx和上一篇一样。

2024-09-06 21:36:45 1557

原创 【STM32】GPIO输入实现按键控制LED

和上篇博客配置一样。

2024-09-06 08:40:52 509

原创 【STM32】GPIO翻转操作实现流水灯

实现四个灯的流转,一个灯亮500ms,然后灭500ms,四个灯都一样。

2024-09-05 20:49:16 1170

原创 【STM32】cubemx配置GPIO

直接使用STM32CubeMX点灯。close后直接打开keil。对四个灯设置GPIO输出。

2024-09-05 15:33:37 428

原创 【STM32】cubemx创建工程|hal库点灯

2.选择型号3.开始工程4.时钟设置外部时钟不用设置,只需要设置内部震荡rc晶振这里两个都是外部晶振设置内部晶振设置串行调试接口工程起名形成代码keil打开工程。

2024-09-04 23:36:31 426

原创 【STM32】寄存器点灯

假如说我要让LED1亮。GPIOB端口时钟连接的是PB的15位,LED1是PB10,所以我们要让GPIOB使能根据手册,我们知道只需将对应位置1即可。对应的寄存器名叫做AHB1LPENR,RCC是一个指针,指向的AHB1LPENR的值=0x0000 0002;

2024-09-04 18:33:35 595

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除