这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【e起DIY】低功耗蓝牙温湿度计:蓝牙传输温湿度数据

共1条 1/1 1 跳转至

【e起DIY】低功耗蓝牙温湿度计:蓝牙传输温湿度数据

工程师
2026-06-06 19:34:21     打赏

一、硬件介绍

       因为选择的板卡是FRDM-MCXN947,没有板载的蓝牙模块或外设。所以只能外接一个蓝牙模块。我选择蓝牙模块是W02。实物如下图

image.png

W02蓝牙模块参数

蓝牙BLE5.2

单模透传

工作频率:2.4GHz

可视距离:100M

传输速率:BLE 35KB/S

发射功率:-20 dBm~8 dBm

接收灵敏度:-94dBm@1Mbps

支持UART、IIC、SPI和GPIO硬件连接

工作温度:-40℃~+85℃

天线采用板载天线

二、接线方式

       W02的通信方式是UART,刚开始准备打开除shell使用的串口外的其他串口。按照AIZephyr源码库的例程生成.overlay文件打开串口。但是编译一直失败。最后只能使用shell的调试串口,不仅能够成功驱动W02蓝牙模块,而且也可以通过串口软件监视MCU发送的数据。

image.png

       图中仅显示TX和RX的接线方式,VCC和GND接板卡的3V3和GND引脚就可以了。

三、流程图

image.png

四、驱动程序

       因为串口的波特率是9600,而且串口使用的是与shell相同的串口,所以需要修改Zephyr源码库的文件。对应文件的路径和文件名为zephyr\boards\nxp\frdm_mcxn947\frdm_mcxn947.dtsi,找到flexcomm4_lpuart4参数选项,修改current-speed的参数为9600。尝试过通过AT指令修改为115200,但是效果是通信失败。也可以通过代码进行修改,但是没有直接修改源文件方便。修改后的内容如下

image.png

       驱动W02的代码也是比较简单,首先是获取串口的句柄

#define UART_BLE_NODE DT_NODELABEL(flexcomm4_lpuart4)
static const struct device *uart1_dev = DEVICE_DT_GET(UART_BLE_NODE);

       然后是串口的发送函数

// 串口发送
static void uart_send_str(const char *str)
{
    while (*str) {
        uart_poll_out(uart1_dev, *str++);
    }
}

       上电后需要进行一些配置,不过也可以忽略掉,直接发送数据。初始化指令集为

const char *at_init_seq[] = {
    "AT\r\n",
    "AT+NAME=MCXN947_W02\r\n",
    "AT+BAUD=3\r\n",
    "AT+RESET\r\n"
};

五、效果展示

       因为修改了源代码的参数,所以用串口软件打开的波特率要修改为9600。使用的是电脑软件BLEDebug进行蓝牙数据传输的调试功能。打开后直接连接对应的蓝牙,然后在对应的UUID中接收数据。数据内容和串口软件的内容显示的一样的。

image.png

六、问题总结

       MCXN947的串口和引脚定义如下

串口

RXD(FCx_P0)

TXD(FCx_P1)

备注 (FRDM 开发板常用)

FC0_UART0

P0_0

P0_1

Arduino D1/D0

FC1_UART1

P0_2

P0_3

通用扩展串口

FC2_UART2

P4_2

P4_3

MCU-Link 虚拟串口 (ARD D0/D1)

FC3_UART3

P1_0

P1_1

mikroBUS 默认串口

FC4_UART4

P1_8

P1_9

开发板默认调试串口(console)

FC5_UART5

P1_16

P1_17

常用外设串口

FC6_UART6

P2_0

P2_1

J3 扩展排针

FC7_UART7

P2_1

P2_2

J3 扩展排针

FC8_UART8

P2_2

P2_3

J3 扩展排针

FC9_UART9

P2_4

P2_3

语音模块常用串口 (P2.4RX/P2.3TX)

       他们都是在FlexComm总线下,表中的FC代表的是不同的FlexComm总线。每个FlexComm总线可以用作I2C或UART或SPI。在zephyr\boards\nxp\frdm_mcxn947路径下的frdm_mcxn947.dtsi文件内有所有默认的MCXN947的外设使能。如果需要打开其他的外设,则在工程根目录下新建一个app.overlay文件即可,文件内容和frdm_mcxn947.dtsi内容一样,是frdm_mcxn947.dtsi的补充内容,在程序编译的时候会将app.overlay文件的内容和frdm_mcxn947.dtsi合并一起称为设备树配置文件去配置外设。刚开始通过AI生成app.overlay文件内容,但是编译一直报错,后来改过外设名称和prj.conf文件内容都是不行。所以考虑用已经使能好的串口进行蓝牙数据传输。刚开始看原理图发现调试串口没有单独引出来,而是直接连接到USB上了。不过后来发现在J9座子有引出,所以就使用该串口进行蓝牙数据传输。对应的原理图如下

image.png

七、相关文件

工程文件:MCXN947+DHT22+BLE.zip




关键词: 蓝牙W02    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]