依靠我们的气候解决方案,提供有价值的温度和湿度洞察,为更智能、更可持续的未来做出贡献。
A
A
硬件概览
它是如何工作的?
Temp&Hum 14 Click基于HTU31D,这是TE Connectivity公司生产的数字相对湿度传感器,具有温度输出。HTU31D内部的两个传感器都经过了单独校准、补偿和测试。湿度可在0到100%RH的范围内测量,而温度传感器设计范围为-40到125°C。在环境温度下,湿度的典型精度为±2%RH(在20%RH至100%RH的测量范围内),温度为±0.2°C(在0°C至100°C之间),功耗最低可达3.78μW。该Click board™是一款I2C可配置的环境传感器,具有高可靠性和完全互换性,在标准条件下无需校
准。在饱和阶段长时间后,该传感器具有快速恢复时间,低功耗和快速响应时间。此外,即使在高达125°C的极端温度和湿度环境下,该传感器也能提供持续的性能。Temp & Hum 14 Click通过标准的I2C 2-Wire接口与MCU通信,最大频率为10MHz。HTU31D可以回答2个I2C地址,并允许通过将标有ADDR SEL的SMD跳线放置到标有0和1的适当位置来选择最低有效位(LSB)。除了此功能之外,该Click board™还包含额外的功能,通过mikroBUS™插座上的RST引脚进行路由。RST引脚可以生成一个传感
器复位,此功能所需的最小脉冲持续时间为1μs。HTU31D还提供了一个诊断寄存器,可用于检查湿度和温度值是否超出了指定范围。CRC检查(循环冗余校验)确保了安全的数据传输。湿度和温度信号响应时间以及恢复时间(在完全冷凝之后)在几秒钟内。该Click board™可以使用3.3V或5V逻辑电压级别运行,通过VCC SEL跳线选择。这样,既能够使3.3V和5V的MCU正常使用通信线路。此外,该Click board™配备了包含易于使用的功能和示例代码的库,可用作进一步开发的参考。
功能概述
开发板
Curiosity PIC32 MZ EF 开发板是一个完全集成的 32 位开发平台,特点是高性能的 PIC32MZ EF 系列(PIC32MZ2048EFM),该系列具有 2MB Flash、512KB RAM、集成的浮点单元(FPU)、加密加速器和出色的连接选项。它包括一个集成的程序员和调试器,无需额外硬件。用户可以通过 MIKROE
mikroBUS™ Click™ 适配器板扩展功能,通过 Microchip PHY 女儿板添加以太网连接功能,使用 Microchip 扩展板添加 WiFi 连接能力,并通过 Microchip 音频女儿板添加音频输入和输出功能。这些板完全集成到 PIC32 强大的软件框架 MPLAB Harmony 中,该框架提供了一个灵活且模块化的接口
来应用开发、一套丰富的互操作软件堆栈(TCP-IP、USB)和易于使用的功能。Curiosity PIC32 MZ EF 开发板提供了扩展能力,使其成为连接性、物联网和通用应用中快速原型设计的绝佳选择。
微控制器概述
MCU卡片 / MCU

