查看: 943|回复: 0

LinkSprite Mbed BLE Sensors tag开发板试用-BLE蓝牙通信实验

[复制链接]
  • TA的每日心情
    开心
    2017-1-18 23:24
  • 签到天数: 63 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-3-1 10:35:03 | 显示全部楼层 |阅读模式
    分享到:
    蓝牙部分一般是比较麻烦的的开发部分,LinkSprite和Mbed的蓝牙参考例程不是太多。还好Mbed的开发方式较为方便,自己根据例程,实现了简单的蓝牙双向数据传输实验。
           首先登录developer.mbed.org/compiler,选择Health-Thermometer模版,建立一个新工程。如下图所示。

           编辑main.cpp。
           设置LED端口。如下图所示。

           屏蔽掉模版中的呼吸灯操作。如下图所示。

           初始化2个LED为熄灭状态。如下图所示。

           原模版中实现了LinkSprite上传数据的功能,每秒float温度数据+0.1,通过updateTemperature()上传数据。此模版中未实现读取数据的功能,其它模版中也没有找到。参考了项目中的其它源文件,编写了一个readLSdata()函数,用来读取接收到的蓝牙数据,用来控制2个LED的状态。如下图所示。

           编辑HealthThermometerService.h。
           readLSdata()函数需要在HealthThermometerService.h添加。原模版中添加了一个服务,其中包含2个通道,其中tempLocation通道为可读可通知通道,用于温度数据的上传。另外一个tempLocation通道为可读通道,也不可被外部设备写入。首先修改一下tempLocation通道为可读可写通道。如下图所示。

           添加tempLocation通道属性。如下图所示。

           为tempLocation通道添加读取数据函数readLSdata()。如下图所示。

           源文件修改好了,保存,编译,把程序下载到LinkSprite中。
           开始测试。打开手机中的nRF connect App。发现nRF5x设备,点击CONNECT连接设备。如下图所示。

           连接后列表中出现Health Thermometer服务,UUID为0x1809,主服务。如下图所示。

           点击Health Thermometer服务,进入通道列表,出现Tempetature Measurement通道和TempetatureType通道。如下图所示。

           点击按钮“1”后,Tempetature Measurement通道的Value值被更新。如下图所示。

           通过TempetatureType通道发送数据,控制LED状态。
           点击按钮3,输入0x0b(十进制11),点击send,点亮led1,红灯亮。如下图所示。


           点击按钮3,输入0x16(十进制22),点击send,熄灭led1,红灯灭。如下图所示


           点击按钮3,输入0x21(十进制33),点击send,点亮led2,蓝灯亮。如下图所示。


           点击按钮3,输入0x2c(十进制44),点击send,熄灭led2,蓝灯灭。如下图所示。

    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 19:24 , Processed in 0.111931 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.