🤖
LinkIt 7697 BlocklyDuino 使用指南
  • LinkIt 7697 BlocklyDuino 使用指南
    • 認識 LinkIt 7697
    • 認識 BlocklyDuino
    • BlocklyDuino v2 & v3 比較
    • 安裝開發環境 (v2)
      • 安裝 Arduino 編輯器
      • 安裝驅動並連接開發板
      • 安裝 BlocklyDuino 編輯器
      • 連結兩個編輯器並上傳程式
    • 安裝開發環境 (v3)
    • BlocklyDuino 基礎操作
    • 實作範例教學
      • A01. 內建 LED 閃爍
      • A02. 外接 LED 閃爍
      • A03. 外接 LED 呼吸燈
      • A04. RGB LED 顏色變化
      • A05. 外部按鈕控制開關
      • A06. 蜂鳴器播放聲音
      • A07 .可變電阻控制電壓輸出
      • A08. 伺服馬達控制
      • A21. DHT: 溫濕度感應器
      • A22. HTU21D: 溫溼度感應器
      • A23. PMSX003: PM2.5 感測器
      • A24. HC-SR04P: 超音波測距
      • A25. ADXL345: 加速規(動態)
      • A26. ADXL345: 加速規(手勢)
      • A27. 1602/2004: 液晶顯示模組
      • A28. WS2812: RGB 彩色燈條
      • A29. MFRC522: RFID
      • B00. Grove 相關基礎知識
      • B01. Grove 光感應器
      • B02. Grove 超音波測距感應器
      • B03. Grove 溫溼度感應器
      • B04. Grove 繼電器
      • B05. Grove LED 燈條
      • B06. Grove OLED 顯示器
      • C01. 雲端控制 LED 開關
      • C02. 上傳溫溼度到雲端
      • D01. 手機透過 BLE 讀寫裝置資料
      • E01. 遙控器: 按鈕控制 LED
    • 資源鏈結
  • LinkIt 7697 - Arduino IDE 開發指南
    • 環境設定
      • 設定 Arduino IDE
      • 將 LinkIt 7697 連接到電腦
        • 在 Windows 上安裝 CP2102N 驅動程式
        • 在 macOS 上安裝 CP2102N 驅動程式
      • 執行第一個程式
    • 開發指南
      • GPIO
      • UART
      • ADC
      • EINT (外部中斷 / External Interrupt)
      • I2C
      • SPI
      • EEPROM
      • Timer
      • Flash (索引式儲存空間)
      • RTC (Real-Time Clock)
      • Software Serial
      • 使用 Wi-Fi 函式庫
      • 使用 MCS 函式庫
        • 連接到 MCS
        • 連接到 MCSLite
          • 建立可透過 MCS Lite 控制的 Beacon
        • MCS 函式庫 API 使用手冊
          • MCSDevice
          • MCSLiteDeviceMCSLiteDevice
          • MCSDataChannel 相關類別
      • 使用 BLE 低功耗藍牙
        • 藍牙信標
        • 主控裝置
        • 周邊裝置
        • 已知限制
        • LBLE API 指南
          • LBLE
          • LBLECentral
          • LBLEPeripheral
          • LBLEAdvertisementData
          • LBLEService
          • LBLECharacteristic
          • LBLEAddress
          • LBLEUuid
          • LBLEClient
      • 使用 LinkIt Remote
        • LRemote API
        • LRemote 控制元件 API
      • LinkIt 7697 腳位的初始狀態
      • LinkIt 7697 供電說明
      • 更新 Bootloader 與韌體
      • Flash 燒錄工具
      • FOTA 更新
      • LinkIt 7697 的功能限制
      • 自行編譯 Arduino Package
      • 回報問題
    • 週邊元件連接教學
      • SMD 按鈕
      • RGB 三色 LED
      • 可變電阻
      • 九軸感應器 (MPU-9250)
      • 溫度與濕度感應器 (AM2302)
      • 超音波距離感應器
      • 光感應器 (LM358)
      • 0.96 吋 OLED 顯示模組 (SSD1308Z)
      • 長條型 LED 顯示模組 (MY9221)
      • 繼電器
      • 伺服馬達 (EMAX 9g ES08A Servo)
      • 使用 74HC595 驅動七段顯示器
      • 使用 MAX7219 驅動七段顯示器
      • 使用 MAX7219 驅動 8x8 矩陣式顯示器
      • 使用 OLED 模組 (如 SH1106 / SSD1306... 等模組)
      • 使用 PCF8574 / PCF8574A 驅動 1602 LCD
    • 開發套件與擴充板
      • Grove Starter Kit
      • Robot Shield
        • OTTO97
    • 下載
    • 資源連結
    • BSP 版本更新資訊
  • LinkIt 7697 - Development Guide for Arduino IDE
    • Environment Setup
      • Setup Arduino IDE
      • Connecting LinkIt 7697 to Computer
        • Install CP2102N Driver on Windows
        • Install CP2102N Driver on macOS
      • Run Your First Sketch
    • Developer Guide
      • GPIO
      • UART
      • ADC
      • External Interrupt
      • I2C
      • SPI
      • EEPROM
      • Timer
      • Flash (Key-Pair Storage)
      • RTC (Real-Time Clock)
      • Software Serial
      • Using the Wi-Fi Library
      • Using MCS Library
        • Connecting to MCS
        • Connecting to MCSLite
          • Build a Beacon controlled by MCS Lite
        • MCS Library API Reference
          • MCSDevice
          • MCSLiteDevice
          • MCSDataChannel Classes
      • Using Bluetooth
        • Beacons
        • Central Devices
        • Peripheral Devices
        • Limitations of LBLE library
        • LBLE Library API Guide
          • LBLE
          • LBLECentral
          • LBLEPeripheral
          • LBLEAdvertisementData
          • LBLEService
          • LBLECharacteristic
          • LBLEAddress
          • LBLEUuid
          • LBLEClient
      • Using LinkIt Remote
        • LRemote
        • LRemote Control Classes
      • Initial Pin State of LinkIt 7697
      • Powering the LinkIt 7697
      • Update Bootloader and Firmware
      • Flash Uploading Tool
      • FOTA Update
      • Limitations of LinkIt 7697
      • Source Code of Arduino Package
      • Issue Report
    • Tutorial
      • SMD Buttons
      • RGB LED
      • Potentiometer
      • IMU 9DOF v2.0 (MPU-9250)
      • Temperature and Humidity Sensor Pro (AM2302)
      • Grove Ultrasonic Ranger
      • Light Sensor (LM358)
      • Grove OLED Display 0.96" (SSD1308Z)
      • LED Bar v2.0 (MY9221)
      • Relay
      • Mini Servo (EMAX 9g ES08A Servo)
      • Driving 7-segment Displays with 74HC595
      • Driving 7-segment Displays with MAX7219
      • Driving 8x8 Dot Matrices with MAX7219
      • Using OLED module (SH1106 / SSD1306... etc.)
      • Driving 1602 LCD with PCF8574 / PCF8574A
    • Kits and Shields
      • Grove Starter Kit
      • Robot Shield
        • OTTO97
    • Download
    • Resources
    • BSP Release Notes
