基于机智云的智能花盆2.0

目录

一、版本更新内容

二、总体设计

2.1整体模型

2.2硬件结构

2.3软件结构

三、硬件设计

3.1硬件资源布局

3.2主控芯片

3.2.1主控选型

3.2.2引脚配置

3.3数据采集部分

3.3.1土壤湿度传感器

3.3.2温度传感器

3.3.3水位传感器

3.3.4光照强度传感器

3.4执行部分

3.4.1补光灯

3.4.2电磁阀

3.5数据交互部分

3.5.1WiFi模块

3.5.2OLED模块

3.5.3CH340模块

四、软件设计

4.1驱动

4.1.1DS18B20驱动

4.1.2GY-30(BH1750)驱动

4.1.3OLED(SSD1306)驱动

4.2主控逻辑

4.3机智云协议

4.3.1数据格式

4.3.2数据上报

4.3.3下行控制

4.4Gizwits运作流程

五、装配与测试

六、存在问题与改进建议

6.1传感器数据异常

6.2运行日志

6.3外型改进

6.4传感器升级

6.5交互升级

6.6自建服务器


一、版本更新内容

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

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

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

4)搭建花盆 外壳 支架

5)增加自动模式

二、总体设计

2.1整体模型

总体设计框图

2.2硬件结构

硬件设计框图

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

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

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

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

2.3软件结构

软件部分结构图

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

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

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

三、硬件设计

3.1硬件资源布局

硬件资源布局

3.2主控芯片

3.2.1主控选型

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

芯片

CPU位宽

Flash

RAM

Pin

主频

价格

STM32F103C8

32

64K

20K

48

72MHZ

10.95

STM32F407ZG

32

1M

192K

144

168MHZ

39.55

AT89C51AC2

8

42KB

256Byet

44

40MHZ

36.64

Raspberry Pi3

64

-

1G

40

1.2GHZ

278.55

Arduino_uno_R3

8

32K

2K

14

16MHZ

138

3.2.2引脚配置

STM32Cube引脚分配
 

引脚分配

说明

PD0、PD1

启用外部晶振

PB15

DS18B20通讯脚

PA4

土壤湿度AD采集

PA5

水位AD采集

PB0、PB1

BH1750 模拟IIC通讯

PA2、PA3

ESP8266 UART2通讯

PA9、PA10

CH341 UART1调试接口

PB6、PB7

OLED 模拟IIC通讯

PB12

补光灯

PB13

电磁阀

PA0、PB2

重启与模式配置按键

3.3数据采集部分

3.3.1土壤湿度传感器

电阻式土壤湿度传感器

其原理图如下:

土壤湿度传感器原理图

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

3.3.2温度传感器

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

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光照强度传感器

GY-30(BH1750)模块实物图

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

3.4执行部分

3.4.1补光灯

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

光照波长与植物相对吸收率

LED光谱波段

光色

对植物的影响

300-400nm

紫色与紫外线

促进色素的形成

440-490nm

蓝色

使叶绿体活跃,促进光合作用

500-600nm

绿色及黄色

抑制叶绿体活动

600-700nm

橙红色

大大增强光合作用,促进植物生长

700-780nm

远红色

植物生长信号灯,调节开花等

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

3.4.2电磁阀

水泵与电磁阀实物图

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

3.5数据交互部分

3.5.1WiFi模块

ATK-ESP8266 的实物图

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

引脚编码

引脚说明

VCC

电源引脚, 3.3V – 5V

GND

地线引脚

TXD

模块串口发送引脚

RXD

模块串口接受引脚

RST

复位引脚,低电平有效

IO_0

控制脚,低电平烧写模式,高电平运行模式

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

特征

说明

用户配置

AT+指令集

工作模式

STA/AP/STA+AP模式

安全机制

WEP/WPA-PSK/WAP2-PSK

加密类型

WEP64/WEP128/TKIP/AES

通讯速率

110-921600bps(默认波特率115200)

TCP Client

5个

固件升级方式

本地串口或OTA远程升级

3.5.2OLED模块

0.96寸OLED显示屏

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

3.5.3CH340模块

CH340USB转TTL模块

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

四、软件设计

4.1驱动

4.1.1DS18B20驱动

4.1.2GY-30(BH1750)驱动

4.1.3OLED(SSD1306)驱动

暂未写博客,占坑。有时间我整理出来。

4.2主控逻辑

工作流程图

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

4.3机智云协议

4.3.1数据格式

Header

2B

Len

2B

Cmd

1B

Sn

1B

Flags

2B

Payload

xB

Checksum

1B

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.3.2数据上报

机智云协议-数据上报

4.3.3下行控制

机智云协议-下行控制

4.4Gizwits运作流程

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

五、装配与测试

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

智能花盆半成品
APP互动界面与实物图

 

视频地址:自制智能花盆

六、存在问题与改进建议

6.1传感器数据异常

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

6.2运行日志

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

6.3外型改进

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

6.4传感器升级

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

6.5交互升级

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

6.6自建服务器

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

 

MCU部分代码可在本人上传资源处下载

部分资料可在百度云下载 提取码: psea

