查看:
27684
回复: 37 |
参赛作品《智能浇花系统》(已完成)
|
|
发表于2017-06-22 23:24:13
|
显示全部楼层
1#
电梯直达
【报名阶段需要填写的内容】 1. 参赛者姓名(必填项):李哲哲2. 单位或学校名称(必填项):北京凌阳爱普科技有限公司 3. 当前职务或职称(必填项):系统工程师 4. 参赛作品的名字(必填项):智能浇花系统 5. 简要陈述您的idea和作品(必填项):本人喜欢养花,但是经常出差在外不能即使浇花,经常导致花草干枯。于是本人就想着做这样一个系统,在我出差的时候,这个系统能帮我浇水。 6. 拟用到的立创商城在售物料(必填项):STM32F103 7. 拟用到的非立创商城物料或其它补充(必填项):小水泵,软管,塑料瓶,LCD12864 【作品正式发表(报名成功后进入设计阶段)需要填写的内容】 一、作品简介 例如,可以包括但不局限于以下内容: 1.作品的整机外观图片或焊接组装好的PCBA图片; 作品完整外形图片(全新的第二代浇花系统) 专门制作了APP logo
手机端APP
云端湿度曲线:根据十几天观察的经验值,当白天湿度小于70%的时候就需要浇水了。 晒一张家花照片
2.作品的研究背景、目的和功能、市场应用前景; 研究背景:笔者两年前用STM8S做过一个定时浇花的系统,当时做的比较简陋,基本功能就是完成定时浇花的功能。看下图就知道了,是不是比较low啊。不过我告诉你,有一次出差24天回来发现花的长势依然不错,对于喜欢花草的主人来说当然是欣喜万分。 但是,后来发现如果出现连续阴天的情况,定时浇花系统就会出现严重积水现象。这样对植物的生长来说有些不合理,所以笔者这次决定做一次升级工作。让这个系统更加人性化(植性化)! 下图是第一代,确实low了点。。。 目的和功能: 这次呢会在上一次的基础上将MCU更换为STM32,继电器控制方式更换为电机驱动,给整套系统添加传感器和智能硬件。 最终能够实现以下功能 (1)远程实时查看土壤温湿度情况。 (2)远程手机端控制浇水开关实现浇水功能。 (3)湿度过低报警功能。 3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现? 本系统最大的特点就是在控制硬件上添加了一块wifi模块,然后结合云服务,实现远程控制浇花。这对于经常需要出差,但有偏爱花草的人来说,无疑是一种两全的方式。 二、系统构架图 用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。 三、硬件部分的描述 1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的; (1) 原理图如下
其中WIFI模块连接在UART (2)PCB已经回来,开始焊接了,有一些电路为以后其他开发用,暂时把需要的器件先焊接上。
(3)买了一个温湿度传感器,不过好像不能埋在土里面。资金有限,只能放在土壤附近试试。
(4)基本功能完成,开始进入测试阶段
2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。 本系统《智能浇花系统》。 实现原理:本系统硬件主要部件由STM32单片机,WiFi模块,传感器,电机驱动四部分组成。 其中STM32是整套系统的主控制器,负责整个系统的工作。 WiFi模块内部烧录好能够连接云端的SDK,这样能够保证系统正常的连接到云端,顺利的将数据上传到云,并且WiFi模块能够接受远程设备推送来的消息,然后将其传给STM32,从而使整套系统可以与云端对话。 传感器是本套系统的触觉系统,能够感知花瓶土壤表面的温湿度信息。 电机驱动是本套系统的执行部分,负责完成远程的控制命令。 将这几部分结合到一起就实现了一个简单的智能系统。 工作过程: (1)系统定时3S上传一次温度和湿度信息到云端,通过远程手机客户端便可以查看花瓶当前的温湿度情况。 (2)系统可以随时接手远程(手机客户端)发送来的控制命令,并且执行相应的命令。 (3)结合云端的阈值报警功能,可以设置湿度低于某一值之后通过邮件或者短信等形式告知用户,然后用户在决策要不要浇花,如果需要就可以打开手机客户端,立刻给心爱的花草浇水了。 四、材料清单(BOM列表) 列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。 如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。 主要器件STM32F103RBT6. 订单编号:http://www.szlcsc.com/member/orderDetails_826465.html 五、软件部分的描述(选填) 如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)。 定时器事件处理回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { static uint32_t eventTimeCount; //定时事件计数器 static uint32_t motorTimeCount;//监控事件计数器 static char ledState; //LED灯状态翻转 //tim1负责定时上传事件 if(htim->Instance == htim1.Instance) { eventTimeCount++; if(eventTimeCount >3000) { eventTimeCount = 0; eventIsRun = 1; //开始执行相应任务 } } //tim2负责浇水时间管理和液晶屏时间显示 if(htim->Instance == htim2.Instance) { motorTimeCount++; if(motorTimeCount >1000) { motorTimeCount =0; //翻转LED灯状态 ledState = ~ledState; if(ledState) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET); if(flowerFlag)//是否有浇水命令,若有命令,启动浇水 { start_flower(); flowerCnt++; } if(flowerCnt > 4)//浇水时间到 { stop_flower(); flowerCnt = 0; flowerFlag = 0; } updateTimeCnt++; if(updateTimeCnt>10)//超时,则更新液晶屏时间 { updateLcdIsRun = 1; updateTimeCnt=0; } } } } 六、作品演示 请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得5分,具体详见活动规则。 https://v.qq.com/x/page/i05390fm9s4.html
七、总结 例如您在完成该作品过程中的一些体会、碰到的技术问题或调试经验、作品的未来规划,及对我们主办方的建议和意见等。 未来规划: (1)这次用的传感器只能检测土壤表面的湿度,以此判断土壤内部的湿度情况,有些不精确,将来会寻找一种更合适的传感器增加系统的精确度。 (2)这次的APP写的过于简单,将来等Android编程更进一步的时候,在完善一下手机端的应用程序。 (3)太阳花对太阳的依赖非常强,最好的方式是,将来能够定时的给花瓶旋转方向。 碰到的问题: (1)刚开始设计的是一个开水泵和关水泵两个按钮,但是由于控制过程中会有网络延迟,这样就会导致水量过多问题出现,并且如果忘记按关闭按钮的话,就会导致系统水源耗尽,花盆水量过剩。 解决方案:固定浇水时间,用户只需要按下一次浇水按钮,系统就会自动打开水泵,固定水量之后自动关闭水泵。 (2)青莲云给的SDK中没有重启wifi模块的软件命令,网络正常的情况下,有时候会出现WiFi模块掉线之后再也连接不上的情况。 解决方案:测试发现这种情况下只有通过重启wifi模块,才能正常连接网络,于是将WiFi模块的复位引脚拉到了单片机的IO口上(飞线处理),通过硬复位的方式重启WiFi模块。 (3)什么样的湿度浇水比较合适呢? 解决方案:实测室内夏天的湿度在60%-75%左右,而花瓶里面的土壤如果水量充足的话,夜间湿度应该在95%以上。根据云端的曲线分析,得出简单的结论,如果夜间的湿度小于95%,白天温度最高时湿度小于75%,都说明需要浇水了。如果突然表面的湿度已经快接近室内的湿度,那么说明土壤已经严重缺水了。根据此方法可以简答的判断什么样的湿度可以去浇水。 |
|
发表于2017-08-24 14:41:37
|
显示全部楼层
29#
楼主,换成喷头会更好点。
|
|