Powered by GitBook
On this page
  • SimplePeripheral Example
  • Import AppInventor Example Project
  • Connecting to BLE Peripheral
  • Limitations on Bluetooth Library
  1. LinkIt 7697 - Development Guide for Arduino IDE
  2. Developer Guide
  3. Using Bluetooth

Peripheral Devices

PreviousCentral DevicesNextLimitations of LBLE library

Last updated 3 years ago

A BLE peripheral device provides data and services that can be connected by central devices.

To be connected by a BLE central device, you need to create a GATT server in your peripheral device. A GATT server contains a set of attributes that are organized logically as services and characteristics. A service, for example a heart rate measurement service, is identified by an UUID. A service may contain many characteristics that have values, for example a heart rate measurement service has a heart rate measurement value characteristic. A BLE central device can then request to read or write these values.

If you need to learn more about GATT attributes, you can refer to or .

To start a GATT server, you need to define the service and characteristics first. Since services and characteristics are persistent and can be read or written by the central device, you need to define them in global scope, for example:

#include <LBLE.h>
#include <LBLEPeriphral.h>

// Define a simple GATT service with only 1 characteristic
LBLEService ledService("19B10010-E8F2-537E-4F6C-D104768A1214");
LBLECharacteristicInt switchCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", LBLE_READ | LBLE_WRITE);
  • 19B10010-E8F2-537E-4F6C-D104768A1214 is the service UUID, used by central device for service discovery.

  • 19B10011-E8F2-537E-4F6C-D104768A1214 is the characteristic UUID. The GATT protocol treats characteristics as a raw buffer with maximum length of 512 bytes. LBLECharacteristicInt provides a helper class that defines an integer characteristic that you can simply setValue() with integer parameter without having to operate directly on the raw data buffer.

