基于涂鸦模组和ITOP4412开发板的宠物喂食器

基于涂鸦模组和ITOP4412开发板的宠物喂食器

​ 在不知不觉中,身边已经充斥着各种智能设备,很多人都过上了智能生活,很多事几乎都不用亲力亲为,不仅人们的生活被智能设备占领,宠物市场也是如此,尤其是宠物智能喂食器已经成为家喻户晓的智能设备,如今也正是宠物智能喂食器飞速发展和技术更成熟的时候,宠物智能喂食器未来是我市场前景将不可估量。近来由于新冠疫情的影响,宠物被独自放置在家中,宠物的温饱成了一个大问题,为了不让铲屎官白天工作的时候担心宠物会饿肚子,宠物喂食器应运而生。

1、作品描述

​ 宠物喂食器,基于涂鸦wifi模组和ITOP4412开发板,因为之前没有使用过单片机,本次采用的是在linux环境下进行开发,涂鸦VWXR2模组出厂已经烧录好固件,所以不需要开发,十分方便,该模组主要是进行数据转发,itop4412开发板主要是进行数据处理,和外设控制。

2、作品介绍

2.1 开发环境

2.1.1硬件设备

​ (1) 涂鸦VWXR2 WIFI通信模组

​ (2) 涂鸦12V电源板

​ (3) 涂鸦H桥电机驱动板

​ (4) ITOP4412开发板

​ (5) 385直流电机

在这里插入图片描述

2.2 主要实现的功能

​ 2.1.1 通过涂鸦APP直接进行喂食;

​ 2.1.2 定时喂食,当没有网络时,依旧可以根据设置的闹钟来自动喂食

​ 2.1.3 小夜灯模式

​ 2.1.4 语音唤醒

2.3 后续更新

3、开发流程

在这里插入图片描述

3.1 使用涂鸦IOT平台创建项目

3.1.1 进入涂鸦IOT平台创建产品

​ 在涂鸦IOT平台找到 创建产品 -> 小家电 -> 宠物喂食器

在这里插入图片描述

3.1.2 给宠物喂食器添加功能点

在这里插入图片描述

3.1.3 选择设备面板

​ 这里可以选择公版面板,也可以选择自定义面板,当现有的需求公版面板不满足时,就需要使用自定义面板了;

这里我选择公版面板
在这里插入图片描述

3.1.4 硬件开发下载SDK

​ 后期根据我们下载的MCU SDK进行开发

在这里插入图片描述

3.2 熟悉涂鸦模组的通讯协议

​ 首先下载完SDK以后,分析其源码,花了一些时间理清了大致的框架,用户主要做的是命令下发后,主控板接收到wifi模组转发的数据,经过SDK对数据的解析,然后根据对应的数据帧中的命令字

字段进入相应的功能处理函数,最后用户在功能函数中,对下发的数据进行处理,例如,当接收到客户端下发的快速喂食命令,便执行打开电机的操作。

3.3 将涂鸦模组的SDK移植到linux

​ 这个SDK的移植相对简单,因为不涉及依赖库的问题,所以只需要使用交叉编译器进行编译然后使用nfs服务挂载到开发板即可,这里我使用的交叉编译器是arm-linux-4.4.3。

3.3.1 首先完善串口的读写操作

​ 在linux中对于串口的读写,并不复杂,主要步骤 1、打开串口 2、对串口参数进行配置 3、对串口进行读写;

3.3.1.1对串口的读取操作
int uart_receive(void)
{
   
   
	int ret ;
	unsigned char c;                                                                                   	
	do{
   
   				
		ret = read(fd_wifi_uart, &c, 1);					
	}while(ret == -1 && errno == EINTR);	
	if (-1 == ret)  
	{
   
   
		perror("read");
	//	return -1;
	}
	if (1 == ret)	
	uart_receive_input(c);	
//	printf("recv:0x%x\n",c);
	
	return ret;
}
3.3.1.2 将数据通过串口发送
static void wifi_uart_write_data(unsigned char *in, unsigned short len)
{
   
   
    if((NULL == in) || (0 == len)) {
   
   
        return;
    }
/* 串口发送数据*/
if (-1 == write(fd_wifi_uart, in, len))
	{
   
   
		perror("uart write");
		return ;
	}
}
3.3.2 处理APP下发的喂食指令

​ 因为喂食操作需要对电机进行操作,需要将电机的驱动编译到内核中去,但是电机驱动占用了我的摄像头驱动,所以只能先将摄像头驱动给砍掉,导致我的远程监控功能暂时搁浅,后期想方法解决。

对于喂食操作也相对简单,例如快速喂食,当APP下发指令后,开发板收到指令进入相应的功能函数,只需要打开电机或者关闭电机。

3.3.2.1 快速喂食
static unsigned char dp_download_quick_feed_handle(const unsigned char value[], unsigned short length)
{
   
   
    //示例:当前DP类型为BOOL
    unsigned char ret;
    //0:关/1:开
    unsigned char quick_feed;
    
    quick_feed = mcu_get_dp_download_bool(value,length);
    if(quick_feed == 0) {
   
   
        //开关关
    }else {
   
   
    	// 打开电机开关
        //开关开
		printf("quick feed\n");
		motor_on('R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值