“物联网开发实战”学习笔记-(五)根据土壤湿度、环境温湿度和光照强度自动浇花

研究场景需求

自动浇花这个场景,很明显是为了自动控制水泵,及时给植物补充水分。同时用户的目的并不只是浇水而已,他们真正想要的,是看到自己养的植物健康地生长。

植物生长需要的条件

环境温湿度条件

热带的植物无法忍受低温和干燥的环境条件,而温带植物遇到高温,也可能出现热衰竭的现象,所以环境的温度和湿度最好也能监控。

光照条件

植物进行光合作用,所以光照强度需要监控。

空气质量

对植物的生长来说也很重要,比如二氧化碳是否充足,有害气体是否超标等。

所以综合来看,我们需要监控的指标包括土壤湿度、环境温湿度和光照强度。

硬件电路

相应的传感器可以确定是土壤湿度传感器、环境温湿度传感器和光照传感器。

下面,我总结一下自动浇花器需要用到的材料:
1.NodeMCU ESP32 开发板(用WI-FI)

2.继电器,用于控制水泵的供电电路的通断。

3.水泵,用于从水箱中抽水,并送到花盆中。

4.电池盒,用于给水泵供电。

5.土壤湿度传感器
它可以测量花盆土壤的湿度,然后输出模拟信号。

6.环境温湿度传感器
它基于 DHT11 传感器,用于测量房屋中的温度和湿度,并且输出数字信号。它采用单总线(1-wire)接口与 NodeMCU 连接。

7.光照传感器,它可以测量花盆位置接收到的光照条件。

8.面包板和杜邦线。

课程给出的一个电路图,方便了解整个自动浇花器的设备组成。

软件实现

接下来还是使用 Python 语言来完成软件的开发工作。

继电器

继电器的控制。主要是改变了连接的 GPIO 管脚。根据硬件电路的连线,这里使用的是 GPIO23 管脚。
参考代码它连接的管脚是 GPIO23):

## !!!本文件采用商城的继电器模块FL-3FF-S-Z
## !!!on(), off()状态相反。
## !!!初始化中需要调用on()先关闭水泵电路
from machine import Pinclass Relay():ON = 0OFF = 1def __init__(self, pin):self.relaypin = Pin(pin, Pin.OUT)self.relaypin.on()self.last_status = self.OFFdef set_state(self, state):tmp_state = self.ON if state==1 else self.OFFself.relaypin.value(tmp_state)self.last_status = tmp_statedef state(self):return self.last_statusdef on(self):self.relaypin.value(self.ON)self.last_status = self.ONdef off(self):self.relaypin.value(self.OFF)self.last_status = self.OFF

土壤湿度传感器

土壤湿度传感器。它会根据不同的电阻值,输出变化的模拟信息,数值越小,说明越干燥。使用的时候,你需要把它完全插入花盆的土壤中。

参考代码(它连接的管脚是 GPIO34):

from machine import ADC
from machine import Pinclass SoilSensor():def __init__(self, pin):self.sensor = ADC(Pin(pin))def value(self):value = self.sensor.read()print("Sensor ADC value:",value)return int(value*100/4095)

环境温湿度传感器

环境温湿度传感器是基于 DHT11 实现的,并且使用的是单总线的连接方式,我们可以直接使用。

参考代码(它连接的管脚是 GPIO14):

import dht
from machine import Pinclass EnvSensor():def __init__(self, pin):self.sensor = dht.DHT11(Pin(pin))def value(self):self.sensor.measure()return (self.sensor.temperature(), self.sensor.humidity())

光照传感器

光照传感器
参考代码(它连接的管脚是 GPIO36):

