简单的实验,我们用手机蓝牙发送数据,控制开发板13引脚连接的LED灯,发送0表示关灯,发送非0数据表示开灯。
1,下载必要的蓝牙软件:lightBLE
还有【产品链接】: Arduino 101
2.在IDE中打开蓝牙驱动库中的实例LED:CurieBLE\examples\LED,下载到开发板!
- /*
- Copyright (c) 2015 Intel Corporation. All rights reserved.
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- /*
- This sketch example partially implements the standard Bluetooth Low-Energy Heart Rate service.
- For more information: https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx
- */
-
- #include <CurieBle.h>
-
- BLEPeripheral blePeripheral; // BLE Peripheral Device (the board you're programming)
- BLEService heartRateService("180D"); // BLE Heart Rate Service
-
- // BLE Heart Rate Measurement Characteristic"
- BLECharacteristic heartRateChar("2A37", // standard 16-bit characteristic UUID
- BLERead | BLENotify, 2); // remote clients will be able to get notifications if this characteristic changes
- // the characteristic is 2 bytes long as the first field needs to be "Flags" as per BLE specifications
- // https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml
-
- int oldHeartRate = 0; // last heart rate reading from analog input
- long previousMillis = 0; // last time the heart rate was checked, in ms
-
- void setup() {
- Serial.begin(9600); // initialize serial communication
- pinMode(13, OUTPUT); // initialize the LED on pin 13 to indicate when a central is connected
-
- /* Set a local name for the BLE device
- This name will appear in advertising packets
- and can be used by remote devices to identify this BLE device
- The name can be changed but maybe be truncated based on space left in advertisement packet */
- blePeripheral.setLocalName("HeartRateSketch");
- blePeripheral.setAdvertisedServiceUuid(heartRateService.uuid()); // add the service UUID
- blePeripheral.addAttribute(heartRateService); // Add the BLE Heart Rate service
- blePeripheral.addAttribute(heartRateChar); // add the Heart Rate Measurement characteristic
-
- /* Now activate the BLE device. It will start continuously transmitting BLE
- advertising packets and will be visible to remote BLE central devices
- until it receives a new connection */
- blePeripheral.begin();
- Serial.println("Bluetooth device active, waiting for connections...");
- }
-
- void loop() {
- // listen for BLE peripherals to connect:
- BLECentral central = blePeripheral.central();
-
- // if a central is connected to peripheral:
- if (central) {
- Serial.print("Connected to central: ");
- // print the central's MAC address:
- Serial.println(central.address());
- // turn on the LED to indicate the connection:
- digitalWrite(13, HIGH);
-
- // check the heart rate measurement every 200ms
- // as long as the central is still connected:
- while (central.connected()) {
- long currentMillis = millis();
- // if 200ms have passed, check the heart rate measurement:
- if (currentMillis - previousMillis >= 200) {
- previousMillis = currentMillis;
- updateHeartRate();
- }
- }
- // when the central disconnects, turn off the LED:
- digitalWrite(13, LOW);
- Serial.print("Disconnected from central: ");
- Serial.println(central.address());
- }
- }
-
- void updateHeartRate() {
- /* Read the current voltage level on the A0 analog input pin.
- This is used here to simulate the heart rate's measurement.
- */
- int heartRateMeasurement = analogRead(A0);
- int heartRate = map(heartRateMeasurement, 0, 1023, 0, 100);
- if (heartRate != oldHeartRate) { // if the heart rate has changed
- Serial.print("Heart Rate is now: "); // print it
- Serial.println(heartRate);
- const unsigned char heartRateCharArray[2] = { 0, (char)heartRate };
- heartRateChar.setValue(heartRateCharArray, 2); // and update the heart rate measurement characteristic
- oldHeartRate = heartRate; // save the level for next comparison
- }
- }
复制代码
3.打开手机蓝牙,打开软件lightBLE,会显示101的蓝牙设备名称,点击设备名连接即可:
4.出现下面的界面表示连接成功,点击最下面的设备(0x19B10001-E8F2-537E-XXXX):
5.如果顺利会出现下面的界面,这里我们就可以向开发板发送数据了,点击Write new value:
6.点击Write new value后可输入数字,然后点击右下角的Done即可发送数据,发送0关闭小灯,非0值打开小灯:
7.我们在电脑IDE的串口中也能看到相关信息:
备注:如果蓝牙连接后界面和上面不一样,你需要忽略手机设置里的蓝牙连接
OK,蓝牙控制开发板的基本操作可以玩起来了!
看累了没,最后一个帖子来个脑经急转弯:
有个盲人,别人生病了都去看医生,为什么他生病了从来不去看医生,这是为什么呢?
【Arduino/Genuino 101 入门教程】
* DF创客社区版权所有,欢迎转载。
转载请务必标注来源: DF创客社区+作者姓名+原文网址。
|
|
|
|
|
|