[活动] 【APM32F107VCT6 MINI开发板测评】温湿度监控

[复制链接]
1491|17
 楼主| lulugl 发表于 2023-3-12 22:39 | 显示全部楼层 |阅读模式
#申请原创# 【目的】用RT-Thread完成温湿度数据采集
【APM32F107VCT6 MINI开发板测评】驱动OLED 在这篇文章的基础上增加hs3003温湿度计的驱动,并显示到OLED上。
1、打开menuconfig,配置hs3003温湿度计。
使能hs300x.png
打开sensor开关.png
2、配置完后,退出保存并用scons --target=mdk5重新生成工程。
3、打开工程,在main.c中增加ssd1306的初始化,并添加显示温湿度显示函数。代码如下:
  1. #include <rtthread.h>
  2. #include <rtdevice.h>
  3. #include <board.h>
  4. #include "sensor_renesas_hs300x.h"
  5. #include "ssd1306.h"

  6. /* defined the LED1 pin: PE7 */
  7. #define LED1_PIN    GET_PIN(E, 6)

  8. int main(void)
  9. {
  10.     uint32_t sysclock = 0;
  11.                 float humi_f;
  12.     float temp_f;
  13.                 char mqtt_send_buf[128] = {0};
  14.     /* set LED1 pin mode to output */
  15.     rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
  16.     /* Print system clock */
  17.     sysclock = RCM_ReadSYSCLKFreq();
  18.     rt_kprintf("System Clock: %d\n", sysclock);
  19.                  ssd1306_Init();       //初始化OLED
  20.                 ssd1306_SetCursor(30, 0);   //设置显示位置
  21.                 ssd1306_WriteString("AMP32", Font_16x26, White);  //显示AMP图标
  22.     while (1)
  23.     {
  24.                         hs300x_read_data(&temp_humi_dev,&humi_f,&temp_f); //读取温湿度
  25.                         ssd1306_SetCursor(10, 26);
  26.                         rt_sprintf(mqtt_send_buf,"temp:%d.%02d",(int)temp_f,(int)(temp_f*100)%100);  //生成显示字符串
  27.                         ssd1306_WriteString(mqtt_send_buf, Font_11x18, Black);    //显示温度
  28.                         ssd1306_SetCursor(10, 26+18);
  29.                         rt_sprintf(mqtt_send_buf,"humi:%d.%02d",(int)humi_f,(int)(humi_f*100)%100);
  30.                         ssd1306_WriteString(mqtt_send_buf, Font_11x18, Black);
  31.                         ssd1306_UpdateScreen();             //更新显示
  32.                         //rt_kprintf(mqtt_send_buf);
  33.       rt_pin_write(LED1_PIN, PIN_HIGH);
  34.       rt_thread_mdelay(500);
  35.       rt_pin_write(LED1_PIN, PIN_LOW);
  36.       rt_thread_mdelay(500);
  37.     }
  38. }
4、编译后下载到开发板,显示效果如下:
温湿度计.gif

tpgf 发表于 2023-4-8 14:00 | 显示全部楼层
湿度计由两只完全相同的温度计构成。其中一只温度计为干泡温度计,另一只为湿泡温度计
nawu 发表于 2023-4-8 14:52 | 显示全部楼层
湿度表示气体中的水蒸汽含量,有绝对湿度和相对湿度两种表示方法
aoyi 发表于 2023-4-8 15:37 | 显示全部楼层
在计量法中规定,湿度定义为"物象状态的量"。日常生活中所指的湿度为相对湿度,用RH%表示。
zljiu 发表于 2023-4-8 15:55 | 显示全部楼层
现代湿度测量方案最主要的有两种:干湿球测湿法,电子式湿度传感器测湿法
gwsan 发表于 2023-4-8 16:15 | 显示全部楼层
湿度很久以前就与生活存在着密切的关系,但用数量来进行表示较为困难。对湿度的表示方法有绝对湿度、相对湿度、露点、湿气与干气的比值(重量或体积)等等。
tfqi 发表于 2023-4-8 16:26 | 显示全部楼层
湿度测量始终是世界计量领域中著名的难题之一
 楼主| lulugl 发表于 2023-4-8 18:09 | 显示全部楼层
tfqi 发表于 2023-4-8 16:26
湿度测量始终是世界计量领域中著名的难题之一

现在低功耗温度采集,还有特殊环境下的温湿度采集还是有市场的。
albertaabbot 发表于 2023-4-15 19:46 | 显示全部楼层
HS300X系列是IDT瑞萨设计的高精度,IIC接口
 楼主| lulugl 发表于 2023-4-15 20:13 | 显示全部楼层
albertaabbot 发表于 2023-4-15 19:46
HS300X系列是IDT瑞萨设计的高精度,IIC接口

对的,精度还要吧,关键功耗控制得非常好。
1988020566 发表于 2023-4-16 21:53 | 显示全部楼层
hs3003的测量范围是多少?              
lihuami 发表于 2023-4-16 22:05 | 显示全部楼层
hs3003温湿度计精度如何?              
iyoum 发表于 2023-4-16 22:26 | 显示全部楼层
为什么不使用dht11呢
              
 楼主| lulugl 发表于 2023-4-17 07:15 | 显示全部楼层
lihuami 发表于 2023-4-16 22:05
hs3003温湿度计精度如何?

这个是做活动送的模志,精度正负0.1吧。看数据手册 14-bit resolution: 0.01%RH, typical
 楼主| lulugl 发表于 2023-4-17 07:17 | 显示全部楼层
iyoum 发表于 2023-4-16 22:26
为什么不使用dht11呢

dht11与hs3003,不同的,DH11是单总线的,HS3003是I2C总线的。
bartonalfred 发表于 2023-4-18 10:46 | 显示全部楼层
APM32F107VCT6 做采集真是大材小用了。
 楼主| lulugl 发表于 2023-4-18 11:11 | 显示全部楼层
bartonalfred 发表于 2023-4-18 10:46
APM32F107VCT6 做采集真是大材小用了。

对呀,这芯片非常强大,这只是用到他的I2C功能吧。
ccook11 发表于 2023-5-11 19:14 | 显示全部楼层
IIC接口,数字输出的温湿度传感器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

188

主题

844

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部