打印
[应用相关]

基于STM32F103+涂鸦三明治的宠物自动喂食器

[复制链接]
2019|73
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 高级安全大使 于 2022-2-28 23:30 编辑

方案应用场景该方案应用于铲屎官们家中的宠物喂食,比如猫咪和狗狗。
喂养宠物的铲屎官都明白,宠物平时的最大消耗就是他们的宠粮,每天要加几次宠粮才能满足宠物对食物的需求。但是每天需要上班赚取生活费的铲屎官,在家里的时间并不多,宠物白天的饮食就是一个大问题,如果早上过多的添加宠粮,会造成宠物不停地进食,造成肥胖等疾病,但是如果添加的过少,在白天家中无人的情况下宠物有得不到及时的食物补充,对宠物的生长也不利。这时候一块自动的定时宠粮喂食器便显得尤为重要。特别是在铲屎官因故长期不在家,造成宠物得不到进食的问题。该方案设计以下几点功能:1.自动定时投食2.自定义每次投食量3.手机远程投食4.可查看投食记录5.小夜灯功能,为凌晨起床的宠物提供照明6.实时检测温湿度7.LCD触摸屏显示,无需打开手机便可获得相关信息8.ws2812环形彩灯,增加美观
————————————————
版权声明:本文为CSDN博主「呐咯密密」的原创**,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dy_ngmm/article/details/115456052

使用特权

评论回复
沙发
高级安全大使|  楼主 | 2022-2-28 22:30 | 只看该作者
技术要点
1.STM32MCU作为主控,通过WiFi模组获取服务器的指令,完成相应处理和判断,如手动喂食。并上传相应数据,如上报余量,电池电量,充电状态。
2.涂鸦WiFi模组作为通信模块用来连接stm32和涂鸦IOT云平台,用来作为数据的透传,将下位机的数据通过MQTT上传至云平台,并将云平台下发的指令转发给下位机,作为上位机和下位机的良好握手。
3.涂鸦IOT云平台提供云端数据储存
4.手机APP的开发,因为涂鸦的IOT平台已经拥有快速开发APP的功能,用户所要做的事情非常少,但是使用模板会显得千篇一律,如果自己开发,还是有一定的难度的。
4.减速电机的控制,此次设计采用的是直流减速电机,控制比较简单,不过此设计太好的电机只会增加难度和成本。(因H桥控制板损坏,已替换为继电器控制。)
5.外壳的搭建,试验版本采用纸壳搭建,后期改用亚克力板或者PLA打印,纸壳肯定不适合宠物,特别是猫咪,对纸壳拥有无与伦比的破坏力。 (此步骤因材料限制等原因,舍弃了)

使用特权

评论回复
板凳
高级安全大使|  楼主 | 2022-2-28 22:32 | 只看该作者
硬件概述
主控:
主控采用了STM32F103,选用了野火的开发板,因为我想加一个屏幕直接使用开发板会比较方便,虽然成本提高太多,但是造就完了。

使用特权

评论回复
地板
高级安全大使|  楼主 | 2022-2-28 22:33 | 只看该作者
其余的硬件大多由涂鸦提供:
涂鸦三明治 Wi-Fi MCU 通信板1

使用特权

评论回复
5
高级安全大使|  楼主 | 2022-2-28 22:34 | 只看该作者
涂鸦三明治H桥直流电机驱动功能板1

使用特权

评论回复
6
高级安全大使|  楼主 | 2022-2-28 22:34 | 只看该作者
涂鸦三明治直流供电电源板*1

使用特权

评论回复
7
高级安全大使|  楼主 | 2022-2-28 22:35 | 只看该作者
对于这三块板想要吐槽一下,第一块的wifi通信板没话说,非常好,第二块的H桥控制经不住折腾,烧了,第三块的电源板电池槽太高,没法与其他两块板一起形成“三明治”。
电机,传感器等外设由我们自己选择。

使用特权

评论回复
8
高级安全大使|  楼主 | 2022-2-28 22:35 | 只看该作者
涂鸦IOT平台搭建项目
一款无线的产品开发就必须依托好用的云平台,此次涂鸦提供了免费的云平台,我们只需要注册好开发者账号便可以依托其强大的IOT平台进行开发。
点此前往 涂鸦智能开发平台进行注册。
注册后可参考官方的涂鸦IOT平台产品创建流程。
产品创建完成后下载开发资料,建议全部下载,其中MCU SDK的内容会根据你所选择的标准功能不同而不同,为了方便可在选择功能时尽可能多的考虑到需要配置的功能,当然,即使你一个不选,SDK也开放了各个功能的函数,只是被屏蔽,可自行放开。

