news 2026/5/28 12:58:28

基于VL53L0X与Arduino的激光测距身高测量系统设计与实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于VL53L0X与Arduino的激光测距身高测量系统设计与实现

1. 项目概述与核心思路

在嵌入式开发领域,将传感器技术与微控制器结合,解决生活中的实际问题,是很多工程师和爱好者的乐趣所在。今天要分享的,就是一个我亲手搭建并调试过的“人体身高测量仪”。这个项目的核心,是利用一颗名为VL53L0X的激光测距传感器,配合我们熟悉的Arduino Nano,来实现非接触式的身高测量。最终,测量结果会实时显示在一块LED点阵屏上,整个过程干净利落,精度也相当不错。

你可能在健身房、体检中心或者一些智能设备上见过类似的身高测量装置,它们大多体积庞大、价格不菲。而我们这个方案,成本不过百元,核心部件只有几块芯片和模块,却能实现相近的功能。这背后的关键,就在于VL53L0X这颗传感器。它采用“飞行时间”原理,简单来说,就是发出一束人眼不可见的激光,然后计算这束光打到目标(比如你的头顶)再反射回来所花费的时间。光速是恒定的,时间乘以光速再除以2,就是精确的距离。这种原理让它的测量可以做到毫米级精度,而且几乎不受环境光干扰,比传统的超声波传感器靠谱得多。

整个系统的逻辑非常清晰:我们把传感器固定在房间天花板或者一个门框的顶部,让它垂直向下照射。当人站到传感器正下方时,传感器会测出从它自身到人头顶的距离。我们预先测量并存储好传感器安装位置到地面的总高度(比如房间净高2.5米),用这个总高度减去传感器测到的“头顶距离”,得到的就是人的身高。这个计算过程由Arduino Nano完成,然后驱动MAX7219芯片控制的8x8 LED点阵模块,将身高数值清晰地滚动显示出来。为了使用方便,我还增加了三个按钮,分别用来切换厘米/英寸单位、重置当前测量值,以及进入校准模式来设置那个“总高度”。

这个项目麻雀虽小,五脏俱全。它涵盖了嵌入式系统开发的几个核心环节:传感器数据采集(I2C通信)、核心逻辑运算(Arduino编程)、用户交互(按钮输入)以及信息输出(SPI驱动LED显示)。无论你是想学习Arduino和传感器应用的学生,还是希望为某个空间增加一个趣味性智能装置的开发者,这个项目都能提供一个完整、可复现的实践案例。接下来,我会从硬件选型、电路搭建、代码编写到调试校准,一步步拆解其中的所有细节和踩过的坑。

2. 核心器件选型与原理深度解析

一个项目的成功,一半取决于思路,另一半则取决于对核心器件的深刻理解与正确选型。在这个身高测量系统中,VL53L0X传感器和MAX7219显示模块是两大技术核心,它们的特性直接决定了系统的性能和体验。

2.1 VL53L0X:为何选择激光ToF传感器?

在距离测量领域,可选方案很多,比如超声波、红外三角测距、普通激光反射等。我最终选择VL53L0X,是基于以下几个关键的工程考量:

第一,精度与稳定性。超声波传感器成本低,但其波束角大,容易受到周围物体反射干扰,且精度通常在厘米级,对于身高测量来说误差太大。红外三角测距(如GP2Y0A系列)在短距离内精度尚可,但测量结果易受被测物体颜色、表面材质影响,稳定性不佳。VL53L0X采用的飞行时间法,本质上是时间测量,精度可达±3%,在实际1-2米的范围内,误差可以控制在几毫米以内,这对于身高测量是完全足够的。

第二,测量范围与速度。VL53L0X的官方标称测距范围可达2米,经过我的实测,在室内环境下,测量1.9米左右的高度非常稳定。它的测量速度很快,连续模式下每秒可进行数十次测量,这使得系统能够近乎实时地更新显示数据,用户体验流畅。相比之下,超声波传感器每次测量后需要一段“冷却”时间,刷新率低。

第三,接口与功耗。VL53L0X采用标准的I2C接口,只需要两根信号线(SDA, SCL)即可与Arduino通信,极大地简化了布线。其工作电压为2.6V-3.5V,但模块板上通常集成了电平转换电路,可以直接用Arduino的5V或3.3V供电,非常方便。功耗方面,在连续测量模式下电流约20mA,属于低功耗器件,适合电池供电场景。

