首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用BW21-CBV-Kit做一个蓝牙温湿度计

用BW21-CBV-Kit做一个蓝牙温湿度计

原创
作者头像
安信可科技
发布2025-03-19 11:03:01
发布2025-03-19 11:03:01
2060
举报

以下作品由安信可社区用户无垠的广袤制作

本文介绍了安信可 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) + "°C\n"); 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 平台的数据监控,为相关领域在传感器的智能化应用方面提供了参考。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01简介
  • 02硬件连接
  • 03工程测试
  • 04MQTT连接
  • 05客户端配置
  • 06总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档