自动灌溉系统 的教程


材料清单

硬件:
Raspberry Pi(树莓派) 3型号B×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中,每个板子都有单独的工作表。

Google Sheet进行记录

笔记

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

你需要将MicroPython文件中包含的IP地址更改为运行Flask服务器的任何机器的IP地址。
要使用Google Sheet,你需要按照以下说明操作:
http://gspread.readthedocs.io/en/latest/oauth2.html
要获取Darksky ARASPBERRY PI密钥,请转到下面的链接并注册:
https://darksky.net/dev
要设置Slack,请访问此网站并注册,然后在手机上安装:
https://slack.com
控制器表

MAKE 资源

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

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

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

代码资源

树莓派上运行的代码在项目文件库中可以下载。
http://maker.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 上的温湿度传感器驱动程序。


> 自动灌溉系统

组件清单

  • Raspberry Pi(树莓派) 3型号B × 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