初学者
10 分钟

使用 TCS3720 和 MK64FN1M0VDC12 实现精准的接近检测、环境光与颜色感测

智能接近检测的理想选择,具备 RGB 与透明光感测功能

Proximity 22 Click with Clicker 2 for Kinetis

已发布 7月 22, 2025

点击板

Proximity 22 Click

开发板

Clicker 2 for Kinetis

编译器

NECTO Studio

微控制器单元

MK64FN1M0VDC12

非常适用于显示亮度调节、手势交互以及环境感知型用户界面

A

A

硬件概览

它是如何工作的?

Proximity 22 Click 基于 ams OSRAM 的 TCS3720,这是一款集成环境光(ALS)、颜色(RGB)和接近感测功能的多功能传感器,专为需要高精度环境感知与目标检测的应用而设计。其接近感测功能依靠两个 OSRAM PLPVYL1 940A\_E 红外 LED(940nm),并排安装在 TCS3720 旁边,通过不可见红外光主动照亮附近物体。传感器的 IR 通道捕捉反射信号,即使在光线较暗的环境中也能实现可靠的接近检测。双 LED 配置提升了覆盖范围,可在更广泛的表面和角度下实现准确检测。该 Click 板非常适用于显示亮度与色彩管理、以及移动和手持设备中的接近感应。TCS3720 在环境光与颜色感测方面提供红、绿、蓝和清晰通道(RGBC)四路同时感测,所有通道均通过内置 UV/IR 阻断滤光片进行保护。这种设计支持精确

测量环境光强度和色彩组成,可进一步计算出照度(lux)与相关色温(CCT),特别适合动态亮度与色彩调节的显示系统。传感器架构集成了自适应动态范围调节、环境光扣除、先进的串扰消除以及中断驱动的 I2C 通信功能,确保高性能与系统集成灵活性。该 Click 板采用 MIKROE 推出的 Click Snap 结构设计,传感器区域可通过断裂 PCB 实现独立部署,拓展多样化的集成场景。传感器可通过 Snap 区域的 1–8 号引脚独立运行,同时该区域预留固定螺丝孔位,便于用户根据实际需求进行机械固定。如前所述,该板通过 I2C 接口与主控 MCU 通信,支持高达 400kHz 的时钟频率,确保高速数据交互。TCS3720 的接近引擎可识别检测/释放事件,并在感测结果越过用户设定的上限或下限阈值时触发中断(INT 引脚)。除了中断功

可作为硬件复位引脚或 PWM 输入引脚,用于与外部调制源同步接近感应操作。Click 板上的 VSYNC 测试点暴露了 TCS3720 的垂直同步输入引脚,允许主控 MCU 外部触发一次新的颜色测量周期。此引脚默认未连接至 mikroBUS™,但为需要精确集成时间控制的高级应用提供了便利。TCS3720 无需特定的上电顺序,但其正常工作电压为 1.8V。因此,板上集成了 BH18PB1WHFV 稳压器,将 mikroBUS™ 电源轨转换为 1.8V 供电使用。本 Click board™ 仅支持 3.3V 逻辑电平。若与不同逻辑电压的 MCU 搭配使用,必须进行电平转换。此外,该板提供了配套的软件库,包含易于使用的函数和示例代码,可作为二次开发的参考。

Proximity 22 Click hardware overview image

功能概述

开发板

Clicker 2 for Kinetis 是一款紧凑型入门开发板,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 ARM Cortex-M4F 微控制器,NXP 半导体公司的 MK64FN1M0VDC12,两个 mikroBUS™ 插槽用于 Click 板™连接,一个 USB 连接器,LED 指示灯,按钮,一个 JTAG 程序员连接器以及两个 26 针头用于与外部电子设备的接口。其紧凑的设计和清晰、易识别的丝网标记让您能够迅速构建具有独特功能和特性

的小工具。Clicker 2 for Kinetis 开发套件的每个部分 都包含了使同一板块运行最高效的必要组件。除了可以选择 Clicker 2 for Kinetis 的编程方式,使用 USB HID mikroBootloader 或外部 mikroProg 连接器进行 Kinetis 编程外,Clicker 2 板还包括一个干净且调节过的开发套件电源供应模块。它提供了两种供电方式;通过 USB Micro-B 电缆,其中板载电压调节器为板上每个组件提供适当的电压水平,或使用锂聚合物 电池通过板载电池连接器供电。所有 mikroBUS™ 本

