- 博客(150)
- 收藏
- 关注
原创 嵌入式单片机开发学习路线,从入门到高薪就业,保姆级学习攻略!
本文详细介绍了嵌入式开发的学习路线和就业方向。主要分为单片机开发、Linux应用开发和Linux驱动开发三大方向,重点讲解了51单片机和STM32的学习路径,包括C语言基础、开发环境配置、硬件基础等内容。进阶部分涵盖RTOS系统、物联网通信、GUI技术等核心技能,并推荐了多个实战项目资源。文章还提供了野火、正点原子等开发板选择建议,以及韦东山等优质教学资源。所有配套学习资料(嵌入式八股文、项目代码等)可通过微信公众号【嵌入式学习菌】获取。该路线适合零基础到进阶的嵌入式学习者系统化学习。
2024-08-30 11:09:25
4979
4
原创 ESP32 BluFi蓝牙配网完整流程(含代码实现与细节解析)
本文详细介绍了基于ESP32的BluFi蓝牙配网技术实现方案。该方案利用ESP32的BLE与WiFi双模特性,通过蓝牙建立安全通道传输WiFi配置信息,适用于无屏设备的联网场景。文章提供了完整的5阶段配网流程:初始化阶段完成加密、WiFi和BLE模块准备;连接建立阶段实现手机与设备的蓝牙配对;安全准备阶段初始化AES-256加密;配置传输阶段支持二进制和JSON两种数据格式;连接反馈阶段通过BLE通知返回联网状态。核心代码实现了数据加密、GATT服务、WiFi连接管理等关键功能,并详细说明了开发环境配置和编
2026-01-21 20:29:14
993
原创 Gitee使用方法
本文介绍了Git的基本操作流程,包括环境准备、核心操作场景和进阶功能。主要内容包括:1) 安装Git并配置用户身份;2) 本地工程上传到Gitee的完整步骤(初始化、关联、提交、推送);3) 分支切换和二次上传;4) 克隆仓库和同步更新;5) 错误处理与用户切换;6) 进阶功能如撤销提交和代码对比。重点讲解了ESP32工程管理场景下的具体操作命令,并提供了常见问题的解决方法。全文采用分步骤指导形式,便于开发者快速掌握Git的基本使用。
2026-01-21 20:26:02
653
原创 ESP-NOW、ESP-MESH-LITE、Openthread通信协议
摘要:本文对比分析了三种物联网通信协议的核心特点与应用场景。ESP-NOW适用于短距直连(≤50米)、低延迟(<10ms)的小型设备控制,如智能家居遥控;ESP-MESH-LITE支持树状组网(≤100节点),适合中大规模插电设备组网,如别墅智能系统;Openthread采用网状拓扑,具有超低功耗(μA级)和IPv6支持,适合大规模电池供电场景如农业监测。三者可互补使用,选型需考虑设备数量、供电方式及网络需求。典型应用案例展示了各协议在智能家居、商业空间和农业监测中的实际价值。
2026-01-20 21:53:04
1036
原创 含谐波的功率因数问题
摘要:通过对比两种视在功率计算方法(相量求和法与功率勾股定理法),发现结果存在约0.06kVA差异(48.00kVA vs 48.06kVA),证实了谐波的存在。各相功率因数(0.448~0.663)与系统总功率因数(0.92)的显著差异进一步表明谐波导致三相不平衡。这种不一致性正是非线性负载产生谐波电流的典型特征,使总电流有效值增大并影响功率计算准确性。
2026-01-20 21:52:06
188
原创 工业场景实战案例--wifi联网
就像“手机连家里 WiFi” 的过程:手机设置里输入 WiFi 名称 / 密码(对应 ESP32 配置 STA 参数);点击“连接”(对应esp_wifi_start())→ 手机提示 “正在连接”(对应wifi_sta_connect);手机显示“已连接”(对应WIFI_EVENT_STA_CONNECTED),但此时可能还没网(没 IP);
2025-12-17 20:28:31
847
原创 ESP32 事件循环作用
本文介绍了ESP-IDF框架中两个核心功能的使用方法。第一部分讲解esp_event_loop_create_default函数,通过WiFi连接案例演示如何创建默认事件循环并注册回调函数,实现WiFi状态监听。第二部分详细说明SPIFFS文件系统的初始化流程,包括挂载参数配置、文件系统完整性检查及容量监控,并给出文件读写示例。文章内容实用性强,适合嵌入式开发者学习ESP32的事件处理和文件系统操作,作者还提供嵌入式学习资料获取渠道。
2025-12-16 07:11:55
942
原创 为什么二值信号量先释放,再获得,互斥量先获得,再释放
本文分析了二值信号量与互斥量的核心差异:二值信号量用于任务间同步(事件通知),采用"先释放后获取"的顺序,确保事件产生方先触发通知;互斥量用于资源保护,遵循"先获取后释放"原则,保证共享资源的独占访问。通过ESP32-IDF的传感器数据采集(二值信号量)和共享资源访问(互斥量)两个示例,分别展示了正确使用顺序的必要性及其实现逻辑。最后总结了两者在设计目的、初始值和操作顺序上的关键区别:二值信号量是"发消息"机制,互斥量是"借钥匙"
2025-12-15 18:54:20
816
原创 SPIFFS文件系统
摘要: 本文详细介绍了SPIFFS(SPI Flash File System)在ESP32嵌入式设备中的应用与初始化流程。SPIFFS是一种轻量级文件系统,适用于小容量存储,支持文件创建、读写和持久化保存。文章解析了配置结构体esp_vfs_spiffs_conf_t的关键参数,包括挂载路径、分区标签、最大文件打开数和自动格式化选项。初始化流程涵盖注册SPIFFS到虚拟文件系统(VFS)、挂载分区及失败处理机制。SPIFFS的核心作用是为ESP32提供持久化文件存储能力,适用于配置文件、日志记录和静态资源
2025-12-13 08:38:42
685
原创 ESP32启动HTTP服务器
本文介绍了如何在ESP32上搭建轻量级HTTP服务器的原理与实现方法。核心原理是利用FreeRTOS系统创建网络任务,绑定80端口监听请求,通过路由配置将URL路径与处理函数绑定。文章提供了完整的示例代码,实现WiFi连接后启动服务器,访问/temp获取模拟温湿度数据的功能。关键点包括:服务器配置(限制2个并发连接)、路由注册、处理函数实现等。测试方法只需在浏览器输入ESP32的IP地址加/temp路径即可验证。文中还形象地将服务器比作"网络客服",并详细说明了代码与服务器原理的对应关系
2025-12-12 07:29:12
365
原创 vscode配置ESP32-idf存在的问题
本文介绍了嵌入式开发中ESP-IDF环境配置的三种模式(快速/高级/现有设置)及其适用场景,重点分析了常见问题的解决方案:权限不足问题可通过修改安装路径权限或管理员身份运行解决;Flash分区问题需调整分区表并修改Flash大小配置;蓝牙组件缺失错误需在menuconfig中启用蓝牙功能;日志打印速度慢问题与FreeRTOS的configTICK_RATE_HZ参数设置相关。文章提供了具体操作步骤和配置建议,适合嵌入式开发者参考解决实际开发中的典型问题。
2025-12-10 07:27:37
845
原创 ESP idf常见指令
会将整个 build 目录下的内容全部删除,包括所有 CMake 的配置输出文件。下次构建项目时,CMake 会从头开始配置项目。请注意,该命令会递归删除构建目录下的 所有文件,请谨慎使用。项目配置文件不会被删除。会把构建输出的文件从构建目录中删除,从而清理整个项目。下次构建时会强制“重新完整构建”这个项目。清理时,不会删除 CMake 配置输出及其他文件。打开配置:idf.py menuconfig。
2025-12-08 21:53:25
152
原创 电能表新方案测试大纲
《电能表新方案测试大纲》摘要 本测试大纲适用于电能表产品的全面性能验证,包含基础计量、通信协议、远程升级等12项核心测试内容。测试依据GB/T17215.321-2021等国家标准,采用0.05级标准功率源等高精度设备,涵盖电压、电流、功率等电参量测量(误差≤±0.5%)、四象限无功计量、复费率功能(支持8套时段表)、需量计算等关键项目。特别设计了极端工况测试,如电压波动(80%-120%额定值)、谐波含量(3/5/7次谐波)及-40℃~150℃温度范围测试。
2025-10-25 10:07:03
1009
原创 输出端口原理图分析
本文分析了两种输出端口电路的工作原理。第一种是"三极管直接驱动"型(如DO3/DO4电路),通过8050三极管的开关控制小功率负载,配合续流二极管和去耦电容实现稳定工作。第二种是"三极管驱动继电器"型(如DO1电路),利用三极管驱动HF118F继电器,实现隔离式大功率控制。两者的核心区别在于:前者适用于小功率快速响应场景,后者适合大功率隔离控制但响应较慢。两种电路均采用2kΩ基极限流电阻和1N4007续流二极管,确保三极管工作在饱和/截止状态并保护器件安全。
2025-10-10 21:45:55
955
原创 4G模组发送AT不回复
如下图所示,给电表发送AT指令会出现模组不回复的情况:主要是开机的时序图写的有点问题。下面分析一下这个问题;首先是mcu的引脚接到三极管,进而控制模块 PWRKEY,首先分析一下电路图;
2025-09-27 23:14:32
400
原创 4G模组的AT指令联网流程
NB-IoT和4G模组在物联网应用中广泛使用,通过AT指令实现通信控制。文章总结了两款4G模组(移远EC600和联通CE109)的通用AT指令操作流程,包括基础通信测试、模组信息查询、网络配置、信号检测及TCP连接建立等步骤。虽然不同厂商的指令格式可能不同,但核心流程具有通用性,可帮助工程师快速筛选有用的指令,提高开发效率。文中还提供了具体指令示例及其作用,并强调参考AT指令手册的重要性。
2025-08-28 10:51:17
1416
原创 域名、ip、DSN、URL
本文摘要: IP地址是互联网设备的唯一标识(如127.0.0.1),域名(如baidu.com)是IP的文字别名,一个域名可对应多个IP实现负载均衡,一个IP也可绑定多个域名。DNS服务器负责将域名解析为IP(如访问百度时,DNS将www.baidu.com转为119.75.218.70等IP)。URL(网址)结构为协议://域名/IP[:端口]/路径/文件(如http://safe.cloud.cn/webinfo/file/4040_v2020.bin),包含协议、域名、路径和文件名等要素,端口默认80
2025-08-27 17:25:59
943
原创 TCP通信与MQTT协议的关系
代码协作:通过函数调用链(MQTT 封装→TCP 发送,TCP 接收→MQTT 解析)实现两层协议的协同,确保数据从应用层(MQTT)到网络层(TCP)的无缝传输,适用于嵌入式设备的远程通信(如传感器数据上报、远程配置下发)。这种分层设计使代码模块化,便于维护(如更换 TCP 模块时,只需修改 drv_M26_Tcp* 函数,不影响 MQTT 逻辑),是物联网设备网络通信的典型实现。传输:调用 drv_M26_TcpSend,将 MQTT 数据包作为 TCP 字节流发送(底层通过模块的 TCP 通道)。
2025-05-30 16:53:50
1243
原创 mqtt协议连接阿里云平台
域名:iot-06z00c9p60cmk0g.mqtt.iothub.aliyuncs.com。4.通过域名,产品秘钥,设备名称,设备秘钥等信息,使智能电表连接至阿里云平台;2、首先新建产品,新建完成后,可以看到新建的产品;3、将新建的产品添加到设备中,可以查看设备的信息;
2025-05-29 17:25:02
947
原创 MQTT通信协议
4(协议名) + 1(协议版本) + 2(连接标志 + 保持连接时间) + 1(客户端 ID 长度 MSB) + 1(客户端 ID 长度 LSB) + 7(客户端 ID) = 16。:假设主题名为 “test/topic”(占 10 字节),有效载荷为 “hello mqtt”(占 11 字节),那么剩余长度为。(占 2 字节),订阅主题为 “test/topic”(占 10 字节),QoS 为 1(占 1 字节),那么剩余长度为。:设置为 “client01”,其长度为 7 字节,对应的十六进制表示为。
2025-05-26 18:02:59
844
原创 mqtt数据包举例
MQTT数据包由固定报头、可变报头和有效载荷三部分组成。以PUBLISH报文为例,固定报头标识消息类型和QoS等级,可变报头包含主题名和报文ID,有效载荷为实际数据。CONNECT报文则包含协议名、版本号和连接参数等。通过分析两个典型报文(发送"hello"消息和建立连接)的字节结构,展示了MQTT协议如何通过分层设计实现灵活通信。不同报文类型会根据功能需求调整各字段内容,但都遵循统一的三层结构框架。
2025-05-25 17:45:33
425
原创 atoi函数,sprintf函数,memcmp函数,strchar函数的具体原型,功能,返回值;以及使用方法
将字符串参数`str`转换为整数(`int`类型)。参数列表与`printf()`类似,但输出结果存储在`str`中而非标准输出。在字符串`s`中查找字符`c`的首次出现位置(包括终止符`\0`)。参数`c`被转换为`char`类型进行比较。比较两个内存块`s1`和`s2`的前`n`个字节。- 若`s1`和`s2`的前`n`个字节相等,返回0。- 若按字典序`s1`小于`s2`,返回负值。- 若按字典序`s1`大于`s2`,返回正值。- 失败:若未找到`c`,返回`NULL`- 查找字符包括终止符`\0`
2025-05-14 18:38:06
386
原创 TCP协议中的IP地址/域名
我们知道了IP地址,那么再给大家介绍一下“域名”,域名是IP地址的一个的别名,因为IP地址不方便记忆,我们为了方便记忆和交流,用我们方便记忆的字符来表示IP地址,这就是域名。它是由代表一定意义的英文单词的缩写构成,如:www.pku.edu.cn 就是北京大学主机的域名。域名是由它所属的各级域的域名和分配给该主机的名字共同构成的。如www.pku.edu.cn 顶级域名为cn表示中国,二级域名为EDU 表示组织的属性是教育,三级域名为pku 表示北京大学,www 表示主机名称(别名)。
2025-05-13 14:59:57
533
原创 电能表标准学习
1. 精度等级表示方式改变2008版:采用1级、2级、0.2S级、0.5S级等传统等级划分,仅覆盖常规计量需求。2021版:重新分级:扩展为A级(原2级)、B级(原1级)、C级(原0.5S级)、D级(原0.2S级),并新增E级(最高精度,最大误差±0.25%)。兼容国际标准:E级填补了IR46标准未覆盖的超高精度需求,同时B级的误差要求比IR46更严格。2. 电流规格定义方式改变。
2025-05-07 14:07:29
1018
原创 vs2022用于上位机开发,需要下载的工作负荷包括哪些
实际选择时需结合项目具体技术栈(如是否依赖C++底层库或纯.NET框架)进行灵活调整。若需开发基于MFC或ATL的C++上位机应用,或涉及硬件底层操作(如驱动交互)时需选择。适用于使用C#开发WinForm或WPF应用程序的场景,这是上位机开发的主流框架。◦ C++ MFC和ATL支持库(勾选后可构建传统Windows桌面应用)• 安装位置建议选择非系统盘(如D盘),避免占用过多C盘空间。• .NET工业通信库(如OPC UA SDK需单独安装)• .NET Core跨平台开发(用于兼容多环境部署)
2025-04-28 10:49:26
1427
原创 电表中时控、负控、强控
时控、负控、强控构成了电表智能管理的核心逻辑,分别针对时间规划、安全防护、应急干预三大需求。实际应用中需根据场景选择组合模式(如宿舍侧重负控+时控,工商业用户注重负控+分时计费),并通过优先级设置确保系统可靠性。• 数据管理:记录跳闸事件、负荷超限次数、操作日志(如ADF400L支持30条事件存储)。• 检测阻性负载(如电炉、热得快)并跳闸,支持白名单设置(如允许饮水机)。• 总功率限制:当实际功率超过设定阈值(如企业最大负荷限制),自动断电。定义:通过预设用电时段自动控制电路通断,实现分时用电管理。
2025-04-24 14:52:33
1255
原创 Modbus TCP协议介绍、原理解析与应用示例
Modbus协议作为一种经典的通信协议,因其简单、开放和易于实现的特点,被广泛应用于各种工业设备之间的数据传输。Modbus TCP(也称为Modbus TCP/IP)是Modbus协议的一个变种,基于TCP/IP协议栈在以太网上进行通信。它继承了Modbus协议的所有优点,同时利用以太网的高带宽和稳定性,提供更快速和可靠的数据传输。客户端发起请求,服务器响应请求。与传统的Modbus RTU相比,Modbus TCP消除了串行通信的限制,支持更大的网络规模和更高的数据传输速度,适用于现代工业自动化系统。
2025-04-23 15:33:25
2664
原创 常见基础电能
示例:正向500kWh,反向200kWh → 总量700kWh(用于分析电网负荷)。组合有功总电能、正向有功总电能,反向有功总电能、正向无功总电能,反向无功总电能等参数之间的关系。• 组合有功总量(正向+反向)反映用户与电网的总交互量,用于优化发电与用电平衡。• 定义:用户从电网消耗的电能(如家庭用电、工业设备用电),方向为电网→用户。• 定义:用户向电网回馈的电能(如光伏发电余电上网),方向为用户→电网。• 无功总电能:正向与反向无功的绝对值之和,反映系统无功交换总量。
2025-04-23 14:21:12
2208
原创 DTL645协议解析【详细解析】
数据域:44 33 33 33 33 33(处理步骤:每个字节减掉0x33,分别为11 00 00 00 00 00,代表设备地址 00 00 00 00 00 11)地址域:11 00 00 00 00 00(6字节,低位在前,表示电表地址00 00 00 00 00 11)。地址域:11 00 00 00 00 00(6字节,低位在前,表示电表地址00 00 00 00 00 11)。地址域:11 00 00 00 00 00(设备地址 00 00 00 00 00 11)。
2025-04-23 10:07:33
2364
原创 STM32单片机时钟系统
在STM32中有3种不同的时钟源用来驱动系统时钟(SYSCL为什么提供这么多的时钟?节能!高速设备接高速时钟,低速设备接低速时钟,可以最大程度的达到节能效果。
2025-02-25 22:11:08
858
原创 【报数游戏】
题目要求在100个人围成一圈的情况下,进行报数,每次报到数字为M的那个人自动退出,直到剩下的人数少于M为止。我们需要找出最后剩下的人的编号。他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。如果输入参数M小于等于1或者大于等于100,输出“ERROR!100个人围成一圈,每个人有一个编码,编号从1开始到100。否则按照原先的编号从小到大的顺序,以英文逗号分割输出编号。请问最后剩余的人在原先的编号为多少?题目描述的是一个经典的。输入一个整数参数 M。
2025-02-25 11:17:27
581
原创 TLV解码
编码是按[Tag Length Value]格式进行编码的,一段码流中的信元用Tag标识,Tag在码流中唯一不重复,Length表示信元Value的长度,Value表示信元的值。现给定TLV格式编码的码流,以及需要解码的信元Tag,请输出该信元的Value。码流以某信元的Tag开头,Tag固定占一个字节,Length固定占两个字节,输入的第二行为一个字符串,表示待解码的16进制码流,字节之间用空格分隔。给定一个16进制的码流和要查找的Tag值,要求找到对应Tag的。需要解析的信元的Tag是31,
2025-02-24 18:57:16
738
原创 3、优先级翻转问题
是当高优先级任务因等待低优先级任务占用的资源(如互斥锁)被阻塞,而中优先级任务趁机执行,导致高优先级任务无法及时运行的调度异常。:存在三个任务,优先级从高到低为。:Task_L 和 Task_H 都需要访问某个共享资源(如互斥锁MutexTask_L 获取Mutex,开始操作共享资源。Task_H 就绪,尝试获取Mutex,但发现已被占用,因此被阻塞。此时,Task_M(中等优先级)开始运行,抢占 Task_L。Task_L 因被 Task_M 抢占,无法及时释放Mutex。
2025-02-23 22:30:59
483
原创 【liunx发行版的数量】
给你一个 n * n 的矩阵 isConnected,其中 isConnected[i][j] = 1 表示第 i 个发行版和第 j 个发行版直接关联,而 isConnected[i][j] = 0 表示二者不直接相连。发行版集是一个或多个相关存在关联的操作系统发行版,集合内不包含没有关联的发行版。所以存在两个发行版集,发行版集中发行版的数量分别是3和1,所以输出3。Mint(3)和Ubuntu(2)相关,返回最大的发行版集中发行版的数量。输出最大的发行版集中发行版的数量。第一行输入发行版的总数量N,
2025-02-19 22:32:11
190
原创 [IPV4地址转为整数]
现以字符串形式给出一个虚拟IPv4地址,限制第1小节的范围为1128,即每一节范围分别为(1128)#(0255)#(0255)#(0~255),要求每个IPv4地址只能对应到唯一的整数上。每个小节代表一个整数,范围从0到255,但题目中特别指出第一小节的范围应为1到128。128#0#255#255,转换为32位整数的结果为2147549183(0x8000FFFF)1#0#0#0,转换为32位整数的结果为16777216(0x01000000)输入一行,虚拟IPv4地址格式字符串。
2025-02-19 21:29:31
383
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