3720|8

95

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【瑞萨电子MCU套件免费试用】基于R7F0C80212ESP的蓝牙婴儿早教机 [复制链接]

本帖最后由 啸风916636 于 2014-9-22 23:25 编辑
功能介绍
         通过操作手机上的蓝牙软件发送命令,播放不同的语音内容(儿歌、故事)等。可以一边码着代码,一边给孩子放点音乐,还可以进行扩展一下,控制机械手臂来摇一摇拨浪鼓啥的。当然,如果时间充裕,还是最好亲自陪陪孩子。
整体框图
  本方案比较简单,主要以此次的板子作为控制中心,通过蓝牙与手机通信,手机发送不同的命令来控制语言ic的输出,再经过放大电路将语音信号放大,然后通过小喇叭输出,以下是整个方案的整体框图。
资源介绍
    本方案中主要使用了以下资源:
Ø  R7F0C80212ESP目标板
Ø  HC05蓝牙模块
Ø  语音IC
Ø  三极管8050
Ø  小喇叭
Ø  安卓手机
Ø  导线若干
硬件实物连接图
整体连接

语言IC
蓝牙模块HC05

小喇叭
代码
1、控制语音输出部分
  1. <font face="宋体"><font color="#000000">/*
  2. **************************************************************
  3. * 函数名:Send_Voice
  4. * 描述  :通过控制语音ic发送语音至扬声器
  5. * 输入  :uint8_t Voice_Num  脉冲数
  6. * 输出  :无
  7. **************************************************************
  8. */
  9. void Send_Voice(uint8_t Voice_Num)
  10. {
  11.                 uint8_t i;
  12.         
  13.                 VC_RST= 1u;            //复位
  14.                 Delay_ms(10u);
  15.             VC_RST= 0u;
  16.                 Delay_ms(100u);
  17.                
  18.                 for(i=0u; i < Voice_Num;i++)
  19.                 {
  20.                           VC_DATA = 1u;        //脉冲数据为高
  21.                          Delay_us(100u);     //延时100US
  22.                           VC_DATA = 0u;        //脉冲数据为低
  23.                          Delay_us(100);     //延时100US
  24.                 }
  25.                 while(VC_BUSY == 1);
  26. } </font></font>
复制代码
2、蓝牙部分代码
       代码是移植原子的蓝牙代码,其中有部分进行了修改
  1. <font face="宋体"><font color="#000000">/*
  2. **************************************************************
  3. //初始化ATK-HC05模块
  4. //返回值:0,成功;1,失败.
  5. **************************************************************
  6. */
  7. uint8_t HC05_Init(void)
  8. {
  9.         uint8_t retry=10u,t;                           
  10.         uint16_t temp=1;
  11.         
  12.         while(retry--)
  13.         {
  14.                 HC05_KEY=1u;                                        //KEY置高,进入AT模式
  15.                 Delay_ms(10);
  16.                 SAU_SendMessage("AT\r\n");        

  17.                 HC05_KEY=0u;                                        //KEY拉低,退出AT模式
  18.                 for(t=0;t<10;t++)                         //最长等待50ms,来接收HC05模块的回应
  19.                 {
  20.                         if(RX_STA&0X8000)break;
  21.                         Delay_ms(5);
  22.                 }        
  23.                
  24.                 if(RX_STA&0X8000)  //接收到一次数据了
  25.                 {
  26.                         
  27.                         RX_STA=0;
  28.                          if(rx_data[0]=='O'&&rx_data[1]=='K')
  29.                         {                        
  30.                                 temp=0;
  31.                         
  32.                                 break;
  33.                         }
  34.                 }                  
  35.         }                    
  36.         if(retry==0)temp=1;        //检测失败
  37.         return temp;         
  38. }        
  39. /*
  40. **************************************************************
  41. //获取ATK-HC05模块的角色
  42. //返回值:0,从机;1,主机;0XFF,获取失败.               
  43. **************************************************************
  44. */
  45. uint8_t HC05_Get_Role(void)
  46. {                             
  47.         uint8_t retry = 15u;
  48.         uint16_t temp,t;
  49.         while(retry--)
  50.         {
  51.                 HC05_KEY=1;                                        //KEY置高,进入AT模式
  52.                 Delay_ms(10);
  53.                 SAU_SendMessage("AT\r\n");        //查询角色
  54.                 for(t=0;t<20;t++)                         //最长等待200ms,来接收HC05模块的回应
  55.                 {
  56.                         Delay_ms(10);
  57.                         if(RX_STA&0X8000)break;
  58.                 }               
  59.                 HC05_KEY=0;                                        //KEY拉低,退出AT模式
  60.                 if(RX_STA&0X8000)        //接收到一次数据了
  61.                 {
  62.                         temp=RX_STA&0X7FFF;        //得到数据长度
  63.                         RX_STA=0;                        
  64.                         if(temp==13&&rx_data[0]=='+')//接收到正确的应答了
  65.                         {
  66.                                 temp=rx_data[6]-'0';//得到主从模式值
  67.                                 break;
  68.                         }
  69.                 }               
  70.         }
  71.         if(retry==0)temp=0XFF;//查询失败.
  72.         return temp;
  73. }         
  74. /*
  75. **************************************************************
  76. //ATK-HC05设置命令
  77. //此函数用于设置ATK-HC05,适用于仅返回OK应答的AT指令
  78. //atstr:AT指令串.比如:"AT+RESET"/"AT+UART=9600,0,0"/"AT+ROLE=0"等字符串
  79. //返回值:0,设置成功;其他,设置失败.               
  80. **************************************************************
  81. */
  82. uint16_t HC05_Set_Cmd(uint8_t* atstr)
  83. {                             
  84.         uint8_t retry = 15u;
  85.         uint16_t temp;
  86.         uint8_t i;
  87.         while(retry--)
  88.         {
  89.                 HC05_KEY=1u;                                        //KEY置高,进入AT模式
  90.                 Delay_ms(10);
  91.                  
  92.                 SAU_SendMessage(atstr);             //发送AT字符串
  93.                 HC05_KEY=0u;                                        //KEY拉低,退出AT模式
  94.                 for(i=0;i<20;i++)                         //最长等待100ms,来接收HC05模块的回应
  95.                 {
  96.                         if(RX_STA&0X8000)break;
  97.                         Delay_ms(5);
  98.                 }               
  99.                 if(RX_STA&0X8000)        //接收到一次数据了
  100.                 {
  101.                         temp=RX_STA&0X7FFF;        //得到数据长度
  102.                         RX_STA=0;                        
  103.                         if(temp==4&&rx_data[0]=='O')//接收到正确的应答了
  104.                         {                        
  105.                                 temp=0;
  106.                                 break;                        
  107.                         }
  108.                 }               
  109.         }
  110.         if(retry==0)temp=0XFF;//设置失败.
  111.         return temp;
  112. }
  113. </font></font>
