自动浇花这个场景,很明显是为了自动控制水泵,及时给植物补充水分。同时用户的目的并不只是浇水而已,他们真正想要的,是看到自己养的植物健康地生长。
植物生长需要的条件热带的植物无法忍受低温和干燥的环境条件,而温带植物遇到高温,也可能出现热衰竭的现象,所以环境的温度和湿度最好也能监控。
光照条件植物进行光合作用,所以光照强度需要监控。
空气质量对植物的生长来说也很重要,比如二氧化碳是否充足,有害气体是否超标等。
所以综合来看,我们需要监控的指标包括土壤湿度、环境温湿度和光照强度。
相应的传感器可以确定是土壤湿度传感器、环境温湿度传感器和光照传感器。
下面,我总结一下自动浇花器需要用到的材料:
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 Pin class Relay(): ON = 0 OFF = 1 def __init__(self, pin): self.relaypin = Pin(pin, Pin.OUT) self.relaypin.on() self.last_status = self.OFF def set_state(self, state): tmp_state = self.ON if state==1 else self.OFF self.relaypin.value(tmp_state) self.last_status = tmp_state def state(self): return self.last_status def on(self): self.relaypin.value(self.ON) self.last_status = self.ON def off(self): self.relaypin.value(self.OFF) self.last_status = self.OFF 12345678910111213141516171819202122232425262728 土壤湿度传感器
土壤湿度传感器。它会根据不同的电阻值,输出变化的模拟信息,数值越小,说明越干燥。使用的时候,你需要把它完全插入花盆的土壤中。
参考代码(它连接的管脚是 GPIO34):
from machine import ADC from machine import Pin class 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) 123456789101112 环境温湿度传感器
环境温湿度传感器是基于 DHT11 实现的,并且使用的是单总线的连接方式,我们可以直接使用。
参考代码(它连接的管脚是 GPIO14):
import dht from machine import Pin class EnvSensor(): def __init__(self, pin): self.sensor = dht.DHT11(Pin(pin)) def value(self): self.sensor.measure() return (self.sensor.temperature(), self.sensor.humidity()) 1234567891011 光照传感器
光照传感器
参考代码(它连接的管脚是 GPIO36):
from machine import ADC from machine import Pin class 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 123456789101112 完成联网开发
将设备接入腾讯云物联网平台。可以参考前面的分享。
自动浇花器的物模型 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": [] } 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
在测量过程中,我们可以使用多个土壤传感器进行测量,然后根据多个测量值来计算出更可靠的土壤水分含量。这个计算过程就是多传感器融合。
多传感器融合最关键的地方,不是多个传感器的硬件连接或数据收集,而是融合算法,也就是怎么进行多个不同维度的参数的处理,从而得到一个相对准确的、有意义的数据信息。
这个就是物联网的应用层的工作模块,根据传感器反馈回来的大量的数据通过训练构建模型,这个过程其实体现了人工智能与物联网的融合点。
学习笔记总结自‘物联网开发实战’–郭朝斌
–笔记只用于学习交流,请不要用于商业用途。
相关知识
基于物联网的智能盆栽自动喷灌系统
《Python机器学习开发实战》电子书在线阅读
智慧农业物联网系统建设方案
农业物联网
【IoT开发】基于机智云物联网的智能浇花教程
【物联网初探】
物联网农业病虫害监测预警系统设计,智慧农业物联网平台设备
物联网农业信息化
物联网与现代农业
物联网自动虫情信息系统
网址: “物联网开发实战”学习笔记 https://m.huajiangbk.com/newsview513118.html
上一篇: 农田土壤湿度分布式监控系统设计与 |
下一篇: 基于STM32的多点温湿度无线传 |