完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、版本更新内容
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系列。
STM32Cube引脚分配
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灯补光的解决方案。 光照波长与植物相对吸收率
3.4.2电磁阀 水泵与电磁阀实物图 土壤湿度的补偿方面,若采用传统的水泵,则需要较大功率的输出,为我们的供电模块带来较大的压力,因而改用电磁阀与高水位势能做工的方式,减少控制部分的总功率。 3.5数据交互部分 3.5.1WiFi模块 ATK-ESP8266 的实物图 该模块接口较多,可支持IIC、PWM、GPIO 以及 ADC 等接口,可轻松实现数据透传。引脚描述如下所示:
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数据格式
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) 数据区会自动合并布尔和枚举变量,且有严格的顺序,不可任意改变 上传协议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 |
||||||
|
||||||
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1792 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1626 浏览 1 评论
1094 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
732 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1682 浏览 2 评论
1943浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
740浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
577浏览 3评论
600浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
562浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 06:11 , Processed in 0.625386 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号