自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式硬件篇---无线通信模块

本文详细对比了四种常见的无线通信模块(蓝牙HC-05、WiFi ESP8266、2.4G射频NRF24L01、LoRa SX1278)的特性、优缺点及适用场景,并提供了基于STM32F103RCT6的实例代码。蓝牙模块适合手机外设和短距离控制,WiFi模块适合物联网和互联网接入,2.4G射频模块适合低延迟通信,LoRa模块则适用于超远距离和低功耗场景。文章还给出了调试技巧和选型建议,帮助开发者根据实际需求选择合适的无线方案。

2025-05-11 10:24:56 1364 2

原创 嵌入式硬件篇---UART

UART(Universal Asynchronous Receiver/Transmitter)是一种异步串行通信协议,广泛应用于嵌入式设备与传感器、蓝牙模块、GPS等外设的通信。文章详细解析了UART协议的物理层特性、数据帧格式及波特率计算,并提供了在STM32F103RCT6上的完整代码实现。通过CubeMX配置和HAL库代码,展示了UART的初始化、数据发送与接收(包括阻塞模式、中断模式和DMA传输),以及自定义协议设计的方法。

2025-05-11 10:08:09 900

原创 嵌入式硬件篇---CAN

本文详细介绍了CAN协议的基础知识及其在STM32F103RCT6微控制器上的实现。CAN(Controller Area Network)是一种高可靠性、多主机的串行通信协议,广泛应用于汽车电子和工业控制等领域。文章首先阐述了CAN协议的物理层特性、帧类型及数据帧格式,接着详细讲解了STM32F103RCT6的CAN硬件配置,包括引脚连接和CubeMX配置。

2025-05-11 09:38:02 1880 1

原创 嵌入式硬件篇---SPI

SPI(Serial Peripheral Interface)是一种高速、全双工的同步串行通信协议,常用于微控制器与外设(如Flash、传感器、显示屏)的连接。SPI协议通过四线制(SCK、MOSI、MISO、NSS)或三线制(半双工模式)进行通信,支持主从模式和多种时钟模式(由CPOL和CPHA决定)。典型的SPI通信流程包括主机拉低NSS、产生SCK时钟并通过MOSI发送数据,同时从机通过MISO返回数据,通信结束后拉高NSS。

2025-05-11 09:14:53 898

原创 嵌入式硬件篇---IIC

I²C(Inter-Integrated Circuit)是一种同步、半双工的串行通信协议,广泛用于连接微控制器与传感器、EEPROM等低速外设。本文详细介绍了I²C协议的物理层特性、通信流程及典型通信序列,并提供了在STM32F103RCT6上的硬件配置和HAL库代码实现。文章还探讨了软件模拟I²C的方法,通过GPIO模拟时序实现通信。此外,总结了I²C通信中常见的问题及调试技巧,如从机地址错误、上拉电阻未接、时序问题等,并提供了使用逻辑分析仪抓取波形的建议。

2025-05-11 08:56:23 1250

原创 嵌入式硬件篇---陀螺仪|PID

本文详细介绍了如何在STM32F103RCT6微控制器上使用MPU6050陀螺仪结合PID算法实现麦克纳姆轮小车的车身稳定控制。硬件部分包括主控芯片、陀螺仪模块、电机驱动和电源等组件的连接与配置。软件实现步骤涵盖了MPU6050的初始化与数据读取、姿态解算(互补滤波)、PID控制器设计以及麦克纳姆轮的协同控制。此外,文章还提供了关键优化与调试技巧,如传感器校准、PID参数整定和动态稳定性增强。扩展功能部分讨论了遥控控制叠加和多传感器融合的实现。

2025-05-11 08:34:56 907

原创 嵌入式硬件篇---TOF|PID

本文详细介绍了如何在STM32F103RCT6微控制器上使用ToF(飞行时间)模块(如VL53L0X、TFmini)结合PID算法实现高精度的距离控制,适用于自动跟随、避障及工业定位等场景。文章首先列出了所需的硬件组件,包括主控芯片、ToF模块、电机、舵机及相关驱动电路,并提供了硬件连接示意图。接着,详细说明了ToF模块的初始化与数据读取方法,分别针对VL53L0X和TFmini给出了代码示例。随后,介绍了PID算法的实现,包括结构体定义、计算函数及抗积分饱和处理。

2025-05-11 07:58:57 1197

原创 嵌入式硬件篇---超声波|PID

