这个 Pocket Beagle 设备测量并显示你的室内植物正在茁壮成长或勉强存活的环境条件。
这个项目是为莱斯大学(Rice University)的 EDES 301:实用电气工程导论 课程开发的。
如这篇帖子所述,我设计并制作了一个基于 PocketBeagle 的植物环境监测器,它测量土壤湿度和温度等环境条件,在 LCD 屏幕上显示它们,并通过 LED 提供视觉反馈。该系统旨在帮助防止常见的植物养护错误,例如过度浇水或疏于照料——而我过去确实犯过这些错误。我想找到一种方法,在植物枯萎死亡之前,跟踪并改善我的植物所处的环境条件。
这是一个嵌入式系统,旨在通过持续监测环境条件来帮助用户保持室内植物健康。该设备使用 PocketBeagle 微控制器测量土壤湿度和温度,在 LCD 屏幕上显示实时数据,并通过 LED 提供视觉反馈。一个由按钮控制的界面允许用户循环切换显示模式。该设备支持自动启动(auto-boot),并被设计为嵌入式系统与电气工程概念的一个实用且简单的应用。
在我的系统中,土壤湿度以百分比测量,我将这个条件划分为四个类别:土壤湿(≥70%)、最佳(40–69%)、干燥(20–39%)以及非常干燥(<20%)。温度以摄氏度监测,以确保安全的工作条件并提供环境背景,帮助我理解热量如何影响土壤干燥/植物健康。
在我的项目中,我使用 PocketBeagle 作为微控制器。下面是它的引脚图。

所有 PocketBeagle 引脚(P1 和 P2)到组件引脚(组件上的引脚或面包板上的引脚)的对应关系如下所示,便于参考。这些引脚是在我测试系统时,根据 PocketBeagle 哪些引脚有响应而决定的。
我开始这个项目时,首先将 PB(P1_14)的 3.3 V 连接到我的面包板正电源轨。我也将 PB(P1_15)的 GND 连接到负电源轨。这样所有传感器、LED、按钮、电位器和其他组件就可以共享公共地,并且都能获得 3.3 V 供电。

我按照图 2 所示的连接方式将 LCD 屏幕连接到 PB。我使用 GPIO 引脚以 4 位模式接线:RS、Enable(E)以及数据线(D4-D7)连接到 PB GPIO(P2_24、P2_22、P2_18、P2_20、P2_17、P2_10)。然后我将 BLK、RW 和地引脚连接到地(面包板地轨)。在 VO 引脚上使用一个电位器来控制对比度。LCD 屏幕本身(VDD)使用 5 V 供电(USB 的 5 V,P1_5)。此外,背光(BLA)通过一个 220 欧姆电阻连接到 5 V。
我使用一个电位器作为分压器来控制 LCD 对比度,中间引脚连接到 LCD 的 VO 引脚,一侧接 3.3 V,另一侧接地。然后在 LCD 由我的电脑供电的情况下,通过旋转电位器手动调整对比度。接线方式类似于下面的图 3(注意:由于初步引脚连接没有响应,后续迭代中接线发生了变化,不过该图用于视觉辅助)。


参考图 2 并使用随附的 JST PH 2mm 4 针转公排线缆,我将传感器 SDA 连接到 P1_26,将 SCL 连接到 P1_28。GND 连接到地,VIN 连接到 3.3 V 电源轨。这些连接可在下面的图 4 中看到。
该土壤湿度传感器在我的设备中通过 PB 上的 I2C 总线 2(地址 0x36)进行通信。
使用公对公跳线,我将 SDA 连接到 P2_11,将 SCL 连接到 P2_09,将 GND 和 SDO 连接到地,将 VCC 连接到 3.3 V。该温度传感器通过 I2C 总线 1(地址 0x76)通信。我原本打算使用 BME280 温湿度传感器,但在我烧坏原来的 BME280 之后,BMP280(温度和气压)是唯一可用的传感器。
每个 LED 的阳极(长脚)串联一个 220 欧姆电阻。然后从电阻出发,红色 LED 连接到 P2_19,黄色 LED 连接到 P2_25,绿色 LED 连接到 P2_29。LED 的阴极(短脚)接地。接线在下面的图 5 中示意。

使用公对公跳线,我以一个下拉(pull-down)配置连接了一个瞬时按键。按钮的一端连接到 P2_27(GPIO 输入),另一端连接到 3.3 V 电源轨。同一个 GPIO 节点(P2_27)通过一个 10K 欧姆下拉电阻连接到地,以确保按钮未按下时为一个确定的 LOW 状态。按下按钮时,按钮将 P2_27 拉为 HIGH,使 PocketBeagle 能够检测到一个干净的上升沿输入用于屏幕切换。
为了使系统具备功能,我为 LCD、土壤湿度传感器、BMP280、LED 和按钮编写了 python 驱动。一个主驱动随后读取土壤湿度,计算状态 + 干燥等级(使用简单计算器),更新 LED(基于湿度),读取温度并更新 LCD 屏幕。按钮代码用于允许在 4 个显示屏之间切换/循环:
屏幕 0 - 显示土壤湿度百分比和整体状态。
屏幕 1 - 显示简化的干燥等级和状态。
屏幕 2 - 提供一个简短的项目标题和提示用户按键进入下一屏。
屏幕 3 - 显示温度以及土壤湿度,用于组合监测。
我首先使用一个自定义的 configure_pins.sh 脚本来配置 PocketBeagle 引脚,在启动时将所有 GPIO、I2C 和外设引脚设置到正确模式。然后我创建了一个 run.sh 脚本,它切换到项目目录,运行引脚配置,等待电源和 I2C 设备稳定,然后启动主 python 程序。最后,我通过创建一个 systemd 服务来启用自动启动,该服务在启动时调用 run.sh,确保植物监测器在 PocketBeagle 上电(使用 5 伏 USB 充电适配器)时自动运行,而无需连接电脑。或者,你也可以使用日志和一个 cronlog 文件来设置自动启动,并使用命令 sudo crontab -e 来编辑 cron。
只需通过 Micro USB 转 USB-A 线缆和 5 伏 USB 充电适配器将 PocketBeagle 连接到 5V 为设备供电。30 秒后,设备将启动并如下面的视频所示运行。
还有很大的改进空间,包括修复 LCD 的电气稳定性和初始化,以消除长时间运行后偶尔出现的显示故障。我还想增加一个摇杆输入来替代单个按钮,使在不同屏幕之间的导航更平滑、更直观。扩展传感器套件以包括湿度、环境光和额外的温度探头,也将为植物健康提供更完整的图景。加上 Wi-Fi 模块后,系统可以在条件变得不利时向手机发送实时警报或通知。最后,我会激光切割或 3D 打印一个外壳,以提高耐用性、整理性和设备整体展示效果。
依赖:PocketBeagle 常用 Adafruit_BBIO(GPIO)+ smbus2(I2C)安装示例:
sudo apt-get update && sudo apt-get install -y python3-pip
pip3 install smbus2
“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)










