这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 基于FRDMMCXW71实现蓝牙温湿度

共1条 1/1 1 跳转至

基于FRDMMCXW71实现蓝牙温湿度

菜鸟
2026-06-10 17:15:41     打赏

        作为萌新小白,第一次参加EEPW论坛的测评活动,这次的板子是FRDM MCXW71。

        FRDM-MCXW71是一款紧凑且可扩展的开发板,可以轻松地评估MCX W71对BLE、Zigbee、Thread和Matter的多协议无线支持。该板包括一个板载MCU-Link调试器、便于访问MCU I/O的行业标准头、一个加速度传感器、一个光传感器和一个外接SPI闪存。通过扩展板中心 提供多个附加板,而通过应用代码中心 则可以轻松使用软件示例

微信图片_20260610153749_110_17.jpg

         观察开发板,做工还是非常漂亮的,那接下来就是安装编译环境了。

    • 首先是vscode,由于平常用的比较多,就跳过不讲了,可以直接搜索官网下载

    • 接下来是插件,下载vscode后在侧边栏找到扩展,然后搜索MCUXpresso for VS Code并下载,这时候会安装几个软件,比较重要的是MCUXpresso Installer


    image.png

       打开后下载必备的几个组件,需要注意的,有部分组件大概率会下载不下来,针对下载不来的组件,可以在下方的日志中找到下载地址,然后在浏览器中打开下载,然后将下载内容解压到这个路径下C:UsersHUAWEIAppDataLocalProgramsMCUXpressoInstaller.cache,每个人的路径可能都不大一样,不过可以直接右键属性,打开文件所在位置,然后将下载内容拷贝到.cache文件下,最后重新打开MCUXpresso Installer,再勾选刚刚打不开的几个组件重新下载即可


    image.png

        需要特别关注的是Zephyr Developer,按照上面的步骤后依旧安装不成功,主要是2个问题:Python 虚拟环境和 west 安装不顺利

        于是乎采用手动安装的方法,首先是安装west(以下命令中路径部分需要根据个人情况跳帧)

        打开用管理员模式打开powershell(没有的话可以直接去微软商城下载),执行以下命令,用国内源安装west

    & "C:UsersHUAWEI.mcuxpressotools.venvScriptspython.exe" -m pip install -U pip setuptools wheel west -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

        执行这一条指令可以验证是否安装成功

    & "C:UsersHUAWEI.mcuxpressotools.venvScriptswest.exe" --version

    接下来要初始化Zephyr workspace

    cd C:UsersHUAWEI        //这里应填写需要安装的位置
    
    west init zephyrproject

    因为初始化也是需要去github上面拉取代码,所以依旧会出现下载不成功的问题,依旧老办法,从日志中找到下载链接,直接去浏览器下载,然后再解压到对应的位置,注意不要套文件夹,然后去拉取子模块

    west update

    不过这个也可能出现老问题,依旧是老样子,复制链接,浏览器下载,找到对应的位置粘贴进去就行,由于不是用命令行下载,后面编译的时候也可能出现一样的问题,依旧重复操作补全子模块就行

    接下来是安装python依赖

    python -m pip install -r zephyrscriptsrequirements.txt -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com --prefer-binary --timeout 120 --retries 10 --no-cache-dir

    安装成功后就可以来实战测试一下了,在shell中输入以下

    $env:Path += ";C:NXPLinkServer_26.5.59"    //配置环境变量
    west build -p always -b frdm_mcxw71/mcxw716c zephyrsampleshello_world    //编译hello_world工程
    west flash    //烧录代码

    然后打开串口助手,按下reset键,看到有以下输出说明基础环境搭建好了

    image.png

    接下来要烧录NBU固件才能使用蓝牙相关功能,依旧是打开shell

    cd C:UsersHUAWEIzephyrproject
    west blobs fetch hal_nxp

    然后按住板子上的SW3按键,让开发板进入ISP模式,打开设备管理器,查看当前连接的是哪个端口,随后

    blhost.exe -p COMxx -- receive-sb-file mcxw71_nbu_ble.sb3    //COMxx替换为实际的端口号

    接下来可以编译一下官方的例程

    west build -p always -b frdm_mcxw71/mcxw716c zephyrsamplesbluetoothperipheral -d build_ble
    west flash

    打开手机上的app,nrf connect 如果能找到对应设备的话说明环境搭建好了。


        总算可以开始来写代码,这个环境搭建起来是真的麻烦。

        首先先打开vscode,根据以下步骤建立工程

