庆科社区
直播中

gjianw217

10年用户 687经验值
擅长:嵌入式技术 控制/MCU RF/无线
私信 关注

【MiCOKit试用体验】庆科MiCOKit外设篇(6)DTH11温湿度

本帖最后由 gjianw217 于 2015-10-18 00:46 编辑

本帖主要内容:本帖子主要使用庆科提供的MiCOKit开发环境,来测试板上的DHT11温湿度传感器数据的采集,并简单了解MiCOKit的封装。
一、测试环境:
庆科开发套件EMW3165底板和扩展板
庆科SDK_MiCOKit_v2.3.0.2
USB串口线
JLink仿真
串口调试助手

二、硬件分析:
在EMW3165套件的扩展板上,设计了常用的温湿度传感器DHT11,该传感器是一款含有已校准数字信号输出的温湿度复合传感器。具体的原理图如下图所示,DHT11数据采用单线制串行接口,威廉希尔官方网站 连接比较简单,
14.png
另外通过查看原理图和开发板,对应EMW3165无线控制模块的引脚,如下图所示:
15.png
而DTH11的时序图如下图所示:
DHT11-1.png
数据1和数据0的时序图如下图所示:
DHT11-2.png

三、软件分析:
1 软件分层
在庆科提供的SDK_MiCOKit_v2.3.0.2开发包中,进行了三层的软件封装,即:用户层(外设层),平台层,驱动层。
(1)用户层(外设层),定义在 SDK_MiCOKit_v2.3.0.2/Platform/Drivers/MiCOKit_EX/目录下,主要通过调用平台层的封装函数,定义了各扩展板上外设的操作,用户只要调用它们,而无需知道各外设的原理,即可对其进行操作。
(2)平台层 定义在SDK_MiCOKit_v2.3.0.2/Platform/Peripherals/目录下,以platform_xxx.h命名,主要通过调用驱动层的封装函数,定义了MiCO系统需要调用的接口,方便将MiCO移植到不同的芯片平台上。
(3)驱动层 定义在SDK_MiCOKit_v2.3.0.2/Platform/Peripherals/Libraries/STM32F4xx_StdPeriph_Driver/目录下,以stm32f4xx_xx.c命名,主要移植了有关芯片提供商提供的对芯片操作的接口函数。
2 软件定义
在 SDK_MiCOKit_v2.3.0.2PlatformDriversMiCOKit_EXTtemp_hum_sensor目录下的temp_hum_sensor.c文件中,庆科已经为用户封装好了针对DHT11的操作接口,,而这些接口都是基于子目录DHT11下的函数进行封装的。在DHT11目录下,根据上面所述的DHT11时序图,进行了对DHT11采集数据的封装。现对用户操作接口作一说明(temp_hum_sensor.c)。
(1)初始化函数
OSStatus temp_hum_sensor_init(void);
(2)读数据函数

OSStatus temp_hum_sensor_read(int32_t *temperature,  uint32_t *humidity)其中OSStatus 是一个MiCo定义的一个int32_t 类型

四、测试程序:

1 指定头文件
由于在IAR开发环境中,SDK_MiCOKit_v2.3.0.2已经指定了头文件目录 ,如下图所示,

故在测试文件中,指定头文件的方法如下:
  1. #include "temp_hum_sensor/temp_hum_sensor.h"
2 编写测试程序
  1. void TestDH11(void)//由application_start函数调用
  2. {
  3.   uint8_t dht11_ret = 0;
  4.   uint8_t dht11_temp_data = 0;
  5.   uint8_t dht11_hum_data = 0;
  6.   char str[64] = {'\0'};

  7.   OLED_Init();
  8.   OLED_Clear();
  9.   temp_hum_sensor_init();
  10.   while(1)
  11.   {
  12.     dht11_ret = DHT11_Read_Data(&dht11_temp_data, &dht11_hum_data);
  13.     if(0 == dht11_ret)
  14.     {
  15.         sprintf(str, "%s DHT11rnT: %3.1fCrnH: %3.1f%%",
  16.                       "TEST:",(float)dht11_temp_data, (float)dht11_hum_data);
  17.         sensor_log("%s",str);
  18.     }
  19.     OLED_Clear();
  20.     OLED_ShowString(0,0,(uint8_t*)str);
  21.     mico_thread_sleep(1);
  22.   }
  23. }

五、测试结果:
开板板效果:
62.gif
串口效果:
61.png

欢迎大家关注本人的微信公众号【口袋物联】,微信号为koudaiwulian。一起学习物联网相关的知识,分享物联网相关的趣事。

更多回帖

发帖
×
20
完善资料,
赚取积分