“物联网开发实战”学习笔记-(五)根据土壤湿度、环境温湿度和光照强度自动浇花
“物联网开发实战”学习笔记-(五)根据土壤湿度、环境温湿度和光照强度自动浇花
研究场景需求
自动浇花这个场景,很明显是为了自动控制水泵,及时给植物补充水分。同时用户的目的并不只是浇水而已,他们真正想要的,是看到自己养的植物健康地生长。
植物生长需要的条件
环境温湿度条件
热带的植物无法忍受低温和干燥的环境条件,而温带植物遇到高温,也可能出现热衰竭的现象,所以环境的温度和湿度最好也能监控。
光照条件
植物进行光合作用,所以光照强度需要监控。
空气质量
对植物的生长来说也很重要,比如二氧化碳是否充足,有害气体是否超标等。
所以综合来看,我们需要监控的指标包括土壤湿度、环境温湿度和光照强度。
硬件电路
相应的传感器可以确定是土壤湿度传感器、环境温湿度传感器和光照传感器。
下面,我总结一下自动浇花器需要用到的材料:
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": []}
多传感器融合
在测量过程中,我们可以使用多个土壤传感器进行测量,然后根据多个测量值来计算出更可靠的土壤水分含量。这个计算过程就是多传感器融合。
多传感器融合最关键的地方,不是多个传感器的硬件连接或数据收集,而是融合算法,也就是怎么进行多个不同维度的参数的处理,从而得到一个相对准确的、有意义的数据信息。
这个就是物联网的应用层的工作模块,根据传感器反馈回来的大量的数据通过训练构建模型,这个过程其实体现了人工智能与物联网的融合点。
学习笔记总结自‘物联网开发实战’–郭朝斌
–笔记只用于学习交流,请不要用于商业用途。
“物联网开发实战”学习笔记-(五)根据土壤湿度、环境温湿度和光照强度自动浇花相关推荐
- “物联网开发实战”学习笔记-(四)智能音箱制作和语音控制
"物联网开发实战"学习笔记-(四)智能音箱制作和语音控制 这次来造一个属于自己的智能音箱,这里详细介绍了智能音箱的语音控制的实现. 智能音箱的技术架构 智能音箱主要涉及拾音.前端信 ...
- “物联网开发实战”学习笔记-(二)手机控制智能电灯
"物联网开发实战"学习笔记-(二)手机控制智能电灯 如果搭建好硬件平台后,这一次我们的任务主要是调试好智能电灯,并且连接到腾讯云的物联网平台. 腾讯云物联网平台 腾讯物联网平台的优 ...
- 阿里云HaaS100物联网开发板学习笔记(六)做个智能灯---一个完整的开发例子
摘要:本篇文章将前期几个专题综合起来,基于阿里云HaaS100的新固件设计制作一个智能灯.这个智能灯由云平台.手机APP端和设备端组成,基本上涵盖了一个物联网小项目所需的主要步骤. 目录 1.在阿里云 ...
- 唐金州的Vue开发实战学习笔记(生态篇)
Vue开发实战学习笔记 Vuex Why Vuex How Vuex Vuex的核心概念和底层原理 Vuex的最佳实践 Vue Router Why Vue Router 路由类型及底层原理 Nuxt ...
- 阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来
摘要:无论是哪种开发板,要想开发特定的功能,必先从GPIO开始,HaaS100开发也是一样.如果仅仅利用HaaS100的联网功能,那简直是太浪费了.HaaS100拥有其他开发板所具备的所有的功能,比如 ...
- 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台
摘要:本篇文章讲解如何使用JavaScript"轻应用"连接阿里云物联网平台并上报一个数据.仍然延续前几篇文章的结构,从安装软件环境开始讲,以使零基础的同学看了本篇文章之后,也能够 ...
- 阿里云HaaS100物联网开发板学习笔记(三)轻应用初步--用js让小灯闪烁起来
摘要:能让JavaScript应用运行在haas100开发板上,这实在是太酷了,这种方式被阿里云称之为"轻应用".本文带各位从零开始,先了解啥是轻应用,然后搭建环境,再一步步将一个 ...
- HaaS600物联网开发板学习笔记(二)---轻应用方式让LED闪烁起来
摘要:轻应用开发非常方便快捷,gitee上的例程也都是基于HaaS600的,所以,拿HaaS600来逐个测试例程,学习轻应用开发和物联网应用是最合适的.本文介绍一下HaaS600如何使用轻应用来开发. ...
- 华清远见fs4412开发板学习笔记(五)
fs4412开发板学习笔记(五) 作业1: 输入10个整数,按从小到大的顺序输出(选择排序) 每轮排序在未排序的集合中找到(最小/最大),将找到的数与未排序的 第一个数交换位置. 5 4 3 2 1 ...
最新文章
- ios中图片不显示的问题
- “星链”或成美军未来作战理念新载体
- Linux下安装 Indy 到 Lazarus
- android 4.2 判断桌面快捷,Android 判断桌面是否快捷方式,不存在则创建
- python与vfp做桌面数据库_VFP数据库系统开发实例(附图)
- LeetCode 1500. Design a File Sharing System(哈希map+优先队列)
- three.js加入监控
- yy神曲url解析php_用PHP如何实现解析抖音无水印视频
- Verilog初级教程(6)Verilog模块与端口
- css3参考手册在线和下载
- 计算机三本院校大学排名,全国三本大学排名
- PHP工具箱无法启动Mysql问题
- windows添加hosts
- 小猫爬山题解(暴力解题)
- 单域安全评估以及加固方案
- 基于BP神经网络的英文字母识别
- lk中printf的实现
- C语言课程设计(2)-新生入学管理系统
- discuz和phpwind哪个好
- AD20常见的原理图报错和PCB设计规则