891|0

41

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【安信可BW16-Kit开发板】BLE应用—温度测量与显示 [复制链接]

【安信可BW16-Kit开发板】BLE应用—温度测量与显示

 

   在《【安信可BW16-Kit开发板】DHT11应用》和《【安信可BW16-Kit开发板】WifiWebClient应用》中分别介绍了利用安信可BW16-Kit开发板进行温度测试和wifi应用,本篇介绍一下安信可BW16-Kit开发板在ArduinoIDE下的BLE应用示例。有关BW16-Kit开发板基本性能和Arduino开发环境搭建不在赘述。

一、BLE应用开发示例

  1. 按下图连接好线路,注意BW16-Kit开发板DHT11信号线连接A26引脚。

 

  1. ArduinoIDE环境下选择开发板为Ameba。
  2. 选择“Tools” -> “Board” -> “Arduino Ameba”
  3. 然后打开AmebaBLE下的DHT over BLEUart示例,“Files”->“Examples” ->“AmebaBLE”->“DHT_over_BLEUart”。


   

  1. 程序如下
/*

 Example

 */

#include "BLEDevice.h"

#include "DHT.h"

#define UART_SERVICE_UUID      "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"

#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"

#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

#define STRING_BUF_SIZE 100

#define DHTPIN 8

#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);



BLEService UartService(UART_SERVICE_UUID);

BLECharacteristic Rx(CHARACTERISTIC_UUID_RX);

BLECharacteristic Tx(CHARACTERISTIC_UUID_TX);

BLEAdvertData advdata;

BLEAdvertData scndata;

bool notify = false;



void writeCB (BLECharacteristic* chr, uint8_t connID) {

    Serial.print("Characteristic ");

    Serial.print(chr->getUUID().str());

    Serial.print(" write by connection ");

    Serial.println(connID);

    if (chr->getDataLen() > 0) {

        Serial.print("Received string: ");

        Serial.print(chr->readString());

        Serial.println();

    }

}



void notifCB(BLECharacteristic* chr, uint8_t connID, uint16_t cccd) {

    if (cccd & GATT_CLIENT_CHAR_CONFIG_NOTIFY) {

        Serial.print("Notifications enabled on Characteristic");

        notify = true;

    } else {

        Serial.print("Notifications disabled on Characteristic");

        notify = false;

    }

    Serial.print(chr->getUUID().str());

    Serial.print(" for connection");

    Serial.println(connID);

}



void setup() {

    Serial.begin(115200);

    advdata.addFlags();

    advdata.addCompleteName("AMEBA_BLE_DEV");

    scndata.addCompleteServices(BLEUUID(UART_SERVICE_UUID));

    Rx.setWriteProperty(true);

    Rx.setWritePermissions(GATT_PERM_WRITE);

    Rx.setWriteCallback(writeCB);

    Rx.setBufferLen(STRING_BUF_SIZE);

    Tx.setReadProperty(true);

    Tx.setReadPermissions(GATT_PERM_READ);

    Tx.setNotifyProperty(true);

    Tx.setCCCDCallback(notifCB);

    Tx.setBufferLen(STRING_BUF_SIZE);

    UartService.addCharacteristic(Rx);

    UartService.addCharacteristic(Tx);

    BLE.init();

    BLE.configAdvert()->setAdvData(advdata);

    BLE.configAdvert()->setScanRspData(scndata);

    BLE.configServer(1);

    BLE.addService(UartService);

    BLE.beginPeripheral();

    dht.begin();

}



void loop() {

    float h = dht.readHumidity();

    float t = dht.readTemperature();

    if (isnan(h) || isnan(t)) {

        Serial.println("Failed to read from DHT sensor!");

        return;

    }

    String msg = ("Humidity: " + String((int) h) + "%\t" + "Temperature: " + String((int) t) + "°C\n");

    Tx.writeString(msg);

    if (BLE.connected(0) && notify) {

        Tx.notify(0);

    }

    delay(5000);

}

 

二、运行

1、打开手机蓝牙客户端,搜索到蓝牙名为AMEBA_BLE_DEV,并配对;

 

2、在列表中选择名为“AMEBA_BLE_DEV”,点击进入下面的界面后,选择“UNknown Service”选项;

 

运行结果如下:

 

 

 

此帖出自RF/无线论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表