Wednesday, April 27, 2016

Control Arduino/Genuino 101 onboard LED from Android/iOS via Bluetooth Low Energy (BLE)

From Arduino IDE with Arduino/Genuino 101 board installed, it's a CallbackLED example to test Arduino/Genuino 101 Bluetooth Low Energy (BLE) capabilities to turn on and of the LED connected to Pin 13 from a Android or iOS.


In Arduino IDE, open and download the CallbackLED example:
- File > Examples > CurieBLE > CallbackLED

CallbackLED.ino
/*
 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
*/
#include <CurieBLE.h>
const int ledPin = 13; // set ledPin to use on-board LED
BLEPeripheral blePeripheral; // create peripheral instance
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // create service
// create switch characteristic and allow remote device to read and write
BLECharCharacteristic switchChar("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
void setup() {
 Serial.begin(9600);
 pinMode(ledPin, OUTPUT); // use the LED on pin 13 as an output
 // set the local name peripheral advertises
 blePeripheral.setLocalName("LEDCB");
 // set the UUID for the service this peripheral advertises
 blePeripheral.setAdvertisedServiceUuid(ledService.uuid());
 // add service and characteristic
 blePeripheral.addAttribute(ledService);
 blePeripheral.addAttribute(switchChar);
 // assign event handlers for connected, disconnected to peripheral
 blePeripheral.setEventHandler(BLEConnected, blePeripheralConnectHandler);
 blePeripheral.setEventHandler(BLEDisconnected, blePeripheralDisconnectHandler);
 // assign event handlers for characteristic
 switchChar.setEventHandler(BLEWritten, switchCharacteristicWritten);
// set an initial value for the characteristic
 switchChar.setValue(0);
 // advertise the service
 blePeripheral.begin();
 Serial.println(("Bluetooth device active, waiting for connections..."));
}
void loop() {
 // poll peripheral
 blePeripheral.poll();
}
void blePeripheralConnectHandler(BLECentral& central) {
 // central connected event handler
 Serial.print("Connected event, central: ");
 Serial.println(central.address());
}
void blePeripheralDisconnectHandler(BLECentral& central) {
 // central disconnected event handler
 Serial.print("Disconnected event, central: ");
 Serial.println(central.address());
}
void switchCharacteristicWritten(BLECentral& central, BLECharacteristic& characteristic) {
 // central wrote new value to characteristic, update LED
 Serial.print("Characteristic event, written: ");
 if (switchChar.value()) {
 Serial.println("LED on");
 digitalWrite(ledPin, HIGH);
 } else {
 Serial.println("LED off");
 digitalWrite(ledPin, LOW);
 }
}

On smartphone with BLE, download "nRF Master Control Panel (BLE)" app:
nRF Master Control Panel is a powerful generic tool that allows you to scan, advertise and explore your Bluetooth Smart (BLE) devices and communicate with them. nRF MCP supports number of Bluetooth SIG adopted profiles including Device Firmware Update profile (DFU) from Nordic Semiconductors.
- Android
- iOS


reference: http://www.arduino.cc/en/Tutorial/Genuino101CurieBLECallbackLED


No comments:

Post a Comment

[フレーム]

Subscribe to: Post Comments (Atom)

AltStyle によって変換されたページ (->オリジナル) /