收藏官网首页
查看: 17386|回复: 22

【开源】植物宝:懒人养花详细制作过程

1

主题

1

帖子

13

积分

新手上路

Rank: 1

积分
13
跳转到指定楼层
楼主
发表于 2015-10-26 16:43:43 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
校园创客福利
本帖最后由 Genius 于 2016-8-1 09:51 编辑

Hi,大家好,我是“杨门虎将2号“,之所以还有2号,是因为之前发参赛帖的一号注册的邮箱被盗了,盗号的真是太坑爹啊!!!
不过还好,我重新杀回来了!在这里放上”懒人养花平台“的制作过程,和大家一起探索分享。

————————————————————————————————————————————————————

一、项目介绍
       这个项目是因为参加机智云的植物宝比赛应运而生的,这个比赛大家应该都清楚吧,先附上链接【军令状】机友大战植物宝
       因为我比较懒,我家里养了不少植物,但经常忘记浇水施肥,而且如果我们出门在外就无法对植物管理照顾了,正好利用机智云这个平台,借着比赛的契机,这个项目就诞生了。我在开发这个项目的时候,主要关注的就是要让人偷懒才行,所以项目里面有自动养花这一项,而并不只是可以远程来浇水等等。
       这个项目的大体思路是这样的:
       1、gokit用来做个网关或者路由或者主机之类的角色,具体的功能由从机实现。好处是gokit开发板接口都被占用,能用的较少,控制较多的模块会力不从心,而做为主机却能一机控制很多从机,只用来通讯即可,从机也可以实现对植物的个性化控制。
       2、 从机首先实现基本的土壤监控,而后配以其他各种懒人自动养花的功能。
       3、自动遮阳——花草喜阴喜阳习性不同,根据个性化设置,用光线传感器探测,而后控制电机拉动窗帘或者遮阳网进行遮阳或者照光。
       4、自动浇水——根据土壤湿度和环境温度以及时间,控制水泵自动浇水(花草不宜在中午高温时间浇水),还可以附加喷雾,花草的叶片可   以被洗净,更利于光合作用。肥料可以溶解到水中,就能省去施肥了。
       5、夜晚补光——花草一般在夜晚只进行呼吸作用,要想它们长的更快就要补光,在夜晚可以手机控制或者自动补光。对于绿色植物一般补红光和蓝紫光(绿色素吸收强烈),对于其他颜色的植物,只要不补它们叶片颜色的光即可。
       6、旋转光照(可选)——花草有趋光性,长时间一侧照光可能会长歪不好看,在花盆底下增加旋转底座每半小时旋转1/4圈实现均匀光照。
       上面的思路在这个项目里面有所改动,比如,对于每一项个性化控制均增加了自动手动选择,既可以远程手动控制,又可以自动控制,而且增加了一项时间控制。最后一条旋转光照并没有实现,因为时间不大够了,而且当时资金有限,说白了就是没钱了。。。

二、制作过程
1、程序的编写与注意事项
       I、下位机的程序编写
           这个项目的构想的主要功能是由下位机实现的,所以下位机的程序是自己要实现的功能的各种函数,以及和gokit之间的通讯。在这里要注意要预留出一些比较方便修改的常量或者函数之类的,因为在调试阶段一遍一遍修改参量是很麻烦的事情,还有就是注意和gokit之间通讯的时候要按照自己约定的方式,否则很容易出错。
      II、上位机gokit程序编写
           gokit才是我们"懒人养花平台"的重点,它主要承担的任务就是通信,包括主机从机之间的通信和gokit与网络之间的通信。论坛上有STM32底板的详细教程与代码解析,但是并没有arduino版本的,所以我就详细的介绍一下Arduino底板的通信协议和代码。
           按照论坛教程上步骤,先在云端设好数据点,然后生成通讯协议,协议里面的会给出各个数据点的标志位和值等等。然后在论坛上下载微信宠物屋的Arduino代码,我们要做的就是对它进行修改。
           能修改的地方很有限,首先

