当前位置: 首页 > article >正文

基于CircuitPython的红外遥控发射器:从原理到实现的万能控制方案

1. 项目概述打造你的万能红外遥控发射器搞嵌入式开发的朋友对红外遥控肯定不陌生。家里电视、空调、风扇的遥控器本质上都是一个红外信号发射器。你有没有想过自己动手做一个能模拟所有遥控器的“万能发射器”今天我就来分享一个基于CircuitPython的实现方案。这个项目不仅能让你彻底理解红外遥控的底层原理更能让你亲手打造一个可编程、能学习、能发射的硬件工具无论是用来控制智能家居设备还是进行产品原型测试都非常实用。整个项目的核心是利用一块支持CircuitPython的开发板比如Adafruit的Feather系列或QT Py配合一个红外发射LED通过代码精确地生成各种红外遥控协议所需的脉冲信号。听起来有点复杂别担心我会把每一步的原理、代码和踩过的坑都讲清楚。你最终会得到一个可以存储多种遥控编码、通过按钮一键发射的便携设备。下面我们就从最基础的原理开始拆解。2. 红外遥控原理与硬件选型解析2.1 红外通信的核心调制与解调红外遥控不是简单地把红外LED点亮和熄灭。环境中有大量的红外干扰源比如阳光、白炽灯。为了可靠通信工程师们想出了“调制”的办法。你可以把它想象成用摩斯电码发信号但手电筒本身还在以极高的频率闪烁只有能看懂这个特定闪烁频率的接收器才知道你在“说话”。这个特定的闪烁频率就是载波频率最常见的是38kHz。这意味着红外LED会以每秒38000次的频率闪烁。我们要发送的数据比如“开机”指令通过改变这个高频闪烁的“有”和“无”的持续时间来编码。接收头内部有一个带通滤波器只对38kHz附近的光信号敏感这样就完美避开了环境光的干扰。在代码里我们使用PWM脉冲宽度调制来生成这个38kHz的载波。PWM通常用来模拟模拟电压但在这里我们把它当作一个高速开关精确控制红外LED的通断频率。2.2 硬件清单与连接要点你需要准备以下硬件支持CircuitPython的开发板如Adafruit Feather RP2040、QT Py RP2040或ESP32-S3。选择它们是因为CircuitPython对硬件抽象做得很好pulseio库稳定。红外发射LED注意是“发射”管通常是透明或蓝紫色的。别买成黑色的红外接收头。型号如TSAL6200。限流电阻红外LED工作电流较大通常在100mA以上必须串联一个电阻保护LED和主板GPIO。根据你的电源电压通常是3.3V和LED正向电压约1.2V计算。例如目标电流150mA电阻值 R (3.3V - 1.2V) / 0.15A ≈ 14欧姆选择一个10-20欧姆、1/4瓦的电阻即可。其他可选按钮用于触发滑动开关选择模式一个普通LED和蜂鸣器用于状态反馈。连接方式非常简单红外LED的阳极长脚通过限流电阻连接到开发板指定的REMOTEOUT引脚或任何一个支持PWM输出的GPIO如board.A2。阴极短脚接地。按钮一端接GPIO如board.A0另一端接地并在代码中启用内部下拉电阻。注意红外LED的驱动电流很大远超单个GPIO引脚通常能提供的电流约20mA。像Adafruit Feather这样的板子其REMOTEOUT引脚通常直接连接到一个晶体管开关电路上由板载电源直接供电GPIO只提供控制信号。如果你用的是普通GPIO务必使用一个NPN三极管如2N2222或MOSFET来驱动红外LED否则极易烧毁主控芯片这是第一个也是最重要的坑。2.3 协议纷争NEC、RC-5、Sony与原始脉冲不同品牌的设备使用不同的编码协议。主要区别在于逻辑“0”和“1”的定义例如NEC协议用560us的载波脉冲560us的空闲表示“0”用560us脉冲1690us空闲表示“1”。帧结构包括引导码一个长脉冲、地址码、命令码、反码以及结束符。载波频率虽然38kHz是主流但有些设备用36kHz、40kHz或56kHz。我们的方案采用了一种“原始脉冲记录”的通用方法。不关心高层协议只记录下红外接收头解码出来的、由一系列“高电平有载波持续时间”和“低电平无载波持续时间”交替组成的原始数组。发射时原样复现这个数组。这就像录音和放音兼容性最强。项目中提到的codes.txt文件存储的就是这种经过压缩处理的原始脉冲字典。3. CircuitPython代码深度剖析与实现3.1 环境搭建与库依赖首先确保你的开发板已经刷入了最新的CircuitPython固件。将板子通过USB连接到电脑它会显示为一个名为CIRCUITPY的U盘。在这个盘的根目录下你需要有以下几个文件code.py主程序文件CircuitPython会自动运行它。codes.txt存储红外编码数据的文件。lib文件夹里面需要放置必要的库文件。本项目核心依赖pulseio库它通常是CircuitPython内置的。但为了更稳定建议从CircuitPython库捆绑包中确认并获取最新版本。codes.txt文件的数据从哪里来你需要另一个“红外学习”项目或者使用现成的解码库如adafruit_irremote先将遥控器的信号解码并保存下来。由于篇幅所限本文聚焦于发射端。你可以先从网上找到一些常见设备如NEC协议的电视的脉冲数组示例手动构造一个codes.txt文件进行测试。3.2 核心代码逐行解读让我们结合你提供的代码片段深入理解每一个部分。初始化硬件import board import digitalio import pulseio import time import array # 初始化按钮A和B配置为输入并启用内部下拉电阻。 # 这意味着当按钮未按下时引脚被拉低值为False按下时连接到高电平值为True。 button_a digitalio.DigitalInOut(board.A0) button_a.direction digitalio.Direction.INPUT button_a.pull digitalio.Pull.DOWN button_b digitalio.DigitalInOut(board.A1) button_b.direction digitalio.Direction.INPUT button_b.pull digitalio.Pull.DOWN # 初始化模式开关、状态LED和蜂鸣器 switch digitalio.DigitalInOut(board.A3) switch.direction digitalio.Direction.INPUT switch.pull digitalio.Pull.UP # 假设开关拨到一端接高电平另一端通过电阻接地 led digitalio.DigitalInOut(board.LED) led.direction digitalio.Direction.OUTPUT spkr digitalio.DigitalInOut(board.A2) # 假设这个引脚连接蜂鸣器 spkr.direction digitalio.Direction.OUTPUT创建PWM和脉冲输出对象# 关键步骤创建PWM输出对象。 # 使用board.REMOTEOUT如果板子有专用引脚或任意支持PWM的GPIO。 # frequency38000是初始载波频率。 # duty_cycle2**15 设置占空比为50%对于16位精度32767/65535 ≈ 50%。50%占空比的方波驱动LED效率较高。 # variable_frequencyTrue 至关重要它允许我们在运行时动态改变频率以适配不同协议的设备。 pwm pulseio.PWMOut(board.REMOTEOUT, frequency38000, duty_cycle2**15, variable_frequencyTrue) # PulseOut对象是真正的“发射器”。它接收一个PWM源pwm和一个脉冲序列数组 # 然后按照序列交替地开启和关闭PWM输出从而生成精确的红外波形。 pulse pulseio.PulseOut(pwm)主循环逻辑while True: # 等待任意按钮被按下。button_a.value or button_b.value在按下时为True。 while not (button_a.value or button_b.value): pass # 空循环等待 time.sleep(0.5) # 按下后等待500毫秒。这是一个“防抖”和“对齐”的延迟。 # 防止误触发也给用户一个准备时间确保发射时遥控器对准设备。 # 打开存储编码的文件 with open(/codes.txt, r) as f: # 使用with语句确保文件最终被关闭比直接f.open()更安全。 for line in f: # 使用eval()将文本行转换回Python字典。这是便捷但存在安全风险的做法。 # 前提是你必须完全信任codes.txt文件的内容。切勿从不可信来源加载此文件。 code eval(line.strip()) # .strip()去掉首尾空白字符 print(Transmitting:, code.get(name, Unnamed code)) # 打印调试信息 # 根据开关状态选择用LED还是蜂鸣器指示发射状态 if switch.value: led.value True else: spkr.value True # 解析重复参数。有些信号如长按音量键需要连续发送多次。 repeat code.get(repeat, 1) # 默认重复1次 delay code.get(repeat_delay, 0) # 重复之间的延迟单位秒 # 解码脉冲序列。为了节省存储空间原始脉冲可能被压缩存储。 # table是一个列表里面是多个小的脉冲对数组。 # index是一个列表其元素是table的索引按顺序拼起来就是完整脉冲。 table code[table] pulses [] for idx in code[index]: pulses.extend(table[idx]) # 将脉冲片段扩展到总列表中 # 通常最后一个脉冲是长时间的低电平停止位发射时不需要所以移除。 pulses.pop() # **核心发射步骤** # 1. 动态设置PWM频率为该编码对应的载波频率如38kHz, 36kHz。 pwm.frequency code[freq] # 2. 将Python列表转换为C语言风格的array.array(H, pulses)H表示无符号短整型提高pulseio处理效率。 # 3. 调用pulse.send()发送脉冲序列并根据需要重复。 for i in range(repeat): pulse.send(array.array(H, pulses)) if i repeat - 1: # 如果不是最后一次重复则等待指定延迟 time.sleep(delay) # 发射完毕关闭指示灯 led.value False spkr.value False # 等待该组编码定义的整体延迟再准备读取下一行下一个编码 time.sleep(code[delay])重要提示eval()函数的使用。在最终产品中如果编码文件来自不可控来源这非常危险因为它会执行文件中的任意Python代码。一个更安全的替代方案是使用json.loads()来解析格式化的JSON字符串。你需要将codes.txt的每一行存储为JSON格式例如{freq: 38000, table: [[...]], index: [0,1], delay: 0.1}然后在代码中使用code json.loads(line)。我强烈建议你这样做。3.3codes.txt文件格式详解理解这个文件格式是成功的关键。它存储的是经过压缩的脉冲数据。一个典型的条目看起来像这样为了可读性进行了格式化实际文件可能是一行{freq: 38000, delay: 0.1, name: TV_Power, table: [[9000, 4500], [560, 560], [560, 1690]], index: [0, 1, 1, 0, 1, 0, ...]}freq: 载波频率单位Hz。delay: 发射完这个信号后需要等待多长时间秒才能处理下一个信号。用于模拟连续按键之间的合理间隔。name: 编码名称方便识别。table: 一个“脉冲对”查找表。每个元素是一个包含两个整数的列表[high_time, low_time]单位通常是微秒。例如[9000, 4500]可能代表NEC协议的9ms高电平和4.5ms低电平的引导码。index: 一个整数列表。每个整数是table列表的索引。通过按顺序拼接table[index[i]]对应的脉冲对就还原出了完整的原始脉冲序列。这种“索引化”存储对于像NEC这样只有几种固定脉冲模式的协议能极大减少存储空间占用。4. 实战从信号捕获到成功发射全流程4.1 步骤一捕获红外信号要填充你的codes.txt首先需要捕获信号。你有两个选择使用现成的解码脚本在另一个CircuitPython设备上连接一个红外接收头如VS1838B运行adafruit_irremote库中的示例代码irremote.py。按下遥控器它会在串行终端REPL打印出捕获到的原始脉冲数组。把这个数组记录下来。使用逻辑分析仪或示波器这是最专业的方法。将红外接收头的信号输出引脚接到逻辑分析仪通道按下遥控器你就能看到精确的波形和脉冲时间宽度。这种方法能获得最准确的数据。假设我们捕获到一个NEC协议的“电源”键原始脉冲单位微秒[9000, 4500, 560, 560, 560, 560, 560, 1690, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1690, ...](后续还有地址码、命令码等)。4.2 步骤二压缩并格式化编码数据观察这个数组发现只有几种时间模式900045005601690。它们成对出现。我们可以这样构建table和indextable [[9000, 4500], [560, 560], [560, 1690]]// 索引012分别代表三种脉冲对。原始脉冲数组可以表示为这些索引的序列。我们需要两两一组地看(9000,4500)是索引0(560,560)是索引1(560,1690)是索引2... 所以index就是从数组开头开始每两个数看成一个脉冲对然后在table中找到其对应的索引号组成的列表。手动做这个转换比较繁琐你可以写一个小的Python脚本在电脑上完成。脚本读取原始脉冲数组自动识别独特的脉冲对生成table并输出对应的index列表和最终的数据字典。4.3 步骤三烧录与测试将生成的字典一行一个写入到CIRCUITPY盘根目录下的codes.txt文件中。修改code.py将按钮A映射到第一行编码比如电视开关按钮B映射到第二行编码比如音量加。给设备上电打开串行监视器如Mu编辑器、Thonny或screen /dev/ttyACM0。按下按钮你应该能看到打印出的编码信息同时红外LED会闪烁肉眼不可见但用手机摄像头能看到紫色光点。将发射器对准你的电视按下按钮电视应该会有反应4.4 性能优化与调试技巧发射距离短这是最常见的问题。首先确保红外LED的驱动电流足够大。使用三极管驱动并尝试减小限流电阻但不要低于计算值太多防止过流。其次红外LED有指向性要对准设备的接收窗。最后有些接收头对频率非常敏感尝试微调pwm.frequency比如从37900到38100之间调整。设备无反应检查频率确认目标设备使用的载波频率。有些空调或小众品牌可能用36kHz或40kHz。检查脉冲精度pulseio库的时序基于系统时钟非常精确。但如果你手动测量的原始脉冲时间有误差可能导致解码失败。尝试将捕获到的脉冲时间四舍五入到最接近的10或50微秒。检查编码协议确保你捕获的是完整的、正确的信号。有些协议有复杂的头部和校验。使用逻辑分析仪捕获的波形最可靠。添加引导码有些协议需要很长的引导码如NEC的9ms确保你的脉冲数组里包含了它。功耗问题红外LED发射时电流很大。如果使用电池供电发射间隙长按按钮会导致电池快速耗尽。在代码中确保指示灯LED/蜂鸣器只在发射瞬间点亮并尽快进入低功耗的等待循环。5. 进阶应用与扩展思路5.1 构建红外信号学习器将本项目与红外接收头结合就能升级为一个“学习型”万能遥控。基本思路是增加一个“学习模式”按钮。当处于此模式时设备用pulseio.PulseIn监听红外接收头引脚记录下高电平/低电平的持续时间并将其压缩、格式化然后追加写入到codes.txt文件中。这样你就可以用物理遥控器对着它按一下自动完成信号捕获和存储。5.2 集成网络控制对于像ESP32-S2/S3这样带有Wi-Fi的开发板你可以轻松地为其添加Web服务器或MQTT客户端功能。这样一来你的红外发射器就变成了一个网络红外网关。你可以通过手机APP、网页或者Home Assistant、Node-RED这样的家庭自动化平台发送指令给ESP32再由它控制红外设备。这实现了传统红外设备的智能化改造。5.3 创建宏与场景利用多个编码和延迟你可以编写复杂的“宏”。例如一个“观影模式”宏可以依次发送投影仪开机等待10秒- 幕布下降等待5秒- 功放开机等待3秒- 输入源切换。只需将这些编码按顺序写入codes.txt并设置合理的delay参数然后用一个按钮触发读取文件中的所有行依次发射即可。5.4 使用外部存储当需要存储成百上千个红外编码时板载闪存可能不够用。你可以为支持它的板子如Feather RP2040添加一个SPI或I2C接口的SD卡模块或Flash芯片将庞大的codes.txt数据库存放在外部存储器中通过文件系统API进行读取。6. 常见问题与排查实录在实际制作过程中我遇到了不少问题这里总结一个速查表希望能帮你少走弯路。问题现象可能原因排查与解决方法按下按钮无任何反应REPL无输出1. 代码未运行。2. 按钮接线或配置错误。3. 开发板死机。1. 检查code.py文件名是否正确REPL是否有错误信息。2. 用万用表测量按钮按下时GPIO电压是否从0V变为3.3V。检查代码中button.pull设置是否正确按下时应为value为True。3. 尝试硬件复位。REPL有打印信息但红外设备不响应1. 红外LED未工作或接反。2. 载波频率错误。3. 脉冲数据错误或格式不对。4. 发射功率不足。1. 用手机摄像头观察发射时LED是否闪烁呈淡紫色。检查LED极性。2. 确认code[freq]值尝试微调±1kHz。3. 打印pulses数组检查其长度和数值是否合理应为微秒级。对比原始捕获数据。4. 检查驱动电路确保LED有足够电流100mA。对准接收头距离拉近至10厘米内测试。设备偶尔响应不稳定1. 电源干扰。2. 环境光干扰强。3. 时序存在微小抖动。1. 尝试用电池供电或为开发板并联一个100uF的电解电容。2. 避开直射阳光或强白炽灯。确保发射和接收之间没有障碍物。3. CircuitPython的时序在复杂任务中可能被中断。尝试在发射关键循环期间禁用中断高级操作需谨慎。或简化主循环逻辑。发送复杂信号时系统崩溃1. 内存不足。2.pulses数组过大。1. CircuitPython内存有限。优化代码减少全局变量。对于极长的脉冲序列如某些空调协议考虑分段发送或使用更高效的压缩方式。2. 检查pulses数组长度。如果超过几千个元素可能超出处理能力。无法打开codes.txt文件1. 文件不存在或路径错误。2. 文件系统损坏。1. 确认文件在CIRCUITPY根目录且名为codes.txt。在REPL中执行import os; print(os.listdir(/))查看。2. 安全弹出U盘后重新拔插或重新刷写CircuitPython固件。最后关于功耗我想再强调一下。这个项目在待机时功耗极低主要耗电在发射瞬间。如果你打算用电池长期供电务必在代码中将不用的外设如模拟数字转换器ADC关闭并考虑让MCU在等待按钮时进入轻睡眠模式如果固件支持。实测一个容量为2000mAh的锂电池如果每天发射几十次续航几周是没问题的。

