Temperature Monitor With RGB Feedback Solution
通过滚动显示与多彩 LED 动画反馈,实现温湿度的实时监测,让您的嵌入式应用焕发生机与互动体验
你将学到和构建的内容
简介
Temperature Monitor With RGB Feedback 解决方案结合环境感测与视觉指示,实现一个直观且具吸引力的实时监测系统。该系统集成 提供精准的温湿度数据、7x10 G Click 以数字方式显示温度信息,以及 2x2 RGB Click 通过动画 LED 实现动态视觉反馈,从而同时保证数据可视化与操作状态感知。LED 动画作为测量过程的动态信号,增强系统的交互体验,而 UART 日志记录则为调试或深入分析提供补充信息。该灵活方案非常适用于智能家居界面、教学演示,或任何需要数据跟踪与交互式反馈的嵌入式系统应用场景。
mikroBUS 1
7x10 G Click
7x10 G Click 是一款 LED 点阵显示 Click 板,专为轻松显示图形和字符而设计。它基于 Texas Instruments 的 74HC595 移位寄存器、CD4017 十进制计数器和 ULN2003 达林顿晶体管阵列。该板配备两个 7x5 LED 点阵模块,通过高效的行列复用技术实现流畅、无闪烁的视觉效果。SPI 接口简化了控制,而可调节的电源(3.3V 或 5V)确保了与不同 MCU 的兼容性。7x10 G Click 非常适用于视觉指示、滚动文本显示和低功耗图形应用,提供了一种紧凑且高效的 LED 显示解决方案。
mikroBUS 2
Temp&Hum 25 Click
Temp\&Hum 25 Click 是一款紧凑型附加板,专为精确的温湿度监测而设计。该板搭载 Sensirion 出品的 SHT33-DIS-B2.5KS,这是一款高可靠性的第三代相对湿度与温度传感器,具备卓越的测量精度与长期稳定性。传感器测量范围为 0–100% 相对湿度(RH)与 -40 至 +125°C 的温度,并经过 ISO17025 认证校准,支持 CMOSens® 技术,并具备可追溯至 NIST 的校准链。该板采用 2 线 I2C 接口通信,支持可选地址设置,并兼容 3.3V 与 5V 逻辑电平,便于与不同主控平台集成。Temp\&Hum 25 Click 还支持全新的 Click Snap 结构,可将传感器区域轻松拆分,实现灵活部署。该板非常适合便携式电子设备、工业控制、消费类产品以及环境监测等应用场景,在多种使用条件下都能提供可靠、精准的温湿度数据。
mikroBUS 3
2x2 RGB Click
2x2 RGB Click 是一款紧凑型附加板,包含一个由 4 个“智能型”RGB 元件组成的矩阵,构成一个 2x2 的显示屏。该板搭载 Kinetic Technologies 出品的 KTD2052A,这是一款 12 通道 RGB LED 驱动器,可对多达 4 颗 RGB LED(共 12 颗单色 LED)进行全编程电流调节。LED 矩阵由四颗来自 ams OSRAM 的 LRTB GFTG 多芯片封装(6 引脚 MULTILED)组成,每颗 LED 拥有 120 度的可视角度。2x2 RGB Click 非常适合用于 AI 智能音箱、蓝牙/Wi-Fi 扬声器、汽车指示灯与氛围灯、物联网设备、游戏设备、消费类电子产品等多种开发场景。
功能概述
开发板
UNI-DS v8 是一款功能强大的开发板,专为快速嵌入式应用开发而设计,支持多种 MCU(STM32、Kinetis、TIVA、PIC、AVR 等),并配备全球首款内置 WiFi 调试器/编程器。它集成了先进的 CODEGRIP 模块,支持 JTAG、SWD 和 SWO Trace 调试,并提供多种输入选项的稳压电源(USB-C、12V、电池)。此外,该开发板具备丰富的连接选项,包括 USB-UART、USB HOST/DEVICE、CAN 和以太网。借助 mikroBUS™、SiBRAIN 插槽以及双显示支持,它可无缝融入 MIKROE 生态系统,兼容所有 Click boards™,为高效、沉浸式的原型开发提供理想平台。
微控制器概述
MCU卡片 / MCU

类型
8th Generation
建筑
ARM Cortex-M4
MCU 内存 (KB)
1024
硅供应商
STMicroelectronics
引脚数
144
RAM (字节)
196608
一步一步来
项目组装
实时跟踪您的结果
应用程序输出
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”替换为要显示的参数。

