0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解智能花盆设计与实现了如何实现案例

9GxC_IoTMaker 来源:CSDN技术社区 作者:JYU_hsy 2021-05-02 13:53 次阅读

外出旅行,家里的花盆没人管,怎么办?忙于工作,经常忘记给花盆里浇水,导致植物经常死掉。..类似这样的情况,在生活中经常发生。有没有什么办法呢?当花盆植物缺水的时候,能够自己浇水,那就再好不过了。今天我们就来做一个人工智能花盆吧!

结合家庭盆栽因不可控因素疏于打理的现实及期望植株健康成长的需求,提出一款由感知模块,交互模块,执行模块,电源模块以及微处理器模块构成的智能花盆。该花盆通过传感器采集植物状态数据,利用ESP8266发送至云平台,使得在线检测和云端控制成为可能;并通过继电器驱动电磁阀与补光灯,实现智能灌溉与自动补光。

主要使用的硬件STM32F103C8、电阻式土壤湿度传感器温度传感器DS18B20、光照强度传感器 GY-3-(BH1750)、补光灯、WiFi模块ESP8266、OLED、串口调试模块 CH340

一、版本更新内容

1)增加传感器:光照强度传感器GY-30(BH1750)

2)增加交互模块:0.96寸OLED(SSD1306)

3)执行部分:水泵更换为电磁阀、增加LED补光灯(红&蓝)

4)搭建花盆外壳支架

5)增加自动模式

二、总体设计

2.1整体模型

7b8ec886-9bb4-11eb-8b86-12bb97331649.png

2.2硬件结构

7baeaec6-9bb4-11eb-8b86-12bb97331649.png

1)STM32F103最小系统。包括微处理器、带电容稳压的电源接口、复位电路、无源晶振与起振电路一起组成的时钟源以及调试接口等构成最小系统。

2)环境输入检测。主要包括DS18B20温度检测部分、内置ADC转换的数字式光照强度检测部分和使用AD数据采集的土壤湿度检和水位检测部分。

3)执行部分主要包括电磁阀与基于植物光谱吸收峰值的蓝红LED补光灯等继电器驱动部分。

4)数据交互。主要包括MCU 与 ESP8266 的网络通信部分、方便用户查看数据的OLED部分以及调试过程中用到的USB转TTL模块。

2.3软件结构

7bc46a54-9bb4-11eb-8b86-12bb97331649.png

为方便实现MCU与硬件的通讯引入驱动层负责实现底层硬件支持的通讯协议,并为上层提供方便使用的函数调用接口。主要包括基于“1-Wire”协议的DS18B20驱动程序、基于HAL库的USART 驱动程序、与SSD1306通讯的OLED驱动程序以及数字式光照强度的BH1750驱动程序等。其中 I/O 驱动主要实现了STM32F103C8T6微处理器GPIO引脚的定义和初始化;UART除”printf”函数重定义到串口外还须与ESP8266的通讯;剩余的该部分则是温度、土壤湿度、水位传感器的驱动程序。

执行层通过调用驱动层和机智云协议层提供的函数调用接口来实现智能花盆软件的逻辑控制。它包括初始化部分、数据扫描、上行下行通讯、自动化控制等部分。

网络层实现将数据封装上传、数据包解析等工作。

三、硬件设计

3.1硬件资源布局

7bd957fc-9bb4-11eb-8b86-12bb97331649.png

3.2主控芯片

3.2.1主控选型

结合当前接触过的芯片以及对市场的浅薄了解,列举了意法半导体(ST)的STM系列、意大利Massimo Banzi的Arduino、AT89C51以及微型电脑Raspberry Pi作比较。最终选用STM32F103C8系列。

7bf6baf4-9bb4-11eb-8b86-12bb97331649.png

3.2.2 引脚配置

7c091f78-9bb4-11eb-8b86-12bb97331649.png

7c2065f2-9bb4-11eb-8b86-12bb97331649.png

3.3数据采集部分

3.3.1土壤湿度传感器

其原理图如下:

7c59c3ce-9bb4-11eb-8b86-12bb97331649.png

该模块主要利用三极管的电流放大原理。土壤中存在水分时形成导体使得三极管的基极B与电源的VCC导通,这时在三极管的基极B和发射极E之间将产生电流,集电极C和发射极E之间则产生以一定倍数放大的电流,经发射极E电阻产生较大压降,送入A/D转换电路。

3.3.2温度传感器

