首页 > 分享 > 基于涂鸦智能的宠物喂食器

基于涂鸦智能的宠物喂食器

基于涂鸦智能的宠物喂食器 基于涂鸦智能的宠物喂食器项目地址作品视频硬件介绍系统框架程序编写1. 产品创建2. MCU SDK 移植3.按键选择程序4.WiFi状态指示灯5.云端数据下发处理函数6.手动喂食指令处理函数7.语音方案的配置 资料下载

基于涂鸦智能的宠物喂食器

本次作品以涂鸦智能的VWXR2 wifi通信板为桥梁,以32为核心进行开发
本文章允许涂鸦智能转载使用。

项目地址

GitHub:https://github.com/PolarLights-Snow/predator

作品视频

bilibili:https://b23.tv/Zo8x93

硬件介绍

主控板:STM32F103C8T6最小系统板
联网模组:涂鸦三明治语音 Wi-Fi 通信板(VWXR2)
IOT云平台:涂鸦IOT平台
执行单元:LED模拟代表

系统框架

程序流程图

程序编写

1. 产品创建

参考涂鸦官方教程:五分钟快速入门

2. MCU SDK 移植

参考涂鸦官方教程:MCU SDK 移植

3.按键选择程序

本模块主要用来判断设备上的按键控制

void key_xz() {if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)==1)//WiFi配网{printf("WIFI RST");HAL_Delay(300);if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)==1){mcu_reset_wifi();//WIFI配网复位,ap 和 自动 切换while(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)==1);}}if (HAL_GPIO_ReadPin(YY_JY_GPIO_Port, YY_JY_Pin)==1)//{printf("YY_JY rn");HAL_Delay(9);if (HAL_GPIO_ReadPin(YY_JY_GPIO_Port, YY_JY_Pin)==1){mcu_get_system_time();while(HAL_GPIO_ReadPin(YY_JY_GPIO_Port, YY_JY_Pin)==1);}}if (HAL_GPIO_ReadPin(YY_DN_GPIO_Port, YY_DN_Pin)==1)//声音减小{printf("YY_DN");HAL_Delay(9);if (HAL_GPIO_ReadPin(YY_DN_GPIO_Port, YY_DN_Pin)==1){if(YY_YL>0)YY_YL--;set_speaker_voice(YY_YL);//设置语音-while(HAL_GPIO_ReadPin(YY_DN_GPIO_Port, YY_DN_Pin)==1);}}if (HAL_GPIO_ReadPin(YY_UP_GPIO_Port, YY_UP_Pin)==1)//声音增大{printf("YY_UP");HAL_Delay(9);if (HAL_GPIO_ReadPin(YY_UP_GPIO_Port, YY_UP_Pin)==1){if(YY_YL<10)YY_YL++;set_speaker_voice(YY_YL);//设置语音+while(HAL_GPIO_ReadPin(YY_UP_GPIO_Port, YY_UP_Pin)==1);}}if (HAL_GPIO_ReadPin(WS_GPIO_Port, WS_Pin)==1)//快速喂食{printf("WS_K");HAL_Delay(9);if (HAL_GPIO_ReadPin(WS_GPIO_Port, WS_Pin)==1){mcu_dp_enum_update(DPID_FEED_STATE,1); //当前喂食状态 枚举型数据上报;0:准备 1:喂食2:完成HAL_GPIO_WritePin(DJ_GPIO_Port,DJ_Pin,1);HAL_Delay(300);HAL_GPIO_WritePin(DJ_GPIO_Port,DJ_Pin,0);mcu_dp_value_update(DPID_MANUAL_FEED,1);while(HAL_GPIO_ReadPin(WS_GPIO_Port, WS_Pin)==1);}mcu_dp_enum_update(DPID_FEED_STATE,2); //当前喂食状态 枚举型数据上报;0:准备 1:喂食2:完成} }

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 4.WiFi状态指示灯

