Genuino101CurieBLELED

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. Bir LED hizmeti oluşturuyor ve BLE merkezini okumaya devam ediyor, kontrol etmek istediğiniz LED ile ilişkili karakteristik bir yazma olayı arıyorsunuz. Bu eğitici, değişikliğin yoklama ve geri arama işlevleri tarafından yönetildiği Geri Arama LED'ine benzer. Değerler, Android ve iOS için kullanılabilen nRF Ana Kontrol Paneli (BLE) uygulaması kullanılarak gönderilir.

Gerekli Donanım

Yazılım Gerekli

  • Android ve iOS için nRF Ana Kontrol Paneli (BLE)

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

Yok

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. Bir bağlantı düğmesiyle LED sekmesini 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


Şimdi 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

Bu çizimde BLE çevre birimini başlatmak ve yapılandırmak için setup () yöntemini kullanırsınız. Aygıt adını LED olarak ayarlamaya ve hizmet UUID'sini yapılandırmaya başlarsınız:
blePeripheral.setLocalName("LED");
blePeripheral.setAdvertisedServiceUuid(ledService.uuid());
Ardından BLE hizmetini yapılandırır ve anahtar özelliklerini (LED'i kontrol etmek için kullanılır) eklersiniz:
blePeripheral.addAttribute(ledService);
blePeripheral.addAttribute(switchCharacteristic);
Anahtar özellikleri değerini 0 olarak ayarlarsınız (varsayılan - LED kapalı):
switchCharacteristic.setValue(0);
Ve son olarak, önceki adımlarda kurulan BLE hizmetinin reklamını yapmaya başlıyorsunuz:
blePeripheral.begin();

Döngüde () BLE merkezi ile bağlantıyı kontrol edersiniz ve bağlıysa anahtar karakteristiğinin yazılıp yazılmadığını kontrol edersiniz ve eğer öyleyse değerini okur ve LED durumunu buna göre ayarlarsınız.

/*
 * Copyright (c) 2016 Intel Corporation.  All rights reserved.
 * See the bottom of this file for the license terms.
 */


#include <CurieBLE.h>

BLEPeripheral blePeripheral;  // BLE Peripheral Device (the board you're programming)
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED Service

// BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central
BLEUnsignedCharCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

const int ledPin = 13; // pin to use for the LED

void setup() {
  Serial.begin(9600);

  // set LED pin to output mode
  pinMode(ledPin, OUTPUT);

  // set advertised local name and service UUID:
  blePeripheral.setLocalName("LED");
  blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

  // add service and characteristic:
  blePeripheral.addAttribute(ledService);
  blePeripheral.addAttribute(switchCharacteristic);

  // set the initial value for the characeristic:
  switchCharacteristic.setValue(0);

  // begin advertising BLE service:
  blePeripheral.begin();

  Serial.println("BLE LED Peripheral");
}

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());

    // while the central is still connected to peripheral:
    while (central.connected()) {
      // if the remote device wrote to the characteristic,
      // use the value to control the LED:
      if (switchCharacteristic.written()) {
        if (switchCharacteristic.value()) {   // any value other than 0
          Serial.println("LED on");
          digitalWrite(ledPin, HIGH);         // will turn the LED on
        } else {                              // a 0 value
          Serial.println(F("LED off"));
          digitalWrite(ledPin, LOW);          // will turn the LED off
        }
      }
    }

    // when the central disconnects, print it out:
    Serial.print(F("Disconnected from central: "));
    Serial.println(central.address());
  }
}

/*
   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
*/
[Kodu Al]

See Also