涂鸦智能宠物喂食器(鱼缸投食器)
- 系统框架
- ①涂鸦IOT平台
- 1.创建产品
- 1.进入IOT平台,注册登录,点击创建产品。
- 2.选择小家电→宠物喂食器→MCU方案→Wi-fi→输入产品名称、型号
- 3.添加标准功能与新建自定义功能:根据实际情况添加。
- 4.硬件开发:选择VWXR2 Wi-fi语音模组
- 5.下载资料
- 2.绘制自定义面板
- 3.涂鸦模组调试助手V2.0.7
- ②硬件介绍
- 1.涂鸦三明治开发套件
- 2.MCU:合泰HT66F4560
- 3.水泵、投食器
- ③软件介绍
- 1.涂鸦MCU-SDK移植
- ④涂鸦智能APP介绍
- 1.智能-自动化
- ⑤面板介绍
- 1.上报显示处理
- 2.下发控制处理
- ⑥宠物喂食器介绍
- 1.鱼缸投食器
本文章允许涂鸦智能转载使用
github链接: 代码仓库.
视频链接: bilibili视频.
随着互联网技术的高速发展,智能家居的推广已经势不可挡。伴随人们生活水平的提高,在家中养殖观赏鱼已经成为追求高雅的生活方式。观赏鱼需要定时投喂和较好的水质等才能健康成长。针对人们在外管理植物不便的问题,设计了基于TuYa-IOT平台的远程鱼缸喂食器,通过智能手机与物联网实现了远程喂食观赏鱼的目的。在人们无暇照顾观赏鱼的时候也能保证它们健康成长。
①喂食计划自动喂食;下发设置
②手动喂食;下发控制
③水循环;下发控制
④LED补光灯;下发控制
⑤温度检测;上报
⑥电量;上报
⑦喂食结果;上报
系统框架
Flowchart流程图:
①涂鸦IOT平台
1.创建产品
参考涂鸦官方教程:涂鸦IOT-五分钟快速入门.
1.进入IOT平台,注册登录,点击创建产品。
2.选择小家电→宠物喂食器→MCU方案→Wi-fi→输入产品名称、型号
完成产品创建。
3.添加标准功能与新建自定义功能:根据实际情况添加。
4.硬件开发:选择VWXR2 Wi-fi语音模组
5.下载资料
2.绘制自定义面板
可参考官网: 使用面板工作台帮助文档.
1.使用平台上的快速可视化创建面板
2.更换兼容浏览器
3.绘制面板
4.面板介绍,可前往观看视频
3.涂鸦模组调试助手V2.0.7
参考链接: 模组调试助手.
1.使用调试助手模拟MCU,调通MCU与模组的通信,同时也可以学习一下通信协议。包括重置配网指令、数据上报与下发、获取时间、获取联网状态等
2.使用调试助手模拟模组,调试MCU代码。
②硬件介绍
硬件总体设计方案是由TuYa三明治模块、合泰HT66F0185-MCU、水温传感器DS18B20、投食器模块、补光灯、OLED 显示模块、按键控制模块等模块组成。
1.涂鸦三明治开发套件
链接: 涂鸦三明治 Wi-Fi MCU 通信板.
链接: H 桥直流电机驱动功能板.
链接: 直流供电电源板.
涂鸦三明治语音Wi-Fi 通信板(VWXR2)是方便开发者快速实现各种智能硬件产品原型的一款开发板。您可通过涂鸦三明治语音Wi-Fi 通信板(VWXR2),搭配其他功能电路模块或电路板,实现对应功能。
涂鸦三明治 H 桥直流电机驱动功能板自带 DC005A 圆形电源输入口,内置 DC 电路,可输出 5V/1A 和 3.3V/1A 两组电源,用于涂鸦三明治其余相关的部件供电。
该电源开发板具有 DC 12V、DC 5V 两个输入接口,在 DC 12V 输入时,两个 SY8012B 芯片同时工作可为其他开发板部件提供 DC 12V、DC 5V、DC 3.3V。在 DC 5V 输入时,一个 SY8012B 工作,为其他开发板部件提供 DC 5V、DC 3.3V。
2.MCU:合泰HT66F4560
周边特性:
● 程序存储器:2K×16~16K×16
● 数据存储器:128×8~512×8
● True EEPROM存储器:32×8~128×8
● 看门狗定时器功能
● 多达 46 个双向 I/O 口
3.水泵、投食器
采用蠕动水泵;使用成品的投食器结构(内含霍尔传感器,外接四线:VDD、GND、MotorIO、Hall_sensor)
③软件介绍
1.涂鸦MCU-SDK移植
参考官网教程链接: MCU SDK 移植.
mcu_sdk包含以下文件:
(具体开发指导,可参考readme.txt文件,与protocol.c文件)
以下列举了一些关键的函数,具体可参考Github链接。
1.初始化函数。
/******************************************************************************第一步:初始化
1:在需要使用到wifi相关文件的文件中 #include "wifi.h"
2:在MCU初始化中调用mcu_api.c文件中的wifi_protocol_init()函数
3:将MCU串口单字节发送函数填入protocol.c文件中uart_transmit_output函数内,并删除#error
4:在MCU串口接收函数中调用mcu_api.c文件内的uart_receive_input函数,并将接收到的字节作为参数传入
5:单片机进入while循环后调用mcu_api.c文件内的wifi_uart_service()函数
******************************************************************************/
2.串口字节发送函数
/******************************************************************************2:串口单字节发送函数
请将MCU串口发送函数填入该函数内,并将接收到的数据作为参数传入串口发送函数
******************************************************************************//*** @brief 串口发送数据* @param[in] {value} 串口要发送的1字节数据* @return Null*/
#include "HT66F4560.h"
void uart_transmit_output(unsigned char value)
{_acc = _usr;_txr_rxr = value;while(!_tidle);
}
3.dp点上报函数
/*** @brief 系统所有dp点信息上传,实现APP和muc数据同步* @param Null* @return Null* @note 此函数SDK内部需调用,MCU必须实现该函数内数据上报功能,包括只上报和可上报可下发型数据*/
#include "TuYa_JDQ_KEY_LED.h"
#include "Drv_Timers.h"
#include "dht11.h"
#include "ds18b20.h"
#define ON 1
#define Off 0
void all_data_update(void)
{if(gbv_wifi_Send_Data_Is_300ms){gbv_wifi_Send_Data_Is_300ms = 0;if(gbv_wifi_Send_JDQ_Water){gbv_wifi_Send_JDQ_Water = 0;mcu_dp_bool_update(DPID_TUESDAY, JDQ_Water); //BOOL型数据上报;}/*if(gbv_wifi_Send_JDQ_FishFood){gbv_wifi_Send_JDQ_FishFood = 0;mcu_dp_enum_update(DPID_FEED_STATE,0); //枚举型数据上报;}*/else if(gbv_wifi_Send_LED1){gbv_wifi_Send_LED1 = 0;mcu_dp_bool_update(DPID_MONDAY, LED1); //BOOL型数据上报;}else if(gbv_wifi_Send_FeedState){gbv_wifi_Send_FeedState = 0;//mcu_dp_enum_update(DPID_FEED_STATE,gu8v_FishFood_State); //枚举型数据上报;mcu_dp_enum_update(DPID_FEED_STATE,JDQ_FishFood_MotoIO); //枚举型数据上报;}else if(gbv_wifi_send_FeedTimers){gbv_wifi_send_FeedTimers = 0;mcu_dp_value_update(DPID_FEED_REPORT,gu8v_FishFood_FeedTimers); //VALUE型数据上报;}}if(gbv_TuYa_Send_Data_Is_10s){gbv_TuYa_Send_Data_Is_10s = 0;mcu_dp_value_update(DPID_BATTERY_PERCENTAGE,100); //VALUE型数据上报; mcu_dp_value_update(DPID_AIRTEMP,temp_N); //VALUE型数据上报;mcu_dp_value_update(DPID_WATER_TEMP,DS18B20_Temp/1000); //VALUE型数据上报;mcu_get_system_time();}
}
4.获取本地时间函数
#ifdef SUPPORT_MCU_RTC_CHECK
/*** @brief MCU校对本地RTC时钟* @param[in] {time} 获取到的格林时间数据* @return Null* @note MCU需要自行实现该功能*/
#include "ds1302.h"
void mcu_write_rtctime(unsigned char time1[])
{//#error "请自行完成RTC时钟写入代码,并删除该行"/*Time[0] 为是否获取时间成功标志,为 0 表示失败,为 1表示成功Time[1] 为年份,0x00 表示 2000 年Time[2] 为月份,从 1 开始到12 结束Time[3] 为日期,从 1 开始到31 结束Time[4] 为时钟,从 0 开始到23 结束Time[5] 为分钟,从 0 开始到59 结束Time[6] 为秒钟,从 0 开始到59 结束Time[7] 为星期,从 1 开始到 7 结束,1代表星期一*/if(time1[0] == 1) {//正确接收到wifi模块返回的本地时钟数据 time[year] = time1[1];time[week] = time1[7];time[month] = time1[2];time[day] = time1[3];time[hour] = time1[4];time[min] = time1[5];time[second] = time1[6];}else {//获取本地时钟数据出错,有可能是当前wifi模块未联网}
}
#endif
④涂鸦智能APP介绍
1.智能-自动化
使用参考链接: 智能自动化使用手册.
⑤面板介绍
介绍可参考视频。
上区域是显示区域,下区域是控制区域
1.上报显示处理
显示水温、环境温度、电量、当天喂食次数。
2.下发控制处理
喂食一次、LED补光灯开关、水泵开关。
⑥宠物喂食器介绍
1.鱼缸投食器
两条斗鱼隔空干架中…
最后感谢涂鸦智能给我提供了一次很好的学习机会,使用三明治开发套件快速开发出了宠物喂食器。以后放假再也不担心我的鱼了,真是居家、旅行必备的喂食器呀!后续再添加上语音功能、离线定时喂食功能和显示功能就更好了,下次再见☺。