查看: 15957|回复: 5

[应用教程] Arduino/Genuino 101 入门教程五:蓝牙发送数据

[复制链接]
手机端蓝牙软件查看101开发板发送过来的数据:我们通过手机端蓝牙软件连接101开发板,通过可视化界面显示从板子模拟口读到的数据变化。

【产品链接】:  Arduino 101




操作步骤:
1.下载必要的手机端软件 nRF Toolbox ,我这里下的是ios板本!(顺便可以载下载一个软件: lightBlue,下一个教程会用到哦)
1.jpg

2.下载Arduino IDE程序
  1. /*
  2.    Copyright (c) 2015 Intel Corporation.  All rights reserved.

  3.    This library is free software; you can redistribute it and/or
  4.    modify it under the terms of the GNU Lesser General Public
  5.    License as published by the Free Software Foundation; either
  6.    version 2.1 of the License, or (at your option) any later version.

  7.    This library is distributed in the hope that it will be useful,
  8.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  10.    Lesser General Public License for more details.

  11.    You should have received a copy of the GNU Lesser General Public
  12.    License along with this library; if not, write to the Free Software
  13.    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  14. */

  15. /*
  16.    This sketch example partially implements the standard Bluetooth Low-Energy Heart Rate service.
  17.    For more information: https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx
  18. */

  19. #include <CurieBle.h>

  20. BLEPeripheral blePeripheral;       // BLE Peripheral Device (the board you're programming)
  21. BLEService heartRateService("180D"); // BLE Heart Rate Service

  22. // BLE Heart Rate Measurement Characteristic"
  23. BLECharacteristic heartRateChar("2A37",  // standard 16-bit characteristic UUID
  24.     BLERead | BLENotify, 2);  // remote clients will be able to get notifications if this characteristic changes
  25.                               // the characteristic is 2 bytes long as the first field needs to be "Flags" as per BLE specifications
  26.                               // https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml

  27. int oldHeartRate = 0;  // last heart rate reading from analog input
  28. long previousMillis = 0;  // last time the heart rate was checked, in ms

  29. void setup() {
  30.   Serial.begin(9600);    // initialize serial communication
  31.   pinMode(13, OUTPUT);   // initialize the LED on pin 13 to indicate when a central is connected

  32.   /* Set a local name for the BLE device
  33.      This name will appear in advertising packets
  34.      and can be used by remote devices to identify this BLE device
  35.      The name can be changed but maybe be truncated based on space left in advertisement packet */
  36.   blePeripheral.setLocalName("HeartRateSketch");
  37.   blePeripheral.setAdvertisedServiceUuid(heartRateService.uuid());  // add the service UUID
  38.   blePeripheral.addAttribute(heartRateService);   // Add the BLE Heart Rate service
  39.   blePeripheral.addAttribute(heartRateChar); // add the Heart Rate Measurement characteristic

  40.   /* Now activate the BLE device.  It will start continuously transmitting BLE
  41.      advertising packets and will be visible to remote BLE central devices
  42.      until it receives a new connection */
  43.   blePeripheral.begin();
  44.   Serial.println("Bluetooth device active, waiting for connections...");
  45. }

  46. void loop() {
  47.   // listen for BLE peripherals to connect:
  48.   BLECentral central = blePeripheral.central();

  49.   // if a central is connected to peripheral:
  50.   if (central) {
  51.     Serial.print("Connected to central: ");
  52.     // print the central's MAC address:
  53.     Serial.println(central.address());
  54.     // turn on the LED to indicate the connection:
  55.     digitalWrite(13, HIGH);

  56.     // check the heart rate measurement every 200ms
  57.     // as long as the central is still connected:
  58.     while (central.connected()) {
  59.       long currentMillis = millis();
  60.       // if 200ms have passed, check the heart rate measurement:
  61.       if (currentMillis - previousMillis >= 200) {
  62.         previousMillis = currentMillis;
  63.         updateHeartRate();
  64.       }
  65.     }
  66.     // when the central disconnects, turn off the LED:
  67.     digitalWrite(13, LOW);
  68.     Serial.print("Disconnected from central: ");
  69.     Serial.println(central.address());
  70.   }
  71. }

  72. void updateHeartRate() {
  73.   /* Read the current voltage level on the A0 analog input pin.
  74.      This is used here to simulate the heart rate's measurement.
  75.   */
  76.   int heartRateMeasurement = analogRead(A0);
  77.   int heartRate = map(heartRateMeasurement, 0, 1023, 0, 100);
  78.   if (heartRate != oldHeartRate) {      // if the heart rate has changed
  79.     Serial.print("Heart Rate is now: "); // print it
  80.     Serial.println(heartRate);
  81.     const unsigned char heartRateCharArray[2] = { 0, (char)heartRate };
  82.     heartRateChar.setValue(heartRateCharArray, 2);  // and update the heart rate measurement characteristic
  83.     oldHeartRate = heartRate;           // save the level for next comparison
  84.   }
  85. }
复制代码

3,可以在开发板的模拟口A0连接一个模拟量传感器,可以是光线传感器,声音传感器等,我这里直接在模拟口A0接了一根杜邦线。

4,打开手机蓝牙,再打开软件nRF Toolbox
2.jpg

5.点击上面图片中的爱心图标,会出现下面的界面:
3.jpg

6.点击上面界面下面的CONNECT,会出现下面101开发板的蓝牙设备名称,点击名称连接即可!
4.jpg

7.连接成功后,模拟口A0的数据就会在手机端显示出来,也能在IDE串口中查看读到的数据:
5.jpg



8.电脑端串口对应的数据:
6.jpg



9.OK,基本操作已经做完了,要玩出什么花样就看你了!


看累了没,开心一刻:
某晚,一裸男叫了一辆出租车,女司机目不转睛盯着看他,裸男大怒,吼道:你他妈没见过裸男呀!女司机也大怒:我看你他妈从哪儿掏钱!


Arduino/Genuino 101 入门教程】

  * DF创客社区版权所有,
欢迎转载
  转载请务必标注来源: DF创客社区+作者姓名+原文网址。




本帖被以下淘专辑推荐:

  • · |主题: 32, 订阅: 1

iooops  版主

发表于 2016-3-20 21:41:44

效率真高
回复 支持 反对

使用道具 举报

lalahuo  学徒

发表于 2016-4-1 09:56:33

为什么我手机蓝牙搜到居里的蓝牙却连接不上去。就是连上就断了
回复 支持 反对

使用道具 举报

youwa  学徒

发表于 2016-8-15 09:49:17

为什么代码直接复制会出错啊,提示编译错误
回复 支持 反对

使用道具 举报

杨瑞涛  学徒

发表于 2017-3-23 15:42:06

youwa 发表于 2016-8-15 09:49
为什么代码直接复制会出错啊,提示编译错误

新版本的arduino里要把#include“CurieBle.h”换成#include"CurieBLE.h"
回复 支持 反对

使用道具 举报

 学徒

发表于 2018-3-30 11:03:30

你好,我英语水平低,编程也不是很会,想请教一下你,如果还是用这个nrf toolbox 工具,如果我要获取的是体温而不是心率,大概应该怎么改代码呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail