- 博客(105)
- 收藏
- 关注
原创 【STM32】智能家居项目
main.cled.cled.hbeep.cbeep.hkeyboard.ckeyboard.hlock.clock.holed.coled.hw25q128.cw25q128.hpassword.cpassword.htimer.ctimer.htasks.ctasks.hadc.cadc.hfan.cfan.hbluetooth.cbluetooth.hvoice.cvoice.hdht11.cdht11.hesp8266.cesp8266.h
2026-01-01 01:45:52
856
原创 【STM32】天气预报项目
使用 ESP8266 通过 HTTP 获取天气数据(心知天气),并显示在 OLED 屏幕上。按键 1 :循环切换今天/明天/后天天气数据。按键 2 :更新天气。main.cled.cled.hesp8266.cesp8266.hkey.ckey.holed.coled.hcJSON.ccJSON.hweather.cweather.h六、实物图
2026-01-01 01:24:31
293
原创 【STM32】采集温湿度数据上传至OneNET平台项目
使用 ESP8266 连接 OneNET 云平台,并通过 MQTT 协议上传 DHT11 获取的温湿度值。
2026-01-01 01:16:18
485
原创 【STM32】CAN总线
CAN协议,全称为Controller Area Network(控制器局域网络),是一种广泛应用的串行通信协议,最初由德国BOSCH公司开发,并已成为国际标准。低速CAN(ISO11519)通信速率 10~125Kbps,总线长度可达 1000 米。高速CAN(ISO11898)通信速率 125Kbps~1Mbps,总线长度 ≤40 米。定义:CAN协议是一种基于差分信号的异步串行通信协议,采用双绞线作为传输介质,具有高性能、高可靠性和独特的设计特点。多主控制。
2025-12-13 09:59:10
831
原创 【CNN与卷积神经网络(吴恩达)】卷积神经网络学习笔记
池化层类似卷积运算,在这里举一个最大池化的例子,即在一个4x4的图像中采用一个2x2的核,这个《核》只是对对应区域进行取最大值计算,以步长为2进行移动计算,在每次计算中取区域中的最大值,这样就可以提取出图像中的最显著的特征。以下是对于三维卷积中一些尺寸数据的描述,和二维卷积相似,只不过在n x n后面新加了一个尺寸数据nc,这个nc即表示图像的通道数,剩余对于输出图像的尺寸的计算公式和二维卷积下的一模一样。这种卷积下的卷积核和二维卷积是一样的,只不过由于有三个图像矩阵,所以应该对应有三层卷积核,即。
2025-12-12 19:34:17
1090
原创 【STM32】低功耗
STM32的低功耗(low power mode)特性是其嵌入式处理器系列的一个重要优势,特别适用于需要长时间运行且功耗敏感的应用场景,如便携式设备、物联网设备、智能家居系统等。在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从控制功耗入手,提高设备的续行时间。STM32具有运行、睡眠、停止和待机四种工作模式。
2025-12-11 22:00:21
739
原创 【STM32】RTC的使用和实时时钟项目(详细注释版)
实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟。
2025-12-10 14:32:13
799
原创 【STM32】BKP(备份寄存器)
备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。此外, BKP控制寄存器用来管理侵入检测和RTC校准功能。复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟。
2025-12-07 14:58:15
295
原创 【神经网络与深度学习(吴恩达)】深层神经网络学习笔记
神经网络是给定一些训练数据然后进行一系列的运算再传导给后面的结点继续进行运算,而人的大脑中的神经元的树突也会接收一系列信号,然后当信号到达一定的阈值的时候会传导信号给后面的神经末梢,这只是一个简单的说明,实际上人类大脑中的神经元远比这个复杂的多,但是不得不说,人类在研究神经网络和深度学习以及各种应用比如计算机视觉、自然语言处理的过程中一定程度上受到了人脑和生物神经元的启发。把输入特征a[0],放入第一层并计算第一层的激活函数(用a[1]来表示),你需要w[1]和b[1]来计算,之后也缓存z[1]值。
2025-11-26 10:49:01
354
原创 【神经网络与深度学习(吴恩达)】浅层神经网络学习笔记
也叫双曲正切函数,函数值介于-1和1之间,这个激活函数的平均值更接近于0,这就有了很明显的去数据中心化的效果。不管是sigmoid函数还是tanh函数,都有一个明显的缺点,那就是当自变量的绝对值很大的时候,函数值的变化趋近于一条直线,也就是函数的斜率接近于0,这样会拖慢梯度下降算法。下面我们把以上分析总结到一张图上,并将隐藏层的四个节点进行向量化处理,处理以后,每个节点的向量运算就变成了矩阵运算,这样可以让计算过程更加简洁明了,同时省去了for循环运算,加快了运算速度。
2025-11-25 19:46:34
648
原创 【神经网络与深度学习(吴恩达)】神经网络基础学习笔记
接下来我们符号化一下表示,首先将x和y放在一起,x表示某张图片的特征向量,y表示分类结果,将所有的样本图片和与其对应的分类结果放在一块,即可组成数量为m的训练集,然后将所有x特征向量按列依次放入一个矩阵中即可组成一个X,表示待分类的图片特征数据矩阵,在Python语言中X.shape = (nx,m),分类完成后,结果矩阵Y,表示所有分类结果数据,在Python语言中Y.shape = (1,m)。一个神经网络的计算都是按照前向或反向传播过程来实现的,首先计算出神经网络的输出,紧接着进行一个反向传输操作。
2025-11-24 16:51:18
843
原创 【STM32】SPI协议及W25Q128的应用(详细注释版)
实验目的读写W25Q128硬件接线代码main.cHAL_Init();/* 初始化HAL库 *//* 设置时钟, 72Mhz *///LED初始化led_init();//串口1初始化//W25Q128初始化printf("打印测试:hello world\r\n");led2_off();led1_off();led2_on();w25q128.c//SPI初始化//使用SPI1//作为主设备。
2025-11-23 17:16:47
604
原创 【STM32】IIC协议及OLED屏幕的应用(详细注释版)
I2C总线,全称Inter-Integrated Circuit(互连集成电路),是一种由Philips(现NXP半导体)公司在1980年代初开发的同步、串行、半双工通信总线。主从关系:主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。数据传送:<1> 如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送。
2025-11-19 23:28:28
835
原创 【STM32】ADC(详细注释版)
全称:Analog-to-Digital Converter,指模拟/数字转换器。ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。12 位 ADC 是一种逐次逼近型模拟数字转换器(0~4095)。它有多达 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。
2025-11-17 10:59:18
1074
原创 【STM32】DMA
令人头秃的描述:DMA(Direct Memory Access,直接存储器访问)提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于内存的工作来说就无法使用。简单描述:就是一个数据搬运工!!
2025-11-16 16:35:51
1110
原创 【QT开发】交叉编译QT程序在ARMLinux平台上运行
本文为自行探索交叉编译QT程序在ARMLinux平台上运行的全过程,用笔记记录学习移植过程以及移植过程中出现的问题和解决的方案,希望可以帮助大家。
2025-11-10 01:44:39
984
原创 【QT开发】自定义按键实现动画滑动按钮效果
本文介绍自定义按钮类实现QT项目中动画滑动按钮的效果,可以移植到不同的QT项目中使用,以下为主要代码,,主要用到了。
2025-11-09 18:38:48
238
原创 【QT开发】Ubuntu搭建QT开发环境
通过如下命令:== /opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh & ==这里的“&”符号代表后台运行,不占用控制命令终端。拷贝so文件到QT相关路径,让QT支持输入中文!通过如下命令启动QT的安装程序,和Windows一样,先让Ubuntu断网。选择语言安装,在窗口中选择Chinese(simplified)配置选择需要安装的项目如下,和Windows差不多。配置apt下载的服务器源,选择阿里。点击应用到整个系统,关闭,重启。下载QT通过如下命令。
2025-11-09 18:33:35
457
原创 【QT开发】天气预报项目(详细注释版)
设置边框弧度设置某方向边框弧度设置背景颜色父控件影响3 窗体无状态栏-关闭设置无状态栏设置左键弹窗关闭功能4 窗口跟随移动实现的逻辑返回数据返回数据6 软件开发网络通信架构6.1 BS架构/CS架构在计算机网络和软件开发中,CS架构(Client-Server Architecture,客户端-服务器架构)和BS架构(Browser-Server Architecture,浏览器-服务器架构)是两种主要的应用程序架构。CS架构(客户端-服务器架构)CS架构是一种典型的两层结构
2025-11-09 18:22:14
975
原创 【QT开发】汽车仪表盘项目(详细注释版)
QPainter 是 Qt 库中用于在屏幕上进行绘画的类。它提供了各种绘制功能,比如画线、画图形、画文本等。初始化 QPainter:首先,您需要一个 QPaintDevice ,比如一个 QWidget 或 QPixmap ,然后使用它来初始化 QPainter 对象。// 假设在 QWidget 的子类中设置画笔和画刷:您可以设置画笔(用于描边)和画刷(用于填充)的颜色、样式等。// 设置画笔颜色为蓝色// 设置画刷颜色为黄色绘制图形。
2025-11-09 17:43:26
910
原创 【STM32】串口通信及相关实验和项目
单工通信:数据只能沿一个方向传输半双工通信:数据可以沿两个方向传输,但需要分时进行全双工通信:数据可以同时进行双向传输同步通信异步通信同步通信:发送和接收双方按照预定的时钟节拍进行数据的发送和接收,双方的操作严格同步。异步通信:双方不需要严格的时钟同步,每个数据块之间通过特定的起始位和停止位进行分隔,接收方可以独立地识别每个数据块。通信速率是指在通信系统中单位时间内传输的信息量,是评估通信系统性能的重要指标之一。定义:比特率是指在通信线路(或系统)中单位时间(每秒)内传输的信息量,即每秒能传输的二进制
2025-10-29 12:34:29
728
原创 【STM32】看门狗
独立看门狗(Independent Watchdog,通常缩写为IWDG)主要作用是主要用于检测外界电磁干扰,或硬件异常导致的程序跑飞问题。IWDG本质上是一个12位的递减计数器。当计数器的值从某个初始值开始递减,并一直减到0时,系统会产生一个复位信号(IWDG_RESET)。CPU在接收到这个复位信号后,会重新启动系统,以确保系统从可能的错误或死锁状态中恢复。在计数器的值减到0之前,如果程序通过特定的“喂狗”操作(即重置计数器的值)来刷新计数器,那么就不会产生复位信号,系统将继续正常运行。
2025-10-28 08:44:39
1577
原创 【QT开发】网络调试助手项目
网络相关的一些基础概念-面试用学习QTcpServer学习QTcpClient学习TextEdit特定位置输入文字颜色学习网络通信相关知识点复习巩固之前UI控件程序运行如下图所示。
2025-10-24 12:36:16
1083
原创 【STM32】Systick与定时器
Systick,即滴答定时器,是内核中的一个特殊定时器,用于提供系统级的定时服务。该定时器是一个24位的递减计数器,具有自动重载值寄存器的功能。当计数器到达自动重载值时,它会自动重新加载并开始新的计数周期。Systick定时器的主要功能包括实现简单的延时、生成定时中断以及进行精确定时和周期定时操作。此外,Systick定时器还可以被用于其他目的,例如作为操作系统的时基(如FreeRTOS),或者用于软件看门狗等系统调度操作。
2025-10-23 10:51:25
592
原创 【QT开发】记事本项目
支持文本创建,打开,保存,关闭的功能UI样式美化添加打开快捷键,添加保存快捷底部显示行列号及文本字符编码Ctrl加鼠标滚轮支持字体放大缩小MainWindows还是WidgetMainWindow:这是一个包含完整菜单栏、工具栏和状态栏的主窗口应用程序框架。它适合于更复杂的应用程序,需要这些额外的用户界面元素来提供丰富的功能和交互。Widget:这通常是一个简单的窗口,没有内置的菜单栏、工具栏或状态栏。它适合于更简单或专用的应用程序,不需要复杂的用户界面组件。
2025-10-11 11:01:32
448
原创 【STM32】中断
NVIC,即Nested Vectored Interrupt Controller(嵌套向量中断控制器),是STM32中的中断控制器。它负责管理和协调处理器的中断请求,是STM32中处理异步事件的重要机制。NVIC提供了灵活、高效、可扩展的中断处理机制,支持多级优先级、多向中断、嵌套向量中断等特性。当一个中断请求到达时,NVIC会确定其优先级并决定是否应该中断当前执行的程序,以便及时响应和处理该中断请求。这种设计有助于提高系统的响应速度和可靠性,特别是在需要处理大量中断请求的实时应用程序中。
2025-09-22 18:25:24
1060
原创 【STM32】时钟树和GPIO
GPIO是通用输入输出端口(General-purpose input/output)的英文简写,是所有的微控制器必不可少的外设之一,可以由STM32直接驱动从而实现与外部设备通信、控制以及采集和捕获的功能。GPIO口可配置为多种输入输出模式,如输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、开漏复用功能、推挽式输出以及推挽式复用功能等。STM32单片机的GPIO被分为很多组,每组最多有16个引脚,不同型号的 MCU 的GPIO个数是不同的。引脚电平:0V~3.3V,部分引脚可容忍5V。
2025-09-06 09:27:20
469
原创 【嵌入式Linux】基于ARM-Linux的zero2平台的智慧楼宇管理系统项目
人脸识别使用阿里SDK支持Python和Java接口,目的是复习巩固C语言的Python调用,此接口是人工智能接口,阿里云识别模型是通过训练后的模型,精准度取决于训练程度,人工智能范畴。在常规嵌入式设备负责执行居多,说白的嵌入式设备负责数据采集,然后转发给人工智能识别后,拿到结果进行执行器动作。4. 面包板接线使用以下下脚本可分别测试继电器控制的客厅灯、卧室灯、风扇、烟雾报装置是否正常连接。会依次触发灯的亮灭、电磁锁通断、风扇开关、蜂鸣器的播听及最后读取两次gpio的引进状态。 可通过查看pin6最终确
2025-05-02 08:49:12
1573
原创 【嵌入式Linux】基于OrangePi的系统移植(编译香橙派SDK,交叉编译wiringOP库、工程代码,u-boot和内核)
在之前,都是直接使用gcc对代码进行编译,这对简单的工程是可以的,但当我们遇到复杂的工程时,每次用gcc等编译工具去操作就会显得很低效。因此make工具就出现了, make的出现是为了解决手动编译和链接大型工程的问题,它可以避免重复的工作,提高效率,保证正确性。make工具就根据makefile中的命令进行编译和链接的。
2025-03-27 00:20:31
2035
1
原创 【嵌入式Linux】基于ARM-Linux的智能垃圾分类系统项目
图像处理使用阿里SDK支持Python和Java接口,目的是引入C语言的Python调用,感受大厂做的算法bug,此接口是人工智能接口,阿里云识别模型是通过训练后的模型,精准度取决于训练程度,人工智能范畴,在常规嵌入式设备负责执行居多,说白了就是嵌入式设备负责数据采集,然后转发给人工智能识别后,拿到结果进行执行器动作。在之前实现的代码中, 主函数是单线程执行的, 导致整个代码的可扩展性非常差,比如想加OLED显示或者添加网络控制变得非常复杂,而且执行一次识别开关盖的流程非常长。
2025-03-19 17:05:12
1622
原创 【OpenMv】测距测尺寸
测距: 相同尺寸,距离越近,像素点越多,所以距离与直径像素点个数成反比:测尺寸: 相同距离,尺寸越大,直径像素点越多,所以物体尺寸与直径像素点个数成正比:因此:需要测距的时候,只需要用同一小球,先修改物体的颜色阈值,让OpenMv能够框出小球,再在一个已知距离点打印物体的像素点长度,就可以用求出关系系数K,然后再通过公式打印出距离。需要测量大小的时候,先测出小球的直径,然后在一固定位置(测量任何尺寸必须固定在同一位置)打印小球的直径像素点,再通过公式求出比例系数K1,然后通过公式打印出尺寸大小。
2022-12-06 19:41:08
5103
2
原创 【OpenMv】颜色识别
二、find_blobs函数追踪小球是OpenMV用的最多的功能了,在10分钟快速上手中通过find_blobs函数可以找到色块.我们来讨论一下,find_blobs的细节。这里的参数比较多。red = (xxx,xxx,xxx,xxx,xxx,xxx)blue = (xxx,xxx,xxx,xxx,xxx,xxx)yellow = (xxx,xxx,xxx,xxx,xxx,xxx)img=sensor.snapshot()red_blobs = img.find_blobs([red])col
2022-12-06 19:28:14
6708
原创 【C++】C++实战项目机房预约管理系统
学校有几个规格不同的机房, 由于使用时经常出现“撞车”现象,现开发一套机房预约系统,解决这一问题分别有三种身份使用该程序学生代表: 申请使用机房教师: 审核学生的预约申请管理员: 给学生、教师创建账号机房总共有三件1号机房 — 最大容量20人2号机房 — 最大容量50人3号机房 — 最大容量100人申请的订单每周由管理员负责清空学生可以预约未来一周内的机房使用,预约的日期为周一至周五,预约时需要选择预约时段(上午、下午)教师来审核预约,依赖实际情况审核预约通过或者不通过。
2022-12-02 12:50:31
1429
转载 【C++】演讲比赛流程管理系统
抽签 -> 开始演讲比赛 -> 显示第一轮比赛结果 -> 抽签 -> 开始演讲比赛 -> 显示前三名结果 -> 保存分数。解决方式:在showRecord函数中,开始判断文件状态并加以判断。在speechManager.h中提供退出系统的成员函数。在speechManager.h中添加清空记录的成员函数。在speechManager.cpp中提供具体的功能实现。在管理类speechManager.h中添加成员函数。在main函数分支3选项中,调用清空比赛记录的接口。解决方式:比赛完毕后,所有数据重置。
2022-11-30 23:06:32
380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