体验我们的一体化解决方案,实现传感器融合的终极体验,为用户提供精确的接近、颜色和环境光测量,从而提升用户体验。
A
A
硬件概览
它是如何工作的?
Light mix-sens Click基于ams OSRAM的TMD37253超薄模块,集成了红外LED和出厂校准的LED驱动器。接近检测功能通过光电二极管检测反射的红外能量(由集成LED发出)来提供对象检测(例如,移动设备屏幕到用户的耳朵)。检测/释放事件是由中断驱动的,并且当接近结果越过上限和/或下限阈值设置时发生。接近引擎具有偏移调整寄存器,以补偿传感器处的不必要的红外能量反射。通过自动环境光减法进一步改善了接近结果。ALS检测功能提供光度光强度数据。彩色光电二极管具有紫外线和红外线阻挡滤波器,并且具有产生16位数据的专用数据转换器。该架构允许应用程序准确测量环境光,从而使设备能够计算照度和色温以控制显示背光和色度。接近结果受三个基本因
素影响:集成的红外LED发射、红外接收以及包括目标距离和表面反射性在内的环境因素。红外接收信号路径从光电二极管的红外检测开始,并以PDATA寄存器中的8位接近结果结束。来自光电二极管的信号被放大,并进行偏移调整以优化性能。通过对POFFSET寄存器进行调整来完成偏移校正或串扰补偿。设备的模拟电路将偏移值作为减法应用于信号累积;因此,正偏移值具有减小结果的效果。颜色和ALS接收信号路径开始时,光电二极管接收经过滤波的光,并以16位结果结束。主要用于接近感应的红外光电二极管与绿色通道的ADC多路复用,以测量环境光的红外内容。彩色光电二极管经过UV和IR滤波器过滤。红外光电二极管经过滤波器仅接收红外光。来自RGBC光电二极
管的信号在ATIME中设置的一段时间内同时累积,然后结果可用。必须在单独的集成中进行IR的测量,因为它与绿色光电二极管共享ADC。增益可从1x调整到128 x,以便在广泛的照明条件下进行操作。使用自定义LUX方程来计算环境光的数量、色温以及确定光类型(例如,LED、荧光灯、白炽灯等)使用ALS结果。TMD37253模块以1.8V电源供应和1.8V I2C总线运行,以减少功耗。为了集成到Mikrobus上,实现了完整的电压调节和逻辑电平转换。因此,此Click板™仅设计为使用3.3V逻辑电平。在将Click板™与具有5V逻辑电平的MCU一起使用之前,应进行适当的逻辑电压级转换。
功能概述
开发板
Arduino UNO 是围绕 ATmega328P 芯片构建的多功能微控制器板。它为各种项目提供了广泛的连接选项,具有 14 个数字输入/输出引脚,其中六个支持 PWM 输出,以及六个模拟输入。其核心组件包括一个 16MHz 的陶瓷谐振器、一个 USB 连接器、一个电
源插孔、一个 ICSP 头和一个复位按钮,提供了为板 子供电和编程所需的一切。UNO 可以通过 USB 连接到计算机,也可以通过 AC-to-DC 适配器或电池供电。作为第一个 USB Arduino 板,它成为 Arduino 平台的基准,"Uno" 符号化其作为系列首款产品的地
位。这个名称选择,意为意大利语中的 "一",是为了 纪念 Arduino Software(IDE)1.0 的推出。最初与 Arduino Software(IDE)版本1.0 同时推出,Uno 自此成为后续 Arduino 发布的基础模型,体现了该平台的演进。
微控制器概述
MCU卡片 / MCU

建筑
AVR
MCU 内存 (KB)
32
硅供应商
Microchip
引脚数
32
RAM (字节)
2048
你完善了我!
配件
Click Shield for Arduino UNO 具有两个专有的 mikroBUS™ 插座,使所有 Click board™ 设备能够轻松与 Arduino UNO 板进行接口连接。Arduino UNO 是一款基于 ATmega328P 的微控制器开发板,为用户提供了一种经济实惠且灵活的方式来测试新概念并构建基于 ATmega328P 微控制器的原型系统,结合了性能、功耗和功能的多种配置选择。Arduino UNO 具有 14 个数字输入/输出引脚(其中 6 个可用作 PWM 输出)、6 个模拟输入、16 MHz 陶瓷谐振器(CSTCE16M0V53-R0)、USB 接口、电源插座、ICSP 头和复位按钮。大多数 ATmega328P 微控制器的引脚都连接到开发板左右两侧的 IO 引脚,然后再连接到两个 mikroBUS™ 插座。这款 Click Shield 还配备了多个开关,可执行各种功能,例如选择 mikroBUS™ 插座上模拟信号的逻辑电平,以及选择 mikroBUS™ 插座本身的逻辑电压电平。此外,用户还可以通过现有的双向电平转换电压转换器使用任何 Click board™,无论 Click board™ 运行在 3.3V 还是 5V 逻辑电压电平。一旦将 Arduino UNO 板与 Click Shield for Arduino UNO 连接,用户即可访问数百种 Click board™,并兼容 3.3V 或 5V 逻辑电压电平的设备。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
实时跟踪您的结果
应用程序输出
1. 应用程序输出 - 在调试模式下,“应用程序输出”窗口支持实时数据监控,直接提供执行结果的可视化。请按照提供的教程正确配置环境,以确保数据正确显示。