使用特权

评论回复
9
高级安全大使|  楼主 | 2022-2-28 22:37 | 只看该作者
通信功能调试
在进行功能调试之前先看MCU对接方案的原理图:

使用特权

评论回复
10
高级安全大使|  楼主 | 2022-2-28 22:40 | 只看该作者
mcu与涂鸦的wifi模组通过串口进行通信,此处的wifi模组的作用是透传,相当于在MCU和云平台之间进行牵手,只进行消息的转发,不进行处理。手机APP和云平台通过wifi网络与4G网络进行通信。手机与模组之间通过蓝牙进行通信,只不过该应用并未涉及。

使用特权

评论回复
11
高级安全大使|  楼主 | 2022-2-28 22:40 | 只看该作者
wifi模组调试
第一步打开我们之前下载的文件,打开涂鸦调试助手。

使用特权

评论回复
12
高级安全大使|  楼主 | 2022-2-28 22:41 | 只看该作者

使用特权

评论回复
13
高级安全大使|  楼主 | 2022-2-28 22:41 | 只看该作者
将WiFi的通信板的串口1接到usb-ttl上,接到电脑,一定是串口1,串口0是查看模组本身的log的,打开涂鸦调试助手。选择MCU模拟,此时调试助手就相当于是MCU,可以与WiFi模组通信,可用此来调试WiFi模组。选择好串口,波特率默认9600.功能点调试文件选择之前下载的json文件。初始化配置保持默认,点击开始调试。如收到以下数据说明模组与助手连接正常,可以开始调试。

使用特权

评论回复
14
高级安全大使|  楼主 | 2022-2-28 22:42 | 只看该作者
此时我们下载涂鸦智能APP,注册后选择添加设备,在小家电里面找到宠物喂食器,选择2.4G的WiFi网络。输入密码。点击下一步

使用特权

评论回复
15
高级安全大使|  楼主 | 2022-2-28 22:44 | 只看该作者
此时在模组调试助手点击smart配网,手机点击下一步

使用特权

评论回复
16
高级安全大使|  楼主 | 2022-2-28 22:46 | 只看该作者

使用特权

评论回复
17
高级安全大使|  楼主 | 2022-2-28 22:46 | 只看该作者
配网成功后会在手机APP和调试助手同时看到相应信息。连接成功后会定时发送心跳包保持连接。

使用特权

评论回复
18
高级安全大使|  楼主 | 2022-2-28 22:48 | 只看该作者
至此WiFi模组配网完成,改配网信息会保存在WiFi模组内部,下次上电会自动连接该网络。如果更换网络环境需要重置后再次配网。
此时可在DP CMD里面测试相关DP点的数据上报,观察有无数据的上报下发。

使用特权

评论回复
19
高级安全大使|  楼主 | 2022-2-28 22:49 | 只看该作者
MCU调试
WiFi模组调试完成之后我们需要调试我们的主控,也就是MCU,在我这里就是STM32F103。
在进行MCU调试之前我们需要先进行SDK的移植,将之前下载的SDK移植到我们的STM32项目中。

使用特权

评论回复
20
高级安全大使|  楼主 | 2022-2-28 22:49 | 只看该作者
(1),基础工程创建
移植前,我们需要准备一个空的工程,工程中只需要添加一个串口驱动便可。

#ifndef __USART_H
#define        __USART_H


#include "stm32f10x.h"
#include <stdio.h>

// 串口1-USART1
#define  DEBUG_USARTx                   USART1
#define  DEBUG_USART_CLK                RCC_APB2Periph_USART1
#define  DEBUG_USART_APBxClkCmd         RCC_APB2PeriphClockCmd
#define  DEBUG_USART_BAUDRATE           9600

// USART GPIO 引脚宏定义
#define  DEBUG_USART_GPIO_CLK           (RCC_APB2Periph_GPIOA)
#define  DEBUG_USART_GPIO_APBxClkCmd    RCC_APB2PeriphClockCmd
   
#define  DEBUG_USART_TX_GPIO_PORT         GPIOA   
#define  DEBUG_USART_TX_GPIO_PIN          GPIO_Pin_9
#define  DEBUG_USART_RX_GPIO_PORT       GPIOA
#define  DEBUG_USART_RX_GPIO_PIN        GPIO_Pin_10

#define  DEBUG_USART_IRQ                USART1_IRQn
#define  DEBUG_USART_IRQHandler         USART1_IRQHandler


void USART_Config(void);
void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch);
#endif /* __USART_H */

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

408

帖子

1

粉丝