建筑
PIC32
MCU 内存 (KB)
2048
硅供应商
Microchip
引脚数
100
RAM (字节)
524288
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
该库包含 Temp&Hum 14 Click 驱动程序的 API。
关键功能:
temphum14_set_conversion- 设置将单个温度和湿度转换为HTU31D的数据分辨率的函数temphum14_read_t_and_rh- 读取HTU31D的温度和湿度数据的函数temphum14_get_temp_and_hum- 获取HTU31D的温度和湿度数值的函数
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* @file main.c
* @brief TempHum14 Click example
*
* # Description
* This is an example that demonstrates the use of the Temp-Hum 14 Click board.
* Temp-Hum 14 Click board can be used to measure temperature
* and relative humidity.
* All data logs write on USB uart changes every 3 sec.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initialization driver enables I2C, and
* hardware reset the device and read the serial number.
*
* ## Application Task
* Reading temperature and humidity, and loging it on the USB uart.
*
* @author Stefan Ilic
*
*/
#include "board.h"
#include "log.h"
#include "temphum14.h"
static temphum14_t temphum14;
static log_t logger;
static temphum14_diagn_t status_data;
static float temperature;
static float humidity;
uint32_t ser_numb;
void display_diagnostic ( void ) {
log_printf( &logger, "-----------------------------\r\n" );
log_printf( &logger, "\r\n NVM Error :" );
if ( status_data.nvm_error == TEMPHUM14_STATUS_ON ) {
log_printf( &logger, " Error \r\n" );
} else {
log_printf( &logger, " No Error \r\n" );
}
log_printf( &logger, "\r\n Humidity U/O :" );
if ( status_data.hum_un_over == TEMPHUM14_STATUS_ON ) {
log_printf( &logger, " Under/Overrun \r\n" );
} else {
log_printf( &logger, " No Error \r\n" );
}
log_printf( &logger, "\r\n Humidity Error :" );
if ( status_data.hum_h_err == TEMPHUM14_STATUS_ON ) {
log_printf( &logger, " Below -10%% RH \r\n" );
} else if ( status_data.hum_l_err == TEMPHUM14_STATUS_ON ) {
log_printf( &logger, " Above 120%% RH \r\n" );
} else {
log_printf( &logger, " No Error \r\n" );
}
log_printf( &logger, "\r\n Temperature U/O :" );
if ( status_data.temp_un_over == TEMPHUM14_STATUS_ON ) {
log_printf( &logger, " Under/Overrun \r\n" );
} else {
log_printf( &logger, " No Error \r\n" );
}
log_printf( &logger, "\r\n Temperature Error:" );
if ( status_data.temp_h_err == TEMPHUM14_STATUS_ON ) {
log_printf( &logger, " Below -50 C \r\n" );
} else if ( status_data.temp_l_err == TEMPHUM14_STATUS_ON ) {
log_printf( &logger, " Above 150 C \r\n" );
} else {
log_printf( &logger, " No Error \r\n" );
}
log_printf( &logger, "\r\n Heater Status :" );
if ( status_data.heater_on == TEMPHUM14_STATUS_ON ) {
log_printf( &logger, " ON \r\n" );
} else {
log_printf( &logger, " OFF \r\n" );
}
log_printf( &logger, "-----------------------------\r\n" );
}
void application_init ( void ) {
log_cfg_t log_cfg; /**< Logger config object. */
temphum14_cfg_t temphum14_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_printf( &logger, "-----------------------------\r\n" );
log_info( &logger, " Application Init " );
log_printf( &logger, "-----------------------------\r\n" );
// Click initialization.
temphum14_cfg_setup( &temphum14_cfg );
TEMPHUM14_MAP_MIKROBUS( temphum14_cfg, MIKROBUS_1 );
err_t init_flag = temphum14_init( &temphum14, &temphum14_cfg );
if ( I2C_MASTER_ERROR == init_flag ) {
log_error( &logger, " Application Init Error. " );
log_info( &logger, " Please, run program again... " );
for ( ; ; );
}
Delay_ms ( 100 );
log_printf( &logger, "-----------------------------\r\n" );
log_printf( &logger, " Hardware Reset \r\n" );
temphum14_hw_reset( &temphum14 );
Delay_ms ( 100 );
ser_numb = temphum14_get_serial_number( &temphum14 );
log_printf( &logger, "-----------------------------\r\n" );
log_printf( &logger, " Serial Number : %lu \r\n", ser_numb );
log_printf( &logger, "-----------------------------\r\n" );
log_printf( &logger, " Software Reset \r\n" );
temphum14_soft_reset( &temphum14 );
Delay_ms ( 100 );
temphum14_get_diagnostic( &temphum14, &status_data );
Delay_ms ( 100 );
display_diagnostic( );
Delay_ms ( 100 );
log_info( &logger, " Application Task " );
log_printf( &logger, "-----------------------------\r\n" );
}
void application_task ( void ) {
temphum14_set_conversion( &temphum14, TEMPHUM14_CONVERSION_HUM_OSR_0_020, TEMPHUM14_CONVERSION_TEMP_0_040 );
Delay_ms ( 10 );
temphum14_get_temp_and_hum( &temphum14, &temperature, &humidity );
Delay_ms ( 10 );
log_printf( &logger, " Temperature : %.2f C \r\n", temperature );
log_printf( &logger, " Humidity : %.2f %% \r\n", humidity );
log_printf( &logger, "-----------------------------\r\n" );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
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
额外支持
资源
类别:温度与湿度
































