用树莓派制作手机控制的浇花神器

2016-07-15 19:51:04 +08:00
 adv007

不知道其他人有没有这样的顾虑,就是每次需要外出一些时日的时候总是担心家里的花无人浇水会干死。于是就想着是否能自己动手做一个可以用手机操控实现浇花的“半自动浇花器”呢,之所以称之为“半自动”是因为在一定程度上该设备使用了自动化控制的元件与技术,但操作依然是根据人的意志用手机来完成的因此为“半自动”。当实现自动检测土壤湿度来实现浇花并发送浇花报告到主人手机时可称之为“自动化”。 话不多说,来看看折腾这样一个东西需要准备些什么硬件和软件,有需要的人一定要耐心看完哦,内容有点多。 鉴于网络有点绕,开始前先放一下我的网络拓扑图 第一部分:硬件清单 1.树莓派:由于前段时间用树莓派折腾过家里的 NAS ,因此树莓派首当其冲作为智控中心用来相应手机端发出的指令 raspberry 2b 2.arduino :此设备与各种智能元器件通信非常方便,因此用他作为终端来和小水泵连接

adruino uno 3.5v 继电器:此设备与下面提到的小型水泵串联,来实现水泵的运行与停止

4.5v 小水泵:用来抽水的,如图,我为了方便连线,把这个 usb 头剪掉了用 4 节 7 号电池供电。这里要对水泵的电路进行简单改造,找到里面的红线(正极),剪短分别连到继电器的常开和公共端。 5v 小水泵 5.usb 摄像头:用来定时进行拍照,传回运行的监控图片。 6.其他设备: a.塑料软管,但由于塑料软管的方向性不好控制导致出水效果不好,后续考虑用一根 pvc 管来替代。 b.万用表, c.电烙铁, d.杜邦线(最好有公对母的,可用母对母和排针自制)若干。 硬件准备的差不多了,现在我们开始连线。 树莓派是一个完整的 linux 系统( debian 系统),因此 arduino 可以以 usb 设备的形式挂载,并且用串口进行通信。当然通信方式还可以有其他,读者有想试的可以自己搜索方案。 继电器的 vcc , gnd 分别连接 arduino 电源的 5v , GND 端,继电器的 in 口连接 arduino 的 13 口。 第二部分:软件清单(不包括 OS ) 1.minicom :这个可以设置树莓派与 arduino 进行串口通信的端口。自行搜索使用方法,设置成功后运行 lsusb 应该能看到 arduino 的设备 2.python :这个其实树莓派中已经内置了,并且对接了跟硬件操作的函数库,非常方便实现跟其他设备的串口通信或者操作树莓派自身的管脚 3.nginx :在树莓派上进行 http 请求转发 4.nodejs :用来处理 http 请求,来进行调用 python 程序进行串口通信进而控制 arduino 。 5.路由器:家里的路由器上设置端口转发用来将公网的 http 请求转发到树莓派的 nginx 上 6.腾讯云 vm :由于是在微信上操作,因此操作一定要在公网进行。 7.运行在腾讯云上的 redis :由于家里的路由器一般采用的动态 ip ,因此从家里路由器定时发送请求到腾讯云,程序获取此 ip 后记录到 redis 中,后续进行操作的时候先从 redis 获取此 ip ,然后请求都绑定到该 ip 上。 8.腾讯云对象存储服务( cos ):此步骤可生,因为 cos 可以当作 CDN 使用,咱可是一名前端工程师,当然需要把 h5 页面、 js 、 css 图片等资源做 cdn 分布 9.重要的 arduino ide :这个用来烧制 arduino 程序,可以在 windows 下编写好后烧制到 arduino 即可。 第三部分:关键实现 1.树莓派上的 python 进行串口通信。 readline 用来获取 arduino 的输出, write 用来向 arduino 发送指令。 2.arduino 代码:用来向继电器发送指令(其实就是高电平与低电平)控制继电器的打开与吸合。 3.做一个简单的手机端界面用进行操控,这里的实现方式太多了,此处不列举了。我用 react 做界面, nodejs 做后台,页面的 url 生成二维码用微信扫码后运行(记得放入微信的收藏夹) 4.鉴于网络交互还是挺绕的,这里补充一张网络拓扑图吧。以后有什么需要可以直接在这个框架上进行。 至此,浇花设备打造完成,放心外出吧,浇花的事情就交给他吧。浇花的同时会定时回传监控图片,用来协助你判断是否该停止浇花。嗯,到了 2.0 自动化的时候也许就不用这么麻烦了。 点击 http://www.wexincloud.com/wx/site/1531601550378395519/527081829719317795 查看图文信息