After defining the service and characteristics, you need to define their relationships, and then add the services to the peripheral device, for example:

void setup() {
    // Add characteristics into ledService
    ledService.addAttribute(switchCharacteristic);

    // Add service to GATT server (peripheral)
    LBLEPeripheral.addService(ledService);

To start the GATT server, call the below function, for example:

 LBLEPeripheral.begin();

Note that once begin() is called, you cannot add more services, nor can you change the relationships between services and characteristics.

void loop() {
  delay(100);
  if (switchCharacteristic.isWritten()) {
    const char value = switchCharacteristic.getValue();
    switch (value) {
      case 1:
        digitalWrite(LED_BUILTIN, HIGH);
        break;
      case 0:
        digitalWrite(LED_BUILTIN, LOW);
        break;
      default:
        Serial.println("Unknown value written");
        break;
    }
  }
}

To demonstrate the entire scenario, a brief walkthrough of the SimplePeripheral example of in the LBLE library is provided in the next section.

SimplePeripheral Example

Import AppInventor Example Project

You can use GATT APIs on iOS or Android devices to connect to the peripheral. In this section, you'll learn how to connect to the device with AppInventor, a graphical programming environment for Android application development. To do so, follow the steps below:

  • From the web interface, select Projects > Import project (.aia) from my computer

  • Select and upload the downloaded BLE_LED.aia file

Connecting to BLE Peripheral

This example project connects to the BLE peripheral device by specifying the BLE device address, which is different on each LinkIt 7697 board. The SimplePeripheral example shows device address on the Serial Monitor.

  • Open the Serial Monitor with baud rate 9600, and look for the device address, for example:

  • In AppInventor, switch to the Blocks view, and find the addr block as shown below:

  • Copy and paste the device address from the Serial Monitor to the addr block. Note that AppInventor requires the address in capital hexadecimal letters, for example: D7:00:00:2B:88:8C. It will fail to connect if lower-case letters are given.

  • From the AppInventor menu, select Build > App (provide QR code for .apk):

  • Wait for a few minutes (it may take some time even after the progress bar have reached 100%), scan the QRCode with your Android device.

  • Download and install the apk file BLE_LED.apk. It's an application named BLE Light.

  • Launch the app BLE Light, and tap Connect.

  • If everything is OK, the ON and OFF buttons becomes enabled.

  • Click ON, and the on-board LED turns on.

  • Click OFF, and the on-board LED turns off.

Limitations on Bluetooth Library

The known limitations of the LBLE library is as follows, suggestions or feature implementation requests are welcome, please post your comments in our forum.

  • Cannot define descriptors.

  • Cannot dynamically add new services and characteristics after begin().

  • Cannot adjust TX power for advertisements.

To use this example, open the IDE menu File > Examples > LBLE > SimplePeripheral and upload it. This example waits for central device to write the value to 1 or 0, and change the on-board LED status accordingly. You'll learn how to create an Android app that act as the central device with in the next section.

Download the example AppInventor project file BLE_LED.aia from .

Visit and log-in. You can log-in with your Google account.

LBLEPeripheral only supports 128-bit UUID. To use 16-bit UUID, you need to with the Bluetooth base UUID.

Bluetooth.com
this article
AppInventor
this link
AppInventor website
convert it to 128-bit UUID