身支持的通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、重置按钮和几个用户可配置的按钮及 LED 指示灯。Clicker 2 for Kinetis 是 Mikroe 生态系统的一个组成部分,允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。

Clicker 2 for Kinetis dimensions image

微控制器概述 

MCU卡片 / MCU

default

建筑

ARM Cortex-M4

MCU 内存 (KB)

1024

硅供应商

NXP

引脚数

121

RAM (字节)

262144

使用的MCU引脚

mikroBUS™映射器

NC
NC
AN
Reset
PB11
RST
ID COMM
PC4
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
PWM Signal
PA10
PWM
Interrupt
PB13
INT
NC
NC
TX
NC
NC
RX
I2C Clock
PD8
SCL
I2C Data
PD9
SDA
NC
NC
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

Proximity 22 Click Schematic schematic

一步一步来

项目组装

Clicker 2 for PIC32MZ front image hardware assembly

从选择您的开发板和Click板™开始。以Clicker 2 for Kinetis作为您的开发板开始。

Clicker 2 for 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

软件支持

库描述

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

示例描述
本示例演示如何使用 Proximity 22 Click 板读取并显示接近值、环境光(ALS)以及温度数据。数据读取仅在新测量数据就绪时进行,由中断引脚信号触发。

关键功能:

  • proximity22_cfg_setup - 初始化 Click 配置结构体为默认值。

  • proximity22_init - 初始化 Proximity 22 Click 板所需的全部引脚和外设。

  • proximity22_default_cfg - 应用 Proximity 22 Click 板的默认配置。

  • proximity22_get_int_pin - 读取中断引脚(INT)的电平状态。

  • proximity22_read_data - 读取可用的接近值、温度值和环境光数据(红、绿、蓝、透明通道)。

应用初始化
初始化日志记录器与 Proximity 22 Click 驱动程序,并设置默认工作配置。

应用任务
等待数据就绪中断信号后,读取接近、温度以及 ALS 数据(红光、绿光、蓝光与清晰通道),并将读取结果大约每 200 毫秒通过 UART 终端输出显示。

开源

代码示例

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

/*!
 * @file main.c
 * @brief Proximity 22 Click example
 *
 * # Description
 * This example demonstrates the use of the Proximity 22 Click board by reading
 * and displaying proximity, ambient light (ALS), and temperature measurements.
 * The data is read only when a new measurement is ready, indicated by an interrupt.
 *
 * The demo application is composed of two sections:
 *
 * ## Application Init
 * Initializes the logger and the Proximity 22 Click driver, then sets the default configuration.
 *
 * ## Application Task
 * Waits for a data ready interrupt and then reads the proximity, temperature,
 * and ALS data (red, green, blue, and clear channels), displaying the results via UART
 * approximately every 200 ms.
 *
 * @author Stefan Filipovic
 *
 */

#include "board.h"
#include "log.h"
#include "proximity22.h"

static proximity22_t proximity22;
static log_t logger;

void application_init ( void ) 
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    proximity22_cfg_t proximity22_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.
    proximity22_cfg_setup( &proximity22_cfg );
    PROXIMITY22_MAP_MIKROBUS( proximity22_cfg, MIKROBUS_1 );
    if ( I2C_MASTER_ERROR == proximity22_init( &proximity22, &proximity22_cfg ) ) 
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    if ( PROXIMITY22_ERROR == proximity22_default_cfg ( &proximity22 ) )
    {
        log_error( &logger, " Default configuration." );
        for ( ; ; );
    }
    
    log_info( &logger, " Application Task " );
}

void application_task ( void ) 
{
    proximity22_data_t meas_data;

    // Wait for a data ready interrupt
    while ( proximity22_get_int_pin ( &proximity22 ) );

    if ( PROXIMITY22_OK == proximity22_read_data ( &proximity22, &meas_data ) )
    {
        log_printf ( &logger, " Proximity: %u\r\n", meas_data.proximity );
        log_printf ( &logger, " Temperature: %.1f degC\r\n", meas_data.temperature );
        log_printf ( &logger, " ALS data (RGBC): %u;%u;%u;%u\r\n\n", meas_data.als.red, 
                                                                     meas_data.als.green, 
                                                                     meas_data.als.blue, 
                                                                     meas_data.als.clear );
    }
}

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

额外支持

资源

喜欢这个项目吗?

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