基于R7F0C80212ESP的蓝牙婴儿早教机
功能介绍 通过操作手机上的蓝牙软件发送命令,播放不同的语音内容(儿歌、故事)等。可以一边码着代码,一边给孩子放点音乐,还可以进行扩展一下,控制机械手臂来摇一摇拨浪鼓啥的。当然,如果时间充裕,还是最好亲自陪陪孩子。
整体框图 本方案比较简单,主要以此次的板子作为控制中心,通过蓝牙与手机通信,手机发送不同的命令来控制语言ic的输出,再经过放大电路将语音信号放大,然后通过小喇叭输出,以下是整个方案的整体框图。
资源介绍 本方案中主要使用了以下资源: Ø R7F0C80212ESP目标板 Ø HC05蓝牙模块 Ø 语音IC Ø 三极管8050 Ø 小喇叭 Ø 安卓手机 Ø 导线若干 硬件实物连接图 整体连接
语言IC
蓝牙模块HC05
小喇叭
代码 1、控制语音输出部分
- /*
- **************************************************************
- * 函数名:Send_Voice
- * 描述 :通过控制语音ic发送语音至扬声器
- * 输入 :uint8_t Voice_Num 脉冲数
- * 输出 :无
- **************************************************************
- */
- void Send_Voice(uint8_t Voice_Num)
- {
- uint8_t i;
- VC_RST= 1u; //复位
- Delay_ms(10u);
- VC_RST= 0u;
- Delay_ms(100u);
- for(i=0u; i < Voice_Num;i++)
- {
- VC_DATA = 1u; //脉冲数据为高
- Delay_us(100u); //延时100US
- VC_DATA = 0u; //脉冲数据为低
- Delay_us(100); //延时100US
- }
- while(VC_BUSY == 1);
- }
- /*
- **************************************************************
- //初始化ATK-HC05模块
- //返回值:0,成功;1,失败.
- **************************************************************
- */
- uint8_t HC05_Init(void)
- {
- uint8_t retry=10u,t;
- uint16_t temp=1;
- while(retry--)
- {
- HC05_KEY=1u; //KEY置高,进入AT模式
- Delay_ms(10);
- SAU_SendMessage("AT\r\n");
- HC05_KEY=0u; //KEY拉低,退出AT模式
- for(t=0;t<10;t++) //最长等待50ms,来接收HC05模块的回应
- {
- if(RX_STA&0X8000)break;
- Delay_ms(5);
- }
- if(RX_STA&0X8000) //接收到一次数据了
- {
- RX_STA=0;
- if(rx_data[0]=='O'&&rx_data[1]=='K')
- {
- temp=0;
- break;
- }
- }
- }
- if(retry==0)temp=1; //检测失败
- return temp;
- }
- /*
- **************************************************************
- //获取ATK-HC05模块的角色
- //返回值:0,从机;1,主机;0XFF,获取失败.
- **************************************************************
- */
- uint8_t HC05_Get_Role(void)
- {
- uint8_t retry = 15u;
- uint16_t temp,t;
- while(retry--)
- {
- HC05_KEY=1; //KEY置高,进入AT模式
- Delay_ms(10);
- SAU_SendMessage("AT\r\n"); //查询角色
- for(t=0;t<20;t++) //最长等待200ms,来接收HC05模块的回应
- {
- Delay_ms(10);
- if(RX_STA&0X8000)break;
- }
- HC05_KEY=0; //KEY拉低,退出AT模式
- if(RX_STA&0X8000) //接收到一次数据了
- {
- temp=RX_STA&0X7FFF; //得到数据长度
- RX_STA=0;
- if(temp==13&&rx_data[0]=='+')//接收到正确的应答了
- {
- temp=rx_data[6]-'0';//得到主从模式值
- break;
- }
- }
- }
- if(retry==0)temp=0XFF;//查询失败.
- return temp;
- }
- /*
- **************************************************************
- //ATK-HC05设置命令
- //此函数用于设置ATK-HC05,适用于仅返回OK应答的AT指令
- //atstr:AT指令串.比如:"AT+RESET"/"AT+UART=9600,0,0"/"AT+ROLE=0"等字符串
- //返回值:0,设置成功;其他,设置失败.
- **************************************************************
- */
- uint16_t HC05_Set_Cmd(uint8_t* atstr)
- {
- uint8_t retry = 15u;
- uint16_t temp;
- uint8_t i;
- while(retry--)
- {
- HC05_KEY=1u; //KEY置高,进入AT模式
- Delay_ms(10);
- SAU_SendMessage(atstr); //发送AT字符串
- HC05_KEY=0u; //KEY拉低,退出AT模式
- for(i=0;i<20;i++) //最长等待100ms,来接收HC05模块的回应
- {
- if(RX_STA&0X8000)break;
- Delay_ms(5);
- }
- if(RX_STA&0X8000) //接收到一次数据了
- {
- temp=RX_STA&0X7FFF; //得到数据长度
- RX_STA=0;
- if(temp==4&&rx_data[0]=='O')//接收到正确的应答了
- {
- temp=0;
- break;
- }
- }
- }
- if(retry==0)temp=0XFF;//设置失败.
- return temp;
- }
蓝牙软件 前段时间本来是准备学习做蓝牙上位机软件的,后来由于客户的原因,未能···
,这次使用的软件是在网上下载的一个蓝牙串口软件,可以满足需求的,如果是推广应用的话,还得自己上手编写。以下是此次使用的蓝牙软件的一些图片: 1、搜索蓝牙设备 以下是此次活动开始的时候发的几个帖子: R7F0C80212开发板初体验 R7F0C80212开发板程序下载 cubesuite+找不到code generator的解决方法
转载于:https://www.cnblogs.com/xiaofeng6636/p/3987308.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