选用DALLAS公司推出的一种使用l-Wire通讯的数字式温度传感器DS18B20。

7c65978a-9bb4-11eb-8b86-12bb97331649.png

DS18B20引脚示意及实物图

其具有以下优点:

1)DS18B20 温度传感器的工作电压为+3.0V ~ +5.5V,无需电压转换,可直接用于市面上大多数开发板;

2)接口简单,1-Wire 总线结构简洁,只需一根线即可进行通讯,有效减少硬件开销;

3)温度测量范围广,最低可测得-55℃,最高可测得125℃,最高精度可达 0.0625℃;

4)自带 EEPROM开发者设定的采集分辨率以及报警温度信息都将存储在其中,掉电重启后依然保存相应配置。

3.3.3水位传感器

本文采用的是水位传感器/雨滴检测传感器Water Sensor,其原理与土壤湿度传感器相同。

3.3.4光照强度传感器

市面上可用的光照强度检测模块主要分为两种,一种是利用光敏电阻获得光照强度的模拟信号输出,该传感器价格最为低廉,但需要自己构建光照强度与模拟信号直接的对应公式。另一为内置ADC转换的数字式光照强度传感器,我们采用的就是该类型传感器---BH1750。其不区分环境光源,可忽略复杂计数与标定。利用内置16bit的AD转换电路,直接输出0 ~ 65535lx。

3.4执行部分

3.4.1补光灯

植物的生长离不开阳光,若长期缺乏光照则会出现生长缓慢,叶片小而色淡,茎细长不开花等问题。为了解决以上困扰同时避免花盆的频繁搬动,我们采用LED灯补光的解决方案。

7d00778c-9bb4-11eb-8b86-12bb97331649.png

7d28403c-9bb4-11eb-8b86-12bb97331649.png

结合常见LED光谱波段表及植物吸收的光谱,采用红:蓝 = 2:1的LED组合灯带。

3.4.2电磁阀

土壤湿度的补偿方面,若采用传统的水泵,则需要较大功率的输出,为我们的供电模块带来较大的压力,因而改用电磁阀与高水位势能做工的方式,减少控制部分的总功率。

3.5数据交互部分

3.5.1WiFi模块

该模块接口较多,可支持IIC、PWM、GPIO 以及 ADC 等接口,可轻松实现数据透传。引脚描述如下所示:

7d6510f2-9bb4-11eb-8b86-12bb97331649.png

该ESP8266模块的工作频段为全球共用的2.4GHz,信号发射功率仅为 15dbm,其主要特性如下表所示:

7d7007c8-9bb4-11eb-8b86-12bb97331649.png

3.5.2OLED模块

增加该模块的初衷为1.0版本的交互方式较少,若不打开APP查看,则无法获取花盆实时数据。因而添加该模块,目前仅作数据显示使用,尚无菜单与按键等互动。

简单五步,实现串口屏接入机智云【广州大彩物联网串口屏】

3.5.3CH340模块

该模块主要用于串口调试。

四、软件设计

4.1驱动

4.1.1DS18B20驱动

4.1.2GY-30(BH1750)驱动

4.1.3OLED(SSD1306)驱动

《此处文字、代码所占篇幅较多,需要跳转链接,建议或搜索 智能花盆2.0驱动,或查看原文》

4.2主控逻辑

7dbbcad2-9bb4-11eb-8b86-12bb97331649.png

系统在上电后开始工作:首先完成的是各模块的初始化以及机智云协议初始化,随后在OLED上显示开机动画,ESP8266开启机智云一键配置。继而进入循环检测传感器数据,并将数据发送至OLED显示;随后进行模式判断,实现自动化智能化。为避免频繁的数据上传导致APP端控制命令冲突,在数据上传前,需获取计数器的值,实现非阻塞的延时上传。最后检测是否有云端控制命令,如有则进行对应的处理。在步入下一循环之前,须检测是否系统异常,如存在异常则结束工作,如无异常则开始下一次循环。

4.3机智云协议

4.3.1数据格式

7dd88d52-9bb4-11eb-8b86-12bb97331649.png

1) 包头(header)固定为0xFFFF;

2) 长度(len)是指从cmd 开始到整个数据包结束所占用的字节数;

3) 命令字(cmd)表示具体的命令含义,详见协议举例;

4) 消息序号(sn)由发送方给出,接收方响应命令时需把消息序号返回给发送方;

5) 标志位(flag),本产品填写默认0;

6) payload(p0数据区),详细参见p0 数据区约定;

