初学者
20 分钟

使用 BME690 和 PIC32MZ2048EFH100,实现室内与室外空气质量监测

完整的四合一环境感测解决方案,集成 AI,用于智能空气质量监控

Environment 6 Click with Flip&Click PIC32MZ

已发布 9月 25, 2025

点击板

Environment 6 Click

开发板

Flip&Click PIC32MZ

编译器

NECTO Studio

微控制器单元

PIC32MZ2048EFH100

评估整体室内和室外空气质量,可检测挥发性有机化合物 (VOC)、挥发性硫化合物 (VSC)、一氧化碳 (CO)、氢气以及其他多种气体

A

A

硬件概览

它是如何工作的?

Environment 6 Click 基于 Bosch Sensortec 的 BME690,这是一款集成 AI 的全球最小 4 合 1 环境传感器。该板卡将气体、湿度、压力和温度测量结合在一起,提供高度集成的环境感测解决方案,专为精确监控空气质量和环境条件而设计。BME690 能够检测挥发性有机化合物 (VOC)、挥发性硫化物 (VSC)、一氧化碳 (CO)、氢气 (H2) 及其他气体,并内置气体扫描功能,可提供扩展测量来评估整体室内或室外空气质量。通过 Bosch 的软件,可以进一步分析气体读数,并利用 AI 算法训练识别特定环境指标,例如细菌滋生产生的可能性或有机污染物的存在,从而为广泛的应用场景提供可靠且可适应的数据。BME690 提供关键输出,包括空气质量指数 (IAQ)、bVOC 和 CO2 

当量值,确保对环境健康的洞察和可操作信息。它支持全工作范围,具有 ±0.05hPa 的压力精度、±3%RH 的湿度精度以及在 0 至 65°C 范围内 ±0.5°C 的温度精度,使其适用于对性能要求严格的应用,包括可穿戴设备、移动终端、智能家居和健康护理产品。该 Click 板卡采用 MIKROE 新引入的 Click Snap 独特设计格式。与标准化版本不同,该功能允许主传感器/IC/模块部分通过断开 PCB 实现可移动,从而带来更多实现方式。借助 Snap 功能,BME690 可以通过直接访问标记为 1-8 的引脚自主运行。此外,Snap 部分还包含一个指定和固定的螺丝孔位置,使用户能够将其牢固安装在所需位置。该板支持通过 SPI(最高 10MHz)或 I2C(最高 3.4MHz)接口与主 MCU 通

信,默认采用 I2C 模式。通信接口可通过 COMM SEL 跳线切换至所需位置。为了增强灵活性,尤其是可拆卸的 Snap 部分,板上额外提供了 COMM SEL 跳线,功能与主跳线相同,使 Snap 部分在独立使用时也能选择通信接口。为确保正常工作,所有 COMM 跳线必须设置为相同接口。对于使用 I2C 接口的用户,板上还提供 ADDR SEL 跳线,可根据具体应用需求配置 I2C 地址。该 Click 板仅支持 3.3V 逻辑电平运行。对于使用不同逻辑电平的 MCU,必须执行适当的电平转换。它还配备了一个库,包含易于使用的函数和示例代码,可作为进一步开发的参考。

Environment 6 Click hardware overview image

功能概述

开发板

Flip&Click PIC32MZ 是一款紧凑型开发板,设计为一套完整的解决方案,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 PIC32MZ 微控制器,Microchip 的 PIC32MZ2048EFH100,四个 mikroBUS™ 插槽用于 Click 板™连接,两个 USB 连接器,LED 指示灯,按钮,调试器/程序员连接器,以及两个与 Arduino-UNO 引脚兼容的头部。得益于创

新的制造技术,它允许您快速构建具有独特功能和特性的小工具。Flip&Click PIC32MZ 开发套件的每个部分都包含了使同一板块运行最高效的必要组件。此外,还可以选择 Flip&Click PIC32MZ 的编程方式,使用 chipKIT 引导程序(Arduino 风格的开发环境)或我们的 USB HID 引导程序,使用 mikroC、mikroBasic 和 mikroPascal for PIC32。该套件包括一个通过 USB 类型-C(USB-C)连接器的干净且调

节过的电源供应模块。所有 mikroBUS™ 本身支持的 通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、用户可配置的按钮和 LED 指示灯。Flip&Click PIC32MZ 开发套件允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。

Flip&Click PIC32MZ double image

微控制器概述 

MCU卡片 / MCU

default

建筑

PIC32

MCU 内存 (KB)

2048

硅供应商

Microchip

引脚数

100

RAM (字节)

524288

使用的MCU引脚

mikroBUS™映射器

NC
NC
AN
ID SEL
RE2
RST
SPI Select / ID COMM
RA0
CS
SPI Clock
RG6
SCK
SPI Data OUT
RC4
MISO
SPI Data IN
RB5
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
NC
NC
PWM
NC
NC
INT
NC
NC
TX
NC
NC
RX
I2C Clock
RA2
SCL
I2C Data
RA3
SDA
NC
NC
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

Environment 6 Click Schematic schematic

一步一步来

项目组装

Flip&Click PIC32MZ front image hardware assembly

从选择您的开发板和Click板™开始。以Flip&Click PIC32MZ作为您的开发板开始。

