Genuino101CurieBLEButtonLED

Bu öğretici ile anakartınızı bir akıllı telefon veya tablete bağlamak için Curie BLE kütüphanesini kullanmayı öğreneceksiniz. Panoya bağlı bir düğme, Pin 13'teki yerleşik LED'i açıp kapatmanıza olanak tanır. Aynı işlem akıllı telefondan da yapılabilir ve akıllı telefon LED durumunu okuyabilir. Bu çift yönlü iletişim BLE merkezi (akıllı telefon) ve çevre birimi (101 kartımız) arasında gerçekleşir.

Gerekli Donanım

  • Arduino veya Genuino 101
  • butona basınız
  • 10k ohm direnç
  • breadboard
  • bağlantı telleri
  • Akıllı Telefon veya Tablet Android veya iOS

Yazılım Gerekli

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

Devre

101'e, butona basılmadığı sürece D4 DÜŞÜK seviyesini koruyan 10k ohm'luk bir dirençle bir basma düğmesi bağlamanız gerekir. Bu olduğunda, D4 pimi 3.3V'a bağlanır ve YÜKSEK olarak okunur.

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 fiziksel düğmeyi kullanarak veya "sanal" bir düğmenin değerini yazmak için 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ğlan düğmesiyle ButtonLE 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 ve okunabilen ve alınabilen bildirimler içerir. Ayrıca ilk Bilinmeyen Karakteristiklerin sağında iki simge bulunur. Aşağı dönük ok okumak , diğeri yazmak demektir.


İkinci Bilinmeyen Karakteristik öğesine dokunursanız ve üzerinde "X" işaretiyle en sağdaki küçük simgeyi (birden çok aşağı ok işaretli) ayarlarsanız, bildirimleri etkinleştirirsiniz. Bu, düğmeye her bastığınızda veya bıraktığınızda değişen LED durumunu görmenizi sağlar.


Yazma değeri açılır penceresini açmak için ilk Bilinmeyen Karakteristikte yukarıyı gösteren oka dokunun, ardından veri türünü BYTE olarak ayarlayın . Bu, bir HEX formatı girişinin gerekli olduğunu göstermek için giriş satırının önüne küçük bir "0x" ekleyecektir.


Seçtiğiniz değeri yazmak için hatta dokunun ("00" veya "01"). 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 on-board LED
const int buttonPin = 4; // set buttonPin to digital pin 4

BLEPeripheral blePeripheral; // create peripheral instance
BLEService ledService("19B10010-E8F2-537E-4F6C-D104768A1214"); // create service


// create switch characteristic and allow remote device to read and write
BLECharCharacteristic ledCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
// create button characteristic and allow remote device to get notifications
BLECharCharacteristic buttonCharacteristic("19B10012-E8F2-537E-4F6C-D104768A1214", BLERead | BLENotify); // allows remote device to get notifications

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); // use the LED on pin 13 as an output
  pinMode(buttonPin, INPUT); // use button pin 4 as an input

  // set the local name peripheral advertises
  blePeripheral.setLocalName("ButtonLED");
  // set the UUID for the service this peripheral advertises:
  blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

  // add service and characteristics
  blePeripheral.addAttribute(ledService);
  blePeripheral.addAttribute(ledCharacteristic);
  blePeripheral.addAttribute(buttonCharacteristic);

  ledCharacteristic.setValue(0);
  buttonCharacteristic.setValue(0);

  // advertise the service
  blePeripheral.begin();

  Serial.println("Bluetooth device active, waiting for connections...");
}

void loop() {
  // poll peripheral
  blePeripheral.poll();

  // read the current button pin state
  char buttonValue = digitalRead(buttonPin);

  // has the value changed since the last read
  boolean buttonChanged = (buttonCharacteristic.value() != buttonValue);

  if (buttonChanged) {
    // button state changed, update characteristics
    ledCharacteristic.setValue(buttonValue);
    buttonCharacteristic.setValue(buttonValue);
  }

  if (ledCharacteristic.written() || buttonChanged) {
    // update LED, either central has written to characteristic or button state has changed
    if (ledCharacteristic.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
*/
[Kodu Al]

See Also