植物环境监测器

这个 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

LCD
新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片