from machine import ADC
from machine import Pinclass IllumSensor():def __init__(self, pin):self.sensor = ADC(Pin(pin))def value(self):value = self.sensor.read()print("Sensor ADC value:",value)return int(value/4095*600

完成联网开发

将设备接入腾讯云物联网平台。可以参考前面的分享。
自动浇花器的物模型 JSON 文件,提供参考。

{"version": "1.0","profile": {"ProductId": "你的ProductID","CategoryId": "909"},"properties": [{"id": "power_switch","name": "水泵开关","desc": "控制水泵启动关闭","mode": "rw","define": {"type": "bool","mapping": {"0": "关","1": "开"}}},{"id": "water_shortage","name": "缺水状态","desc": "水箱是否缺水","mode": "r","define": {"type": "bool","mapping": {"0": "否","1": "是"}}},{"id": "humidity","name": "土壤湿度","desc": "当前的土壤湿度","mode": "r","define": {"type": "int","min": "0","max": "100","start": "0","step": "1","unit": "%"}},{"id": "env_temp","name": "环境温度","desc": "空间环境的温度","mode": "r","define": {"type": "float","min": "-40","max": "100","start": "0","step": "0.1","unit": "℃"},"required": false},{"id": "env_hum","name": "环境湿度","desc": "周围环境的湿度","mode": "r","define": {"type": "int","min": "0","max": "100","start": "0","step": "1","unit": "%"},"required": false},{"id": "env_illum","name": "环境光照度","desc": "周围环境的光照度","mode": "r","define": {"type": "int","min": "0","max": "6000","start": "0","step": "1","unit": "lux"},"required": false}],"events": [],"actions": []}

多传感器融合

在测量过程中,我们可以使用多个土壤传感器进行测量,然后根据多个测量值来计算出更可靠的土壤水分含量。这个计算过程就是多传感器融合。
多传感器融合最关键的地方,不是多个传感器的硬件连接或数据收集,而是融合算法,也就是怎么进行多个不同维度的参数的处理,从而得到一个相对准确的、有意义的数据信息。
这个就是物联网的应用层的工作模块,根据传感器反馈回来的大量的数据通过训练构建模型,这个过程其实体现了人工智能与物联网的融合点。

学习笔记总结自‘物联网开发实战’–郭朝斌
–笔记只用于学习交流,请不要用于商业用途。

“物联网开发实战”学习笔记-(五)根据土壤湿度、环境温湿度和光照强度自动浇花相关推荐

  1. “物联网开发实战”学习笔记-(四)智能音箱制作和语音控制

    "物联网开发实战"学习笔记-(四)智能音箱制作和语音控制 这次来造一个属于自己的智能音箱,这里详细介绍了智能音箱的语音控制的实现. 智能音箱的技术架构 智能音箱主要涉及拾音.前端信 ...

  2. “物联网开发实战”学习笔记-(二)手机控制智能电灯

    "物联网开发实战"学习笔记-(二)手机控制智能电灯 如果搭建好硬件平台后,这一次我们的任务主要是调试好智能电灯,并且连接到腾讯云的物联网平台. 腾讯云物联网平台 腾讯物联网平台的优 ...

  3. 阿里云HaaS100物联网开发板学习笔记(六)做个智能灯---一个完整的开发例子

    摘要:本篇文章将前期几个专题综合起来,基于阿里云HaaS100的新固件设计制作一个智能灯.这个智能灯由云平台.手机APP端和设备端组成,基本上涵盖了一个物联网小项目所需的主要步骤. 目录 1.在阿里云 ...

  4. 唐金州的Vue开发实战学习笔记(生态篇)

    Vue开发实战学习笔记 Vuex Why Vuex How Vuex Vuex的核心概念和底层原理 Vuex的最佳实践 Vue Router Why Vue Router 路由类型及底层原理 Nuxt ...

  5. 阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来

    摘要:无论是哪种开发板,要想开发特定的功能,必先从GPIO开始,HaaS100开发也是一样.如果仅仅利用HaaS100的联网功能,那简直是太浪费了.HaaS100拥有其他开发板所具备的所有的功能,比如 ...

  6. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

    摘要:本篇文章讲解如何使用JavaScript"轻应用"连接阿里云物联网平台并上报一个数据.仍然延续前几篇文章的结构,从安装软件环境开始讲,以使零基础的同学看了本篇文章之后,也能够 ...

  7. 阿里云HaaS100物联网开发板学习笔记(三)轻应用初步--用js让小灯闪烁起来

    摘要:能让JavaScript应用运行在haas100开发板上,这实在是太酷了,这种方式被阿里云称之为"轻应用".本文带各位从零开始,先了解啥是轻应用,然后搭建环境,再一步步将一个 ...

  8. HaaS600物联网开发板学习笔记(二)---轻应用方式让LED闪烁起来

    摘要:轻应用开发非常方便快捷,gitee上的例程也都是基于HaaS600的,所以,拿HaaS600来逐个测试例程,学习轻应用开发和物联网应用是最合适的.本文介绍一下HaaS600如何使用轻应用来开发. ...

  9. 华清远见fs4412开发板学习笔记(五)

    fs4412开发板学习笔记(五) 作业1: 输入10个整数,按从小到大的顺序输出(选择排序) 每轮排序在未排序的集合中找到(最小/最大),将找到的数与未排序的 第一个数交换位置. 5 4 3 2 1 ...

最新文章

  1. ios中图片不显示的问题
  2. “星链”或成美军未来作战理念新载体
  3. Linux下安装 Indy 到 Lazarus
  4. android 4.2 判断桌面快捷,Android 判断桌面是否快捷方式,不存在则创建
  5. python与vfp做桌面数据库_VFP数据库系统开发实例(附图)
  6. LeetCode 1500. Design a File Sharing System(哈希map+优先队列)
  7. three.js加入监控
  8. yy神曲url解析php_用PHP如何实现解析抖音无水印视频
  9. Verilog初级教程(6)Verilog模块与端口
  10. css3参考手册在线和下载
  11. 计算机三本院校大学排名,全国三本大学排名
  12. PHP工具箱无法启动Mysql问题
  13. windows添加hosts
  14. 小猫爬山题解(暴力解题)
  15. 单域安全评估以及加固方案
  16. 基于BP神经网络的英文字母识别
  17. lk中printf的实现
  18. C语言课程设计(2)-新生入学管理系统
  19. discuz和phpwind哪个好
  20. AD20常见的原理图报错和PCB设计规则

热门文章

  1. 如何降低直线导轨的摩擦系数?
  2. poj 1787 多重背包(硬币付款不找钱)
  3. C++实现任意进制互转(递归版)
  4. 量化双均线策略:(二)判断买入卖出信号
  5. input自系统之gsensor模块开发
  6. 2004年Delphi Informant杂志读者选择奖 1
  7. 毫米波雷达将被颠覆?楚航科技发布隐形雷达ART
  8. android 添加新语言之缅甸语
  9. rust druid概念
  10. 健身增肌补剂有什么?