查看: 4709|回复: 2

基于Windows10 UWP的蓝牙BLE应用——与Arduino101交互

[复制链接]
  • TA的每日心情
    开心
    2017-7-3 15:02
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2017-4-26 22:54 | 显示全部楼层 |阅读模式
    本帖最后由 甲基红橙黄绿蓝 于 2017-5-1 22:18 编辑

    概述
            无意中逛了逛www.bluetooth.com,发现一个不错的示例项目:App Accelerator。里面包括各大平台的BLE的示例Demo,我试了一下Windows 10 UWP的BLE示例,成功与Arduino101连接并获取了Arduino101发来的心率服务的数据。另外还有安卓、IOS等平台的BLEDemo代码,在此抛砖引玉。



    目的       在Windows10上编译并运行一个BLE示例,接收来自Arduino 101的HeartRateService提供的数据



    一、在Windows10上部署项目
            需要支持UWP应用的Visual Studio版本,我用的是Visual Studio 2017
            项目下载地址:www.bluetooth.com/develop-with-b ... p-acc-2-eb-thankyou
            下载以后解压,用Visual Studio打开 app-accelerator-2-1\Windows10\BLEServiceBrowser.sln,直接编译运行,看到下图所示的UWP界面:
    BLEServiceBrowser_GUI.png
    图:编译运行得到的程序界面






    二、上传HeartRateSketch到Arduino101
            将以下代码上传到你的Arduino 101
    [mw_shl_code=cpp,true]#include <CurieBLE.h>

    BLEPeripheral blePeripheral;
    BLEService S("180D");
    BLECharacteristic C("2A37", BLENotify, 2);

    void setup() {
      blePeripheral.setLocalName("Arduino 101");
      blePeripheral.setAdvertisedServiceUuid(S.uuid());
      blePeripheral.addAttribute(S);
      blePeripheral.addAttribute(C);
      blePeripheral.begin();
    }

    uint8_t data[] = {0,0};

    void loop() {
      data[1] ++;
      C.setValue(data,2);
      delay(1000);
    }[/mw_shl_code]






    三、让Windows10与Arduino101通过蓝牙BLE交互
            在Windows10搜索栏里搜索“蓝牙”打开“蓝牙设置”。若上一步上传成功,这里应该能搜到Arduino101,直接连接。
    蓝牙设置.png
    图:Windows10连接到你的Arduino101

            运行刚刚的UWP应用BLEServiceBrowser,结合下图,执行如下步骤:
    step.png
    图:设置服务
            1、选择服务为 Heart Rate Monitor
            2、点击 Get Service
            3、选择搜寻到的Service,即Arduino 101正在提供的Service
            4、点击右边的UUID
            5、把下方的Notification设置为On
            6、可以看到右下方有Arduino101传来的蓝牙数据了!






    总结
            开发BLE的GATT Service可以参考我的一篇帖子www.arduino.cn/thread-42927-1-1.html,这对打破传统蓝牙开发的惯性思维有很多帮助。
    如果有同学对BLE的上位机(电脑)上的开发有兴趣,可以看看相关的C#编程。


  • TA的每日心情
    奋斗
    2020-11-4 23:38
  • 签到天数: 49 天

    [LV.5]常住居民I

    发表于 2017-4-26 23:20 | 显示全部楼层
    太长了,没看,直接加精
  • TA的每日心情
    慵懒
    2021-1-15 09:11
  • 签到天数: 863 天

    [LV.10]以坛为家III

    发表于 2017-4-27 10:32 | 显示全部楼层
    可以的  学习了~
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    新设计的一款遥控播放音乐机器人
    新设计的一款遥控播放音乐
    近期设计的一款遥控播放音乐歌曲的机器人终于完工了,DF mini mp3模块是真的强大。sol
    ESP8266物联网创意点阵时钟,女朋友看了都想要!
    ESP8266物联网创意点阵时
    [md]本文作者:默 & 铁熊 前段时间我在网上看到了一款很有意思的点阵时钟,它可以
    按键中断无法触发
    按键中断无法触发
    如题,按键中断无法触发,设成电平变化触发中断程序,但是flag的状态一直不变 void
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    OLED心率示波仪
    OLED心率示波仪
    在ARDUINO UNO开发板上插上一片0.96寸OLED显示屏并上传已下简单的程序就能构成一个OLE
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表