ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Arduino电子秤实战:HX711传感器+OLED显示+校准全解析

2026/10/3 15:08:24 拓冰建站 浏览量
Arduino电子秤实战:HX711传感器+OLED显示+校准全解析 做电子秤这个项目是我玩 Arduino 这么久以来觉得性价比最高的一个入门到进阶的过渡作品。它有真实的物理量采集有模拟信号到数字信号的转换有 I2C 显示器的接入还有必须认真对待的校准环节一条链路走下来几乎能把单片机开发的核心环节都过一遍。这篇文章我就完全按自己做项目时的思路来讲从选型到接线再到代码和校准最后把调试中容易翻车的那些坑挨个说一遍。如果你手里正好有一块 Arduino、一个 HX711 模块和一块 OLED 屏跟着这篇文章走完你手里就会多一个读数稳定、精度在 1g 左右的实用小工具。1. 为什么要用“称重传感器 HX711”这套组合很多新手第一次接触电子秤项目时会有一个困惑压力传感器不是三根脚或者四根脚吗直接接 Arduino 的模拟口不行吗这是一个非常关键的认知点先把这个问题想明白后面接线和写代码时才不会一头雾水。我们要测的是“重量”但传感器本身并不能直接输出一个标准的电压值。常见的电阻应变式称重传感器内部是一组惠斯通电桥核心原理是当传感器受力变形时贴在弹性体上的应变片电阻值会发生变化电桥失去平衡从而在信号端产生一个微小的差分电压。这个电压有多小呢对于一个常见的 1kg 量程的传感器满量程输出大约只有 1mV/V 左右也就是当激励电压是 5V 时满量程输出才 5mV。这个信号直接接到 Arduino 的 ADC 输入口上会被淹没在噪声里完全没法用。而 HX711 就是专门为解决这个问题设计的。它内部集成了一个 24 位高精度 ADC带有可编程增益放大器可以把传感器输出的微弱差分信号放大 32 倍、64 倍或 128 倍然后转换成数字量供单片机读取。这里有一个很多新手容易忽略的细节HX711 是 24 位 ADC理论上分辨率极高但实际有效精度会受噪声、供电稳定性和布线影响。通常一个 HX711 模块配合称重传感器做到稳定分辨率在 1/5000 到 1/10000 之间是完全可行的也就是对于 1kg 量程的传感器稳定读到 0.1g 到 0.2g 的变化是现实的目标。选型时我建议新手直接买“传感器 HX711 模块”的套装而不是单独买传感器再自己搭放大电路。原因有三点HX711 模块已经帮你把稳压、滤波电容、上拉电阻都集成好了你只需要接四根线和两根通信线就能工作入门门槛极低。模块上的 VCC 通常可以接 2.6V 到 5.5V直接由 Arduino 的 5V 供电即可不需要额外的电源管理电路。HX711 模块价格便宜坏了换一块不心疼非常适合折腾。我这里还要多提一句传感器量程的选择。如果你打算称的是硬币、小零件这种轻量物品选 1kg 量程就够了如果你要称食材、包裹之类的东西建议选 5kg 或 10kg。量程选太大小重量的分辨率会变差选太小稍一用力就可能超过传感器弹性体的线性范围导致永久性损坏。这是传感器本身的结构特性决定的不是软件能救回来的。2. 硬件接线从模块引脚到 Arduino 的连接全解析把元件选好之后最核心的一步就是接线。HX711 模块上通常有两排引脚一侧是接传感器的E、E-、A、A-另一侧是接单片机的VCC、GND、SCK、DT。新手最容易犯的错误就是把这两个区域的引脚搞混或者接反正负极导致读数异常甚至烧坏芯片。2.1 传感器与 HX711 模块的连接称重传感器一般引出四根线红、黑、绿、白有的传感器是红、黑、蓝、黄但功能相同。四根线的定义是红线激励正极E通常接模块的 E 端口。黑线激励负极E-接模块的 E- 端口。绿线或蓝线信号正极A接模块的 A 端口。白线或黄线信号负极A-接模块的 A- 端口。不过我必须提醒一句不同厂家、不同批次的传感器线色定义并非 100% 统一。尤其是那些散装的、没有说明书的小传感器最稳妥的办法是拿万用表测一下。具体方法是先用万用表电阻档测四根线两两之间的电阻电桥的原理是相邻两个桥臂的电阻值接近你会找到三组有明显规律的阻值。通常红黑之间的阻值最大等于两个桥臂串联绿白之间的阻值则是微小的差分信号输出。如果上电后发现读数一直在满量程附近跳动或者反向大概率是 A 和 A- 接反了把这两根线对调即可。2.2 HX711 模块与 Arduino 的接线模块与 Arduino 之间的接线非常简单标准的软件库默认逻辑是VCC → Arduino 5V或者 3.3V但 5V 更稳后面讲原因GND → Arduino GNDSCK → 数字引脚比如 D2这个引脚可以自定义软件里对应就行DT → 数字引脚比如 D3数据输出引脚同样可以自定义上面这套接法是 HX711 库默认的 CLK 和 DOUT 对应关系。你也完全可以把 SCK 接到 D4、DT 接到 D5只要在代码里把对应的引脚号改掉即可。顺便说一句SCK 是时钟输入引脚由 Arduino 产生时钟脉冲DT 是数据输出引脚告诉单片机当前转换结果。HX711 与单片机之间使用的是类 SPI 的时序协议但不是标准 SPI所以不能用 Arduino 的硬件 SPI 引脚来硬接必须用普通数字引脚模拟时序。对于 OLED 显示屏如果是 0.96 寸的 SSD1306 方案接线就非常标准了VCC → Arduino 5V或 3.3V取决于模块是否带稳压GND → Arduino GNDSCL → Arduino A5UNO 上的 I2C 时钟线SDA → Arduino A4UNO 上的 I2C 数据线对于 Arduino UNO 来说I2C 引脚固定是 A4SDA和 A5SCL这个不能随便改除非你用软件模拟 I2C。绝大多数 SSD1306 模块默认 I2C 地址是 0x3C但也有少数是 0x3D如果你发现 OLED 不显示第一件事就是扫描一下 I2C 地址。2.3 电源选择的玄机关于供电我专门想展开说一下。HX711 模块的 VCC 和传感器的激励电压是同一个来源也就是说传感器上施加的激励电压就是模块的 VCC 电压。HX711 内部还有一个稳压电路可以把 VCC 稳压到 AVDD用于 ADC 的参考电压。这个设计有个特点如果 VCC 不稳定ADC 的参考电压也会跟着波动直接导致读数漂移。所以新手项目里最常见的“读数自己慢慢往上飘”的问题很多时候不是代码 bug而是 USB 供电不稳引起的。Arduino UNO 通过 USB 口供电时5V 电压会受 USB 电源质量影响特别是当电脑是笔记本电脑、USB 口输出质量一般时这个现象尤其明显。我的建议是有条件的情况下用 5V 2A 以上的独立电源适配器给 Arduino 供电或者至少换一根质量好的 USB 数据线。另外HX711 模块的 VCC 和 Arduino 的 5V 之间建议加一个 10~100μF 的电解电容和 0.1μF 的陶瓷电容并联去耦这能明显降低读数噪声。这个细节在官方的数据手册里其实没有重点强调但实际测试下来对读数稳定性的改善非常明显。对于 OLED 模块如果它自带稳压电路接 5V 没问题如果不确定最稳妥的是接 3.3V。判断方法很简单看模块背面有没有 AMS1117-3.3 这样的稳压芯片有就接 5V没有就接 3.3V。3. 从零开始的软件部分库的选择、初始化与循环逻辑硬件接好之后就可以开始写代码了。这个项目里涉及两个核心库一个是 HX711 的驱动库一个是 OLED 的驱动库。选库这件事看似简单但实际里面有不少讲究。HX711 库目前最常用的是 Bogde 的 HX711 Arduino Library这个库在 GitHub 上非常流行接口设计得很清爽核心就几个函数begin()、read()、get_units()、tare()、calibrate_scale()。它还有一个优点是对中断的处理比较友好底层使用attachInterrupt方式来等待数据就绪不会因为在循环里不停查询而占用过多 CPU。如果你在做一个需要同时处理多个任务的系统这种基于中断的方式能让你在等待 HX711 转换完成的同时去刷 OLED 或者处理按键。OLED 库则首选 Adafruit SSD1306 配合 Adafruit GFX 库。这两个库的组合是目前社区里最成熟的方案支持画点、画线、画矩形、显示中英文字符功能足够丰富且文档齐全。不过要注意Adafruit 库对底层 I2C 总线的操作是通过 Wire 库完成的而 HX711 库在读取数据时需要相对精确的时序控制如果两者不小心发生中断冲突偶尔会出现数据读取卡死的现象。我的经验是在 HX711 的读取函数执行期间尽量避免同时做大量的 OLED 绘图操作。简单说就是先把重量数值读出来再一次性刷新屏幕不要读一步刷一步。初始化顺序上我个人习惯是先初始化 Serial便于打印调试信息再初始化 HX711最后初始化 OLED。这样如果 HX711 初始化失败你还能在串口监视器里看到具体的错误原因而不是一头雾水。3.1 代码骨架一个可运行的电子秤基础版本下面这个代码是一个完整的可运行版本你把它复制到 Arduino IDE 里确认好引脚定义和 I2C 地址后编译上传就能跑起来。#include HX711.h #include Wire.h #include Adafruit_GFX.h #include Adafruit_SSD1306.h #define SCK_PIN 2 #define DT_PIN 3 #define OLED_WIDTH 128 #define OLED_HEIGHT 64 #define OLED_ADDR 0x3C HX711 scale; Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT, Wire, -1); float calibration_factor 450.0f; // 这个值需要根据你的传感器标定后面讲方法 long zero_offset 0; void setup() { Serial.begin(115200); Serial.println(Electronic Scale Starting...); scale.begin(DT_PIN, SCK_PIN); scale.set_scale(calibration_factor); scale.tare(); if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) { Serial.println(OLED allocation failed); for (;;); } display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.display(); } void loop() { float weight scale.get_units(10); // 读取10次取平均降低噪声 if (weight 0) { weight 0.01; // 防止显示器上出现凌乱的负数 } display.clearDisplay(); display.setCursor(0, 10); display.print(weight, 1); // 保留一位小数 display.print( g); display.display(); Serial.print(Weight: ); Serial.print(weight, 1); Serial.println( g); delay(100); // 刷新间隔不需要太快100ms够用 }这段代码的逻辑很直白setup()里完成三个初始化loop()里先读取重量然后刷新 OLED再通过串口输出。这里有几个设计细节我要特别说明一下它们直接决定了你的电子秤到底好不好用。首先scale.get_units(10)里的参数 10 表示连续读取 10 次取平均值。这样做能明显降低读数的随机噪声代价是响应速度变慢。对于静态称重场景这个延时完全可以接受但如果你在称量过程中发现读数“粘滞”——重量已经变了显示值还停在原地半天不动那就把这个参数减小到 5 或者 3。其次负数处理那块对电子秤体验影响很大。去皮之后传感器上没有任何物体时理论输出应该是 0但实际因为噪声存在偶尔会出现 -0.2g 这样的读数。如果不处理OLED 上显示负号会显得特别不专业。我通常的做法是设一个阈值比如小于 0.01 就按 0.01 显示至少看起来舒服得多。第三delay(100)这个刷新间隔看起来无关紧要但实际上它决定了整机功耗和显示流畅度的平衡。100ms 刷新一次肉眼看起来已经非常流畅而且 CPU 占用率极低。如果你之后打算加一个自动休眠功能这个 delay 的位置也是插入休眠逻辑的好地方。4. 校准电子秤项目的分水岭如果你的代码编译上传之后OLED 上确实显示了一个数字恭喜你硬件链路已经通了。但此时你的电子秤大概率是不准的——放一个已知重量的物体显示出来的数字可能差了十万八千里甚至方向都是反的。这就是缺少校准环节的表现。校准是电子秤项目里最容易被低估、但实际上最见功力的部分。4.1 校准因子的本质在校准之前先理解 HX711 的读数链路。HX711 输出的是一个 24 位 ADC 原始值这个值与传感器受到的力成正比。校准因子calibration factor就是把这个原始值换算成克的那个比例系数。具体来说库内部的计算逻辑是weight (raw_value - zero_offset) / calibration_factor其中raw_value是 ADC 的原始输出zero_offset是零点偏移空盘时读到的原始值calibration_factor就是我们说的校准因子。所以校准的本质是通过已知重量的砝码倒推出合适的 calibration_factor。校准因子的大小和什么有关最主要的是传感器的量程和灵敏度其次是 HX711 模块的增益设置128 倍、64 倍还是 32 倍。同一套硬件如果你把增益从 128 改成 64校准因子也需要跟着改。HX711 库默认使用 128 倍增益set_gain(128)这是 CS 引脚电平状态决定的库内部默认设置也是 128 倍所以大多数情况下你不需要显式调用set_gain()。4.2 实操标定流程找一个参照物严格意义上的校准需要标准砝码但对于家庭制作来说我们可以用身边可靠的参照物替代。我的做法是准备几个已经用厨房秤精确称量过的物体比如一枚一元硬币约 6g、一瓶未开封的矿泉水标签上写的是净含量但加上瓶身重量会有偏差需要实际称一下、一个手机用官方参数标称重量或用更精确的秤测过。标定的具体操作流程如下先把传感器空载执行scale.tare()去皮归零记录zero_offset。放上已知重量为known_weight的物体读取原始的scale.get_units(1)值注意此时用的是旧的 calibration_factor得到的 units 值并不是真实克数但没关系。计算新校准因子new_factor old_factor * (displayed_weight / known_weight)假设你代码里初始 calibration_factor 是 450放上一个已知 100g 的物体屏幕上显示 300g明显偏大那新校准因子就是new_factor 450 * (300 / 100) 1350把这个值写回代码里的calibration_factor重新上传再测一次看显示值是否接近 100g。如果偏差在几克以内就说明校准已经收敛。我在这里特意用了“收敛”这个词是想提醒大家校准不是一个一次性操作而是一个迭代过程。因为传感器的线性误差和安装应力会导致不同重量段上的校准因子有微小差异所以正规的做法是用两个砝码做两点校准一个轻的、一个重的取平均因子。对于业余项目一次单点校准加一次验证精度达到 1~2g 已经足够。4.3 去皮和物品摆放的讲究如果你只是做一个简单的电子秤去皮功能可以用代码里的scale.tare()实现。但在硬件层面有几件容易被忽略的小事传感器是应变式结构它对安装面的平整度非常敏感。如果你直接把传感器放在桌面上只用双面胶粘住每次称重的结果可能都不一样因为受力方向不垂直。最稳妥的安装方式是把传感器的一端固定在一个硬质基座上比如一块亚克力板或铝板另一端用于承重。保证力沿着传感器弹性体的中心轴线传递不要有侧向力。所有称重物体的重心要尽量落在传感器承重面的中心区域放偏了会导致读数偏小。这几条看似是“结构设计”的东西但对最终的称重精度影响甚至比代码还大。我见过很多人校得很好但实际使用中读数忽高忽低最后排查发现就是传感器没固定好稍微碰一下桌子读数就跳这就是安装应力在作祟。5. 提升使用体验毛重去皮、自动休眠与 OLED 界面优化基础版的电子秤能跑通之后接下来就该考虑“好不好用”的问题了。电子秤这个产品虽然简单但用户对它的要求其实很高读数要稳定不闪烁显示要清晰直观最好还能自动关机省电。这些优化点都是很好的练习。5.1 完善的去皮逻辑很多场景下我们需要把容器放在秤上后归零再称内容物。硬件上这只需要重新执行一次scale.tare()但代码上要考虑一个细节tare()函数的执行需要传感器处于相对稳定的状态不要在去皮瞬间大力碰撞传感器。我的做法是做一个“防误触去皮”当按键按下时连续读取 5 次重量如果最大值与最小值之差小于阈值才真正执行去皮否则视为噪声忽略。这个思想在工业仪表中叫“数字滤波”在单片机项目里实现起来也非常简单。void safeTare() { float readings[5]; for (int i 0; i 5; i) { readings[i] scale.get_units(1); delay(50); } float minVal readings[0], maxVal readings[0]; for (int i 1; i 5; i) { minVal min(minVal, readings[i]); maxVal max(maxVal, readings[i]); } if (maxVal - minVal 5.0) { scale.tare(); } }这段代码的本质是用时间换稳定性代价是大约 250ms 的去皮延迟但对用户体验来说完全无感。5.2 OLED 显示界面的可用性改进基础版代码里我只是简单地把重量数字打在屏幕上。实际做产品时界面设计能直接拉高项目的观感档次。我常用的做法是使用大号字体setTextSize(3)甚至setTextSize(4)显示数字但 128x64 的分辨率下4 号字体的“g”单位会和数字挤在一行所以我一般用居中排版第一行显示重量数值加单位第二行显示状态信息例如“NET”表示净重、“TARE”表示已去皮、低电压警告等。屏幕刷新时不要整屏clearDisplay()这会引起轻微闪烁。更好的做法是只更新数字区域比如先画一个矩形填充掉旧数字再打印新数字。不过对于初学者整屏清屏的代码更简单闪烁程度在 100ms 刷新率下肉眼几乎看不出所以也不用过于纠结。OLED 还有一个很实用的细节SSD1306 的对比度可以通过display.ssd1306_command(0x81)和display.ssd1306_command(0xCF)来调节。如果你的 OLED 在强光下看起来发灰适当调高对比度能让数字更清晰。5.3 低功耗与自动休眠如果这个电子秤打算用电池供电自动休眠几乎是必须的功能。最简单有效的策略是在loop()中记录每次有重量变化的时刻用一个变量lastActiveTime保存上次读数变化的毫秒数。如果连续 30 秒没有任何重量变化读数绝对值小于某个阈值就认为进入了空闲状态。空闲状态下先关闭 OLED 显示display.ssd1306_command(SSD1306_DISPLAYOFF)然后把 Arduino 带入LowPower库的休眠模式或者至少把主循环的delay增大到 1000ms。当重量变化超过阈值时唤醒并重新打开 OLED。这个方案能显著延长电池寿命尤其是 OLED 这种耗电大户关闭显示后整机电流可以从 30mA 左右降到几毫安。6. 实测中容易踩的五个坑与完整排查思路最后这部分我把自己反复折腾中遇到的高频问题整理一下。这些问题在论坛里几乎每天都有新人问但大多数帖子的回复都只给结论不给排查思路。我这里尽量把“我是怎么一步步定位到问题根源”的过程也写出来下次再遇到类似表现你就知道该从哪里下手。6.1 OLED 一直亮不起来或者白屏先确认是不是 I2C 地址问题。把代码里的地址 0x3C 改成 0x3D 试试。如果还不行用下面这段扫描代码看 I2C 总线上到底有没有设备、地址是多少#include Wire.h void setup() { Serial.begin(115200); Wire.begin(); for (byte addr 1; addr 127; addr) { Wire.beginTransmission(addr); if (Wire.endTransmission() 0) { Serial.print(Found I2C device at 0x); Serial.println(addr, HEX); } } } void loop() {}如果扫描不到任何设备问题就在硬件接线而不是软件。此时用万用表测 OLED 的 VCC 和 GND 之间是否有 3.3V 或 5V 电压。还有一个很容易被忽略的细节部分 OLED 模块的 SCL 和 SDA 丝印顺序是反的或者模块上的引脚间距是 2.54mm 但标注方向容易看反接线之前先对着丝印核对一遍。6.2 读数永远是满量程或负的最大值这是 HX711 项目里最经典的问题。如果读数固定是一个很大的正数或者负数比如几十万上百万几乎可以肯定是传感器到 HX711 模块之间的接线问题。最常见的原因是 A 和 A- 接反。把这两根线对调问题立竿见影。排查这个问题的过程中记得先排除 Arduino 软件层的干扰单独跑一个最简单的不带 OLED、不带校准的读取程序把原始scale.read()打印到串口监视器。如果此时读到的原始值依然异常大那 100% 是硬件接线问题不是代码逻辑问题。这个推理过程本身也是一个很好的排查思路先用最小系统锁定问题范围。6.3 读数不稳定小数点后两位跳来跳去首先确认供电是否稳定。上面提到过把 Arduino 从电脑 USB 口换到单独电源适配器上或者给 HX711 的 VCC 增加一个 100μF 的解耦电容能解决大部分问题。其次检查传感器周围有没有震动源比如风扇、机械振动。软件层面也可以做优化get_units(10)取 10 次平均是基础操作。如果还不够稳可以升级为滑动平均滤波或者卡尔曼滤波。但说实话对于电子秤这个场景滑动平均就足够了引入卡尔曼滤波属于过度设计我建议新手先不要搞复杂算法。6.4 加了 OLED 之后 HX711 读数卡死这个问题的本质是中断冲突。HX711 库使用attachInterrupt监听 DT 引脚的电平变化而 Wire 库在处理 I2C 通信时也会使用中断。在某些执行时序下两个中断互相嵌套导致 HX711 的数据线状态没有被正确响应。解决方法是换一个不使用中断的 HX711 读取方式或者把 HX711 的读取和 OLED 刷新错开。我个人的做法是在loop()里先读取 HX711 的值并缓存然后关闭中断noInterrupts()执行 OLED 刷新再重新开启中断。不过最简单的方案是换用 Bogde 库HX711里默认的非中断轮询模式那个库其实在read()内部用的是轮询等待与 Wire 库的兼容性更好。如果你遇到“加了 OLED 卡死”的问题大多数情况下换成这个库就好了。6.5 校准因子写死之后换了一个传感器就不准了这是非常常见的使用场景问题。你校好了一个传感器然后觉得好玩换了个不同量程的传感器或者同一型号但不同批次的传感器发现同样的校准因子完全不适用。原因很简单每个传感器的灵敏度、桥臂阻值都存在分散性校准因子必须针对当前硬件重新标定一次。解决方法是把校准因子和零点偏移保存到 EEPROM 里并且做一个“进入校准模式”的按键操作。例如上电时按住某个按键 3 秒进入校准模式OLED 上会提示放入砝码并自动计算校准因子然后写入 EEPROM。这样一来每次更换传感器后你只需要执行一次校准流程而不是改代码重新烧录。EEPROM 这块用 Arduino 的EEPROM.h库就能搞定。注意校准因子是浮点数不能直接以浮点数格式写入 EEPROM需要把浮点数的 4 个字节分别拆开存取或者用EEPROM.put()和EEPROM.get()这两个现成函数Arduino 的 EEPROM 库从很早就支持这两个接口了。7. 进阶方向从电子秤到称重系统把这个项目跑通之后你会发现“传感器 ADC 显示”这套组合其实是一个通用框架换一个传感器换一段逻辑就能变成完全不同的产品。这也是我做这个项目的最大收获——你学会的不是“做一个电子秤”而是“如何处理一个物理量并把它变成用户能看懂的信息”。一个比较自然的进阶方向是加一个 HX711 双通道版本。HX711 芯片本身其实支持双通道A 通道和 B 通道A 通道可以接传感器B 通道通常用于接参考电压。通过控制通道选择引脚可以在两个通道之间切换。这可以用来做“称重 张力”二合一的小系统或者做一个压力开关检测到超重时自动触发报警。另一个非常实用的扩展是加一个蓝牙或 Wi-Fi 模块把重量数据推送到手机或电脑。这个方向会涉及串口通信或 I2C 到网络协议的转发对于练习物联网开发是一个绝佳的实战项目。比如你做一个宠物自动喂食器称重部分就是这套 HX711 方案测到食盆重量减少到阈值以下就驱动舵机出粮这也解释了为什么很多 Arduino 智能小车、舵机项目都会和称重模块放在一起讨论——它们是同一套控制思想的不同应用而已。OLED 显示这块还可以玩出更多花样。SSD1306 支持显示图片以数组形式存储的位图你可以在开机时显示一个 Logo然后切换到称重界面。如果把称重界面的字体改成 Adafruit GFX 库里的 7 段数码管风格字体显示效果会非常像真正的商用电子秤这个细节对项目观感的提升非常明显。我个人在实际操作中的体会是HX711 这个芯片的驱动逻辑并不复杂真正决定项目成败的往往是那些不起眼的细节——电源去耦、安装固定、数字滤波。如果你做出来的电子秤读数偶尔跳个 0.1g不要急着怀疑芯片质量先检查你的物理结构是不是够稳固。玩硬件就是这样软硬结合的问题往往先从硬件上找原因排查顺序对了问题就解决了一大半。最后再分享一个小技巧如果你用 Wokwi 这类在线仿真平台学习HX711 和 OLED 都是有仿真模型的可以先在仿真平台上把接线逻辑和代码框架跑通再回到真实硬件上动手。仿真平台能帮你节约大量查线的时间但校准环节是仿真替代不了的因为仿真器里的“噪声”永远不如真实世界那么丰富而这个“真实世界的噪声”恰恰是硬件工程师经验积累的起点。