1回答

1收藏

爱玩板卡+基于小e1开发板的智能浇水器

#线上活动 #线上活动 3260 人阅读 | 1 人回复 | 2017-06-30

项目概述:
1 通过温湿度传感器获取盆栽植物的生长环境情况,并实时的显示在显示屏上
2 通过判断温湿度是否满足需要浇水的条件来控制控制器进行浇水操作
3 通过摄像头将采集到的图像定时传送给微信客户端

在按着教程搭建好开发环境后~
就是规划硬件资源的分配与使用:
在这个项目中的资源需求有:
1 获取温湿度传感器数据
2 对控制器的控制
3 摄像头数据的采集
针对这三个需求,具体下来:
1 温湿度数据获取,使用板子自带的DHT11,占用了1个IO口
2 浇水动作,只需要控制执行器的开关操作即可,因此选择合适的电机驱动时只需要一个引脚就可以完成控制了
3 摄像头数据采集,由于一般摄像头需要的引脚较多,但是现有板子上的资源不够,因此我们采用了一种曲线救国的方式,通过另外一个单片机读取摄像头数据,再通过串口或者SPI传输给ESP。

具体的引脚分配:
1 使用现有资源,不用分配
2 使用一个可以作为输出的引脚,最后定为GPIO5
3 使用串口0来传输图片数据

然后开始具体开发工作:
对于习惯了windows开发的我来说,对于这种文件比较多的项目,Source Insight是快速理解代码结构的最好工具:
如图:

对于c语言开发者来说,一般对于一个工程第一步都是从main函数入手,习惯性的先搜索main,但是发现只是出现了一个User_main.c文件,点开一看,发现也并没有main函数,之后又花了些功夫寻找,还是没有找到,最后回到文件夹下查看,发现工程中有大量的.a文件,也就是静态库文件,就我理解,工程中很多源代码的具体实现包括main在内都被封装到了.a文件中,当然,可能我的理解有误,如果有问题欢迎交流~~
扯远了...
回到工程目录,这里就不截图了,目录结构还是规划的非常好的,执行文件,应用文件,头文件,链接脚本,静态库,第三方库这些东西都一目了然;考虑到开发的系统差异还分别使用了.bat的脚本和shell脚本,甚至还看见了.py的python脚本~~
当然,代码的细节方面还是有些小瑕疵的,
比如经常出现的goto语句,从最开始学习c就被教导尽可能不适用goto的我看的非常辣眼睛...
还有就是注释方面个人建议都改为英文的,只要是个程序员,英语迟早是道坎。并且由于编辑器文件中文还会经常出现乱码...
系统的大体框架可以看出是freertos+lwip,刚才提到了User_main.c,这个文件就是用户需要修改的文件,由于是RTOS,在开发时需要新建task,在我的项目中,添加了一个task:

如图中所示,添加了一个名为BBear_water_machine的任务,在这个任务中完成温湿度检测和相关控制处理
如图:

代码很简单,先初始化控制器IO,然后获取温湿度,最后判断温湿度数据来确定具体控制器动作。
最后来个全家福:

东西有点乱,简单来说就是用一个IO口控制这个装有轮子的减速电机(没有来得及实际测试,先用减速电机代替水阀)
关于图像采集的问题,目前还没有调试好,摄像头数据采集上出了问题,暂时卡住了,也就不上图了。
最后做了件特没有水平的事情,给自己改了个开机信息:

好与不好各位看官自行判断~
谢谢~~~~~
转载自网络,版权归原作所有。
分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

小马哥-1650185

发表于 2017-8-4 09:22:14 | 只看该作者

转载的啊  不是原创,没劲
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条