最近一个月都没有更新,原因是开始忙毕设和一个嵌入式课程设计。最近终于完成了基础功能,打算总结一下这个设计的实现过程。至于为什么想到设计这样一个东西,主要是从实用方面考虑,家里有宠物的朋友估计也会希望能够远程投喂,因此我就想自己diy一个拿回家用。
下面将会分四个方面:结构、MCU、服务器和安卓 来进行介绍。
本人不是机械专业的因此结构设计也是业余的,我一开始设计的结构是这样的:
然而,这套装置私人定制会非常贵,全部3d打印也是不切实际的。因此,最终我把大件的使用现成材料代替(也就是生活中可以买得到的材料),而小零件则使用3d打印。
需要3d打印的部分:
亚克力板定做部分:
几点说明:
怡宝桶装水瓶口螺纹有两种(目前发现),我自己画的只支持单螺纹的,其他螺纹可能扭不紧,这个需要自己改改。支撑柱我是用一个干衣机配的支撑住拆下来的,这个自行解决把。用陶土捏出的底座非常结实,而且很好玩!!小阀门和舵机架与MG995舵机完美配合亚克力板的四个孔需要和你的支撑住直径配合。几点说明:
板子完全可以自制PCB,会有更大自由度,但我时间不够。WIFI模组安利一下这个link。店家提供配网和远程通信的API,支持各种常见MCU,而且店家售后技术支持非常友好。为了符合嵌入式课程的要求,我在stm32f103上移植了一个迷你的os内核——RT-Thread Nano。
Modules init
延时初始化串口初始化PWM初始化DHT11初始化wifi模块初始化SetupTCP
建立TCP连接需要指定远端的服务器IP和端口,连接上以后需要发送身份码表明客户身份,否则会拒绝连接。发送和接收线程
初始化操作完毕后启动接收线程接收服务器发送的消息,通过邮箱与发送线程通信。发送线程接收到投喂指令则执行投喂函数,接收到获取温湿度指令则读取温湿度传感器并发送给服务器。检查连接线程
初始化操作完毕后启动隔一段时间检查一次模组的工作状态和TCP连接状态,进行异常排除。我这里使用最简单的一种p2p通信方式,就是通过一个处于公网的服务器中转的方式来实现。因此你需要一个服务器。p2p通信技术可以看看这个博客
socket(); setsockopt(); //设置socket bind(); // 绑定到端口 123
等待客户端
这里只允许两个客户端,使用资源量为2的信号量,当指定客户端都与服务器建立TCP连接后,使改线程挂起。accept出错记得释放信号量。accept之后需要确认客户端身份,MCU端连接后需要发送“mcu”,而Android端需要发送“and”。心跳线程
服务器不断接收标记信号,并设置一个计数变量每秒加一。若收到一次标记信号变量置零。如果大于变量大于某个值,可以认为TCP连接断开。接收线程
接收心跳标记信号。接收安卓端控制信号后,发送到MCU客户。接收MCU发送的温湿度信息,发送到安卓客户。安卓 9.0 +
点击app
初始化工具栏菜单初始化网络环境监听初始化进度条通知初始化MCU状态监听器初始化按钮点击TCP连接
启动心跳线程启动读数据线程若TCP断开,重置Socket点击投喂按钮
发送投喂命令阻塞5s点击室内环境按钮
启动发送获取温湿度命令线程,每5s发送一次当读到温湿度数据,更新列表相关知识
基于STM32的宠物远程投喂和监测系统设计
开发者案例:智能宠物屋,智能投喂、自动清洁、APP远程控制
能陪玩、会投喂、还可远程控制,这款为宠物服务的Rocki机器人也能这么魔性?
专为萌宠而生 宠物摄像头远程投食互动
基于机智云+Shineblink的智能宠物屋,智能投喂、自动清洁及APP远程控制
Furbo宠物智能喂食器 支持远程互动
一种基于互联网的远程宠物喂养方法
宠物自动喂食器哪个品牌质量好?热销品牌推荐,远程轻松控制投食
Furbo 宠物智能互动玩具 远程摄像机【报价 价格 评测 怎么样】
宠物的“智能生活”:主人出差可远程投食 控温除味猫狗舍
网址: DIY一个远程宠物投喂装置 https://m.mcbbbk.com/newsview192795.html
上一篇: Petnet智能宠物喂食器 远程 |
下一篇: 开发远程兽医app定制开发软件制 |