用树莓派制作一款自动浇灌系统

MAKER:Bobby Leonard/译:趣无尽 Cherry

如果你家里有养个花花草草什么的,可能会遇到小长假出去浪没有办法给花草浇水的困扰。下面介绍的这个自动灌溉系统不仅可以解决这个问题,你还可以将这些技术举一反三,用来DIY其他类似的自动化设备。

下面这个自动灌溉系统基于 Python 实现,可以通过无线网络采集传感器数据、记录数据并写入 Google Sheet,从天气网站 Darksky 获取降水预测并决定是否需要启动水泵进行灌溉,还能将数据推送到手机上。所有代码都在项目文件库中。

http://make.quwj.com/project/78

文中的 MicroPython 设备指代的是支持运行 Python 代码的一类微型设备,例如 WemosD1 mini、NodeMCU 等。它们负责从传感器采集数据和控制继电器,通过 HTTP 请求访问搭建在树莓派上的 Flask 服务器。

材料清单

硬件:

Raspberry Pi(树莓派)3B ×1

NodeMCU ESP8266 开发板 ×1

Everything ESP Wemos D1 Mini×1

DFRobot电容式土壤湿度传感器×1

超声波传感器 – HC-SR04(通用)×1

继电器模块(通用)×1

电阻1k欧姆×1

DHT11温湿度传感器×1

光敏电阻×1

跳线(通用)×1

面包板(通用)×1

Android设备×1

软件:

Slack

Google Sheet

Darksky Weather API

工作原理

1、使用MicroPython设备读取传感器数据的示例。

2、使用树莓派运行的Python对传感器数据作出有用的分析。

代码示例包括:测量水位的距离,控制继电器(泵),土壤湿度(电容土壤湿度),温度和湿度(DHT11)以及使用光敏电阻的光照水平。

树莓派上运行的代码(文件库中提供下载)显示了如何发送推送通知,数据如何写入Google Sheet,从Darksky获取天气预报的数据以及如何使用Web的应用程序HTTP来监控MicroPython设备并与之交换数据。

3、构建一个代码框架,以便将来可以快速轻松地修改MicroPython项目。将MicroPython设置为子关系,Flask为主体,使其能够实现复杂的功能。此框架包括用于子项的标准boot.py(连接到WiFi,使用NTP设置时间)以及需要添加到主体Web应用程序以允许新设备连接的定义列表。

特性

MicroPython节点能够使用HTTP请求在它们之间传输信息,例如:一个扩展板获取了土壤湿度并向服务器报告,然后另一个扩展板请求该信息并读取它来决定是否运行泵。

关于节水问题,水泵控制器也能够从树莓派请求天气预报。当树莓派收到此请求时,它会请求Darksky获取接下来24小时的降水概率。水泵控制器再次使用该信息来决定是否运行泵,即如果在明天的浇水循环之前下雨,则不需要水泵运行。

我使用的是一个小型USB水族箱泵。它是一个潜水泵,如果它不在水里就会烧坏。为了防止这种情况,我将hcsr04超声波传感器放在水箱顶部,以测量到水顶的距离。如果水泵在低水位运行,MicroPython板将请求树莓派,然后树莓派将使用Slack向我的手机发送通知。

该项目是我以前项目的扩展,与该项目一样,所有传感器数据都保存到Google Sheet中,每个板子都有单独的工作表。

笔记

我编写的代码是支持连续运行的,例如,如果网络超时并导致异常停止电路板,电路板将会一直保持深度睡眠并重置直到它可以运行。这很好,但它让你无法在REPL中输入命令,并且更改扩展板上文件的唯一方法似乎是删除闪存并再次安装MicroPython,然后加载到编辑文件。

你需要将MicroPython文件中包含的IP地址更改为运行Flask服务器的任何机器的IP地址。

要使用Google Sheet,你需要按照以下说明操作:

https://gspread.readthedocs.io/en/latest/oauth2.html

要获取Darksky API密钥,请转到下面的链接并注册:

https://darksky.net/dev

要设置Slack,请访问此网站并注册,然后在手机上安装:

https://slack.com

MAKE 资源

1、NodeMCU DHT11温湿度传感器、光线传感器接线图。

2、土壤湿度传感器接线图。

3、WemosD1 水泵控制器系统接线图

代码资源

树莓派上运行的代码在项目文件库中可以下载。

http://make.quwj.com/project/78

rpi3pythonserver_py.py

树莓派上的 Flask 服务,运行于 Python3 环境下。

main_py_WemosD1.py

WemosD1 mini 上的水泵控制程序,用来控制继电器和 hcsr04 超声波传感器。

main_py_nodemcu_soil.py

NodeMCU上的土壤传感器驱动程序。

main_py_nodemcu_dht11.py

NodeMCU 上的温湿度传感器驱动程序。

用树莓派制作一款自动浇灌系统

via