22704 次点击
所在节点    程序员
88 条回复
adv007
2016-07-16 11:14:29 +08:00
@misaka19000 可以的,树莓派上也有 nginx 和 node ,只不过利用了腾讯云的 cdn 分布能力
adv007
2016-07-16 11:15:39 +08:00
@snow9312 利用开源的前端组件做一个家庭数据门户
zxb
2016-07-16 11:19:18 +08:00
你这个只能让我想起一句话
"My stack is bigger than yours"
genffy
2016-07-16 12:03:06 +08:00
最近也入了个 Ruff ,准备玩玩。

PS :重点不是浇花好么。。。。。
orient
2016-07-16 12:35:04 +08:00
这个感觉有点绕了,其实 Arduino+网络模块 就可以完成以上工作
DT27
2016-07-16 13:34:01 +08:00
感觉一个 bug 家里就被淹了。。。
adv007
2016-07-16 13:48:04 +08:00
@DT27 我也怕,所以没有直接连水龙头,而是用水泵从一个大水桶抽水
DT27
2016-07-16 14:16:34 +08:00
@adv007 机智,哈哈。。。
dibage
2016-07-16 14:29:43 +08:00
我觉得你用 @wilddog 比较适合这个场景。。
ljbha007
2016-07-16 14:40:14 +08:00
建议加上温湿度传感器 光照传感器 用 spi 总线接 adc 芯片可以跳过 arduino 这一步
ljbha007
2016-07-16 14:42:22 +08:00
哦 对了,摄像头还可以加上演示摄影功能 大约 10 分钟拍一张照片 最后两个月时间可以合成大概 2 分钟的视频
hiwljun
2016-07-16 14:55:38 +08:00
我也使用树莓派做过一个,实现定时和手机远程开关。大概如下:
1 、树莓派运行一个 python web server ,用来控制 GPIO 。
2 、树莓派定时任务获取家里网络 IP ,通过 DNS 服务商的 API 修改域名解析的 IP 。
3 、路由做端口转发,确保可以访问到树莓派上的 web server 。
4 、水龙头安装电磁阀,通过树莓派来控制开关,水管上接了 10 几个喷头。

http://imgur.com/vs9snJ6
http://imgur.com/AqbMXf5
adv007
2016-07-16 14:55:53 +08:00
@ljbha007 摄像头用到了,浇花过程中每 5 秒传一张现场照片
adv007
2016-07-16 14:57:38 +08:00
@hiwljun 家用的话安全是首要的,要有强制自毁逻辑
egen
2016-07-16 15:14:49 +08:00
lz 充分诠释了什么叫生命在于折腾,不过做的东西还是挺赞的
xdeng
2016-07-16 15:15:21 +08:00
还联网? 直接配合小米那款检测仪 啊
whyishe
2016-07-16 17:20:34 +08:00
@egen 程序员的创造力就在于此哈
276562578
2016-07-16 17:23:27 +08:00
记得初中还是高中物理书上有个图,利用大气压来浇水,如果不是为了练习和折腾的话,还是这个好
sephinh
2016-07-16 17:27:42 +08:00
弄个定时器,每天 10 分钟,其他都可以省了,操心都不用
Makoshan
2016-07-16 19:19:49 +08:00
养花的乐趣,就是每天照料,虽然我大学的时候也做过这个。 http://v.youku.com/v_show/id_XNTYwNDAwNzAw.html?from=s1.8-1-1.2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292768

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX