基于机智云的智能花盆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.0_第1张图片 总体设计框图

2.2硬件结构

基于机智云的智能花盆2.0_第2张图片 硬件设计框图

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

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

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

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

2.3软件结构

基于机智云的智能花盆2.0_第3张图片 软件部分结构图

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

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

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

三、硬件设计

3.1硬件资源布局

基于机智云的智能花盆2.0_第4张图片 硬件资源布局

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引脚配置

基于机智云的智能花盆2.0_第5张图片 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土壤湿度传感器

基于机智云的智能花盆2.0_第6张图片 电阻式土壤湿度传感器

其原理图如下:

基于机智云的智能花盆2.0_第7张图片 土壤湿度传感器原理图

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

3.3.2温度传感器

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

基于机智云的智能花盆2.0_第8张图片 DS18B20引脚示意及实物图

其具有以下优点:

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

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

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

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

3.3.3水位传感器

基于机智云的智能花盆2.0_第9张图片 水位传感器实物图

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

3.3.4光照强度传感器

基于机智云的智能花盆2.0_第10张图片 GY-30(BH1750)模块实物图

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

3.4执行部分

3.4.1补光灯

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

基于机智云的智能花盆2.0_第11张图片 光照波长与植物相对吸收率

LED光谱波段

光色

对植物的影响

300-400nm

紫色与紫外线

促进色素的形成

440-490nm

蓝色

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

500-600nm

绿色及黄色

抑制叶绿体活动

600-700nm

橙红色

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

700-780nm

远红色

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

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

3.4.2电磁阀

基于机智云的智能花盆2.0_第12张图片 水泵与电磁阀实物图

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

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模块

基于机智云的智能花盆2.0_第13张图片 0.96寸OLED显示屏

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

3.5.3CH340模块

基于机智云的智能花盆2.0_第14张图片 CH340USB转TTL模块

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

四、软件设计

4.1驱动

4.1.1DS18B20驱动

4.1.2GY-30(BH1750)驱动

4.1.3OLED(SSD1306)驱动

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

4.2主控逻辑

基于机智云的智能花盆2.0_第15张图片 工作流程图

系统在上电后开始工作:首先完成的是各模块的初始化以及机智云协议初始化,随后在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) 数据区会自动合并布尔和枚举变量,且有严格的顺序,不可任意改变

基于机智云的智能花盆2.0_第16张图片

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

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

4.3.2数据上报

基于机智云的智能花盆2.0_第17张图片 机智云协议-数据上报

4.3.3下行控制

基于机智云的智能花盆2.0_第18张图片 机智云协议-下行控制

4.4Gizwits运作流程

基于机智云的智能花盆2.0_第19张图片

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

五、装配与测试

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

基于机智云的智能花盆2.0_第20张图片 智能花盆半成品
基于机智云的智能花盆2.0_第21张图片 APP互动界面与实物图

 

视频地址:自制智能花盆

六、存在问题与改进建议

6.1传感器数据异常

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

基于机智云的智能花盆2.0_第22张图片

6.2运行日志

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

基于机智云的智能花盆2.0_第23张图片

6.3外型改进

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

基于机智云的智能花盆2.0_第24张图片

6.4传感器升级

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

6.5交互升级

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

6.6自建服务器

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

 

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

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

你可能感兴趣的:(嵌入式,智能花盆,STM32,个人项目)