在上一篇《DHT11温湿度传感器通信(上)》中,我们介绍了DHT11的通信原理及实现通信的底层代码,当时由于没有封装成托管代码库,所以应用开发的用户还不能直接获取DHT11的数据。不过今天这个工作我们已经完成,用户仅需编写几行代码就可以获取传感器数据了。
我们封装后的类库如下:
public sealed class DHT11
{
public DHT11(DHT11.Timer timer, DHT11.Channels channel);
public bool Read(out float temperature, out float humidity);
public static bool ReadData(out float temperature, out float humidity);
public enum Channels
{
CH1 = 0,
CH2 = 1,
CH3 = 2,
CH4 = 3,
}
public enum Timer
{
T2 = 1,
T3 = 2,
T4 = 3,
T5 = 4,
}
}
T2、T3、T4、T5四个时钟的四个通道都可以连接DHT11模块,进行数据采集,其和Pin脚的对应关系如下:
|
通道1
|
通道2
|
通道3
|
通道4
|
Timer2
|
PA0
|
PA1
|
PA2
|
PA3
|
Timer3
|
PA6
|
PA7
|
PB0
|
PB1
|
Timer4
|
PB6
|
PB7*
|
PB8*
|
PB9
|
Timer5
|
PA0
|
PA1
|
PA2
|
PA3
|
注:以上信息,可以通过查原理图获知,其中带“*”的管脚实际测试未能成功获取数据。
设备接线,我们的示例程序选择的是Timer3的第三通道,所以我们连接的Pin脚是PB0
示例代码如下:
public static void Main()
{
//PB0
DHT11 dht11 = new DHT11(DHT11.Timer.T3, DHT11.Channels.CH3);
float temperature;
float humidity;
while (true)
{
dht11.Read(out temperature, out humidity);
Debug.Print(STR(temperature,2) + " " + STR(humidity,2));
Thread.Sleep(100);
}
}
值得一提的是,.NET Micro Framework的浮点数转换字符串函数存在BUG,在某些MCU的.NET Micro Framework平台上进行这个转换操作会出错,目前发现STM32F103和Atmel 9260芯片上都有这个BUG。由于和平台相关,BUG较难消除,所以我提供了一个简单的浮点数转字符串的函数。
public static string STR(double f,int n)
{
if (n < 1 || n > 8) return "";
bool sign = (f < 0);
if (sign) f = -f;
string f1 = ((uint)f).ToString();
string f2 = ((uint)(f * System.Math.Pow(10,n) -((uint)f) * System.Math.Pow(10,n))).ToString();
return (sign ? "-" : "") + f1 + "." + "00000000".Substring(0,n-f2.Length) + f2;
}
程序运行后,在VS2008开发环境中,我们已经看到,温湿度数据已经成功采集。
注:本文示例,需要红牛开发板固件在 V1.1.1以上
本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/DHT11Test.rar
MF快速参考: .NET Micro Framework 快速入门
MF中文讨论组:http://space.cnblogs.com/group/MFSoft/
【低价开发板】http://item.taobao.com/item.htm?id=7117999726
参加了博客大赛,请大家投上一票!您的支持,将是我最大的动力,谢谢!http://2010blog.51cto.com/1635641
分享到:
相关推荐
单片机STM32 DHT11温湿度数据测试: 1、使用杜邦线连接温湿度传感器到开发板(温湿度传感器VCC连接开发板3V3,温湿度传感器GND连接开发板GND,温湿度传感器DATA连接开发板PB5); 2、将CH340模块连接开发板串口(CH340模块...
STM32F103C8T6开发板实验例程:DHT11温湿度传感器实验程序源代码。 1、单片机型号:STM32F103C8T6。 2、开发环境:KEIL。 3、编程语言:C语言。 4、提供配套PDF格式STM32F103C8T6单片机开发板电路原理图。
温湿度传感器DHT11模块模块软硬件技术资料+STM32单片机软件工程源码: 1-i_MX_RT系列配套程序 1-STM32系列配套程序 2-参考资料_数据手册 DHT11与各开发板引脚连接说明 DHT11引脚说明.png
STM32_Nano开发板--原理图 很完整 不错,欢迎下载
DHT11数字温湿度传感器实验STM32F407开发板KEIL软件工程源码: main(void) { u8 t=0; u8 temperature; u8 humidity; HAL_Init(); //初始化HAL库 Stm32_Clock_Init(336,8,2,7); //设置时钟,168...
基于温度湿度一体的传感器DHT11 以下是在51单片机上测试成功的代码 #include #include<intrins.h>//加上这句下面的 _nop_();就能用 bit xianshiqiehuan; // sbit dht11_dat=P1^6; //开发板用 sbit dht11_...
学习DHT11数字温湿度传感器的使用. 硬件资源: 1,DS0(连接在PB5) 2,串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面) 3,ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模块(通过FSMC驱动,FSMC_NE4接LCD片选/A10...
STM32F407开发板作为客户端进行网络通信,解压即用
STM32F407开发板-标准例程-寄存器版本。有59个例子。涉及所有试验。
STM32F407单片机(HAL库版本) DHT11数字温湿度传感器实验软件例程源码.rar
通过读取dht11返回的数据,从而得到温湿度的具体数值,再通过串口返回。如有屏幕也可以显示在屏幕上,具体参照我的另一个资源
利用C8T6芯片实现在OLED上显示温湿度以及超声波的测量数据。
本工程代码在STM32F407ZET6开发板上测试通过,包含了对DHT11温湿度传感器的驱动编程。本压缩包同时包含了STM32F4xx使用手册、DHT11用户手册以及本人使用的开发板原理图。欢迎大家下载交流学习。
两块STM32,一个做主机一个做从机,能够实现主机发送数据以及主机读取从机数据。通过串口调试,以及LED灯来提示工作状态。
普中STM32-PZ6806L开发板资料光盘结构 | |---1--用户必看 | |--KEIL5安装教程 | |--普中ARM仿真器使用说明 | |--普中PZ6806L开发板入门教程 | |---2--开发板原理图 | |--彩屏原理图-----------------对应...
DHT11是单线接口数字温湿度传感器,温度测量范围是0~50℃,湿度测量范围是20%~90%RH,温度测量精度是±2℃,湿度测量精度是±5%RH。 DHT11包含一个电阻式感湿元件和一个NTC(负温度系数)测温元件,通过双向单线输出...
基于NUCLEO-STM32F103RB单片机,DHT11读取温湿度信息,通过OLED显示温湿度信息
该程序完成实现了在正点原子mini版开发板上对dht11温湿度传感器的采集。
1、连接阿里云aliyun物联网生活平台(飞燕平台),主动上报本地DHT12温湿度传感器数据到平台端。 2、手机app使用阿里云智造APP。 3、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片,依然...
基于STC8A8K64S4A12_LQFP44单片机DHT11温湿度传感器串口助手显示实验软件例程源码. int main(void) { uint8 temp[3]; uint8 humidity[3]; uint8 strTemp[13]="Temperature:"; uint8 strHumidity[10]="Humidity...