这个PRODUCT_KEY是要修改成自己的才行,这个和教程里一样
其次

这里的两个结构类型的数据就是自己要设置的各种数据点
在_status_writable中第一个数据是控制标志,要根据云端系统生成的数据通信协议来进行控制
然后就可以修改控制部分,来达到自己想要的目的

这个 CmdSendMcuP0(uint8_t *buf)函数中主要就是实现读取云端数据进行控制的功能

这里的if((m_w2m_controlMcu.status_w.cmd_byte & 0x04) == 0x04)即是在判断控制位,以进行下一步操作。
        III、上下位机的通讯
              就像我之前说的,两个机器通讯要有一定的协议,而采用什么模块通讯就不是太重要了,我用的是蓝牙通讯,所以我是以字符作为控制命令的,这样简单而且不容易出错。但是要注意一点的是,在gokit的程序中,串口以及被占用,所以我是用了两个数字口作为虚拟串口,但是在原程序中已经有了虚拟的串口,所以在程序中要注意使用虚拟串口的时候要进行监听。


2、硬件的搭建
硬件清单
1、gokit一块及5V1A电源一个
2、土壤传感模块一个
3、光线探测模块一个
4、ULN2003步进电机控制模块一个
5、12V5线4相步进电机一个
6、12V直流水泵一个软管两条底座一个滤网一个
7、DS1302时钟模块一个
8、继电器一个
9、HC-05蓝牙两个
10、12V2A电源一个
11、arduino UNO或者mini或者Nano一个
12、3W RGB LED一个
13、丝杆和小帘子一个
14、水桶一个
15、洞洞板一块,电线若干
16、三脚架两个
17、点击支架一个,窗帘支架一个

这里有几点要注意
1、接线一定不能接反,数据线要和程序里的设定对应。
2、这里涉及的电子元件很多,在接电源的时候最好能独立供电,均从Arduino上供可能导致电压不足,整个系统崩溃。
3、项目里有电有水,一定要注意安全!!!
4、在选择遮阳帘的时候用了三脚架,其实可以自己随便找架子。

现在上一些硬件的图片
总体图

三脚架支架



步进电机及支架

窗帘支架

gokit及蓝牙

水壶

水泵

时钟模块

继电器

补光LED

步进电机驱动模块



三、发现的问题
在gokit程序中,在protocol.cpp中的Check_Status函数中如果加入稍微有一点点循环的语句,就会致使wifi连接不上,这个问题相当严重

还有就是wifi信号一定要强,有时候会不稳定。

这里上个视频懒人养花平台视频

四、个人体会
这是我第一次接触gokit之类的云平台,而且是第一次用wifi模块,第一次设计制作这么复杂的一套系统,从这次比赛中,我学会了很多东西,不仅仅是技术上的东西,还有一个人彻夜写代码、苦逼的调试等经历。这对我们学生来说是一次宝贵的经历,能参加这次比赛也是难得的机会,当然,有了奖金以后我就不会因为资金不足而做不出自己想做的东西了。还有要提的就是,机智云真的很好用!!gokit或许还存在不少问题,而且前几天3代也出来了,应该改进了不少,但是机智云这个云平台真的是很好用的一个平台,而且在云端还可以进行数据的统计,这样贴心的功能实在是赞!

希望以后机智云能多举办这样的比赛,提个建议就是比赛的初期最好能提供一些硬件支持,比如交一部分押金换取相关的硬件,待项目结束后返还押金等等,这样的活动会吸引不少像我这样的穷学生参加。还有就是可以搞自己命题创意的比赛,不要局限在某个窄圈子里,这样会得到更多的新点子和好点子,会更能最大程度的发挥机智云的作用。

最后感谢机智云能提供这样的一个机会和平台供我们比赛发挥想象力和创造力,还要感谢机智云的奖金

懒人养花植物宝代码.zip

19.57 KB, 下载次数: 279, 下载积分: 威望 1

源代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表