Flip&Click PIC32MZ front image hardware assembly
GNSS2 Click front image hardware assembly
Prog-cut hardware assembly
GNSS2 Click complete accessories setup image hardware assembly
Board mapper by product7 hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
Flip&Click PIC32MZ MCU step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

软件支持

库描述

Environment 6 Click 演示应用程序使用 NECTO Studio开发,确保与 mikroSDK 的开源库和工具兼容。该演示设计为即插即用,可与所有具有 mikroBUS™ 插座的 开发板、入门板和 mikromedia 板完全兼容,用于快速实现和测试。

示例描述
本示例演示了 Environment 6 Click 开发板的使用,该板集成了一款高精度环境传感器,用于测量温度、湿度、气压和气体阻值。应用程序初始化设备,并通过 UART 定期读取并记录所有可用的环境参数。

关键功能:

  • environment6_cfg_setup - 此函数将 Click 配置结构初始化为初始值。

  • environment6_init - 此函数初始化该 Click 开发板所需的所有引脚和外设。

  • environment6_default_cfg - 此函数执行 Environment 6 Click 的默认配置。

  • environment6_set_sensor_conf - 此函数配置传感器的过采样、滤波和数据速率。

  • environment6_set_gas_conf - 此函数设置加热器温度、加热时长并启用气体测量。

  • environment6_get_data - 此函数触发一次测量并读取温度、气压、湿度和气体阻值数据。

应用初始化
初始化日志记录器并配置 Environment 6 Click,建立通信并对传感器应用默认配置。

应用任务
持续读取温度(摄氏度)、湿度(%RH)、气压(毫巴)和气体阻值(欧姆,如果已启用),并每秒记录一次测量值。

开源

代码示例

完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio 应用程序代码也可以在MIKROE的GitHub账户中找到。

/*!
 * @file main.c
 * @brief Environment 6 Click example
 *
 * # Description
 * This example demonstrates the use of the Environment 6 Click board, which integrates 
 * a high-precision environmental sensor for measuring temperature, humidity, pressure, 
 * and gas resistance. The application initializes the device and periodically reads 
 * and logs all available environmental parameters via UART.
 *
 * The demo application is composed of two sections:
 *
 * ## Application Init
 * Initializes the logger and configures the Environment 6 Click. It sets up 
 * communication and applies the default configuration to the sensor.
 *
 * ## Application Task
 * Continuously reads temperature (degC), humidity (%RH), pressure (mBar), and gas 
 * resistance (Ohms) if enabled, then logs the measured values every second.
 *
 * @note
 * The BME690 sensor on this Click board provides raw gas resistance data only.
 * To calculate indoor air quality (IAQ), VOC index, CO2 equivalents, and similar
 * environmental parameters, Bosch Sensortec BSEC (Bosch Software Environmental Cluster) 
 * algorithm must be integrated separately.
 *
 * @author Stefan Filipovic
 *
 */

#include "board.h"
#include "log.h"
#include "environment6.h"

static environment6_t environment6;
static log_t logger;

void application_init ( void )
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    environment6_cfg_t environment6_cfg;  /**< Click config object. */

    /** 
     * Logger initialization.
     * Default baud rate: 115200
     * Default log level: LOG_LEVEL_DEBUG
     * @note If USB_UART_RX and USB_UART_TX 
     * are defined as HAL_PIN_NC, you will 
     * need to define them manually for log to work. 
     * See @b LOG_MAP_USB_UART macro definition for detailed explanation.
     */
    LOG_MAP_USB_UART( log_cfg );
    log_init( &logger, &log_cfg );
    log_info( &logger, " Application Init " );

    // Click initialization.
    environment6_cfg_setup( &environment6_cfg );
    ENVIRONMENT6_MAP_MIKROBUS( environment6_cfg, MIKROBUS_1 );
    err_t init_flag = environment6_init( &environment6, &environment6_cfg );
    if ( ( I2C_MASTER_ERROR == init_flag ) || ( SPI_MASTER_ERROR == init_flag ) )
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    if ( ENVIRONMENT6_ERROR == environment6_default_cfg ( &environment6 ) )
    {
        log_error( &logger, " Default configuration." );
        for ( ; ; );
    }
    
    log_info( &logger, " Application Task " );
}

void application_task ( void )
{
    environment6_data_t meas_res;
    if ( ENVIRONMENT6_OK == environment6_get_data ( &environment6, &meas_res ) )
    {
        log_printf( &logger, " Temperature : %.2f degC\r\n", meas_res.temperature );
        log_printf( &logger, " Humidity : %.2f %%\r\n", meas_res.humidity );
        log_printf( &logger, " Pressure : %.1f mBar\r\n", meas_res.pressure );
        if ( environment6.gas_conf.enable )
        {
            log_printf( &logger, " Gas Resistance : %.1f Ohms\r\n", meas_res.gas_resistance );
        }
        log_printf( &logger, "--------------------------------\r\n" );
        Delay_ms ( 1000 );
    }
}

int main ( void ) 
{
    /* Do not remove this line or clock might not be set correctly. */
    #ifdef PREINIT_SUPPORTED
    preinit();
    #endif
    
    application_init( );
    
    for ( ; ; ) 
    {
        application_task( );
    }

    return 0;
}

// ------------------------------------------------------------------------ END

额外支持

资源

喜欢这个项目吗?

'购买此套件' 按钮会直接带您进入购物车,您可以在购物车中轻松添加或移除产品。