image.png

    接下来编写温湿度传感器的驱动代码,本次使用的是iic驱动的sht30,

    sht30 是一款常见的温湿度传感器,使用 I2C 通信,默认地址一般是:0x44

    读取温湿度时,主机先发送测量命令:0x2C 0x06

    然后等待一段时间,再读取 6 字节数据:

温度 MSB
温度 LSB
温度 CRC
湿度 MSB
湿度 LSB
湿度 CRC

    读取后需要进行 CRC 校验,然后根据公式换算成实际温度和湿度。


image.png

    程序中通过设备树获取 I2C 设备:

#define I2C_NODE DT_NODELABEL(lpi2c1)

static const struct device *i2c_dev = DEVICE_DT_GET(I2C_NODE);

    读写 SHT30 时主要使用两个接口:

i2c_write()
i2c_read()

    基本流程是:

i2c_write 发送测量命令
延时等待测量完成
i2c_read 读取 6 字节数据
CRC 校验
换算温湿度

    BLE 部分采用 GATT Notify 的方式发送数据。程序中定义一个自定义 Service 和一个 Characteristic,Characteristic 支持:Read,Notify

    手机或电脑连接设备后,打开 Notify,就可以持续接收开发板发送的数据。

    然后是配置prj.conf

CONFIG_I2C=y                        //启用 Zephyr 的 I2C 驱动框架
CONFIG_PRINTK=y                     //启用 printk() 打印功能

CONFIG_BT=y                         //启用 Zephyr 蓝牙协议栈。
CONFIG_BT_PERIPHERAL=y              //启用 BLE Peripheral 模式
CONFIG_BT_DEVICE_NAME="SHT30_BLE"   //设置 BLE 广播设备名。
CONFIG_BT_MAX_CONN=1                //设置最大 BLE 连接数为 1。

    还有app.overlay,需要打开对应 I2C 控制器:

&lpi2c1 {
    status = "okay";
    clock-frequency = <I2C_BITRATE_STANDARD>;
};

    最后补全一下主函数发送逻辑就完成了,以下是程序的流程图

plantuml.png

    简单写个网页测试一下功能,可以看到成功连接上了开发板并实时显示采集到的温湿度。详细代码和网页工具可以在附件中找到

image.png


    以上便是我参加本次活动的全部内容。从最开始搭建 Zephyr Developer 环境,到跑通 hello_world,再到完成 SHT30 温湿度传感器的 I2C 读取,最后结合 BLE Notify 实现数据无线发送,整个过程虽然遇到了不少问题,但也让我对 Zephyr 工程结构、设备树配置、Kconfig 配置、NXP FRDM-MCXW71 的 BLE 使用方式以及 NBU 固件烧录流程都有了更加清晰的认识。

本次项目最大的收获并不只是最终实现了温湿度采集和蓝牙发送,而是在调试过程中逐步理解了 Zephyr 的开发方式。例如,I2C 外设需要通过 app.overlay 打开对应节点,功能模块需要在 prj.conf 中配置,BLE 使用前还需要确认 Controller 和 NBU 固件是否正常工作。这些内容在一开始看起来比较零散,但真正完整走一遍流程后,对 Zephyr 的整体开发逻辑有了更系统的理解。

同时,通过这个项目也进一步熟悉了 FRDM-MCXW71 开发板的使用,包括编译、烧录、串口调试、BLE 广播、手机端 nRF Connect 验证,以及后续通过网页工具显示数据。整个过程从基础环境搭建到应用功能实现,基本覆盖了一个 Zephyr 小项目开发的完整流程。

最后,非常感谢 EEPW 论坛组织的这次活动,也感谢活动提供的开发板和相关学习机会。通过这次实践,我接触到了很多之前没有深入了解过的内容,也积累了不少实际调试经验。希望后续还能继续基于这块开发板做更多尝试,例如低功耗采集、数据存储、手机 App 显示或者更多传感器接入等功能。也希望这篇记录能给后面使用 FRDM-MCXW71 和 Zephyr 的朋友提供一些参考。


工程文件.rar





关键词: MCXW71     温湿度    

共1条 1/1 1 跳转至

回复

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