3271| 4
|
[M10项目] 行空板——智能称重系统 |
项目简介 在我刚开始接触电子爱好时,我得到了一套 HX711 重量传感器套件。这个传感器套件附带一个适用于 micropython 的库,并且可以通过 I2C 接口进行访问,因此非常适合用来进行一个小项目。我修改代码使其适用于 circuitpython,并使其在我的 Adafruit Clue 上运行。之后,我觉得可以在行空板上做一个类似的项目。 行空板是 DFRobot 推出的一款带触摸屏功能的单板计算机。它运行定制版的 Debian 操作系统,并提供 Pinpong 库来与各种 GPIO 进行接口。在这个项目中,我将控制一个 LED 环,使用板载按钮和光传感器,并通过 I2C 与 HX711 重量传感器套件进行通信。 项目代码可以在这里找到:https://github.com/Cosmic-Bee/unihiker_scale 功能 这个称重系统的功能很简单:
3D打印支架 为这个项目,我设计并制作了一个简单的 3D 打印支架。这个支架有一个槽,用于插入行空板的金手指接口,另外还有背部支撑件。打印时不需要任何支撑材料,且只需较少的填充。从测试结果来看,支架的平衡效果很好。LED 环的两个孔之间距离为 28 毫米,使用 m2 螺丝进行连接。 ![]() 代码部分 1. 安装 安装步骤非常简单,只需将两个 py 文件放置在行空板的根目录,然后通过运行程序的 UI 界面进行访问即可。我使用 Visual Studio Code 的 SSH 选项,效果很好。 在使用 DFRobot 的 HX711 I2C Python 实现时,我遇到了一些问题(可能缺少关键的初始化步骤),所以我选择自己的逻辑作为起点,并将 circuitpython 代码转换为 pinpong。你可以点这里查看完整的库,但这里的代码我已经删掉了一些部分来突出 I2C 的使用。2. HX711 库
综上,使用 I2C 和 pinpong 上手并不困难。3. 称重系统 跟之前一样,你可以点这里 查看完整的库,这里的代码突出的是关键部分。首先,逻辑允许设置环境变量进行重量校准和光启用阈值。我使用了手头的一个 50g 的重量。
LED 环配置为使用 Pin 22:
对于夜灯功能,我使用了一个全局变量,以下是与此相关的一组代码。
当你初始化板子时,它会提供一组功能,例如光传感器。在这种情况下,每次循环迭代都会读取光传感器的值,并与之前配置的光传感器阈值进行比较。如果光传感器检测到低于阈值的值,则 LED 以每个通道 20 的值启用。如果光值超过阈值,则 LED 环禁用。 称重系统主要通过以下代码进行设置:
系统获取重量时会进行 10 次迭代以获取平均值,然后更新显示重量的文本。此外,称重系统还包含一些附加逻辑。这些功能包括称重系统的校准和去皮功能,以及指示它们是否处于活动状态的状态文本。默认情况下,状态文本显示为“正在称重”:
如果状态被更新为其他内容,则会在 5 秒后恢复为称重状态。
可以更新此状态文本的两个元素是按钮。按钮 A 用于校准,按钮 B 用于去皮。
校准逻辑使用设置为环境变量的克重值。当你按下按钮时,系统使用该环境变量更新传感器,并开始等待添加重量的过程。在时限内添加重量后,它会进行校准并更新显示校准值的 UI。 按下按钮 B 后,系统显示去皮状态,并激活传感器的去皮功能。项目总结 我会写一篇关于我使用行空板的经验的文章,到目前为止体验总体不错。虽然希望文档更详细些,但我并没有遇到太多困难,整体使用还是很愉快的。 ![]() ![]() ![]() 原文链接:https://community.dfrobot.com/makelog-314325.html 原作者:CosmicBee |
想请教下,我尝试运行的时候为什么会报如下错误呀?谢谢! hx711_sensor.begin() File "/root/dfrobot_i2c_hx711.py", line 34, in begin self._write_register() File "/root/dfrobot_i2c_hx711.py", line 109, in _write_register self._i2c.writeto(self.i2c_addr, self.buffer) File "/usr/local/lib/python3.7/dist-packages/pinpong/board.py", line 990, in writeto self.obj.writeto(i2c_addr, value) File "/usr/local/lib/python3.7/dist-packages/pinpong/board.py", line 932, in writeto self.i2c.transfer(writing(i2c_addr, value)) File "/usr/local/lib/python3.7/dist-packages/pinpong/base/i2c.py", line 90, in transfer ioctl(self.fd, I2C_RDWR, ioctl_arg) PermissionError: [Errno 1] Operation not permitted |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed