第三篇,前段时间太忙了,基本没多少时间来搞弄,只能现在放假更新,给相关的人员带来的不便还望见谅。不多说,马上介绍项目进度。
首先根据我个人的设计内容,主要要解决的问题其实不多,一个就是蓝牙通信,二个是环境数据的读取,第三个就是联网。鉴于时间比较少,就尽最大限度的利用开发SDK包,直接在源码里改,APP端的调试直接用官方的ST BlueMS软件调试。目前已解决蓝牙通信和温度获取,其它环境数据获取基本一样,个人打算只做温度一个了。下面介绍一下具体操作吧。
1,首先大致了解主函数的运作,本人使用的是IAR FOR ARM的开发软件,怎么安装和使用,我就不做介绍了,这个可以在网上找到很详细的资料。如图:
顺着红圈1的路径找到工程文件,然后在2里打开工程
打开的工程如下:
打开主函数main.c找到主函数入口,在下图画圈位置:
顺着主函数往下看,前面都是初始化等功能函数,这个我们不必细看,主要是看以下几个函数:
我这里就只介绍我个人会用到的函数了,其中下面这个函数是处理蓝牙BlueNRG有信息传过来的中断事件的,大致是通过中断函数然后置位标识,然后通过HCI函数读取数据并转移的。大家可以仔细的看一下。
还有一个比较重要的函数是,如下:
此处是处理气压,温度和湿度并发送出去的函数,其中包括环境数据的获取函数也在里面,都在SendEnvironmentalData()这个函数里处理,下图是函数中获取温度和发送到蓝牙的语句,其它一样:
还有一个重要的函数就是蓝牙的定制服务机制,也就是蓝牙获取APP发过来的数据的地方,这个函数在sensor_service.c这个C文件里,处理函数则是void Attribute_Modified_CB(uint16_t attr_handle, uint8_t * att_data,uint8_t data_length)这个函数,如图的1和2:
其中处理ST BlueMS中Debug Console中测试通信的函数也在这里,而返回数据的函数的位置如下图:
好了,看到这里基本就能大致了解套件的蓝牙收发函数,以及环境处理函数,对于我个人的项目可以作个简单的开发了。目前已经可以实现蓝牙点灯,获取温度的功能,基于简化作品,作品就以控制LED灯模拟类推控制家电的开关咯,效果可以看看我发的视频,相关资料可以到我的上一个帖下载。
接下来就会进一步实现通过设置一个温度值,当环境温度值大于此值就会打开一个开关,其中开关用LED类比。目前就这样,不知今晚能不能够把剩下的功能完善,唉~还是继续肝吧!!!各位参赛的朋友也加油了,谢谢大家,再见。