注意:VL53L0X对测量表面的材质有一定要求。对于完全吸光的黑色绒布或者透光性极强的玻璃,测量可能会失败或误差极大。好在人的头发和皮肤反射性尚可,在实际使用中几乎没有问题。如果遇到问题,可以在被测点临时贴一小块白色胶带作为反射靶标。

2.2 MAX7219 LED点阵模块:信息显示的可靠选择

显示部分,我放弃了常见的LCD1602液晶屏,选择了8x8 LED点阵模块搭配MAX7219驱动芯片的方案,原因有三点:

可视性与体验。LED点阵的亮度高,显示数字时字符大而醒目,在较远距离或光线复杂的环境下依然清晰可见,比液晶屏的体验好很多。通过编程可以实现滚动显示,视觉上更“酷”,也解决了单块模块显示位数有限的问题。

硬件驱动简化。MAX7219是一款集成度非常高的芯片,它内部包含了数字解码器、多路扫描回路、段驱动器和位驱动器。我们只需要通过SPI接口(三根线:DIN, CLK, CS)发送数据,它就能自动完成对8位8段(即8个8x8点阵)的扫描和驱动,大大减轻了MCU的负担。我们项目中用了2个模块级联,就能显示多位数字。

软件库支持成熟。Arduino社区有诸如MaxMatrixLedControl等非常成熟的库来驱动MAX7219,我们不需要关心底层扫描时序,只需调用简单的setLed()printChar()函数即可,开发效率极高。

2.3 Arduino Nano:控制核心的性价比之选

主控选择Arduino Nano,主要是权衡了尺寸、接口和成本。Nano具有和Uno相同的ATmega328P核心,性能足够。其小巧的尺寸非常适合嵌入到最终成品外壳中。它提供了足够的数字IO口来连接传感器、显示模块和按钮,并且原生支持I2C和SPI硬件接口,通信稳定。相比更小的ATTiny系列,Nano的编程和调试更为方便,生态资源也最丰富。

其他外围器件:

  • 按钮:选用最普通的轻触开关,通过10kΩ上拉电阻连接到IO口,实现低电平有效的检测。
  • 电源:整个系统工作电流在150mA左右,一个标准的5V/1A的手机充电器或USB接口供电绰绰有余。

3. 硬件电路搭建与布线要点

有了清晰的器件清单,下一步就是将它们正确地连接起来。电路图是工程的蓝图,而实际的焊接或面包板搭建则是将蓝图变为现实的第一步。这里不仅要把线接对,更要接好,才能保证系统稳定运行。

3.1 系统连接图与引脚定义

整个系统的电路连接可以清晰地分为三个部分:传感器部分、显示部分和输入部分。下图清晰地展示了所有连接关系,但我会在表格中给出更详细的引脚对应关系,这在实际接线时更方便查阅。

核心器件引脚连接表:

器件/模块引脚名称连接至 Arduino Nano 引脚说明
VL53L0XVCC5V电源正极,注意模块兼容5V
GNDGND电源地
SDAA4I2C数据线
SCLA5I2C时钟线
MAX7219模块 (1)VCC5V电源正极
GNDGND电源地
DIND12SPI数据输入
CS/LOADD10SPI片选
CLKD11SPI时钟
MAX7219模块 (2)VCC5V并联供电
GNDGND并联接地
DIN连接至模块1的DOUT级联数据线
CS/LOADD10与模块1共用片选
CLKD11与模块1共用时钟
按钮 (设置)一端D4功能切换/校准键
另一端GND按下时使D4接地
按钮 (增加)一端D2校准模式下增加数值
另一端GND按下时使D2接地
按钮 (减少)一端D3校准模式下减少数值
另一端GND按下时使D3接地

重要提示:每个按钮与Arduino引脚之间,必须串联一个1kΩ - 10kΩ的电阻。虽然原理图中有时会省略,但在实际电路中,这个电阻至关重要。它作为“上拉电阻”,确保在按钮未按下时,IO口被稳定地拉至高电平(通过VCC),避免因引脚悬空而产生随机波动的电平信号,导致误触发。你可以使用Arduino内部上拉电阻(通过pinMode(pin, INPUT_PULLUP)),但外接物理电阻可靠性更高,尤其是在布线较长时。

3.2 布线实操与抗干扰技巧

在面包板或万能板上进行焊接时,遵循以下原则可以避免很多莫名其妙的故障:

  1. 电源去耦:在Arduino Nano的5V和GND引脚附近,务必焊接一个100nF(0.1uF)的陶瓷电容和一个10uF的电解电容。这能为MCU提供瞬间的大电流,并滤除电源线上的高频噪声。同样,在MAX7219模块的电源入口处,也建议加一个0.1uF的电容。
  2. 信号线尽量短:I2C和SPI都是高速通信协议(相对而言)。连接VL53L0X和MAX7219的杜邦线不宜过长,最好控制在20厘米以内。过长的导线会引入电容,导致信号边沿变缓,可能引起通信失败。
  3. 共地!共地!所有模块的GND必须可靠地连接到一起,最终汇聚到Arduino的GND。这是电路工作的基础,地线不通或接触不良是导致传感器读数跳动、显示乱码最常见的原因之一。建议使用较粗的导线或排线连接地线。
  4. 级联显示模块:两个MAX7219模块级联时,第一个模块的DOUT引脚需要连接到第二个模块的DIN引脚。CLKCS引脚则是并联关系,所有模块共用同一组时钟和片选信号。级联后,在软件中需要正确设置使用的模块数量(maxInUse = 2)。

4. 软件代码详解与逻辑实现

硬件是骨架,软件是灵魂。这段代码虽然不长,但完整地实现了数据采集、处理、显示和用户交互的闭环。我们逐部分拆解,理解每一行代码背后的意图。

4.1 库文件引入与全局变量定义

代码开头引入了必要的库,并定义了引脚和全局变量。这是程序的“准备工作”。

#include <MaxMatrix.h> // 驱动MAX7219的库 #include <EEPROM.h> // 用于存储校准值(安装高度),断电不丢失 #include <Wire.h> // I2C通信库 #include <VL53L0X.h> // VL53L0X传感器驱动库 // 按钮引脚定义 int pinIncrease = 2; // “增加”按钮 int pinDecrease = 3; // “减少”按钮 int pinSetting = 4; // “设置/校准”按钮 int SetPoint = 0; // 用于在校准模式下临时存储设置值 byte height; // 存储从EEPROM读取的传感器安装高度(总高度) // MAX7219引脚定义 int data = 12; // DIN int load = 10; // CS int clock = 11; // CLK int maxInUse = 2; // 使用了2个MAX7219模块级联 MaxMatrix m(data, load, clock, maxInUse); // 创建显示对象 // VL53L0X对象 VL53L0X sensor; int measuredDistance; // 存储传感器读取的原始距离值

关键点解析:

  • EEPROM的使用是点睛之笔。身高测量系统的核心参数是“传感器安装高度”(即天花板到地面的距离)。这个值一旦用卷尺测好并校准后,我们希望系统断电重启也能记住。Arduino的EEPROM是一小块非易失性存储器,正好用来存储这个关键的校准值。代码中将其存储在地址1
  • maxInUse = 2必须与你实际级联的模块数量严格一致,否则显示会错乱。

4.2 字体数据与显示函数

原代码中那段很长的CH[]数组,是自定义的字体点阵数据。它定义了ASCII码从空格(32)到波浪号(126)每个字符在8x8点阵上如何点亮。MaxMatrix库会调用这些数据来绘制字符。printStringprintStringWithShift函数负责将数字字符串输出到点阵屏上,后者支持滚动效果,我们用来显示身高数字,视觉上更友好。

4.3 核心逻辑:setup()与loop()

setup()函数完成初始化工作:

void setup(){ pinMode(pinIncrease, INPUT); pinMode(pinDecrease, INPUT); pinMode(pinSetting, INPUT); // 注意:这里应启用内部上拉电阻,避免引脚悬空 // 更佳实践:pinMode(pinIncrease, INPUT_PULLUP); Wire.begin(); // 启动I2C总线 sensor.init(); // 初始化VL53L0X传感器 m.init(); // 初始化LED点阵 m.setIntensity(1); // 设置亮度(0-15) Serial.begin(9600); // 启动串口,用于调试输出 sensor.startContinuous(); // 启动传感器连续测量模式 }

loop()函数是系统的心跳,它不断循环执行两个主要模式:测量模式校准模式。模式由pinSetting按钮的状态切换。

void loop(){ // 模式判断:如果“设置”按钮被按下(根据电路,按下为LOW) if(digitalRead(pinSetting) == LOW){ // 注意:原代码逻辑为HIGH触发,这里根据常见接法调整为LOW,更符合使用内部上拉电阻的惯例。 // --- 校准模式 --- // 1. 读取当前SetPoint,并限制在0-255之间(身高值合理范围) SetPoint = constrain(SetPoint, 0, 255); // 2. 将SetPoint写入EEPROM地址1,永久保存 EEPROM.write(1, SetPoint); // 3. 立即从EEPROM读出,赋值给height变量 height = EEPROM.read(1); // 4. 重新初始化显示(防止显示残留) m.init(); m.setIntensity(1); // 5. 在屏幕上显示当前设置的height值,供用户参考 char heightStr[4]; itoa(height, heightStr, 10); printString(heightStr); // 6. 调用setting()函数,等待用户通过“加”“减”按钮调整SetPoint setting(); delay(100); // 简单防抖 } else { // --- 正常测量模式 --- // 1. 从EEPROM读取预设的安装高度 height = EEPROM.read(1); // 2. 初始化显示 m.init(); m.setIntensity(1); // 3. 读取传感器距离(单位:毫米),除以10转换为厘米 measuredDistance = sensor.readRangeContinuousMillimeters() / 10; // 4. 核心计算:身高 = 安装高度 - 传感器到头顶距离 int personHeight = height - measuredDistance; // 5. 将身高数值转换为字符串并显示 char heightDisplay[4]; itoa(personHeight, heightDisplay, 10); // 使用滚动显示函数,效果更好 printStringWithShift(heightDisplay, 50); // 50ms的滚动速度 delay(500); // 测量间隔 } }

核心算法剖析:personHeight = height - measuredDistance是这个项目的算法核心。height是预先校准好的、传感器安装平面到地面的绝对垂直距离。measuredDistance是传感器实时测得的到头顶的垂直距离。两者相减,自然就得到了人的身高。这个逻辑简单而优雅。

校准函数setting()

void setting(){ if(digitalRead(pinIncrease) == LOW){ // 按下“增加”按钮 SetPoint++; delay(150); // 按键去抖延时 }else if(digitalRead(pinDecrease) == LOW){ // 按下“减少”按钮 SetPoint--; delay(150); } }

这个函数在校准模式下被循环调用。它检测“加”“减”按钮,并修改SetPoint变量。SetPoint的变化会实时显示在屏幕上,并最终在退出校准模式时被写入EEPROM。

5. 系统校准、调试与问题排查实录

硬件连接无误,代码上传成功,只是万里长征第一步。让系统稳定、精确地工作,校准和调试是关键。这部分分享的,都是我在实验室里反复折腾总结出的“实战经验”。

5.1 校准流程:获得准确的“安装高度”

这是系统精度的基础。你需要一把足够长的钢卷尺。

  1. 固定传感器:将传感器模块牢固地安装在你希望测量身高的位置,确保其激光发射面绝对水平。可以用一个气泡水平仪辅助调整。任何微小的倾角都会引入余弦误差,影响测量结果。
  2. 进入校准模式:给系统上电,长按“设置”按钮(根据代码逻辑,通常需要按住2-3秒)直到屏幕显示一个数字(可能是0,也可能是之前存储的值)。此时系统进入校准模式。
  3. 测量基准距离:用卷尺精确测量从传感器激光发射孔中心点到地面的垂直距离。尽量保证卷尺拉直,视线垂直,多次测量取平均值。假设测得值为H_actual = 250.5 cm
  4. 输入基准值:通过“增加”和“减少”按钮,调整屏幕上显示的数字,使其等于你刚刚测量得到的H_actual值。由于我们存储的是字节(byte)类型,范围是0-255,所以身高值应以厘米为单位,且整数部分不超过255。
  5. 保存并退出:调整完毕后,松开“设置”按钮。系统会自动将当前值写入EEPROM,并退出校准模式,进入正常的测量显示状态。

实操心得:校准过程最好在无人的情况下进行,避免有人站在下方干扰传感器读数。校准完成后,可以找一个身高已知的朋友(或用一个高度已知的物体)进行验证。例如,让身高175cm的朋友站到下面,看系统显示是否在174-176cm之间。如果偏差较大,应重新检查传感器水平度和校准流程。

5.2 常见问题与排查技巧

即使按照步骤操作,你也可能会遇到一些问题。下面这个表格是我在调试过程中遇到的典型问题及解决方法,希望能帮你快速排雷。

问题现象可能原因排查步骤与解决方案
上电后LED点阵不亮或乱码1. 电源问题(电压不足、电流不够)
2. SPI接线错误(DIN, CLK, CS接反)
3. 级联模块数量设置错误
1. 用万用表测量5V和GND之间电压是否稳定在4.8V-5.2V。
2. 逐一检查D12、D11、D10到第一个MAX7219模块的连线。
3. 确认代码中maxInUse变量值与实际级联模块数一致。
屏幕显示“0”或固定不变的数字1. VL53L0X传感器未正确初始化或通信失败
2. I2C引脚(A4, A5)接错
3. 传感器前方有障碍物或距离太远/太近
1. 打开Arduino IDE的串口监视器(波特率9600),在setup()中加入Serial.println("Sensor OK?");sensor.init()的返回值判断,检查传感器状态。
2. 核对SDA、SCL是否分别接在A4和A5。
3. 确保传感器测量范围内(2米内)没有固定障碍物。VL53L0X有最小测量距离(约30mm),人不能站得太近。
身高数值跳动剧烈1. 电源噪声干扰
2. 传感器安装不稳固,轻微抖动
3. 测量环境有强光直射传感器窗口
1. 检查电源,尝试用电池或更稳定的电源适配器供电,确保已添加去耦电容。
2. 加固传感器安装,避免因风扇、走路等引起震动。
3. 避免阳光或强点光源直射传感器黑色窗口。VL53L0X虽抗光干扰强,但极端强光仍可能影响。
按钮操作不灵敏或失灵1. 按钮引脚未启用内部上拉或外接上拉电阻
2. 按键消抖处理不足
3. 接线虚焊或接触不良
1. 将pinMode(pin, INPUT)改为pinMode(pin, INPUT_PULLUP),同时按钮另一端接GND。
2. 在setting()函数的按键检测分支中,增加delay(150);进行软件消抖。
3. 用万用表通断档检查按钮按下时,对应引脚是否可靠接地。
测量值系统性偏大或偏小1. 校准值height不准确
2. 传感器安装不水平
1.重新执行校准流程,确保卷尺测量精准。
2. 使用水平仪重新调整传感器,确保其发射面与地面平行。这是最常见的精度误差来源。
退出校准模式后,设置值未保存1. EEPROM写入失败
2. 按钮检测逻辑反了(按下为HIGH还是LOW判断错误)
1. EEPROM有写入寿命(约10万次),但一般不会坏。检查代码中EEPROM.write(1, SetPoint);是否被执行。
2. 根据你的按钮接线方式(按下接GND还是VCC),调整digitalRead(pinSetting) == HIGH/LOW的逻辑。推荐按下接GND,并使用内部上拉电阻,此时判断条件应为LOW

调试利器——串口打印:在代码关键位置添加Serial.print()语句,是调试嵌入式系统最有效的方法。例如,在loop()中打印measuredDistance和计算后的personHeight,可以让你清晰地看到传感器原始数据和处理结果,快速定位问题是出在数据采集还是逻辑计算环节。

6. 功能优化与扩展思路

一个基础版本跑通后,我们总会想着让它变得更好。这里分享几个我实践过或构思过的优化方向,你可以根据自己的需求和兴趣进行尝试。

1. 增加测量单位一键切换原项目提到了单位切换,但代码中未完全实现。我们可以在loop()中增加一个状态变量bool isCm = true;,并用另一个按钮(或长按某个按钮)来切换。显示时,根据isCm决定是直接显示厘米数,还是将其乘以0.3937转换为英寸后再显示。同时,可以在数字后面滚动显示“cm”或“in”的单位标识。

2. 增加测量数据稳定性处理传感器单次读数可能存在微小波动。我们可以采用“滑动平均滤波”算法:创建一个数组,存储最近N次(比如10次)的测量结果,每次显示时取平均值。这能有效消除随机跳动,让显示的数字更稳定。代码层面,需要维护一个环形缓冲区或队列。

3. 添加声光反馈与自动休眠为了提升用户体验,可以增加一个蜂鸣器,在测量完成(数值稳定后)发出“嘀”一声提示。同时,加入一个红外感应模块(如HC-SR501),当检测到有人靠近时自动唤醒系统进行测量,无人时则关闭LED显示进入低功耗模式,节省电能。

4. 数据记录与统计(进阶)配合一个SD卡模块或蓝牙/Wi-Fi模块,可以将每次测量的身高数据连同时间戳记录下来,存储到SD卡或发送到手机App。这样就可以对家庭成员的身高进行长期追踪,生成生长曲线图。这需要引入更复杂的文件系统或无线通信编程。

5. 结构设计与外壳制作为了让项目从实验原型变成可用的产品,一个美观、坚固的外壳必不可少。你可以使用3D打印设计一个包含传感器舱、显示窗口和按钮孔洞的外壳。安装时,务必设计一个可微调水平的底座,这是保证长期测量精度的关键。外壳还能保护内部电路免受灰尘和意外触碰的影响。

这个基于VL53L0X和Arduino的身高测量系统,从技术上看,它巧妙地运用了ToF测距原理和简单的减法运算;从实践上看,它完整地走通了从传感器选型、电路设计、代码编写到系统调试的全流程。最重要的是,它提供了一个高性价比、高精度的非接触式测量解决方案。无论是用于家庭趣味测量,还是作为嵌入式系统学习的练手项目,其价值都远超部件本身的价值。希望这篇详细的拆解,能帮你不仅做出这个装置,更能透彻理解其背后的每一个“为什么”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 12:57:23

[智能体-115]:AI Agent = 大模型应用 + 传统编程应用的聚合体

AI Agent不仅仅利用大模型的能力&#xff0c;不仅仅采用与大模型交互的编程范式&#xff1b;还包括利用传统软件工具的能力&#xff0c;包括数字化软件以及与外界进行硬件交互的软件&#xff0c;还包括传统程序的编程范式。大模型应用与传统编程应用的聚合体。一、核心定义&…

作者头像 李华
网站建设 2026/5/28 12:57:23

OpenClaw 源码解析(十二):Skills 技能系统与 Agent 行为约束

1. 本期目标 上一期我们分析了 OpenClaw 的 Tools 工具系统。Tool 决定 Agent 能调用什么能力&#xff0c;例如执行命令、读写文件、发送消息、调用浏览器等。 这一期继续看和 Tool 密切相关的另一层机制&#xff1a;Skills 技能系统。 简单来说&#xff1a; Tool 解决“Ag…

作者头像 李华
网站建设 2026/5/28 12:57:21

从螺丝长2mm到部件错位:手把手拆解工业‘逻辑异常’检测的难点与最新方案(附代码思路)

从螺丝长2mm到部件错位&#xff1a;工业逻辑异常检测的技术突围与实践指南在一条现代化汽车装配线上&#xff0c;机械臂正以每秒3次的频率将螺丝拧入预定位置。突然&#xff0c;质检系统发出警报——不是常见的螺丝缺失或划痕&#xff0c;而是某个关键螺栓比标准短了1.5毫米。这…

作者头像 李华
网站建设 2026/5/28 12:57:03

桌面监控革命:如何用TrafficMonitor插件打造你的专属信息中心

桌面监控革命&#xff1a;如何用TrafficMonitor插件打造你的专属信息中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 你是否厌倦了在Windows桌面上打开一个又一个臃肿的应用…

作者头像 李华
网站建设 2026/5/28 12:56:54

用MPY634U模拟乘法器DIY一个简易信号调制器:从原理图到波形实测

用MPY634U模拟乘法器DIY一个简易信号调制器&#xff1a;从原理图到波形实测 在电子工程领域&#xff0c;模拟乘法器一直扮演着信号处理的关键角色。MPY634U作为一款精密四象限模拟乘法器&#xff0c;其应用范围远超简单的数学运算。本文将带您从零开始&#xff0c;利用这款芯片…

作者头像 李华
网站建设 2026/5/28 12:55:55

2026年编码助手LLM API选型:混合策略架构设计与成本优化实践

1. 项目概述&#xff1a;2026年&#xff0c;为你的编码助手选择最佳LLM API 又到了给团队里的编码助手&#xff08;Coding Assistant&#xff09;选型后端大语言模型&#xff08;LLM&#xff09;API的时候了。这活儿每年都得干&#xff0c;但2026年的局面尤其有意思&#xff0c…

作者头像 李华