首页 > 分享 > DIY一个远程宠物投喂装置

DIY一个远程宠物投喂装置

DIY一个远程宠物投喂装置 简介结构材料清单实际做出来的结构 MCU清单KernelFeaturesCode Structure 服务器FeaturesCode Structure 安卓RecommendFeaturesCode StructureLogical processScreen Codes & Files

简介

       最近一个月都没有更新,原因是开始忙毕设和一个嵌入式课程设计。最近终于完成了基础功能,打算总结一下这个设计的实现过程。至于为什么想到设计这样一个东西,主要是从实用方面考虑,家里有宠物的朋友估计也会希望能够远程投喂,因此我就想自己diy一个拿回家用。

       下面将会分四个方面:结构、MCU、服务器和安卓 来进行介绍。

结构

       本人不是机械专业的因此结构设计也是业余的,我一开始设计的结构是这样的:

在这里插入图片描述
       然而,这套装置私人定制会非常贵,全部3d打印也是不切实际的。因此,最终我把大件的使用现成材料代替(也就是生活中可以买得到的材料),而小零件则使用3d打印。

材料清单

原结构实现方式饲料罐怡宝4.5L桶装水四根支撑柱可定做也可现找底座陶土自己捏管道PVC胶管(很便宜)小阀门3D打印舵机架3D打印罐子支撑板亚克力板定做(不贵)MCU支撑板亚克力板定做M3x8螺钉螺母T宝 x4M3x20尼龙螺钉T宝 x4

需要3d打印的部分:
在这里插入图片描述
亚克力板定做部分:

在这里插入图片描述

几点说明:

怡宝桶装水瓶口螺纹有两种(目前发现),我自己画的只支持单螺纹的,其他螺纹可能扭不紧,这个需要自己改改。支撑柱我是用一个干衣机配的支撑住拆下来的,这个自行解决把。用陶土捏出的底座非常结实,而且很好玩!!小阀门和舵机架与MG995舵机完美配合亚克力板的四个孔需要和你的支撑住直径配合。

实际做出来的结构

在这里插入图片描述

MCU

清单

正点原子stm32f1开发mini板 MG995舵机 DHT11温湿度传感器 ALK8266 WIFI模组

几点说明:

板子完全可以自制PCB,会有更大自由度,但我时间不够。WIFI模组安利一下这个link。店家提供配网和远程通信的API,支持各种常见MCU,而且店家售后技术支持非常友好

Kernel

RT-Thread Nano

为了符合嵌入式课程的要求,我在stm32f103上移植了一个迷你的os内核——RT-Thread Nano。

Features

USART1串口用于输入输出调试信息,RT-Thread的msh/finsh命令行工具支持命令行查询运行状态。搭配正点原子的XCOM串口调试助手使用。通过舵机控制投喂阀门的开启。通过温湿度传感器获取环境温湿度。WIFI模组目前还没发挥其高速传输的优势,因为图片/视频传输还没开发。配合AutoPet/Server和AutoPet/Android,实现远程控制。

Code Structure

在这里插入图片描述

Modules init

延时初始化串口初始化PWM初始化DHT11初始化wifi模块初始化

SetupTCP

建立TCP连接需要指定远端的服务器IP和端口,连接上以后需要发送身份码表明客户身份,否则会拒绝连接。

发送和接收线程

初始化操作完毕后启动接收线程接收服务器发送的消息,通过邮箱与发送线程通信。发送线程接收到投喂指令则执行投喂函数,接收到获取温湿度指令则读取温湿度传感器并发送给服务器。

检查连接线程

初始化操作完毕后启动隔一段时间检查一次模组的工作状态和TCP连接状态,进行异常排除。

服务器

我这里使用最简单的一种p2p通信方式,就是通过一个处于公网的服务器中转的方式来实现。因此你需要一个服务器。p2p通信技术可以看看这个博客

在这里插入图片描述

Features

使用Socket通信,服务器和客户端建立TCP连接。 只支持两个客户端,一个是MCU,一个是Android。 稳定运行只跟服务器有关,与客户端状况无关。

Code Structure

在这里插入图片描述

初始化Socket

socket(); setsockopt(); //设置socket bind(); // 绑定到端口 123

等待客户端

这里只允许两个客户端,使用资源量为2的信号量,当指定客户端都与服务器建立TCP连接后,使改线程挂起。accept出错记得释放信号量。accept之后需要确认客户端身份,MCU端连接后需要发送“mcu”,而Android端需要发送“and”。

心跳线程

服务器不断接收标记信号,并设置一个计数变量每秒加一。若收到一次标记信号变量置零。如果大于变量大于某个值,可以认为TCP连接断开。

接收线程

接收心跳标记信号。接收安卓端控制信号后,发送到MCU客户。接收MCU发送的温湿度信息,发送到安卓客户。

安卓

Recommend

安卓 9.0 +

Features

与服务器建立TCP连接,并监听连接状态 实时检测远端MCU与服务器的连接状态 点击“投喂”按键,控制远端设备自动投喂 点击“室内环境”按键,实时获取远端温湿度传感器的数据 视频环境传送(未实现,待续)

Code Structure

在这里插入图片描述

Logical process

点击app

初始化工具栏菜单初始化网络环境监听初始化进度条通知初始化MCU状态监听器初始化按钮

点击TCP连接

启动心跳线程启动读数据线程若TCP断开,重置Socket

点击投喂按钮

发送投喂命令阻塞5s

点击室内环境按钮

启动发送获取温湿度命令线程,每5s发送一次当读到温湿度数据,更新列表

Screen

在这里插入图片描述

1 --> TCP连接2 --> MCU状态3 --> 投喂按钮4 --> 室内环境按钮

在这里插入图片描述

Codes & Files

代码和文件:
https://github.com/Rick0514/AutoPet
https://github.com/Rick0514/AutoPet-MCU
https://github.com/Rick0514/AutoPet-Server
https://github.com/Rick0514/AutoPet-Android

相关知识

基于STM32的宠物远程投喂和监测系统设计
开发者案例:智能宠物屋,智能投喂、自动清洁、APP远程控制
能陪玩、会投喂、还可远程控制,这款为宠物服务的Rocki机器人也能这么魔性?
专为萌宠而生 宠物摄像头远程投食互动
基于机智云+Shineblink的智能宠物屋,智能投喂、自动清洁及APP远程控制
Furbo宠物智能喂食器 支持远程互动
一种基于互联网的远程宠物喂养方法
宠物自动喂食器哪个品牌质量好?热销品牌推荐,远程轻松控制投食
Furbo 宠物智能互动玩具 远程摄像机【报价 价格 评测 怎么样】
宠物的“智能生活”:主人出差可远程投食 控温除味猫狗舍

网址: DIY一个远程宠物投喂装置 https://m.mcbbbk.com/newsview192795.html

所属分类:萌宠日常
上一篇: Petnet智能宠物喂食器 远程
下一篇: 开发远程兽医app定制开发软件制