系列文章:
【从0到1搭建LoRa物联网】1、LoRa物联网的架构
【从0到1搭建LoRa物联网】2、终端设备开发方式
【从0到1搭建LoRa物联网】3、国产LoRa终端ASR6505软硬件
【从0到1搭建LoRa物联网】4、国产LoRa终端ASR6505普通GPIO

1、DHT11

DHT11是一款比较典型的温湿度传感器,温度0-50°±2°,湿度:20-90%RH。几乎是开发板绕不开的东西,读写时序也是比较经典的。和上节的普通GPIO使用一样,DHT11也是使用普通GPIO来读取,不过本节使用STM8L的库函数。

2、接线

DHT11 开发板
VCC <-----------> +5V
GND <-----------> GND
DOUT <------------>GPIO4(PE7)
说明:DHT11如果接3.3V,在线较长的时候,驱动能力不足,因此建议接5V)。

3、STM8L关于GPIO的操作

整个SDK是基于STM8L的标准库的。本节也是用的标准库提供的函数。

4、应用

间隔5s读取DHT11的数据,计算出当前温湿度,并通过串口打印。

5、代码实现

periph_dht11.h/c部分代码:

#define DHT11_PORT   (GPIOE)
#define DHT11_PIN    (GPIO_Pin_7)   //可通过这两句宏定义,修改引脚#define DHT11_CLR     GPIO_ResetBits(DHT11_PORT,DHT11_PIN);
#define DHT11_SET     GPIO_SetBits(DHT11_PORT,DHT11_PIN);
#define DHT11_IN      GPIO_Init(DHT11_PORT,DHT11_PIN, GPIO_Mode_In_PU_No_IT);
#define DHT11_OUT     GPIO_Init(DHT11_PORT,DHT11_PIN, GPIO_Mode_Out_PP_High_Fast);
//us延时函数,误差不能太大
void DelayUs(  uint32_t nCount)
{volatile uint8_t  i=0; //加了volatile关键字,防止编译器优化do{i++;}while (i<(nCount*2));
}  void DHT11_Start(void)
{ DHT11_OUT;      //设置端口方向DHT11_CLR;      //拉低端口  DelayMs(19);    //持续最低18msDHT11_SET;      //释放总线DelayUs(30);    //总线由上拉电阻拉高,主机延时30uS;DHT11_IN;       //设置端口方向while(!GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN));//DHT11   等待80us低电平响应信号结束while(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)); //DHT11   将总线拉高80us
}uint8_t DHT11_ReadValue(void)
{ uint8_t i,sbuf=0;for(i=8;i>0;i--){sbuf<<=1; while((!GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)));//50us的开始低电平DelayUs(30);// 延时 30us 后检测数据线是否还是高电平 if(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)){sbuf|=1;  }else{sbuf|=0;}while(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN));}return sbuf;
}uint8_t DHT11_ReadTemHum(uint8_t *buf)
{uint8_t check;buf[0]=DHT11_ReadValue();buf[1]=DHT11_ReadValue();buf[2]=DHT11_ReadValue();buf[3]=DHT11_ReadValue();check =DHT11_ReadValue();if(check == buf[0]+buf[1]+buf[2]+buf[3])return 1;elsereturn 0;
}

主函数部分代码:

uint8_t DHT11Data[4]={0};
uint8_t Temp, Humi;int main( void )
{       BoardInitMcu( );BoardInitPeriph( );printf("ASR6505 DHT11 test!\r\n");while(1){DHT11_Start();if(DHT11_ReadTemHum(DHT11Data)){Temp=DHT11Data[2];Humi=DHT11Data[0];      printf("Temp=%d, Humi=%d\r\n",Temp,Humi);}else{printf("DHT11 Error!\r\n");}Delay(5);}
}

6、实现现象

欢迎关注微信公众号【物联网思考】,回复关键字“ ASR6505”获取资料,《从0到1搭建LoRa物联网》系列的所有软硬件资料将会分享在公众号。

【从0到1搭建LoRa物联网】5、国产LoRa终端ASR6505驱动DHT11相关推荐

  1. 【从0到1搭建LoRa物联网】7、国产LoRa终端ASR6505驱动段式LCD例程

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  2. 【从0到1搭建LoRa物联网】15、LoRa连接到The Things Network

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  3. 【从0到1搭建LoRa物联网】11、ASR6505 LoRaWAN通信

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  4. 【从0到1搭建LoRa物联网】13、低成本单通道网关(一)

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  5. 【从0到1搭建LoRa物联网】16、LoRa连接到腾讯云物联网平台

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  6. 【从0到1搭建LoRa物联网】9、国产LoRa终端ASR6505 PingPong通信OLED显示

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  7. 【从0到1搭建LoRa物联网】17、LoRa连接到chirpstack

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  8. 【从0到1搭建LoRa物联网】8、国产LoRa终端ASR6505 PingPong通信

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  9. 【从0到1搭建LoRa物联网】10、LoRa终端ASR6505 ADC采样

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

最新文章

  1. java继承 映射_hibernate继承关系映射和java反射机制的运用
  2. 【MarkDown】:MarkDown编辑器
  3. Android基于监听的事件处理机制
  4. scala的传值参数和传名参数
  5. 卖萌屋福利场:《机器阅读理解》免费送送送!
  6. 什么是python标识符_Python:标识符Identifier
  7. VS2010 修改模板文件,增加默认注释
  8. 使用Sandcastle创建你的类库文档
  9. Python函数嵌套定义的洪荒之力
  10. 阈值分割法——最佳阈值的选择问题
  11. 等保2.0二级安全要求
  12. 物联网的媒介——java usb串口通信
  13. python opencv 裁剪图片_python通过opencv实现图片裁剪原理解析
  14. 飞秋2013正式版有偿修改在线等
  15. angular-----Activated路由
  16. 关于Rational Rose的使用(初学者)
  17. 网络传输粘包解包处理
  18. JAVA项目的目录结构分析
  19. 【Linux】Linux的内核空间(低端内存、高端内存)
  20. java第三方包_java客户端引入第三方包方法

热门文章

  1. [翻译]什么是Istio? 它是服务网格。棒极了,那什么是服务网格?
  2. 2345浏览器如何显示浏览器推送内容
  3. mybatis-plus设置id自增,插入数据。
  4. 业务系统遭黑客攻击,深信达MCK解决服务器的最后一米安全问题
  5. 计算机网络——域名系统DNS
  6. 基于深度学习的新冠疫情数据分析
  7. Python——图像处理(crop()函数、thumbnail方法)
  8. 传统企业如何电子商务
  9. 安徽师范大学计算机学院教师,安徽师范大学数学计算机科学学院导师介绍:鲁世平...
  10. 如何解决Mysql安装时卡在starting server的方法?(亲测有效)