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