相关文章:

基于CircuitPython的红外遥控发射器:从原理到实现的万能控制方案

1. 项目概述:打造你的万能红外遥控发射器搞嵌入式开发的朋友,对红外遥控肯定不陌生。家里电视、空调、风扇的遥控器,本质上都是一个红外信号发射器。你有没有想过,自己动手做一个能模拟所有遥控器的“万能发射器”?今天…...

告别硬编码!用LVGL Keyboard控件5分钟搞定嵌入式设备的输入法界面

嵌入式UI革命:5分钟用LVGL Keyboard控件打造专业输入界面 在智能家居控制面板上输入Wi-Fi密码时,你是否厌倦了反复调试按钮坐标?为工业HMI设备设计参数输入界面时,是否受够了每次修改布局都要重写事件处理逻辑?传统嵌入…...

如何在Windows系统上一键部署终极包管理器:winget安装工具完全指南

如何在Windows系统上一键部署终极包管理器:winget安装工具完全指南 【免费下载链接】winget-install Install WinGet using PowerShell! Prerequisites automatically installed. Works on Windows 10/11 and Server 2019/2022. 项目地址: https://gitcode.com/gh…...

26-cv-2777、26-cv-2964、26-cv-3022、26-cv-3949、26-cv-4062、26-cv-5488 Winnie Rosaline Kan 版权画维权!

