[AT32F415] 【AT-START-WB415测评】DHT11温湿度读取

[复制链接]
1954|13
 楼主| 51xlf 发表于 2022-8-14 22:39 | 显示全部楼层 |阅读模式
这里使用AT-START-WB415测试板子读取DHT11温湿度传感器数据,并显示在OLED上。
在前面的测评中已经添加了OLED的显示功能。
这里只是使用DHT11实现温湿度数据的读取功能了。
为了提供工作效率,还是使用的宏定义实现的DHT11的IO口的操作。
DHT11对演示函数有着精确的要求,所以这里使用的是系统自带的延时代码,使用systick实现的 。
如果systick被占用,可以使用定时器失效相同的效果的。
直接宏定义温湿度传感器的IO口。
  1. #define DHT11_IO_GPIO_Port GPIOA
  2. #define DHT11_IO_Pin GPIO_PINS_1
驱动IO的高低电平和读取数据
  1. //设置驱动IO端口
  2. #define DHT11_DQ_OUT_1 DHT11_IO_GPIO_Port->scr = DHT11_IO_Pin
  3. #define DHT11_DQ_OUT_0 DHT11_IO_GPIO_Port->clr = DHT11_IO_Pin
  4. #define DHT11_DQ_IN gpio_input_data_bit_read(DHT11_IO_GPIO_Port, DHT11_IO_Pin)
最重要的是初始化IO口了。

  1.           gpio_init_type gpio_init_struct;

  2.   /* enable the led clock */
  3.   crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);

  4.   /* set default parameter */
  5.   gpio_default_para_init(&gpio_init_struct);

  6.   /* configure the gpio */
  7.   gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  8.   gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  9.   gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
  10.   gpio_init_struct.gpio_pins = DHT11_IO_Pin;
  11.   gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  12.   gpio_init(DHT11_IO_GPIO_Port, &gpio_init_struct);
很多的代码都是千篇一律的,主要是延时函数。
at32wb415_board.c的文件中已经提供了精确延时函数,这里只需要宏定义或者替换一下即可。
  1. void delay_us(uint32_t nus)
  2. {
  3.   uint32_t temp = 0;
  4.   SysTick->LOAD = (uint32_t)(nus * fac_us);
  5.   SysTick->VAL = 0x00;
  6.   SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk ;
  7.   do
  8.   {
  9.     temp = SysTick->CTRL;
  10.   }while((temp & 0x01) && !(temp & (1 << 16)));

  11.   SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
  12.   SysTick->VAL = 0x00;
  13. }

这里就是现实的主函数了。
  1. if(!dht11Read(&temperature, &humidity))//Read DHT11 Value
  2.         {
  3.             sprintf(s_temp,"温:%02d'C 湿:%02d%%  ",temperature,humidity);
  4.             OLED_ShowString(0,32,(unsigned char*)s_temp,1);// 显示温湿度

  5.         }
附上效果图。
5.jpg

koala889 发表于 2022-8-16 20:17 | 显示全部楼层
哈,有是一个DHT11
jkl21 发表于 2022-8-20 14:30 | 显示全部楼层
这个有什么要求?  
uiint 发表于 2022-8-20 16:35 | 显示全部楼层
WB415是无线的吗   
soodesyt 发表于 2022-8-20 19:42 | 显示全部楼层
dht11精度怎么样   
tpgf 发表于 2022-9-6 13:04 | 显示全部楼层
这里需要做补偿吗
nawu 发表于 2022-9-6 13:10 | 显示全部楼层
自己做飞线的话 会偶尔有干扰吗
aoyi 发表于 2022-9-6 20:47 | 显示全部楼层
读取的模拟量还是通讯协议啊
zljiu 发表于 2022-9-6 20:56 | 显示全部楼层
一般这个温度传感器的功耗是多少呢
gwsan 发表于 2022-9-6 21:02 | 显示全部楼层
只需要读取高低电平就能得到温湿度的数据吗
tfqi 发表于 2022-9-6 21:09 | 显示全部楼层
通过什么方式读取的数据呢
xu@xupt 发表于 2022-12-11 00:19 | 显示全部楼层
不错的尝试,感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

551

主题

9969

帖子

24

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