NBM7100电池能量管理芯片及其驱动代码分享
@[toc] 一、引言:低功耗物联网开发的“续航焦虑”在由电池供电的低功耗物联网(LPWAN)世界里,每一微安的电流都至关重要。无论是LoRaWAN节点、NB-IoT传感器还是蓝牙信标,它们通常依赖一颗小小的非充电电池(如CR2450纽扣电池)来维持数月甚至数年的生命周期。 然而,一个致命的物理瓶颈始终困扰着开发者:当设备需要进行无线发射等瞬时大电流操作时,电池的内阻会导致电压急剧下降,轻则发射失败,重则整个系统欠压复位。我们往往只能通过限制发射功率或频率来妥协,远远没有发挥出电池的全部潜力。 为了彻底解决这一痛点,Ignition Design Labs(已被NXP收购)推出了一款革命性的芯片——NBM7100。这是一款专为低功耗应用设计的电池能量管理IC。而今天,我们要隆重推荐的,是由开发者 wdfk-prog 开源的 nbm7100 RT-Thread软件包。这不仅是一个驱动,更是一个结合了LoRaWAN应用的、包含深度思考和异常处理的完整解决方案。 仓库地址:https://github.com/wdfk-prog/nbm7100 二、NBM7100的“黑科技”:两级升...
便携式功耗分析仪LuatOS IoT Power vs
@[toc] 一、引言:物联网开发中那“最后一微安”的战争在物联网(IoT)和嵌入式开发的世界里,功耗是永恒的战场。对于每一个依靠电池供电的设备而言,工程师们都在为“榨干最后一微安”而绞尽脑汁。一个微小的代码瑕疵、一个未被关闭的外设,都可能让产品的理论续航时间从“数年”锐减至“数周”。 然而,想要赢得这场战争,你必须先看清“敌人”——设备的实时功耗曲线。传统的万用表无法捕捉瞬时的电流尖峰,而昂贵的台式功率计又缺乏便携性。正是在这样的背景下,便携式功耗分析仪应运而生。 今天,我们将聚焦于市场上两款极具代表性的产品:国产新秀LuatOS IoT Power和行业标杆Nordic Power Profiler Kit II (PPK2)。它们都能帮你洞察微安级别的电流变化,但其设计哲学和适用场景却截然不同。 二、两大神器,初次见面 LuatOS IoT Power:一款由LuatOS团队打造的、功能齐全的手持式功率计。它自带显示屏和控制旋钮,设计紧凑,主打“即开即用”的便捷性和独立工作能力。 Nordic Power Profiler Kit II (PPK2):一款由北欧半导...
结合QBoot与HPatchLite实现高效差分升级(FOTA)
@[toc] 一、引言:为何需要差分升级?在物联网(IoT)设备的生命周期中,固件空中升级(FOTA)是不可或缺的一环。然而,传统的全量包升级方式意味着每次都需要传输完整的固件,这不仅消耗了大量的网络带宽,延长了升级时间,还对设备的Flash存储空间提出了更高的要求。 **差分升级(Differential Update)**通过只传输新旧固件之间的“差异”部分(即补丁包),极大地减小了升级包的体积,完美地解决了上述痛点。本文将详细介绍如何在RT-Thread操作系统中,利用QBoot引导加载程序和轻量级差分库HPatchLite,构建一套完整、高效且资源可控的差分升级方案。 核心组件架构: 1234567891011121314151617181920212223graph TD subgraph "设备端 (RT-Thread)" A["QBoot (Bootloader)"] B["FAL (Flash抽象层)"] C["hpatchlite-wrapp...
RT-Thread调试利器:get_irq_priority——像Keil一样在MSH中查看和设置中断优先级
@[toc] 一、引言:嵌入式开发中的中断调试“痛点”在RT-Thread等实时操作系统(RTOS)的开发中,中断(IRQ)是确保系统实时性和响应性的核心机制。然而,随着项目复杂度的提升,中断管理也带来了独特的挑战: 优先级冲突:不合理的中断优先级配置,可能导致高优先级任务被低优先级中断阻塞,破坏系统的实时性。 状态不透明:在设备运行时,我们如何才能直观地了解当前哪些中断被使能?它们的优先级究竟是多少? 动态调试困难:想要测试不同优先级对系统性能的影响,难道只能反复修改代码、编译、烧录吗? 传统上,开发者严重依赖J-Link、ST-Link等硬件调试器,配合Keil MDK或IAR等IDE提供的NVIC(嵌套向量中断控制器)外设视图来解决这些问题。这个视图可以清晰地展示所有中断的状态和优先级。 12345678graph TD subgraph "传统调试流程" A["编写代码<br/>(配置中断优先级)"] --> B["编译 & 烧录"]; B -...
ART-Pi开发者的福音:一个“宝藏级”实践仓库,点亮你的学习之路
@[toc] 一、引言:从“点灯”到“实战”的鸿沟RTT官方推出的ART-Pi开发板,凭借其强大的STM32H750核心和丰富的板载资源,已成为RT-Thread生态中备受青睐的明星硬件。对于许多开发者而言,官方提供的BSP(板级支持包)是入门的绝佳起点,我们可以轻松地实现点亮LED、打印串口信息等基础操作。 然而,从“Hello World”迈向真正的项目实战,中间往往隔着一道鸿沟: 如何正确地挂载和使用SPI Flash上的文件系统? 如何将设备接入阿里云、OneNet等主流物联网平台? 如何实现一个简单的Web服务器来远程控制设备? … 这些综合性的应用场景,往往需要查阅大量文档、移植各种软件包,并经历漫长的调试过程。今天,我们就要向您隆重推荐一个GitHub仓库,它如同一座桥梁,能帮助您轻松跨越这道鸿沟。这个仓库就是由开发者 wdfk-prog 创建并维护的 ART-PI学习实践库。 仓库地址:https://github.com/wdfk-prog/ART-PI 二、仓库速览:它是什么?这个仓库的本质,是作者在使用ART-Pi进行学习和开发过程中的一份完整、可...
不止是驱动:一个专心设计的、基于“构建器”模式的传感器管理框架
@[toc] 一、引言:嵌入式传感器开发的“混沌”现状在嵌入式和物联网项目中,传感器是连接物理世界与数字世界的桥梁。然而,随着项目中传感器数量和种类的增加,我们的应用层代码常常会陷入一种“混沌”状态: 驱动接口不一:read_sht3x_temp(), get_ds18b20_value(), trigger_ads1015_conversion()… 每个传感器都有一套专属的API,应用层需要记忆和调用大量不同的函数。 通用逻辑重复:数据采集、量程检查、数据校准、阈值报警等逻辑,在每个传感器的应用代码中被反复实现,冗余且难以维护。 应用与驱动强耦合:应用代码直接调用底层驱动,使得更换一个型号的传感器(例如,用SHT40替换SHT30)可能需要大范围修改上层逻辑。 我们需要的,不仅仅是单个的传感器驱动,而是一个能够将它们有机组织、统一管理、简化应用的框架。今天,我们将要介绍的 wdfk-prog/sensor 项目,正是为此而生。它借鉴了RT-Thread官方传感器的设计,并创新性地引入了“构建器”(Builder)设计模式,为传感器应用开发提供了一套优雅而高效的解决方...
数据异常值检测利器:Grubbs‘检验的C语言实现
@[toc] 一、引言:为何我们讨厌“离群之马”?在数据处理的各个领域——无论是科学实验、工业传感器读数,还是金融数据分析——我们都期望数据是稳定且一致的。然而,现实中总会出现一些“离群之马”,即异常值(Outliers)。这些数值显著偏离数据集中的其他观测值,可能是由于测量错误、设备故障或真实但罕见事件造成的。 如果不加处理,这些异常值会严重扭曲统计分析的结果,如平均值和标准差,从而导致错误的结论。因此,在数据预处理阶段,科学地识别并处理异常值至关重要。Grubbs’检验(Grubbs’ Test),正是为此而生的一种简单、强大且被广泛应用的统计方法。 1234567graph TD A["原始数据集<br/>(包含潜在异常值)"] --> B{"进行统计分析"}; B -- "不处理异常值" --> C["<font color=red>结果被扭曲<br/>(错误的平均值/标准差)</font>"];...
一个开源的CANopen转Modbus网关
@[toc] 一、引言:工业自动化中的“协议鸿沟”在现代工业自动化和物联网(IIoT)的世界里,我们常常面临一个棘手的现实:新旧设备并存,通信协议五花八門。其中,CANopen和Modbus是两大极具代表性但又截然不同的协议: CANopen:基于CAN总线,是一种功能强大、事件驱动的高层协议。它广泛应用于现代化的自动化设备、机器人和医疗器械中,支持复杂的对象字典(Object Dictionary)和服务数据(SDO/PDO)。 Modbus:则是一位“老兵”,以其简单、稳健的轮询机制,在PLC(可编程逻辑控制器)、HMI(人机界面)和SCADA(数据采集与监视控制系统)领域占据着不可动摇的地位。 这两种协议之间存在着一道天然的“鸿沟”。想象一下,您有一套先进的、使用CANopen网络的传感器阵列(例如开关量输入模块),但您的中央控制系统或数据采集终端却是一台只支持Modbus TCP/RTU的PLC。您该如何让这两者“对话”? 为了解决这一痛点,开发者 wdfk-prog 开源了一个极具实用价值的项目:canopen-switches-modbus...
GitHub侦探技巧:如何精确查找特定邮箱地址的所有代码提交(Commit)
@[toc] 一、引言:为何需要按邮箱追溯提交?在日常的软件开发和项目管理中,我们常常需要像侦探一样,在浩瀚的代码历史中追溯特定的提交记录。根据邮箱地址来查找commit,是一个极其强大且精准的定位手段。以下是一些常见的应用场景: 代码审计:快速定位某位开发者(无论是现任还是前任)的所有代码贡献。 贡献归属:当你更换了邮箱,需要确认使用旧邮箱提交的贡献是否都已正确关联。 问题排查:当某个功能模块出现问题时,可以快速找到由特定人员(通过邮箱识别)提交的相关变更。 团队管理:统计和回顾团队成员在特定时间段内的工作。 幸运的是,GitHub提供了强大而灵活的搜索语法,让这个“侦探”工作变得异常简单。本文将为您提供两种核心方法和一些高级技巧。 二、方法一:“广撒网”——在GitHub全局搜索这是最简单直接的方法,适用于您想在所有您有权限访问的仓库(包括您自己的、您所属组织的、以及所有公开仓库)中进行查找。 操作步骤 访问GitHub并登录:打开 https://github.com 网站。 使用顶部搜索栏:在页面顶部的全局搜索栏中,输入以下精确的搜索指令: 1committe...
如何在GitHub仓库中添加MIT开源许可证
@[toc] 一、引言:你的开源项目,真的“开源”了吗?你满怀激情地在GitHub上创建了一个新项目,并公开了所有源代码。你认为它已经是“开源”的了,任何人都可以自由使用。但事实真的如此吗? 答案是:不一定! 根据国际版权法,如果你的代码没有明确的许可证(LICENSE),它就处于默认的“保留所有权利”(All Rights Reserved)状态。这意味着,从法律上讲,其他人不能合法地使用、复制、修改或分发你的代码。这无疑与你的开源初衷背道而驰。 添加一个开源许可证,就像是为你的项目颁发了一张“通行证”。其中,MIT许可证以其极度的简洁和宽松,成为了最受欢迎的开源协议之一。本文将通过图文并茂的方式,手把手教你如何在GitHub网页上,为你的仓库添加标准的MIT许可证。 二-A:【推荐场景】为已存在的仓库添加许可证这是最常见的情况:项目已经创建好了,但你后知后觉地发现忘记添加LICENSE文件。 步骤 1:进入你的仓库主页,点击“添加文件”打开你的目标GitHub仓库。在文件列表的右上方,找到并点击绿色的 Add file 按钮,然后从下拉菜单中选择 Create new ...