软件支持
库描述
Temperature Monitor With RGB Feedback Solution 使用 NECTO Studio 开发,确保兼容 mikroSDK 的开源库和工具。该解决方案采用即插即用的设计,支持快速实施和测试,并与所有配备 mikroBUS™ 插座的开发板、入门套件和 mikromedia 板完全兼容。
示例描述
Temperature Monitor With RGB Feedback 解决方案结合环境感测与视觉反馈,实现对温度与湿度的实时监测。系统通过 Temp&Hum 25 Click 获取环境数据,使用 7x10 G Click 以滚动数字方式显示温度值,同时利用 2x2 RGB Click 通过色彩动画反馈当前系统状态。RGB LED 动画不仅增强可视性,还在每次测量周期中为用户提供即时反馈。所有温湿度数据及 LED 动作也通过 UART 进行日志记录,方便调试与后续分析。
关键功能:
temphum25_read_measurement
- 从 Temp&Hum 25 Click 读取当前温度与湿度值。c7x10g_draw_number
- 在 7x10 G Click 点阵屏上以滚动方式显示测得温度数值。c2x2rgb_set_rgb_led
- 按顺序点亮 2x2 RGB Click 上的 LED(红、绿、蓝、白),用于指示测量进度。temphum25_start_measurement
- 启动 Temp&Hum 25 传感器的连续高分辨率测量模式。log_printf
- 将温湿度读数及 LED 状态信息输出至 UART,用于记录与调试。i2c_master_set_slave_address
- 设置目标从设备(如 Temp&Hum 25 Click)的 I2C 地址,启动主设备与之通信。
应用初始化
在 application_init 函数中,首先初始化 7x10 G Click,用于显示滚动数字。接着对 Temp&Hum 25 Click 进行初始化,执行设备复位、读取并记录传感器序列号,并启动连续温湿度测量流程。随后初始化 2x2 RGB Click,并加载默认配置以保证 LED 控制安全可靠。若初始化过程中发生通信错误,系统将记录错误并进入死循环,以防止错误执行。
应用任务
在 application_task 主循环中,系统周期性地从 Temp&Hum 25 读取温湿度数据,并以滚动方式在 7x10 G Click 上显示温度值。2x2 RGB Click 同步以红、绿、蓝、白四色顺序依次点亮各个 LED,形成动态动画,作为系统持续运行的视觉“心跳”。所有测量数据及 LED 动作事件均通过 UART 输出,为开发人员提供可视化与串行调试支持。
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*
* Solution Name: Temp Monitor with RGB Feedback Solution
*
* Description:
* This embedded application visually reports temperature data using the
* Temp&Hum 25 Click and simultaneously displays the numeric readings on the
* 7x10 G Click and triggers colorful LED sequences on the 2x2 RGB Click
* while waiting for the temperature readings to be finished for enhanced
* feedback. The solution allows users to monitor environmental conditions with
* both visual indicators and UART-based logging.
*
* The system utilizes the following Click boards:
* - Temp&Hum 25 Click: Measures ambient temperature and humidity using a
* high-accuracy sensor with continuous sampling mode.
* - 7x10 G Click: Displays the current temperature in a scrolling number
* format across a dot matrix LED panel.
* - 2x2 RGB Click: Cycles through red, green, blue, and white animations across
* all LEDs for dynamic visual feedback tied to environmental updates.
*
* The `application_init` function initializes all three Click boards and starts
* the temperature and humidity measurement in continuous mode. It also retrieves
* and logs the serial number of the Temp&Hum 25 sensor.
*
* The `application_task` function reads temperature and humidity values from the
* Temp&Hum 25 Click, displays the temperature on the 7x10 G Click, and cycles through
* color patterns on the 2x2 RGB Click, while logging each step via UART. The RGB LED
* animation acts as a visual heartbeat indicating the application is actively polling
* sensor data and functioning properly.
*
* Hardware Setup:
* - MIKROBUS_1: 7x10 G Click (Temperature display on dot matrix)
* - MIKROBUS_2: Temp&Hum 25 Click (Environmental sensing)
* - MIKROBUS_3: 2x2 RGB Click (LED animation for visual feedback)
*
* Key Features:
* - Real-time environmental monitoring with temperature and humidity data.
* - Temperature scrolling display on a high-contrast 7x10 dot matrix panel.
* - RGB LED sequences for clear and aesthetic feedback on each read cycle.
* - UART logging for debugging and sensor data visualization.
*
* Development Environment:
* - [NECTO Studio](https://www.mikroe.com/necto)
* - [mikroSDK v2.0](https://www.mikroe.com/mikrosdk) framework
* - MIKROE [Click boards](https://www.mikroe.com/click-boards) Add-ons
*
* Author: Branko Jaksic
* Date: April, 2025
*/
// ------------------------------------------------------------------- INCLUDES
#include "log.h"
#include "board.h"
#include "c7x10g.h"
#include "c2x2rgb.h"
#include "temphum25.h"
// --------------------------------------------------------------- LOCAL MACROS
#define DEMO_LED_CURRENT 600
// ------------------------------------------------------------------ VARIABLES
static log_t logger;
static c7x10g_t c7x10g;
static c2x2rgb_t c2x2rgb;
static temphum25_t temphum25;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void ) {
c7x10g_cfg_t c7x10g_cfg; /**< Click config object. */
c2x2rgb_cfg_t c2x2rgb_cfg; /**< Click config object. */
temphum25_cfg_t temphum25_cfg; /**< Click config object. */
// 7x10 G Click initialization.
c7x10g_cfg_setup( &c7x10g_cfg );
C7X10G_MAP_MIKROBUS( c7x10g_cfg, MIKROBUS_1 );
c7x10g_init( &c7x10g, &c7x10g_cfg );
// Temp&Hum 25 Click initialization.
temphum25_cfg_setup( &temphum25_cfg );
TEMPHUM25_MAP_MIKROBUS( temphum25_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == temphum25_init( &temphum25, &temphum25_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
temphum25_reset_device ( &temphum25 );
uint32_t serial_num = 0;
if ( TEMPHUM25_OK == temphum25_read_serial_num ( &temphum25, &serial_num ) )
{
log_printf ( &logger, " Serial number: 0x%.8LX\r\n", serial_num );
}
temphum25_start_measurement ( &temphum25, TEMPHUM25_CMD_MEAS_CONT_REP_HIGH_MPS_1 );
// 2x2 RGB Click initialization.
c2x2rgb_cfg_setup( &c2x2rgb_cfg );
C2X2RGB_MAP_MIKROBUS( c2x2rgb_cfg, MIKROBUS_3 );
if ( I2C_MASTER_ERROR == c2x2rgb_init( &c2x2rgb, &c2x2rgb_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( C2X2RGB_ERROR == c2x2rgb_default_cfg ( &c2x2rgb ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
void application_task ( void ) {
float temperature = 0;
float humidity = 0;
// Switch I2C communication to Temp & Hum 25 Click.
i2c_master_set_slave_address(&temphum25.i2c, temphum25.slave_address);
if ( TEMPHUM25_OK == temphum25_read_measurement ( &temphum25, &temperature, &humidity ) )
{
log_printf ( &logger, " Temperature: %.2f degC\r\n", temperature );
log_printf ( &logger, " Humidity: %.2f %%RH\r\n\n", humidity );
Delay_ms ( 1000 );
}
c7x10g_draw_number( &c7x10g, temperature, C7X10G_DISPLAY_DELAY_150MS );
Delay_ms ( 10 );
// Switch I2C communication to 2x2 RGB Click.
i2c_master_set_slave_address(&c2x2rgb.i2c, c2x2rgb.slave_address);
log_printf( &logger, "\r\nRED: " );
for ( uint8_t led_pos = C2X2RGB_SET_LD1; led_pos <= C2X2RGB_SET_LD4; led_pos++ )
{
if ( C2X2RGB_OK == c2x2rgb_set_rgb_led( &c2x2rgb, led_pos, DEMO_LED_CURRENT,
C2X2RGB_LED_CURRENT_OFF,
C2X2RGB_LED_CURRENT_OFF ) )
{
log_printf( &logger, "LD%d ", ( uint16_t ) led_pos );
}
Delay_ms ( 200 );
}
log_printf( &logger, "\r\nGREEN: " );
for ( uint8_t led_pos = C2X2RGB_SET_LD1; led_pos <= C2X2RGB_SET_LD4; led_pos++ )
{
if ( C2X2RGB_OK == c2x2rgb_set_rgb_led( &c2x2rgb, led_pos, C2X2RGB_LED_CURRENT_OFF,
DEMO_LED_CURRENT,
C2X2RGB_LED_CURRENT_OFF ) )
{
log_printf( &logger, "LD%d ", ( uint16_t ) led_pos );
}
Delay_ms ( 200 );
}
log_printf( &logger, "\r\nBLUE: " );
for ( uint8_t led_pos = C2X2RGB_SET_LD1; led_pos <= C2X2RGB_SET_LD4; led_pos++ )
{
if ( C2X2RGB_OK == c2x2rgb_set_rgb_led( &c2x2rgb, led_pos, C2X2RGB_LED_CURRENT_OFF,
C2X2RGB_LED_CURRENT_OFF,
DEMO_LED_CURRENT ) )
{
log_printf( &logger, "LD%d ", ( uint16_t ) led_pos );
}
Delay_ms ( 200 );
}
log_printf( &logger, "\r\nWHITE: " );
for ( uint8_t led_pos = C2X2RGB_SET_LD1; led_pos <= C2X2RGB_SET_LD4; led_pos++ )
{
if ( C2X2RGB_OK == c2x2rgb_set_rgb_led( &c2x2rgb, led_pos, DEMO_LED_CURRENT,
DEMO_LED_CURRENT,
DEMO_LED_CURRENT ) )
{
log_printf( &logger, "LD%d ", ( uint16_t ) led_pos );
}
Delay_ms ( 200 );
}
log_printf( &logger, "\r\n----------------" );
}
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
额外支持
资源
类别:Human-Machine Interface (HMI)