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

共1条 1/1 1 跳转至

【e起DIY】低功耗蓝牙温湿度计+基于FRDM-MCXW71+ZephyrDHT22高精度温湿度采集

助工
2026-06-23 10:21:20     打赏

拿到 FRDM-MCXW71 开发板一段时间,本次完整分享 VSCode+MCUXpresso Zephyr 环境搭建、DHT22 硬件接线、设备树配置、驱动编译下载全流程,方便开发者快速上手高精度温湿度采集,为后续蓝牙上传、环境监测项目打下基础。

一、开发环境选择与前期准备

(一)开发环境选型

本次选用VSCode 搭配 MCUXpresso for VS Code 插件 + Zephyr RTOS开发,对比传统 Keil MDK 优势明显:无软件授权限制、内置 AI 编码辅助、NXP 新一代 MCX 系列开发官方主推,对 FRDM-MCXW71 Cortex-M33 内核适配完善,编译、烧录、串口调试一站式完成。

(二)硬件参数与物料清单

  1. FRDM-MCXW71 开发板核心参数

  • 内核:单 Cortex-M33,主频 96MHz

  • 外设:板载 CMSIS-DAP 调试器、USB Type-C、多路 GPIO、BLE 蓝牙外设、Arduino 兼容扩展排针

  • 供电:USB 3.3V/5V 双输出,完美适配 DHT22 传感器

  1. DHT22(AM2302)高精度温湿度传感器参数

  • 供电:3.3V~5V,兼容开发板 3V3 引脚

  • 测温范围:-40℃~80℃,精度 ±0.5℃,支持小数位

  • 测湿范围:0~100% RH,精度 ±2% RH,分辨率 0.1% RH

  • 通信:单总线数字信号,自带内置 10K 上拉电阻,简化外部电路

(三)官方资源获取渠道

  1. NXP MCUXpresso VS Code 官方安装文档:Zephyr lab installation and preparation — MCUXpresso for VS Code 26.05 documentation

  2. NXP FRDM-MCXW71 板卡 SDK 资源:MCUXpresso Installer 内置在线 SDK 仓库

  3. Zephyr 官方 DHT 传感器驱动样例:内置 SDK samples/sensor/dht 目录

二、开发环境搭建核心步骤

(一)MCUXpresso 工具链安装

  1. 下载打开 MCUXpresso Installer,勾选以下组件批量安装

  • Zephyr Developer 完整工具包

  • Arm GNU Toolchain 交叉编译工具链

  • MCUXpresso SDK(版本 26.3.0.0)

  • Ninja 编译工具、Git、串口调试工具

    注意:SDK 下载时国内网络速度较慢,建议切换手机热点或分段下载,安装路径不要包含中文、空格。

  1. VSCode 插件配置

    打开 VSCode 插件商店搜索「MCUXpresso for VS Code」安装,重启软件后侧边栏出现 MCUX 快速启动面板。

(二)新建 Zephyr 工程

  1. 在 MCUX 快速面板点击「New Project Wizard」,选择导入 FRDM-MCXW71 开发板模板工程。

  2. 工程自动生成基础目录,关键文件说明:

  • prj.conf:内核功能开关配置

  • frdm_mcxw71.overlay:自定义硬件设备树

  • src/main.c:主应用逻辑代码

  • CMakeLists.txt:编译构建脚本

(三)内核功能开关配置 prj.conf

打开 prj.conf,开启传感器、DHT 驱动、GPIO、串口打印相关宏,缺少配置会出现驱动加载失败:

CONFIG_GPIO=y CONFIG_SENSOR=y CONFIG_DHT=y CONFIG_DHT_LOCK_IRQS=y CONFIG_SERIAL=y CONFIG_CONSOLE=y

(四)设备树 overlay 引脚配置

新建 / 修改 frdm_mcxw71.overlay 文件,开启 GPIO 端口并注册 DHT22 传感器节点,本次选用 PTB5 作为 DHT22 数据引脚,开启内部上拉:

/* 启用GPIOB端口 */ &gpiob {    status = "okay"; }; /* DHT22传感器节点定义 */ / {    dht22_sensor: dht22 {        compatible = "aosong,dht";        dio-gpios = <&gpiob 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;    }; };

说明:DHT22 单总线通信必须上拉,模块自带电阻可双重保障,避免读取无响应。

三、硬件接线操作

DHT22 共 3 根引脚 VCC、GND、S(数据),直接对接 FRDM-MCXW71 扩展排针 J8:
  1. DHT22 VCC → 开发板 3V3

  2. DHT22 GND → 开发板 GND

  3. DHT22 S 数据脚 → 开发板 PTB5(对应 overlay 配置引脚)

接线注意:线材尽量短,避免长线干扰导致数据校验失败;严禁 5V 供电串入 IO 口烧毁芯片。

四、主程序代码编写(src/main.c)

Zephyr 内置标准 DHT 驱动,无需手动编写底层时序,直接调用标准 sensor API 读取温湿度,循环打印并搭配板载 LED 闪烁做运行指示:

#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/drivers/sensor.h>
#include <zephyr/sys/printk.h>

/* 采集间隔500ms */
#define SLEEP_TIME_MS   500

#define LED_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED_NODE, gpios);

int main(void)
{
    int ret;
    bool led_state = false;

 
    const struct device *dht22_dev = DEVICE_DT_GET_ANY(aosong_dht);

    /* 初始化LED */
    if (!device_is_ready(led.port)) {
        printk("LED设备未就绪!\n");
        return -1;
    }
    ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE);
    if (ret < 0) {
        printk("LED初始化失败\n");
        return ret;
    }

   
    if (!device_is_ready(dht22_dev)) {
        printk("DHT22传感器未检测到\n");
        return -ENODEV;
    }
    printk("DHT22高精度温湿度采集初始化完成\n");

    while (1) {
        /* LED翻转,指示程序正常运行 */
        gpio_pin_toggle_dt(&led);
        led_state = !led_state;

       
        ret = sensor_sample_fetch(dht22_dev);
        if (ret < 0) {
            printk("DHT22采样失败,错误码:%d\n", ret);
        } else {
            struct sensor_value temp, hum;
            
            sensor_channel_get(dht22_dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
            sensor_channel_get(dht22_dev, SENSOR_CHAN_HUMIDITY, &hum);

          
            printk("环境温度:%d.%d ℃  环境湿度:%d.%d %%RH\n",
                   temp.val1, temp.val2 / 100000,
                   hum.val1, hum.val2 / 100000);
        }
        k_msleep(SLEEP_TIME_MS);
    }
}

五、工程编译与板卡连接

(一)工程编译

VSCode MCUX 面板选择当前工程,点击 Build 编译按钮,工具链自动校验设备树、内核配置、代码语法。编译成功终端输出无 error,生成可烧录 elf/hex 文件;若提示驱动未找到,优先检查 prj.conf 的 DHT 宏是否开启、overlay 引脚配置是否正确。

(二)板卡与电脑连接

使用 USB Type-C 数据线连接 FRDM-MCXW71 与电脑 USB 口,板载 CMSIS-DAP 调试器自动识别,Windows 系统自动安装复合设备驱动,无需手动下载驱动包。
  1. 打开 VSCode 调试配置,调试器选择 CMSIS-DAP

  2. 调试接口 SW 模式,下载时钟默认 5MHz,无需修改参数

  3. 设备列表正常显示开发板序列号、固件版本即代表连接正常

六、程序下载与运行效果

(一)程序下载

编译无报错后,点击 Flash 下载按钮,工具自动擦除、烧录固件,几秒完成并提示下载成功。

(二)实际运行效果

  1. 板载 LED 周期性闪烁,代表主循环正常运行;

  2. 打开串口调试工具,波特率 115200,持续输出高精度温湿度:

环境温度:26.8 ℃  环境湿度:53.5 %RH


共1条 1/1 1 跳转至

回复

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