7x10 G Click with UNI-DS v8

Published 5月 07, 2025

点击板

7x10 G Click
Temp&Hum 25 Click
2x2 RGB Click

开发板

UNI-DS v8

编译器

NECTO Studio

微控制器单元

STM32F407ZG

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 显示解决方案。

7x10 G Click front-background image

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 结构,可将传感器区域轻松拆分,实现灵活部署。该板非常适合便携式电子设备、工业控制、消费类产品以及环境监测等应用场景,在多种使用条件下都能提供可靠、精准的温湿度数据。

Temp&Hum 25 Click front-background image

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 扬声器、汽车指示灯与氛围灯、物联网设备、游戏设备、消费类电子产品等多种开发场景。

2x2 RGB Click front-background image

功能概述

开发板

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™,为高效、沉浸式的原型开发提供理想平台。

UNI-DS v8 front image

微控制器概述 

MCU卡片 / MCU

default

类型

8th Generation

建筑

ARM Cortex-M4

MCU 内存 (KB)

1024

硅供应商

STMicroelectronics

引脚数

144

RAM (字节)

196608

一步一步来

项目组装

Fusion for PIC v8 front image hardware assembly

首先,选择您的开发板 - UNI-DS v8

Fusion for PIC v8 front image hardware assembly
LTE IoT 5 Click front-background image hardware assembly
Calypso Click front-background image hardware assembly
Thermo 21 Click front-background image hardware assembly
SiBRAIN for PIC32MZ1024EFK144 front image hardware assembly
Board mapper by product8 hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
NECTO Compiler Selection Step Image hardware assembly
NECTO Output Selection Step Image hardware assembly
Necto image step 6 hardware assembly
Necto image step 7 hardware assembly
Necto image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Necto PreFlash Image hardware assembly

实时跟踪您的结果

应用程序输出

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

额外支持

资源

喜欢这个项目吗?

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