涂鸦智能宠物喂食器(鱼缸投食器)


本文章允许涂鸦智能转载使用

github链接: 代码仓库.
视频链接: bilibili视频.

随着互联网技术的高速发展,智能家居的推广已经势不可挡。伴随人们生活水平的提高,在家中养殖观赏鱼已经成为追求高雅的生活方式。观赏鱼需要定时投喂和较好的水质等才能健康成长。针对人们在外管理植物不便的问题,设计了基于TuYa-IOT平台的远程鱼缸喂食器,通过智能手机与物联网实现了远程喂食观赏鱼的目的。在人们无暇照顾观赏鱼的时候也能保证它们健康成长。
①喂食计划自动喂食;下发设置
②手动喂食;下发控制
③水循环;下发控制
④LED补光灯;下发控制
⑤温度检测;上报
⑥电量;上报
⑦喂食结果;上报

系统框架

Flowchart流程图:

Created with Raphaël 2.2.0 开始 系统初始化 定时采集温度 涂鸦IOT下发 or 按键8ms扫描 1.LED补光灯开关 2.水泵开关 3.投食器开关 4.配网 上报对应数据 && 硬件对应动作 (温度、投食状态、投食次数、电量、配网) -----------------定时请求本地时间----------------- yes no

①涂鸦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.鱼缸投食器

两条斗鱼隔空干架中…
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
最后感谢涂鸦智能给我提供了一次很好的学习机会,使用三明治开发套件快速开发出了宠物喂食器。以后放假再也不担心我的鱼了,真是居家、旅行必备的喂食器呀!后续再添加上语音功能、离线定时喂食功能和显示功能就更好了,下次再见☺。

  • 2
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值