7) 检验和(checksum)的计算方式为从len~DATA,按字节求和;

8) 所有发送的命令都带有确认,如在200 毫秒内没有收到接收方的响应,发送方;应重发,最多重发3 次;

9) 多于一个字节的整型数字以大端字节序编码(网络字节序);

“p0 数据区约定”有如下功能:

1) WiFi模块向MCU发送控制命令时携带p0 命令和命令标志位以及可写数据区

2) MCU主动发送状态时或者回复模块的状态查询时携带p0命令和完整数据区

3) 数据区会自动合并布尔和枚举变量,且有严格的顺序,不可任意改变

7decd230-9bb4-11eb-8b86-12bb97331649.png

上传协议P0区:action(1B) + dev_status(11B) ;

下达协议p0区:action(1B) + attr_flags(1B) + attr_vals(6B)

4.3.2数据上报

7e1deb36-9bb4-11eb-8b86-12bb97331649.png

4.3.3下行控制

7e29c6d6-9bb4-11eb-8b86-12bb97331649.png

4.4Gizwits运作流程

7e57263a-9bb4-11eb-8b86-12bb97331649.png

起始工作是对外设、用户和协议等的初始化。当 WiFi 通过串口设备配置并成功连接云平台后,ESP8266将不断收到来自云端的数据点和状态信息。这些信息在接收完成后,会以GAgent协议帧的方式传递给主控芯片,而主控芯片再则将其放入缓冲区,之后进行抓包解析,并进行事件的处理,也就是下行的动作执行。如果再有上行数据采集,主控芯片将收到到数据处理为协议帧发送给WiFi 设备,再由WiFi负责将数据传输到服务器。

五、装配与测试

本文使用的方法是先将各模块调通,再组合在一起,组合时电源问题凹显,于是买了一个多路电源模块。外型部分目前仅用角钢切割组成支架,算是半成品吧。

7ea71a3c-9bb4-11eb-8b86-12bb97331649.png

APP互动界面与实物图

7eca0ace-9bb4-11eb-8b86-12bb97331649.png

六、存在问题与改进建议

6.1传感器数据异常

解决办法,数据采集后经滤波处理,立Flag,近期出。

80eb0f1a-9bb4-11eb-8b86-12bb97331649.png

6.2运行日志

改用SD卡存储设备运行日志

811197b6-9bb4-11eb-8b86-12bb97331649.png

6.3外型改进

智能花盆支架---》将设备整合到花盆内,为此应该要自己画PCB.。.

812c1e2e-9bb4-11eb-8b86-12bb97331649.png

6.4传感器升级

持续优化传感器部分,例如采用博世BME280环境温湿度大气压三合一传感器替代DS18B20实现数据采集宽度上的升级。

6.5交互升级

未来可增加按键实现OLED菜单选择;增加蜂鸣器实现报警提醒,增加LED状态指示灯提示供电状态与工作模式。

6.6自建服务器

使用自建服务器,数据库存储常见植株的最适宜生长环境,为自动化控制提供更智能的选择。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2545

    文章

    50439

    浏览量

    750972
  • WIFI
    +关注

    关注

    81

    文章

    5279

    浏览量

    203058
  • 云端
    +关注

    关注

    0

    文章

    116

    浏览量

    16835
  • STM32F103C8
    +关注

    关注

    1

    文章

    23

    浏览量

    8064
  • 智能花盆
    +关注

    关注

    1

    文章

    6

    浏览量

    2168

原文标题:【开源案例】智能花盆2.0,实现了智能灌溉与自动补光

