以下作品由安信可社區用戶
無垠的廣袤制作
本文介紹了安信可 BW21-CBV-Kit 開發板實現藍牙溫濕度計的DIY制作流程。
01簡介
介紹了 DHT11 傳感器(模塊)以及該傳感器與開發板的硬件連接。
DHT11
DHT11 溫濕度傳感器
圖中引腳標識分別表示
外部電路原理圖
這里采用 PCB 設計項目:DHT11 模塊
https://oshwhub.com/jinleili/dht11-module
02硬件連接
這里將 DHT11 的 Data 引腳與開發板 Arduino Pin - 8 相連。
工程方案采用官方例程 DHT_over_BLEUart
默認串口發送數據的時間間隔為 5 秒,可調整更新時間。
03工程測試
這里介紹 Demo 測試流程及效果展示。
代碼
#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
// The digital pin we're connected to.
#define DHTPIN 8
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
// #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
// #define DHTTYPE DHT21 // DHT 21 (AM2301)
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)
{
printf("Characteristic %s write by connection %d :n", chr->getUUID().str(), 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) {
printf("Notifications enabled on Characteristic %s for connection %d n", chr->getUUID().str(), connID);
notify = true;
} else {
printf("Notifications disabled on Characteristic %s for connection %d n", chr->getUUID().str(), connID);
notify = false;
}
}
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) + "°Cn");
Tx.writeString(msg);
if (BLE.connected(0) && notify) {
Tx.notify(0);
}
delay(2000);
}
細節請參考該代碼的官方指導:BLE – DHT over BLE UART – Realtek IoT/Wi-Fi MCU Solutions
https://www.amebaiot.com/en/amebapro2-arduino-ble-dht/
上傳
1.按住 BOOT(下載) 按鈕的同時按一下 EN(復位)按鈕,進入下載模式;
2.選擇目標串口對應的端口號,點擊 Download 按鈕,待上傳成功提示 Success,完成固件上傳;
3.再次短按 EN 鍵復位,執行程序。
數據讀取
1.手機端安裝藍牙調試應用,Realtek 官方推薦
Adafruit Bluefruit LE Connect 。
2.進入應用,掃描周圍藍牙設備,選擇目標 AMEBA_BLE_DEV 設備 Connect,選擇并進入 UART 選項。
3.此時接收到設備通過藍牙串口發送的溫濕度信息。
效果
注意到 UART 右上方的 MQTT 標識,點擊進入并配置相關參數,即可實現遠程數據監測。
04MQTT連接
介紹了藍牙傳輸溫濕度數據通過 MQTT 協議上傳至 EMQX 平臺的流程,以便實現遠程數據監測及管理。
環境搭建
1.安裝 Docker 容器
2.本地下載并部署 EMQX 平臺
配置 EMQX
(1)瀏覽器打開網址 http://localhost:18083/ ,初始登錄賬戶名 admin 密碼 public ;
(2)依次打開 訪問控制 - 客戶端認證 - 創建 - Password-Based - 內置數據庫 - (默認配置)- 創建 ;
(3)用戶管理 - 新建用戶 - 自定義用戶名和密碼(建議 admin).
連接 EMQX 與 HA (1)命令行或 PowerShell 輸入 ipconfig 獲取本地計算機 IPv4 地址,如 42.34.25.153
(2)配置 Home Assistant ,依次點擊設置 - 設備與服務 - 添加集成 - 搜索 MQTT - 填寫代理信息。
代理欄輸入計算機 IP 地址,端口 1883,用戶名和密碼為 EMQX 中創建的用戶信息。
(3)點擊 提交 后顯示 成功創建 MQTT ,此時 集成 選項下出現 MQTT 條目,EMQX 網頁 集群 的 總連接數 和 在線連接數 由 0 變為 1,表明 MQTT 設備已連接。
3.部署 HomeAssistant 智能家居平臺
(1)下載部署文件 github 并解壓得到 docker-compose.yml 保存至上述 homeassistant 文件夾;
(2)Windows 打開 命令提示符 或 Windows PowerShell,輸入如下代碼實現自動下載鏡像
cd C:homeassistant
docker-compose.yml
docker-compose up
即可在 Docker 容器中創建 Home Assistant 鏡像;
(3)瀏覽器輸入網址 **http://localhost:8123/ 進入Home Assistant 主界面,創建智能家居賬號。
4.安裝部署完成后,可運行 EMQX 和 HA 平臺,點擊 Port 鏈接,進入后臺并進行相關配置。
05客戶端配置
打開 Bluefruit BLE Connect 應用,掃描并連接目標藍牙設備,進入 UART - MQTT,設置參數如下
其中 Address 填寫本地計算機 IP 地址,Publish 填寫自定義監聽主題,Usema 和 Pass 分別填寫 EMQX 平臺創建的用戶名和密碼,點擊上方的 Connect 即可。
效果
這里使用 MQTTX 軟件測試傳輸。
新建連接,配置名稱和 ip 地址,新建主題(與手機應用設置的主題一致),啟動。
MQTTX 軟件測試數據傳輸效果
06總結
本文介紹了 Ai-Thinker BW21-CBV-Kit 開發套件結合 DHT11 溫濕度傳感器,實現藍牙溫濕度計的 DIY 項目設計流程,包括工程代碼編譯、上傳、藍牙設備調試,并在此基礎上拓展實現基于 MQTT 協議的遠程數據接收,還可在此基礎上實現 HomeAssistant 平臺的數據監控,為相關領域在傳感器的智能化應用方面提供了參考。
審核編輯 黃宇
-
藍牙
+關注
關注
116文章
6036瀏覽量
173224 -
AI
+關注
關注
87文章
34294瀏覽量
275477 -
溫濕度計
+關注
關注
1文章
26瀏覽量
8423
發布評論請先 登錄
小安派BW21-CBV-Kit入門教程之主機模式對Arduino UNO發送數據

用樹莓派RP2350 DIY 桌面動態溫濕度計

小安派BW21-CBV-Kit入門教程之主機模式讀取Arduino UNO從機

小安派BW21-CBV-Kit入門教程之OLED顯示

小安派BW21-CBV-Kit入門教程之LCD屏顯示數據

用安信可AI人臉識別開發板BW21-CBV-Kit驅動墨水屏

直接送!50套小安派 BW21-CBV-Kit Ai圖像識別開發板!

小安派BW21-CBV-Kit入門教程之讀取DHT溫濕度傳感器

BW21-CBV-Kit如何接入HomeAssistant實時查看AI攝像頭畫面

小安派BW21-CBV-Kit入門教程之超聲波測距

小安派BW21-CBV-Kit入門教程:中斷控制LED

BW21-CBV-Kit快速入門之Arduino環境搭建

BW21-CBV-Kit的使用教程

評論