因工作中时常需要查询一些资料,平时就常来面包板社区取经,4月份的时候看到评测中心发布了富芮坤公司的《2020年度富芮坤杯 物联网开发板设计大赛》,名额比较多,正好目前时间也算充足,可以学习一下新知识,挑战一下自己,5月18号是截止日期,5月19号应该出名单了,登录社区看没有通过,没想到5月27号短信收到通过的通知,内信想终于成功了一次,运气不算太差,哈哈,还是言归正传吧。
一、产品开箱:
1.产品清单:一张产品简介,一条数据线和精致的开发板。
2.开发板正面,各模块功能就不一一介绍了,产品手册上说明的很清楚,一颗小小的FR8016HA芯片外围功能很丰富,满足较多的开发需求。
3.开发板反面,屏幕是FPC焊接的,要是用连接器件就更好了,可以搭载更大的屏幕。
二、产品例程验证:
1. 首先是熟悉开发板,开发板介绍资料可以到如下地址下载:
2. 然后按照产品使用手册的介绍安装Keil5软件(Keil5可以去官网下载),并下载SDK包,可参考如下
地址下载:https://gitee.com/freqchip/FR801xH-SDK相关的例程,烧录工具都在里面。
3. 准备工作做好后就开始验证板子,最开始载入的是富芮坤演示文件.bin,载入步骤如下:
1).在SDK的Tools文件夹找到烧录工具,并设置好端口、波特率,具体设置开发手册都有详细介绍,界面如下:
2).点击打开按钮,进行通信准备,界面如下:
3).按一下开发板上的复位键,进行通信,界面如下:
4).连接成功后先将芯片进行擦除动作,界面如下:
5).写如演示文件,成功界面如下:
6).写入演示文件后开发板显示界面如下:
4. 上述工作完成后说明板子是可以正常工作,下面就开始例程的验证:
1).用Keil5打开如下路径的工程文件:e:\ FR801xH-SDK\examples\dev1.0\ble_simple_peripheral,然后进行编译,编译过程中出现如下提示:
看说明是指我们用Keil5打开了Keil4的工程文件,两种不兼容,解决这个问题可以到官网去下载一个兼容包,安装在Keil5的安装路径下,
完美解决此问题。
2). 将路径e:\ FR801xH-SDK\examples\dev1.0\ble_simple_peripheral \keil\Output\中的ble_simple_peripheral.bin文件烧录到开发板中
3).按K1可以依次看到功能显示,按K2可以执行相应的功能,相关的图示界面如下:
4).至此,产品例程验证完成,功能正常实现。
三、BLE控制LED的开关
蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的无线技术,工作在免许可的2.4GHz ISM射频频段。有BLE4.0,BLE4.1, BLE4.2, BLE 5.0等多个协议版本。它从一开始就设 计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。蓝牙低能耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。另外,因 为BLE技术采用非常快速的连接方式,因此平时可以处于"非连接"状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链 路。
正因为如此,想着通过BLE去控制灯的开关,把每个灯的开关先命名,然后与控制指令绑定,就可以通过手机界面或者其他终端控制各个灯了,接下来就试着去实现这个
功能了:
相关协议及端口的讲解可以参考这篇文章,可以说已经写的很详细了,这里就不再啰嗦啦: https://mbb.eet-china.com/forum/topic/76075_1_1.html,感谢这位朋友提供了 参考,接下来我把实现的过程中遇到的问题写出来,方便一些朋友做参考用。
1). 下面程序中PWM_Start_Flag没有定义类型,一个比较简单的问题,由于还是大学时学过C语言,编译的时候保存,卡了好一会儿,然后想着例程里一定有类似的语 句,用CTRL+F查找功能,还真找到的了,定义为BOOL类型后再编译就通过了。
//For sp_char3_value [0]:0xaa,[1]:on or off, [2]:Red(0xff),[4]:Green(0xff),[6]:Blue(0xff),[9]:0xaa
if(sp_char3_value[0] == 0xaa && sp_char3_value[9] == 0xaa)
{
if(sp_char3_value[1] == 1)//LED TURN ON
{
if(PWM_Start_Flag == false)
{
pwm_start(PWM_CHANNEL_4); //turnon green led
pwm_start(PWM_CHANNEL_5); //turn on red led
pwm_start(PWM_CHANNEL_1); //turnon blue led
PWM_Start_Flag = true;
}
if(sp_char3_value[2]>99)sp_char3_value[2] = 99;//red
if(sp_char3_value[4]>99)sp_char3_value[4] = 99;//green
if(sp_char3_value[6]>99)sp_char3_value[6] = 99;//blue
uint32_t Green_Value =sp_char3_value[4];
uint32_t Red_Value =sp_char3_value[2];
uint32_t Blue_Value =sp_char3_value[6];
pwm_update(PWM_CHANNEL_4,10000, Green_Value);//update green led
pwm_update(PWM_CHANNEL_5, 10000,Red_Value);//update red led
pwm_update(PWM_CHANNEL_1,10000, Blue_Value);//update blue led
}
else
{
if(PWM_Start_Flag == true)
{
pwm_stop(PWM_CHANNEL_4);//turnoff grenn led
pwm_stop(PWM_CHANNEL_5);//turnoff red led
pwm_stop(PWM_CHANNEL_1);//turnoff blue led
PWM_Start_Flag = false;
}
}
}
2).编译通过后,经BIN文件烧录到开发板后,用小米3老手机下载BLE调试器,发现好多软件安装不了,雷老总不知道在MIUI系统里动了什么“手脚”,又用其他手机下载 了一个BLE调试工具,然后通过BLE透传功能发送指令,因为是第一次调试蓝牙开发板,这里简单的认为发送1,0就可以开关LED了,搞了半天,手机上显示指令发送成功,但 是灯就是点不亮,后来反复读程序,想起了这是个数组,就又去百度数组怎么发指令,总算成功点亮了,现把相关指令列出如下:
a. 指令1:aa 01 ff 00 00 00 00 00 00 aa 点亮红灯其中ff可以为01~ff
b. 指令2:aa 01 00 00 ff 00 00 00 00 aa 点亮绿灯其中ff可以为01~ff;
c. 指令3:aa 01 00 00 00 00 ff 00 00 aa 点亮蓝灯其中ff可以为01~ff;
d. 指令4:aa 01 ff 00 ff 00 ff 00 00 aa 点亮红、绿、蓝灯其中ff可以为01~ff;
e. 指令5:aa 00 00 00 00 00 00 00 00 aa关闭LED;
试了一下指令aa 01 00 0000 00 00 00 00 aa,LED也是关闭的。
3).预期功能已经实现,刚开始看到开发架构及一大堆代码,感觉无从下手,然后经过不断查询资料及参考社区已有的案列,目前此款芯片移植起来很方便,接下试着体验一下传感器方面的功能,将开发板检测到的数据实时传送手机APP显示,另外也想通过语音模块透过BLE来控制LED的开关,还希望有经验的大佬指导一下,谢谢!
四、写在最后
首先要感谢富芮坤公司,给了这次体验的机会,也要感谢面包板社区这个平台使我们这些电子爱好者能方便的获取资源,总的来说FR8016HA这颗芯片,虽然体积不大,但配上外围模块可以实现很多功能,真是麻雀虽小五脏俱全,随着科技的发展,以后BLE的应用场景将越来越多,也希望富芮坤公司能出一些更详细的教程,以便初学者能快速入门。
最后祝愿此活动顺利进行,各位试用者能实现自己的需求,谢谢!
ble_simple_peripheral.zip
(2.85 MB, 下载次数: 17)
继续阅读本篇相关更多标签
热门活动
全部回复 0
暂无评论,快来抢沙发吧