2. UART 终端 - 使用UART Terminal通过USB to UART converter监视数据传输,实现Click board™与开发系统之间的直接通信。请根据项目需求配置波特率和其他串行设置,以确保正常运行。有关分步设置说明,请参考提供的教程。

3. Plot 输出 - Plot功能提供了一种强大的方式来可视化实时传感器数据,使趋势分析、调试和多个数据点的对比变得更加直观。要正确设置,请按照提供的教程,其中包含使用Plot功能显示Click board™读数的分步示例。在代码中使用Plot功能时,请使用以下函数:plot(insert_graph_name, variable_name);。这是一个通用格式,用户需要将“insert_graph_name”替换为实际图表名称,并将“variable_name”替换为要显示的参数。

软件支持
库描述
该库包含 Light mix-sens Click 驱动程序的 API。
关键功能:
lightmixsens_write_byte
- 通用写入字节函数lightmixsens_read_byte
- 通用读取字节函数lightmixsens_switch_ir_to_prox
- 切换红外到接近功能
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* @file main.c
* @brief LightMixSens Click example
*
* # Description
* This example show usage of Light Mix Sens Click. It switches the IR light for separate and
* measure sectar of RGB lights. Click also measure proximity from the object using light source.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes all necessary peripherals and pins, initializes I2C driver and performs
* the Click board default configuration to allow ALS/Color and Proximity measurements.
*
* ## Application Task
* Waits until ALS/Color integration cycle was done and then reads the entire measurement.
* The all results will be sent to the selected UART terminal.
*
* ## Additional Functions :
* - prox_app - This is application function which determines the proximity results.
*
*
* @author MikroE Team
*
*/
#include "board.h"
#include "log.h"
#include "lightmixsens.h"
static lightmixsens_t lightmixsens;
static log_t logger;
lightmixsens_data_obj lightmixsens_data;
char prox_str[ 20 ];
// ------------------------------------------------------- ADDITIONAL FUNCTIONS
/**
* @brief Light mix sens proximity function.
* @details This is function which determines the proximity results.
*/
void prox_app ( void );
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
lightmixsens_cfg_t cfg;
/**
* 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.
lightmixsens_cfg_setup( &cfg );
LIGHTMIXSENS_MAP_MIKROBUS( cfg, MIKROBUS_1 );
lightmixsens_init( &lightmixsens, &cfg );
lightmixsens_default_cfg( &lightmixsens );
lightmixsens_data.lightmixsens_cdata = LIGHTMIXSENS_DUMMY_DATA;
lightmixsens_data.lightmixsens_rdata = LIGHTMIXSENS_DUMMY_DATA;
lightmixsens_data.lightmixsens_gdata = LIGHTMIXSENS_DUMMY_DATA;
lightmixsens_data.lightmixsens_bdata = LIGHTMIXSENS_DUMMY_DATA;
lightmixsens_data.lightmixsens_pdata = LIGHTMIXSENS_DUMMY_DATA;
log_printf( &logger, "* Light mix-sens Click initialization done. *\r\n" );
}
void application_task ( void )
{
lightmixsens_wait_atime( &lightmixsens );
lightmixsens_read_word( &lightmixsens, LIGHTMIXSENS_REG_CDATA,
&lightmixsens_data.lightmixsens_cdata );
lightmixsens_read_word( &lightmixsens, LIGHTMIXSENS_REG_RDATA,
&lightmixsens_data.lightmixsens_rdata );
lightmixsens_read_word( &lightmixsens, LIGHTMIXSENS_REG_GDATA_IRDATA,
&lightmixsens_data.lightmixsens_gdata );
lightmixsens_read_word( &lightmixsens, LIGHTMIXSENS_REG_BDATA,
&lightmixsens_data.lightmixsens_bdata );
lightmixsens_read_byte( &lightmixsens, LIGHTMIXSENS_REG_PDATA,
&lightmixsens_data.lightmixsens_pdata );
log_printf( &logger, "- Clear light: %.3d lx\r\n", lightmixsens_data.lightmixsens_cdata );
log_printf( &logger, "- Red light: %.3d lx\r\n", lightmixsens_data.lightmixsens_rdata );
log_printf( &logger, "- Green light: %.3d lx\r\n", lightmixsens_data.lightmixsens_gdata );
log_printf( &logger, "- Blue light: %.3d lx\r\n", lightmixsens_data.lightmixsens_bdata );
prox_app( );
log_printf( &logger, "** Proximity: %s\r\n", prox_str );
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;
}
void prox_app ( void )
{
float prox;
uint8_t cnt;
prox = lightmixsens_data.lightmixsens_pdata;
prox /= 255;
prox *= 16;
for ( cnt = 0; cnt < ( uint8_t ) prox; cnt++ ) {
prox_str[ cnt ] = '|';
}
prox_str[ cnt ] = 0;
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:光学