智能云插座 使用机智云开源APP之前,需要先在机智云开发平台创建您自己的产品和应用。 开源App需要使用您申请的AppId、AppSecret以及您自己的产品ProductKey才能正常运行。 具体申请流程请参见:http://docs.gizwits.com/hc/。 上述信息申请好之后,在代码中请找到"your_app_id"、"your_app_secret"、"your_product_key"字符串做相应的替换。 Gizwits Power Socket Android Demo App XPGWifiSDK 版本号 1.6.1.15123015 功能介绍 这是一款使用XPGWifiSDK的开源代码示例APP,可以帮助开发者快速入手,使用XPGWifiSDK开发连接机智云的物联APP。该APP针对的是智能家电中的插座类产品。包括了以下几点插座常用功能: ▪ 插座电源的开关 ▪ 插座定时开关 ▪ 插座倒计时开关 ▪ 定时周重复 如果开发者希望开发的设备与以上功能类似,可参考或直接使用该APP进行修改进行快速开发自己的智能家电App。 以下功能是机智云开源App的几个通用功能,除UI有些许差异外,流程和代码都几乎一致: ▪ 机智云账户系统的注册、登陆、修改密码、注销等功能 ▪ 机智云设备管理系统的AirLink配置入网、SoftAP配置入网,设备与账号绑定、解绑定,修改设备别名等功能 ▪ 机智云设备的登陆,控制指令发送,状态接收,设备连接断开等功能 另外,因为该项目并没有相对应的实体硬件设备供开发者使用,因此还提供了扫描虚拟设备功能,通过扫描机智云实验室内相对应的虚拟设备,可进行设备的绑定和控制等功能。同时可免费申请gokit进行设备的配置入网和绑定等流程。 项目依赖和安装 ▪ XPGWifiSDK的jar包和支持库 登录机智云官方网站http://gizwits.com的开发者中心,下载并解压最新版本的SDK。 下载后,将解压后的目录拷贝到复制到 Android 项目 libs 目录即可。 ▪ Gokit设备 使用机智云开发的Gokit设备并烧写相对应的产品标识码,可以体验设备配置上线等功能。 ▪ 虚拟设备 使用机智云实验室的相对应虚拟设备,可以体验设备指令收发,状态的获取等功能。 项目工程结构 ▪ 包结构说明 com.gizwits.powersocket -智能云插座独有代码,包含控制部分和侧边栏部分 com.gizwits.powersocket.activity.control -智能云插座控制界面activity com.gizwits.powersocket.activity.slipbar -智能云插座侧边栏activity com.gizwits.framework -机智云设备开源APP框架,包含除控制界面Activity外的代码,暂时机智云实验室中的其他开源APP所用框架一致 com.gizwits.framework.activity -机智云设备开源APP框架相关activity com.gizwits.framework.adapter -机智云设备开源APP框架相关数据适配器 com.gizwits.framework.config -机智云设备开源APP框架配置类 com.gizwits.framework.entity -机智云设备开源APP框架实体类 com.gizwits.framework.sdk -机智云设备开源APP框架操作SDK相关类 com.gizwits.framework.utils -机智云设备开源APP框架工具类 com.gizwits.framework.widget -机智云设备开源APP框架自定义控件 com.gizwits.framework.XpgApplication -机智云设备开源APP框架自定义Application com.xpg.XXX -机智云通用开发API zxing -第三方二维码扫描控件 使用流程 ▪ 虚拟设备+app使用流程(体验指令发、状态获取等流程) 1.在机智云官网上注册并登录帐号 2.使用机智云实验室里面的智能云插座启动虚拟设备 3.在app上注册并登录帐号 4.通过扫描网页上的二维码添加虚拟设备 5.进入控制界面与虚拟设备进行交互 ▪ gokit+app使用流程(体验配置、绑定实体设备等流程) 1.免费申请gokit,http://gizwits.com/zh-cn/gokit 2.下载gokit开源代码并按说明替换为智能云插座的产品标识码 3.在app上注册并登录帐号 4.通过我要配置gokit按钮,使用Airlink或SoftAP模式配置gokit入网 5.绑定gokit 6.进入控制界面
智能浇水花盆是基于Arduino制作的自动浇水装置,可以解决长期出差或无法经常浇水的情况下,保持家里花草的水分供应问题。该装置使用了Arduino Nano作为控制板,湿度传感器用于监测花盆土壤的湿度,继电器用于控制水泵的开关,水泵用于供水给花盆。\[2\] 装置的工作原理很简单,当湿度传感器检测到花盆土壤的湿度下降到预设值时,继电器会通电导通水泵电机电路,水泵开始运行,为花盆提供水源。当土壤湿度达到设定的合适水平时,水泵会停止工作。\[2\]\[3\] 在使用过程中,你可以将四个土壤湿度传感器插入四个盆栽土壤中,并将对应的水泵水管放入水中。通过LCD1602显示屏可以实时显示盆栽的土壤湿度值。如果盆栽不缺水,显示屏的背景灯会关闭以节省电力。如果有盆栽缺水,显示屏的背景灯会亮起,水泵会根据土壤湿度的数值进行相应的抽水操作,以保持花盆的适宜湿度。\[3\] 这个智能浇水花盆的制作过程相对简单,所需的材料和部件也比较便宜。通过Arduino的编程和各个传感器的配合,可以实现自动浇水的功能,为你的花草提供持续的水源,解决了长期出差或无法经常浇水的问题。 #### 引用[.reference_title] - *1* *2* [基于Arduino的自动浇水](https://blog.csdn.net/weixin_45037820/article/details/90288847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Arduino DIY 电子自动浇花浇水系统](https://blog.csdn.net/m0_60012883/article/details/125947477)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值