文章出处:【微信号:IoTMaker,微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CNC智能工厂如何实现

    在当今制造业的快速发展中,CNC(计算机数值控制)智能工厂已成为提升生产效率、降低成本、增强市场竞争力的关键所在。CNC智能工厂通过集成现代信息技术和先进制造技术,实现了从原材料加工到成品产出的高度
    的头像 发表于 10-15 14:29 122次阅读

    利用Tl的智能高端开关实现SPI通信

    电子发烧友网站提供《利用Tl的智能高端开关实现SPI通信.pdf》资料免费下载
    发表于 09-24 09:28 0次下载
    利用Tl的<b class='flag-5'>智能</b>高端开关<b class='flag-5'>实现</b>SPI通信

    LwIP协议栈源码详解—TCP/IP协议的实现

    电子发烧友网站提供《LwIP协议栈源码详解—TCP/IP协议的实现.pdf》资料免费下载
    发表于 07-03 11:22 3次下载

    实现智能制造的重要条件是什么

    智能制造是工业4.0的核心,它通过高度集成的信息技术和自动化技术,实现生产过程的智能化、自动化和网络化。实现智能制造的重要条件有很多,以下是
    的头像 发表于 06-07 15:42 1450次阅读

    Node-RED实现电表数据采集并上云

    容器实现边缘采集”。前文指引:《【教程】图文详解!Docker容器实现边缘采集》首先需要搭建Node-RED运行环境,可以参考以往案例,也可以直接百度搜索,接下来
    的头像 发表于 06-07 08:21 2677次阅读
    Node-RED<b class='flag-5'>实现</b>电表数据采集并上云

    基于 STM32 和机智云智能门锁的实现

    关键词:智能门锁、STM32、机智云、APP目录1、功能实现2、软、硬件系统设计3、系统调试4、结论1功能实现本系统基于STM32和机智云设计了一款新型智能门锁。该系统主要由STM32
    的头像 发表于 03-23 08:09 1461次阅读
    基于 STM32 和机智云<b class='flag-5'>智能</b>门锁的<b class='flag-5'>实现</b>

    通过工业智能网关实现设备智能运维管理

    随着科技的不断发展,工业领域也在不断地追求创新和进步。在当今的工业生产中,设备的运维管理是一项至关重要的工作。而工业智能网关的出现,为实现设备智能运维管理提供了全新的解决方案。 传统的设备运维往往
    的头像 发表于 03-15 13:44 314次阅读
    通过工业<b class='flag-5'>智能</b>网关<b class='flag-5'>实现</b>设备<b class='flag-5'>智能</b>运维管理

    辊压机轴磨损了如何维修

    电子发烧友网站提供《辊压机轴磨损了如何维修.docx》资料免费下载
    发表于 03-05 09:17 0次下载

    基于GSM的远程家庭智能报警系统的设计及实现方法

    电子发烧友网站提供《基于GSM的远程家庭智能报警系统的设计及实现方法.rar》资料免费下载
    发表于 03-04 09:38 4次下载

    工业智能网关实现的功能是

    工业智能网关是将物联网技术与工业自动化技术相结合的设备,它通过连接不同的设备和系统,实现数据的采集、处理和传输,将现场设备和云端平台进行深度融合,提供实时监测、分析和控制的能力,进而实现工业生产
    的头像 发表于 01-12 15:17 476次阅读

    基于工业大数据和物联网的智能工厂如何实现

    在中国制造2025及工业4.0技术的加持下,离散制造业的流程工业实现生产设备网络化、生产数据可视化、生产现场无人化等现金数据应用,做到横向与纵向的集成,实现边缘到云端的数据通信,实现优质、高效、低耗等生产,从而建立基于工业大数据
    的头像 发表于 12-25 15:32 528次阅读

    详解从均值滤波到非局部均值滤波算法的原理及实现方式

    将再啰嗦一次,详解从均值滤波到非局部均值滤波算法的原理及实现方式。 细数主要的2D降噪算法,如下图所示,从最基本的均值滤波到相对最好的BM3D降噪,本文将尽量用最同属的语言,详解这些算法的实现
    的头像 发表于 12-19 16:30 1064次阅读
    <b class='flag-5'>详解</b>从均值滤波到非局部均值滤波算法的原理及<b class='flag-5'>实现</b>方式

    智能传感技术是实现智能制造的关键

    智能传感技术是实现智能制造的关键
    的头像 发表于 11-29 15:53 615次阅读
    <b class='flag-5'>智能</b>传感技术是<b class='flag-5'>实现</b><b class='flag-5'>智能</b>制造的关键

    基于AVR单片机的智能充电器的设计与实现

    电子发烧友网站提供《基于AVR单片机的智能充电器的设计与实现.pdf》资料免费下载
    发表于 11-17 15:09 4次下载
    基于AVR单片机的<b class='flag-5'>智能</b>充电器的设计与<b class='flag-5'>实现</b>

    电阻上下拉功能实现原理详解

    作为电路中最常见的电子元器件之一,电阻可以实现限流、隔离、上下拉等不同功能。以上拉为例,IIC通信接口SDA和SCLK都需要通过电阻实现上拉输入/输出。那么,电阻是如何实现上下拉功能的呢?
    的头像 发表于 11-13 18:23 1644次阅读
    电阻上下拉功能<b class='flag-5'>实现</b>原理<b class='flag-5'>详解</b>