打印
[AT32F415]

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

[复制链接]
1458|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
51xlf|  楼主 | 2022-8-14 22:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这里使用AT-START-WB415测试板子读取DHT11温湿度传感器数据,并显示在OLED上。
在前面的测评中已经添加了OLED的显示功能。
这里只是使用DHT11实现温湿度数据的读取功能了。
为了提供工作效率,还是使用的宏定义实现的DHT11的IO口的操作。
DHT11对演示函数有着精确的要求,所以这里使用的是系统自带的延时代码,使用systick实现的 。
如果systick被占用,可以使用定时器失效相同的效果的。
直接宏定义温湿度传感器的IO口。
#define DHT11_IO_GPIO_Port GPIOA
#define DHT11_IO_Pin GPIO_PINS_1
驱动IO的高低电平和读取数据
//设置驱动IO端口
#define DHT11_DQ_OUT_1 DHT11_IO_GPIO_Port->scr = DHT11_IO_Pin
#define DHT11_DQ_OUT_0 DHT11_IO_GPIO_Port->clr = DHT11_IO_Pin
#define DHT11_DQ_IN gpio_input_data_bit_read(DHT11_IO_GPIO_Port, DHT11_IO_Pin)
最重要的是初始化IO口了。

          gpio_init_type gpio_init_struct;

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

  /* set default parameter */
  gpio_default_para_init(&gpio_init_struct);

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

  SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
  SysTick->VAL = 0x00;
}

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

        }
附上效果图。


使用特权

评论回复
沙发
koala889| | 2022-8-16 20:17 | 只看该作者
哈,有是一个DHT11

使用特权

评论回复
板凳
jkl21| | 2022-8-20 14:30 | 只看该作者
这个有什么要求?  

使用特权

评论回复
地板
uiint| | 2022-8-20 16:35 | 只看该作者
WB415是无线的吗   

使用特权

评论回复
5
soodesyt| | 2022-8-20 19:42 | 只看该作者
dht11精度怎么样   

使用特权

评论回复
6
tpgf| | 2022-9-6 13:04 | 只看该作者
这里需要做补偿吗

使用特权

评论回复
7
nawu| | 2022-9-6 13:10 | 只看该作者
自己做飞线的话 会偶尔有干扰吗

使用特权

评论回复
8
aoyi| | 2022-9-6 20:47 | 只看该作者
读取的模拟量还是通讯协议啊

使用特权

评论回复
9
zljiu| | 2022-9-6 20:56 | 只看该作者
一般这个温度传感器的功耗是多少呢

使用特权

评论回复
10
gwsan| | 2022-9-6 21:02 | 只看该作者
只需要读取高低电平就能得到温湿度的数据吗

使用特权

评论回复
11
tfqi| | 2022-9-6 21:09 | 只看该作者
通过什么方式读取的数据呢

使用特权

评论回复
12
xu@xupt| | 2022-12-11 00:19 | 只看该作者
不错的尝试,感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

534

主题

9565

帖子

23

粉丝