本文介绍了如何在STM32F103RCT6微控制器上使用超声波传感器(如HC-SR04)结合PID算法实现稳定距离控制。文章详细阐述了硬件准备、连接方式、超声波测距原理以及代码实现(基于HAL库),包括定时器初始化、距离计算和PID控制器的实现。此外,还介绍了如何通过PID输出来控制电机或舵机,并提供了主循环逻辑和PID参数整定技巧。文章最后指出了实际应用中可能遇到的问题(如超声波噪声、死区处理和动态目标)及其优化方法,为读者提供了完整的实现方案。

2025-05-11 07:45:46 1004

原创 嵌入式硬件篇---麦克纳姆轮(简单运动实现)

麦克纳姆轮是一种全向轮,通过轮毂周围呈45°排列的辊子实现多方向运动,使机器人能够在平面内进行前后移动、左右平移、斜向移动及原地旋转等复杂运动。通常采用四轮布局,分为X型和O型两种对称排列方式。通过控制四个轮子的转速和方向组合,可以实现不同的运动模式,如前进、后退、平移、旋转等。麦克纳姆轮的运动可通过速度矢量合成描述,每个轮子的速度分解为前进分量和横向分量。实际应用中需注意轮子同步、地面条件、控制算法和机械损耗等问题。麦克纳姆轮因其高机动性,广泛应用于仓储机器人、全向移动底盘等场景。

2025-05-10 23:06:51 1615

原创 图像处理篇--- HTTP|RTSP|MJPEG视频流格式

视频流技术是现代多媒体应用的核心,常见的传输方式包括MJPEG、RTSP和HTTP流。MJPEG是一种简单的视频压缩格式,通过HTTP传输独立的JPEG图像,具有低延迟和兼容性好的特点,但带宽效率低且不支持音频,适用于网络摄像头和嵌入式设备。RTSP是专为流媒体设计的协议,通常与RTP配合使用,支持低延迟和精确播放控制,但实现复杂且兼容性有限,适用于专业视频监控和视频会议。HTTP流基于HTTP协议,支持自适应码率和广泛兼容性,但延迟较高,常用于视频点播和直播服务。未来趋势包括WebRTC的崛起、低延迟HL

2025-05-10 22:46:28 1538

原创 图像处理篇---MJPEG视频流处理

MJPEG(Motion JPEG)是一种简单的视频流格式,由连续的JPEG图像组成,通常通过HTTP协议传输。Python处理MJPEG流的方法包括基础处理和高级处理。基础方法包括使用OpenCV直接读取和手动解析HTTP流,前者实现简单但兼容性有限,后者可完全控制流处理但实现复杂。高级方法包括异步IO处理(asyncio)和生成器管道处理,前者适合高性能应用,后者便于添加自定义处理逻辑。专业级方法则使用FFmpeg作为后端,适合复杂场景。这些方法各有优缺点,开发者可根据需求选择合适的方式处理MJPEG流

2025-05-10 22:05:48 1056

原创 程序代码篇---esp32视频流处理

本文介绍了如何使用Python读取和处理ESP32摄像头的视频流。ESP32摄像头通常通过Wi-Fi提供视频流,支持HTTP、RTSP和MJPEG等协议。文章详细展示了如何使用OpenCV库读取HTTP和RTSP视频流,并通过requests库处理MJPEG流。此外,还提供了处理连接不稳定、提高视频流性能的解决方案,如降低分辨率、跳过帧等。对于高级用户,文章还介绍了使用FFmpeg和PyAV库作为后端的方法。通过这些方法,用户可以轻松获取并处理ESP32摄像头的实时视频流。

2025-05-10 21:40:41 1079

原创 程序代码篇---Python视频流

Python 提供了多种库(如 OpenCV、PyAV、imageio)来处理视频流,广泛应用于计算机视觉领域。OpenCV 是最常用的库,支持从摄像头或视频文件中捕获视频流,并提供了帧读取、属性设置、视频写入等基础功能。此外,OpenCV 还支持多摄像头处理、帧处理(如灰度转换、边缘检测)以及视频流分析与统计(如实时 FPS 计算)。PyAV 和 imageio 是其他常用的视频处理库,分别基于 FFmpeg 和 imageio 提供视频读取与写入功能。为了优化视频流处理,可以使用多线程技术或动态调整分辨

2025-05-10 21:23:37 670