案号:26-cv-2777、26-cv-2964、26-cv-3022、26-cv-3949、26-cv-4062、26-cv-5488原告品牌:Winnie Rosaline Kan 版权画品牌方:Casetagram Limited起诉地:美国伊利诺伊州代理律所:Keith起诉时间:2026年03月1…...

PromptFlow:企业级AI应用编排与全生命周期管理工具详解

1. 项目概述:PromptFlow,一个被低估的AI应用编排利器如果你最近在折腾大语言模型应用,从简单的聊天机器人到复杂的多步推理工作流,大概率会听到“LangChain”、“LlamaIndex”这些名字。它们确实火,社区活跃&#xff0…...

双源判别器提升城市场景语义分割精度

篇名问题,背景方法其他基于双源判别器的域自适应城市场景语义分割(2023)1.跨域数据集外观分布不同导致域差异,导致对抗训练不稳定,分割精度不够理想。2.网络对小目标分割精度不理想双源判别器(判别器输入包含 2 个不同域 的特征信…...

2026年腾讯云部署OpenClaw/Hermes Agent 配置Token Plan怎么快速上手?看这篇

2026年腾讯云部署OpenClaw/Hermes Agent 配置Token Plan怎么快速上手?看这篇。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Toke…...

别再为OSGB数据导入SuperMap iDesktop发愁了!手把手教你搞定倾斜摄影配置文件生成与常见报错

三维GIS实战:从OSGB到SuperMap iDesktop的完整避坑指南 当无人机航拍的倾斜摄影数据第一次在SuperMap iDesktop中成功加载时,那种从二维平面跃入三维空间的震撼感,是每个GIS从业者都难忘的体验。然而,这份喜悦往往被配置文件生成失…...

别再死记PRBS7/15了!用Python+NumPy手搓一个可配置的PRBS码生成器(附完整代码)

用Python构建可配置PRBS生成器:从LFSR原理到信号仿真实战 在数字通信和高速电路设计中,工程师们经常需要生成特定的测试信号来验证系统性能。伪随机二进制序列(PRBS)因其近似真实数据流的特性,成为信号完整性测试的黄金…...

OpenAI 把 Codex 塞进手机端了

OpenAI 把 Codex 塞进手机端了 根据 OpenAI,TechCrunch 的最新报道和 Reddit 上的前瞻消息 —— ChatGPT Mobile,正在灰度测试 Codex 预览版。 这不止是个移动端 IDE。 从目前的用例来看,他们的核心意图是:用自然语言在移动端直接…...

Java动态调试利器JDBG:无侵入线上问题诊断与热修复实战

1. 项目概述:一个为Java开发者准备的调试利器如果你是一名Java开发者,肯定对调试这件事又爱又恨。爱的是,它能帮你精准定位那些让人抓狂的Bug;恨的是,传统的调试方式——在IDE里打断点、单步执行——在面对复杂、分布式…...

Photoshop图层批量导出神器:快速高效导出PSD图层为独立文件的最佳解决方案

Photoshop图层批量导出神器:快速高效导出PSD图层为独立文件的最佳解决方案 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script from Ado…...

星露谷物语SMAPI模组加载器:从零开始打造你的专属农场世界

星露谷物语SMAPI模组加载器:从零开始打造你的专属农场世界 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 还在为星露谷物语的模组安装而烦恼吗?每次看到心仪的模组却因为复杂…...

SAP 报SNAP_NO_NEW_ENTY错误【DB2 LOGSECOND参数】

1、在AI的指导下,备份并删除sapprd.snap db2 > create table sapqas.snap_bak_20250101 as (select * from sapqas.snap) with data; DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. D…...

Chatmark:Slack聊天记录自动化转Markdown文档的利器

1. 项目概述:从“聊天记录”到“结构化文档”的桥梁如果你和我一样,经常需要从各种即时通讯工具(比如Slack、Teams,甚至是微信工作群)的聊天记录里,整理会议纪要、提取待办事项,或者把一次技术讨…...

Transit Map:5分钟创建专业级公共交通动态地图的终极指南

Transit Map:5分钟创建专业级公共交通动态地图的终极指南 【免费下载链接】transit-map The server and client used in transit map simulations like swisstrains.ch 项目地址: https://gitcode.com/gh_mirrors/tr/transit-map 想象一下,您需要…...

桌面端酷安社区体验:Coolapk UWP 完整使用指南

桌面端酷安社区体验:Coolapk UWP 完整使用指南 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 你是否曾经希望在电脑大屏幕上舒适地浏览酷安社区,摆脱手机小屏幕的…...

如何智能批量添加EXIF水印:摄影师的自动化参数标注解决方案

如何智能批量添加EXIF水印:摄影师的自动化参数标注解决方案 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 摄影爱好者和专业摄影师都面…...

联想刃7000k BIOS权限深度解析:从用户到管理员的实战技巧

联想刃7000k BIOS权限深度解析:从用户到管理员的实战技巧 【免费下载链接】Lenovo-7000k-Unlock-BIOS Lenovo联想刃7000k2021-3060版解锁BIOS隐藏选项并提升为Admin权限 项目地址: https://gitcode.com/gh_mirrors/le/Lenovo-7000k-Unlock-BIOS 联想刃7000k …...

基于hexascribe/chatbot-builder框架的对话机器人开发实战指南

1. 项目概述:一个面向开发者的对话机器人构建框架最近在GitHub上看到一个挺有意思的项目,叫hexascribe/chatbot-builder。乍一看名字,你可能会觉得这又是一个“又一个聊天机器人框架”,市面上类似的工具确实不少,从早期…...

如何用 curl 命令快速测试 Taotoken 的 API 是否连通

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何用 curl 命令快速测试 Taotoken 的 API 是否连通 在接入大模型服务时,直接使用 curl 命令测试 API 是最基础、最直…...

VSCode经典体验配置指南:从界面净化到键盘流工作流打造

1. 项目概述:为什么我们需要一个“经典体验”的VSCode?如果你和我一样,是个在代码编辑器里泡了十多年的老程序员,那你一定经历过从记事本、Notepad、Sublime Text到Visual Studio Code(VSCode)的漫长迁徙。…...

UWB定位标签天线怎么选?PATCH、PIFA、DIPOLE三种方案全对比(含NXP/Qorvo模组适配建议)

UWB定位标签天线选型指南:PATCH、PIFA、DIPOLE三大方案深度解析与工程决策 在物联网定位技术领域,超宽带(UWB)凭借其厘米级精度和强抗干扰能力,已成为工业定位、智能仓储和医疗设备追踪的核心解决方案。而天线作为UWB系统的"感官器官&qu…...

tchMaterial-parser:5分钟快速上手,轻松获取国家中小学智慧教育平台电子课本的完整指南

tchMaterial-parser:5分钟快速上手,轻松获取国家中小学智慧教育平台电子课本的完整指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#x…...

Android Studio中文界面解决方案:从语言障碍到开发效率提升

Android Studio中文界面解决方案:从语言障碍到开发效率提升 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 当你在And…...

Crypto AI Agent:基于LangChain与Web3的加密交易智能体实战

1. 项目概述:当AI智能体闯入加密世界最近在GitHub上看到一个挺有意思的项目,叫“Crypto-AI-Agent”。光看名字,你大概就能猜到它想干什么——让AI来玩转加密货币。这可不是简单的价格查询机器人,从项目描述和代码结构来看&#xf…...

别再只盯着PWM了!手把手教你为你的Arduino项目选择合适的DCDC调制方式(PFM/PWM/Burst Mode全解析)

别再只盯着PWM了!手把手教你为你的Arduino项目选择合适的DCDC调制方式(PFM/PWM/Burst Mode全解析) 当你为Arduino项目挑选电源模块时,是否曾被数据手册上PWM、PFM、Burst Mode这些术语搞得一头雾水?我曾在一个低功耗气…...

Scroll Reverser深度解析:macOS事件拦截与独立滚动控制的高效实现

Scroll Reverser深度解析:macOS事件拦截与独立滚动控制的高效实现 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser Scroll Reverser是一款专为macOS设计的开源工具&am…...

终极魔兽争霸3兼容性修复指南:WarcraftHelper让你的经典游戏重获新生

终极魔兽争霸3兼容性修复指南:WarcraftHelper让你的经典游戏重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸III…...

TranslucentTB:3分钟打造Windows任务栏透明效果的终极指南

TranslucentTB:3分钟打造Windows任务栏透明效果的终极指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 想让你的Windows桌…...