复制代码


蓝牙软件
       前段时间本来是准备学习做蓝牙上位机软件的,后来由于客户的原因,未能···,这次使用的软件是在网上下载的一个蓝牙串口软件,可以满足需求的,如果是推广应用的话,还得自己上手编写。以下是此次使用的蓝牙软件的一些图片:
1、搜索蓝牙设备
2、已经查找到了HC05蓝牙模块,并点击连接设备,密码1234
3、连接成功,为了使用方便,这里使用键盘模式
4、进入键盘模式,以下是已经设置的键盘
至此,可以通过按相应的按键来发送不同的命令,将会听到不同的语言内容。
总结
       拿到板子的第一时间就是安装软件,一路“next”、“OK”下来,终于算是安装好了。新建一个工程,发现没有此款MCU的型号,网上搜索了一下,找到了解决办法。由于之前也用过cubesuite+软件,记得它自带代码生成功能插件的,捣鼓了一下,终于把这小子找出来了。上官网下载了一个demo程序,进行了简单的调试,初步的体验也就完成了。
    由于对这款MCU第一次接触,在开发过程中参考了不少官方demo程序和网友的帖子,很多问题也就不是问题了。花了几个晚上和一个周末,将整个方案大概的完成了。后面有时间将对整个方案进行进一步的优化,或更改MCU进一步的开发,不仅仅做一个功能,也不显得单调。



以下是此次活动开始的时候发的几个帖子:
        

最新回复

楼主这么棒,,简直是大神啊,膜拜膜拜,向楼主学习,向楼主学习  详情 回复 发表于 2015-8-11 15:17
点赞 关注
个人签名啸风个人QQ群:159029050

回复
举报

95

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
前面有一个帖子已经发布了,本想先发帖再编辑的,结果还在审核中,还请管理员将之前那个帖子进行删除,谢谢~!

点评

看到了,是防火墙自动处理了。那我就在后台直接删掉了。  详情 回复 发表于 2014-9-23 10:20
看看哪个帖子,嘿嘿,这么好的帖子,怕误删了。  详情 回复 发表于 2014-9-23 10:11
 
个人签名啸风个人QQ群:159029050
 

回复

785

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
支持啸风啊          呵呵    不知后续打算改成什么样子哇         
 
个人签名我从不担心我努力了不优秀,只担心优秀的人都比我更努力。如果你无法忍受孤独,就不要追逐梦想。每一个优秀的人,都有一段沉默的时光。在那一段时光,你付出了很多努力,忍受孤独和寂寞,不抱怨不诉苦,最后渡过了这
 
 

回复

2万

帖子

74

TA的资源

管理员

4
 
啸风916636 发表于 2014-9-22 23:28
前面有一个帖子已经发布了,本想先发帖再编辑的,结果还在审核中,还请管理员将之前那个帖子进行删除,谢谢 ...

看看哪个帖子,嘿嘿,这么好的帖子,怕误删了。
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

2万

帖子

74

TA的资源

管理员

5
 
啸风916636 发表于 2014-9-22 23:28
前面有一个帖子已经发布了,本想先发帖再编辑的,结果还在审核中,还请管理员将之前那个帖子进行删除,谢谢 ...

看到了,是防火墙自动处理了。那我就在后台直接删掉了。
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

6
 
哈哈,这高大上啊。不过码着代码只能找蓝牙去照顾孩子。。。还是带娃一起码代码吧

点评

小孩尽量远离电脑  详情 回复 发表于 2014-9-23 22:21
 
 
 

回复

95

帖子

0

TA的资源

一粒金砂(中级)

7
 
johnrey 发表于 2014-9-23 10:42
哈哈,这高大上啊。不过码着代码只能找蓝牙去照顾孩子。。。还是带娃一起码代码吧

小孩尽量远离电脑
 
个人签名啸风个人QQ群:159029050
 
 

回复

616

帖子

0

TA的资源

版主

8
 
拔了仿真器还能运行吗~
 
 
 

回复

143

帖子

2

TA的资源

一粒金砂(中级)

9
 
楼主这么棒,,简直是大神啊,膜拜膜拜,向楼主学习,向楼主学习
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表