原创 深度学习篇---MediaPipe 及其人体姿态估计模型详解

MediaPipe 是 Google 开发的开源跨平台框架,专为构建多模态(如视频、音频)的机器学习管道而设计,特别适用于实时应用。其核心特点包括跨平台支持(Android、iOS、Windows等)、实时性能优化、模块化设计以及多种预训练模型(如人脸检测、手势识别、人体姿态估计)。MediaPipe 提供了两种主要的人体姿态估计模型:MediaPipe Pose(BlazePose)和 MediaPipe Holistic。BlazePose 支持 33 个关键点检测,适用于移动设备,而 Holistic

2025-05-10 19:21:34 1257

原创 深度学习篇---姿态检测实现

坐姿检测可以通过**传统机器学习**或**深度学习**方法实现。下面我将详细介绍两种方法,并提供相应的Python实现代码。

2025-05-10 18:43:17 809

原创 图像处理篇---opencv实现坐姿检测

本文介绍了使用Python实现坐姿检测的方法,主要基于OpenCV和MediaPipe库。通过检测人体关键点(如肩膀、耳朵、臀部等),计算关键点之间的角度,并根据预设的阈值评估坐姿是否正确。代码实现了一个PostureDetector类,包含姿势检测、关键点获取、角度计算和坐姿评估等功能。通过分析脊柱和颈部的角度,系统能够判断用户是否保持良好坐姿,并记录姿势变化的时间。该方法适用于实时视频流或静态图像的坐姿检测,帮助用户改善坐姿习惯。

2025-05-10 18:21:59 1142

原创 嵌入式硬件篇---STM32 系列单片机型号命名规则

STMicroelectronics 的 STM32 系列单片机型号命名遵循一套系统化的规则,通过型号中的字母和数字可以快速识别芯片的关键参数(如性能、封装、存储容量等)。以下以 STM32F103C8T6 和 STM32F103RCT6 为例,详细解析其命名规则:一、STM32 型号命名规则STM32 的完整型号通常由以下部分组成:各字段含义如下:字段 说明STM32 系列名,表示基于 ARM Cortex-M 内核的 32 位微控制器。

2025-05-03 23:54:14 2510

原创 嵌入式硬件篇---STM32F103C8T6&STM32F103RCT6

STM32F103C8T6 和 STM32F103RC6 同属STM32F103 系列,基于ARM Cortex-M3 内核,但在资源、封装和外设上存在差异。// 对于 C8T6// 对于 RC6兼容性:基础功能代码(如 GPIO、USART)可无缝移植,但需注意外设和引脚差异。

2025-05-03 23:52:08 1921

原创 上位机知识篇---PSRAM和RAM

以下是关于PSRAM(伪静态随机存取存储器)和RAM(随机存取存储器)RAM 是计算机中用于临时存储数据的易失性存储器,支持快速读写,断电后数据丢失。PSRAM 是一种结合了DRAM存储单元 和 SRAM接口的混合型存储器,本质是自带刷新电路的DRAM。PSRAM 是DRAM与SRAM的折中方案,适合成本敏感、接口简单的场景。SRAM 和 DRAM 仍是高性能与大容量的主流选择。技术选型需综合 速度、成本、功耗、系统复杂度 四大因素。

2025-05-02 22:22:35 762

原创 上位机知识篇---粗细颗粒度

本文简单介绍了粗细颗粒度。“粗细颗粒度”(Granularity)是描述数据、系统或模型中细节层级的重要概念,不同场景下的选择直接影响效率与效果。以下从定义、应用场景、优缺点到实例的系统解析,帮助你全面掌握这一概念。较大单元、较少细节。示例:企业年度营收总额、数据库表级权限控制。总结:粗细颗粒度无绝对优劣,需权衡业务目标与技术约束。掌握这一概念的核心在于理解细节与效率的取舍,找到适合当前场景的平衡点。

2025-05-02 22:02:27 981

原创 程序代码篇---ESP32云开发

本文简单介绍了实现 ESP32-S3 传感器数据上传至云平台 + 手机远程控制电机 的完整方案,涵盖推荐的云平台、手机端。一、推荐云平台及工具云平台选择阿里云 IoT 平台优势:国内稳定、支持大规模设备接入、提供完整设备管理及安全认证。协议:支持 MQTT、HTTP(S) 等协议,适合 ESP32-S3 通信。免费额度:新用户可免费使用基础功能。文档:阿里云 IoT 文档ThingsBoard(开源)优势:免费、可私有化部署、自带可视化仪表盘和手机端控制界面。

