Eğitimler
Genuino101CurieBLECallbackLED
Bu öğretici ile Arduino veya Genuino 101'in yerleşik Bluetooth Düşük Enerji (BLE) özelliklerini kullanarak bir akıllı telefon veya tabletten Pin 13'e bağlı LED'i açabilirsiniz. Merkezi yoklayan ve geri aramalarla yönetilen BLE olayları oluşturan bir LED hizmeti oluşturursunuz. Değerler, Android ve iOS için kullanılabilen nRF Ana Kontrol Paneli (BLE) uygulaması kullanılarak gönderilir.
Gerekli Donanım
- Arduino veya Genuino 101
- Akıllı Telefon veya Tablet Android veya iOS
Yazılım Gerekli
Devre
Yazılım Temelleri
Kütüphaneler
CurieBLE .h , 101 kartının BLE modülünün tüm parametrelerine, özelliklerine ve işlevlerine erişim sağlayan kütüphanedir. Bluetooth Düşük Enerji ile bu standardı destekleyen akıllı telefonlara, tabletlere ve çevre birimlerine bağlanmak ve bunlarla iletişim kurmak mümkündür. Bu öğreticide, akıllı telefondaki bir kontrol uygulamasıyla bağlantı kurmak ve bir LED'i açmak veya kapatmak için kullanılan değeri almak için kullanılır.
Fonksiyonlar
Aşağıdaki işlevler BLE olayları tarafından yönlendirilen geri çağrılardır.
blePeripheralConnectHandler () - BLE merkezi 101 kartına bağlandığında çağrılır. Arduino Software (IDE) Seri Monitörüne BLE merkezi adresli bir bağlantı mesajı yazdırır.
blePeripheralDisconnectHandler () - BLE merkezi 101 kartından ayrıldığında çağrılır. Arduino Software (IDE) Seri Monitörüne BLE merkezi adresli bir bağlantı kesme mesajı yazdırır.
switchCharacteristicWritten () - BLE merkezi anahtar özelliğini yazdığında çağrılır. NRF Ana Kontrol Panelinde kullanıcı tarafından karakterize edilen değere bağlı olarak LED'i açar veya kapatır.
Akıllı Telefonda
Arduino veya Genuino 101'in yerleşik LED'ini sürmek için Android ve iOS için nRF Ana Kontrol Paneline (BLE) ihtiyacınız var. Başlatın ve bir TARAMA yapın. LEDCB sekmesini bir bağlantı düğmesiyle bulmalısınız
101 kartı tarafından sunulan BLE hizmetimizin açıklamasını bulacağınız aşağıdaki ekranı açmak için bağlan üzerine dokunun. Bilinmeyen hizmet bir UUID 19B10000- E8F2 -537E-4F6C- D104768A1214'e sahiptir ve BLEService ledService("19B10000- E8F2 -537E-4F6C- D104768A1214 ");
tarafından ayarlanır BLEService ledService("19B10000- E8F2 -537E-4F6C- D104768A1214 ");
taslağın başında ifade.
Aşağıda gösterildiği gibi, özelliğini açmak için Bilinmeyen Hizmete dokunun. Bir Yazma İsteği ile yazılabilen özellikler içerir. ayrıca Bilinmeyen Karakteristik'in sağında iki simge bulunur. Aşağı dönük ok okumak , diğeri yazmak demektir.
Yazma değeri açılır penceresini açmak için yukarıyı gösteren oka dokunun, ardından veri türünü UINT 8 olarak ayarlayın ve seçtiğiniz değeri yazmak için hatta dokunun ("0" veya "1"). Gönder düğmesine dokunduğunuzda değer 101 panosuna gönderilir ve LED anında buna göre değişir.
Kod
* Copyright (c) 2016 Intel Corporation. All rights reserved.
* See the bottom of this file for the license terms.
*/
#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);
}
}
/*
Copyright (c) 2016 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
*/