void get_wifi_status(unsigned char result) { switch(result) { case 0: //wifi工作状态1HAL_GPIO_TogglePin(LED_wifi_GPIO_Port, LED_wifi_Pin);HAL_Delay(100); break; case 1: //wifi工作状态2HAL_GPIO_TogglePin(LED_wifi_GPIO_Port, LED_wifi_Pin);HAL_Delay(1000); break; case 2: //wifi工作状态3 break; case 3: //wifi工作状态4 break; case 4: //wifi工作状态5HAL_GPIO_WritePin(LED_wifi_GPIO_Port, LED_wifi_Pin, GPIO_PIN_RESET); break; case 5: //wifi工作状态6 break; case 6: //wifi工作状态7HAL_GPIO_TogglePin(LED_wifi_GPIO_Port, LED_wifi_Pin); break; default:break; } }

1234567891011121314151617181920212223242526272829303132333435363738394041 5.云端数据下发处理函数

本函数主要用来处理用户通过涂鸦云平台下发的指令

/** * @brief dp下发处理函数 * @param[in] {dpid} dpid 序号 * @param[in] {value} dp数据缓冲区地址 * @param[in] {length} dp数据长度 * @return dp处理结果 * - 0(ERROR): 失败 * - 1(SUCCESS): 成功 * @note 该函数用户不能修改 */ unsigned char dp_download_handle(unsigned char dpid,const unsigned char value[], unsigned short length) { /********************************* 当前函数处理可下发/可上报数据调用 具体函数内需要实现下发数据处理 完成用需要将处理结果反馈至APP端,否则APP会认为下发失败 ***********************************/ unsigned char ret; switch(dpid) { case DPID_MEAL_PLAN: //喂食计划处理函数 ret = dp_download_meal_plan_handle(value,length);// break; case DPID_QUICK_FEED: //自动喂食开关处理函数 ret = dp_download_quick_feed_handle(value,length); break; case DPID_MANUAL_FEED: //手动喂食处理函数 ret = dp_download_manual_feed_handle(value,length); break; case DPID_FACTORY_RESET: //恢复出厂处理函数 ret = dp_download_factory_reset_handle(value,length); break; case DPID_VOICE_TIMES: //语音播放次数处理函数 ret = dp_download_voice_times_handle(value,length); break; case DPID_SWITCH: //开关处理函数 ret = dp_download_switch_handle(value,length); break; default: break; } return ret; }

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 6.手动喂食指令处理函数

/***************************************************************************** 函数名称 : dp_download_manual_feed_handle 功能描述 : 针对DPID_MANUAL_FEED的处理函数 输入参数 : value:数据源数据 : length:数据长度 返回参数 : 成功返回:SUCCESS/失败返回:ERROR 使用说明 : 可下发可上报类型,需要在处理完数据后上报处理结果至app *****************************************************************************/ static unsigned char dp_download_manual_feed_handle(const unsigned char value[], unsigned short length) { //示例:当前DP类型为VALUE unsigned char ret; unsigned long manual_feed; manual_feed = mcu_get_dp_download_value(value,length); /* //VALUE类型数据处理 */for(int i=0;i< manual_feed;i++){mcu_dp_enum_update(DPID_FEED_STATE,1); //当前喂食状态 枚举型数据上报;0:准备 1:喂食2:完成HAL_GPIO_WritePin(DJ_GPIO_Port,DJ_Pin,1);HAL_Delay(300);HAL_GPIO_WritePin(DJ_GPIO_Port,DJ_Pin,0);HAL_Delay(300);}mcu_dp_enum_update(DPID_FEED_STATE,2); //当前喂食状态 枚举型数据上报;0:准备 1:喂食2:完成 //处理完DP数据后应有反馈 ret = mcu_dp_value_update(DPID_MANUAL_FEED,manual_feed); if(ret == SUCCESS) return SUCCESS; else return ERROR; }

1234567891011121314151617181920212223242526272829303132333435 7.语音方案的配置

配置方法参考涂鸦教程:语音方案配置教程
作品语音方案展示:
作品语音方案展示

资料下载

资料下载

相关知识

基于涂鸦智能的宠物喂食器
【涂鸦智能】宠物智能喂食器
2021【小米有品】宠物智能喂食器汇总
【智能宠物喂食器】
基于单片机的智能宠物喂食器开题报告
基于共生理论的智能宠物喂食器设计研究
迎接宠物智能时代:涂鸦云展现智能养宠全能力
涂鸦智能联合知名宠物品牌湃妮全球首发「智能人汪情感翻译器」
智能开发——蓝牙宠物喂食器方案
MCU对接方案是目前宠物喂食器中最常用的方案之一

网址: 基于涂鸦智能的宠物喂食器 https://m.mcbbbk.com/newsview545141.html

所属分类:萌宠日常
上一篇: 手养经验——鹦鹉种鸟怎么配对
下一篇: 超声波止吠器训狗器智能手持止吠器