2025-05-01 14:03:53 620

原创 上位机知识篇---二进制操作

本文简单对单片机、上位机中的映射(Mapping)和位移操作符(Bit Shifting)等相关知识进行了简单介绍.一、单片机与上位机中的二进制操作基础在嵌入式开发(单片机)和上位机编程(如Python、C#等)中,二进制操作是底层数据处理的核心,尤其在硬件控制、通信协议解析和数据压缩等领域。位移操作符左移(<<):将二进制数向左移动指定位数,右侧补0。作用:等效于乘以2^n(n为位移数)。示例:0b0001 << 2 → 0b0100(十进制1→4)。

2025-05-01 13:49:47 1036

原创 上位机知识篇---ARM 汇编语言与寄存器深度讨论

本文简单介绍了ARM的汇编语言与寄存器的深度讨论.一、ARM 汇编语言的核心特性与应用深度剖析​(一)指令集架构的独特优势​ARM 架构采用精简指令集计算机(RISC)设计理念,其指令集具有简洁高效的特点。相较于复杂指令集计算机(CISC),ARM 指令长度固定,执行周期短,这使得指令流水线能够高效运作。在实验中的各类程序里,如两个 64 位数相加程序,通过合理组合 ADD、ADC 等指令,充分利用了 ARM 指令集对数据处理的高效性。

2025-05-01 13:43:09 1169

原创 上位机知识篇---流水线执行

本文简单介绍了流水线.基本概念流水线(Pipeline) 是一种通过将任务分解为多个子任务(阶段),并让不同子任务并行执行以提高效率的技术。其灵感来源于工业流水线,每个阶段专注于特定操作,多任务在不同阶段重叠执行,从而提升整体吞吐率(Throughput)。经典五级流水线阶段(RISC为例)取指(IF, Instruction Fetch)从指令存储器中读取下一条指令。程序计数器(PC)更新,指向下一条指令地址。译码(ID, Instruction Decode)

2025-05-01 13:40:39 1023

原创 问题整理篇---(1)keil

本文简单介绍了怎样解决Keil突然无法打开或者打开闪退的问题。

2025-04-29 19:13:26 876

原创 深度学习篇---模型权重变化与维度分析

通过增加网络深度和引入高级技术,模型可以解决更复杂的问题(如图像分类、自然语言处理)。理解权重的动态变化和维度传递,是设计高效神经网络的关键。本文简单介绍了神经网络模型权重变化与维度分析的相关知识。模型定义:Linear(1,1) 创建输入输出均为 1 维的全连接层,权重 (1,1),偏置 (1,)。维度匹配:权重维度确保矩阵乘法可行(如 (n,m) 与 (m,batch) 相乘)。问题 解决方案 代码示例。

2025-04-29 18:38:39 1770

原创 深度学习篇---抽样

抽样是将连续时间信号转换为离散时间信号的关键过程,其数学本质是用脉冲序列对连续信号进行调制。

2025-04-28 13:04:29 980

原创 图像处理篇---信号与系统的应用

图像和视频作为典型的时空信号,与信号与系统理论有着深刻的联系。

2025-04-28 12:42:04 1255

原创 程序代码篇---ESP32 Camera Server

本文简单介绍了ESP32 Camera Server代码。这段代码实现了一个基于ESP32的摄像头服务器,支持视频流传输、图像捕获、人脸检测与识别等功能。1.摄像头初始化与配置2.HTTP服务器搭建3.实时视频流传输4.静态图像捕获5.人脸检测与识别6.摄像头参数控制7.LED闪光灯控制。

2025-04-27 14:13:01 1087

原创 上位机知识篇---微信小程序制作

本文简单介绍了微信小程序的制作.1.无需下载安装即用即走的应用(轻量级,内嵌于微信中)。2.跨平台(iOS/Android),基于微信生态开发。3.适合工具类、电商、服务预约等场景。创建复用组件:components/my-component,在页面中引入。

2025-04-27 14:01:24 778

原创 上位机知识篇---时钟分频

本文简单介绍了一下时钟分频。时钟分频(Clock Division)是数字电路设计中常见的技术,用于将高频时钟信号转换为较低频率的时钟信号,以满足不同模块的时序需求。它在处理器、FPGA、SoC(片上系统)和嵌入式系统中广泛应用。时钟分频的基本概念(1) 什么是时钟分频?时钟分频是指通过硬件或软件方式降低输入时钟频率,生成一个频率较低的时钟信号。例如,将 100MHz 的时钟分频为 50MHz(2分频)或 25MHz(4分频)。(2) 为什么需要时钟分频?降低功耗:高频时钟会增加动态功耗(

2025-04-26 23:57:38 1096

原创 上位机知识篇---寻址方式

本文简单介绍了各种寻址方式。在计算机体系结构和指令集设计中,寻址方法(Addressing Mode)是指 CPU 指令如何访问操作数(数据)的方式。不同的寻址方法会影响指令的灵活性、执行效率和编程便利性。立即寻址(Immediate Addressing)操作数直接包含在指令中,无需访问内存。特点:速度快,但数据大小受限(如 8/16/32 位立即数)。示例:assemblyR1 = 42(立即数42直接存入寄存器R1)2. 寄存器寻址(Register Addressing)

2025-04-26 23:55:52 684

原创 【KWDB 创作者计划】_深度学习篇---数据获取

在深度学习竞赛(如Kaggle、天池等)和研究项目中,获取大量高质量数据是成功的关键因素之一。以下是系统化的数据获取方法和资源大全。

2025-04-25 12:11:25 1123

原创 【KWDB 创作者计划】_上位机知识篇---Python数据获取

本文简单介绍了通过程序自动从互联网上获取和提取数据的过程。Python因其丰富的库和简洁的语法,成为数据爬取的首选语言。数据爬取(Web Scraping)是指通过程序自动从互联网上获取和提取数据的过程。Python因其丰富的库和简洁的语法,成为数据爬取的首选语言。

2025-04-25 11:42:45 1187

原创 【KWDB 创作者计划】_上位机知识篇---Github

GitHub 是全球最大的 代码托管平台 和 开发者协作社区,基于Git 版本控制系统,支持个人和团队进行代码管理、项目协作、自动化开发等。GitHub 不仅是代码托管平台,更是开发者协作生态的核心工具。掌握Git 基础 + PR 流程 + Issues/Actions后,你可以高效管理项目,参与开源,甚至构建自动化工作流!🚀。

2025-04-24 13:11:12 987

原创 【KWDB 创作者计划】_嵌入式硬件篇---寄存器与存储器&截断与溢出

本文简单介绍了寄存器和存储器的区别以及截断与溢出。在计算机中,截断(Truncation)和溢出(Overflow)都是由于数值存储空间有限而导致的数据精度或范围问题,但它们的产生原因和影响有所不同。位置:位于CPU内部,是CPU核心的一部分。寄存器是CPU的“工作台”,速度快但空间有限,直接支撑计算。存储器是“仓库”,容量大但速度慢,用于存储大量信息。现代计算机通过存储层次结构平衡速度与容量,寄存器是这一链条的顶端。当数据超出目标存储空间的位数限制时,直接丢弃高位或低位部分,导致。

2025-04-24 12:41:53 1112

原创 【KWDB 创作者计划】_上位机知识篇---PlatformIO

本文简单介绍了PlatformIO的使用与开发流程,并以PlatformIO开发ESP32-S3为例进行示例介绍。

2025-04-23 21:52:53 871

原创 【KWDB 创作者计划】_上位机知识篇---MicroPython

作为Python 3的精简优化实现,专为微控制器和嵌入式系统设计,在ESP32-S3等设备上展现了强大的开发优势。以下将从多个维度详细介绍其应用。

2025-04-23 21:37:57 1382

原创 【KWDB 创作者计划】_深度学习篇---向量指令集

向量指令集(如SIMD:Single Instruction, Multiple Data)通过并行化数据计算显著加速机器学习任务。其核心原理是利用硬件层面的并行性,在单个时钟周期内对多个数据执行相同操作。SIMD:单指令流多数据流。一个控制器控制多个处理器,同时对一组数据(数据向量)进行处理中的每一个分别执行相同的操作,实现空间上的并行的技术。

2025-04-23 21:08:14 1128

原创 【KWDB 创作者计划】_上位机知识篇---MQTT协议

MQTT (Message Queuing Telemetry Transport) 是一种轻量级的发布/订阅消息传输协议,专为低带宽、高延迟或不稳定的网络环境设计。

2025-04-23 20:41:00 491

空空如也

空空如也

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

TA关注的人

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