[AT32F405] 【AT-START-F405测评】+驱动温湿度传感器GXHT-30

[复制链接]
 楼主| suncat0504 发表于 2024-5-5 21:43 | 显示全部楼层 |阅读模式
GXHT-30温湿度传感器是一个国产的温湿度传感器,使用I2C方式通讯。
0505-1.png 0505-2.png 0505-3.png
典型应用电路:
0505-4.png
由测量结果数据计算相对湿度转换公式(%RH):

图片1.png
图片2.png

我这里实际使用的是GXHT-30的模块,提供VDD、GND、SDA、SCL接口。
0505-5.png

开发板提供的GPIO中,我使用GPIO口模拟方式,连接GXHT-30温湿度传感器,其中PC9作为SCL使用,PC7作为SDA使用。
主程序在初始化完各关联设备后,每间隔1秒钟,温湿度启动传感器一次,并读取结果显示到TFT显示屏上。
  1. int main(void) {

  2.     float         temperature;        // temperature [°C]

  3.     float        humidity;                // relative humidity [%RH]

  4.     char val[32]={'\0'};

  5.     etError   error;        // error code

  6.    

  7.     system_clock_config();



  8.     at32_board_init();

  9.     uart_print_init(115200);

  10.    



  11.     printf("Start main ...\r\n");

  12.    

  13.     // 初始化TFT显示屏

  14.     Lcd_Init();

  15.    

  16.     // 测试

  17.     Lcd_Clear(BLACK);

  18.     Gui_DrawFont_GBK16(8,10,WHITE, BLACK, (unsigned char *)"Artery & 21IC");

  19.     Gui_DrawFont_GBK16(30,36,WHITE, BLACK, (unsigned char *)"AT32F405");   

  20.    

  21.     // 初始化水位传感器、抽水马达控制口

  22.     at32_led_on(LED2);

  23.     mymac_Init();

  24.     Gui_DrawFont_GBK16(0, 60,WHITE, BLACK, (unsigned char *)"初始化:");

  25.     Gui_DrawFont_GBK16(10, 76,WHITE, BLACK, (unsigned char *)"水位控制接口");

  26.     at32_led_off(LED2);

  27.     at32_led_on(LED3);

  28.     // 初始化温湿度传感器GXHT-30

  29.     Gui_DrawFont_GBK16(10, 92,WHITE, BLACK, (unsigned char *)"传感器接口");

  30.     gxht30_Init(GXHT30_ADDRESS);

  31.     at32_led_off(LED3);

  32.     Gui_DrawFont_GBK16(0, 110, WHITE, BLACK, (unsigned char *)"温度");

  33.     Gui_DrawFont_GBK16(32,110, WHITE, BLACK, (unsigned char *)"=");

  34.     Gui_DrawFont_GBK16(0, 126,WHITE, BLACK, (unsigned char *)"湿度");

  35.     Gui_DrawFont_GBK16(32,126,WHITE, BLACK, (unsigned char *)"=");

  36.     while(1) {

  37. //        Gui_DrawFont_GBK16(58,84,  WHITE, BLACK, (unsigned char *)"       ");

  38. //        Gui_DrawFont_GBK16(58,100, WHITE, BLACK, (unsigned char *)"       ");

  39.         //at32_led_toggle(LED2);

  40.         //delay_ms(200);

  41.         //at32_led_toggle(LED3);

  42.         //delay_ms(200);

  43.         //at32_led_toggle(LED4);

  44.         //delay_ms(200);

  45. //        error = gxht30_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_CLKSTRETCH, 50);

  46. //        sprintf(val, "Result=0x%02x", error);

  47. //        Gui_DrawFont_GBK16(0,142,WHITE, BLACK, (unsigned char *)val);

  48.         

  49.         SHT30_read_result(GXHT30_ADDRESS, &temperature, &humidity);

  50.         

  51.         sprintf(val, "%5.1f", temperature);

  52.         Gui_DrawFont_GBK16(48,110,WHITE, BLACK, (unsigned char *)val);



  53.         sprintf(val, "%5.1f", humidity);

  54.         Gui_DrawFont_GBK16(48,126, WHITE, BLACK, (unsigned char *)val);



  55.         delay_ms(1000);

  56.     }

  57. }

目前的处理结果不对,应该卡在了传感器的读写时序上,正在检查中。
微信图片_20240505214325.jpg


打赏榜单

ArteryMCU 打赏了 50.00 元 2024-06-07
理由:[F405开发板评测活动]内容优质

 楼主| suncat0504 发表于 2024-5-5 21:58 | 显示全部楼层
数据不正常,竟然是因为初始化GPIO口的代码没有被调用,大意了。
微信图片_20240505215740.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:大连伊飞特信息技术有限公司软件工程师
简介:本人于1993年毕业于大连理工大学。毕业后从事单片机开发工作5年,之后转入软件开发工作至今。

158

主题

4514

帖子

6

粉丝
快速回复 返回顶部 返回列表