【Ameba RTL8195开发板试用体验】例程驱动DHT22温湿度传感器

  • DengQilong
  • LV4工程师
  • |      2017-06-25 15:41:36
  • 浏览量 980
  • 回复:0
本帖最后由 DengQilong 于 2017-6-26 19:03 编辑 官方有丰富例程和教程,居然还有中文版的,果然贴心,这里不废话了,直接搬过来教程:材料准备
  • Ameba x 1
  • DHT11 or DHT22 or DHT21
范例说明DHT11结合温度与湿度的传感器,工作电压在3.3V~5V,在常温下可量测湿度20% ~ 90%RH,精准度±5%RH,温度可量测0 ~ 50℃,精准度±2 ℃。 DHT22则精准度较高, 湿度可量测0%~100%RH,精准度±5%RH,温度可量测-40 ~ 125 ℃,精准度±0.2℃。 两者的pin脚都是一样的,总共有4只脚: 其中有一只脚目前没有作用,所以市面上也看的到重新包装成3只脚的版本: 上电之后,平常DHT都处于睡眠模式,要从DHT取得温湿度,需要以下步骤:
  1. 唤醒DHT:Ameba将DATA pin 这根GPIO toggle low,此时DATA GPIO对AMEBA来说是digital out
  2. 等待DHT回应:DHT也将DATA pin这根GPIO toggle low,此时DATA GPIO对AMEBA来说是digital in
  3. DHT将温湿度资料送出:DHT将5 bytes的温湿度资料送出,此时DATA GPIO对AMEBA来说是digital in。 DHT会将5 bytes = 40 bits,以每个bit的方式送出,每个bit的表示方式是,​​DHT会先将DATA GPIO pull low 一段时间,再pull high,如果pull high的时间小于pull low的时间就是bit 0, 如果pull high的时间大于pull high的时间就是bit 1
因为这些操作的时间精准度在microsecond,所以实作上会直接以Register读取GPIO的值,在操作前也会关闭中断以避免被其它中断影响。整个流程都可以交给Ameba。接线如下图:打开范例程式, “Files” -> “Examples” -> “AmebaGPIO” -> “DHTtester”,编译并上传到Ameba,完成之后按Reset按钮。 测量结果会显示在Serial Monitor上 程式码说明dht.readHumidity() 可以读取湿度,dht.readTemperature()可以读取温度。 每次读值的时候,都直接拿现有的数据使用。如果发现暂存的温湿度数据已经两秒没更新,才会主动向DHT要数据。 手上正好有一个DHT22数字温湿度传感器,按照教程操作就可以了。 连接到Pin D2 串口打印结果
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子