DHT11温湿度传感器掌控下使用(纯代码模式)

2019-04-298049
AI 快速预览详细 收起
本文介绍了如何在掌控板上使用DHT11温湿度传感器,并提供了一个基于micropython的纯代码示例。通过使用定时器每2秒读取一次传感器数据,避免了频繁读取导致的效率问题。示例代码中,DHT11传感器连接到掌控板的P1引脚,通过定时器读取温湿度数据并在OLED屏幕上显示。这种方法不仅提高了数据采集的效率,还适用于STEM教育场景,适合零基础的新手学习。


DHT11,最常用的温湿度传感器,坛子里已经有基于mPython X下的图形化程序示意,放个纯代码的。
micropython固件里已经内置了 DHT模块,有DHT11和DHT12两个对象,使用起来分别是
[mw_shl_code=python,true]import dht   # 导入 dht模块
dht.DHT11(Pin(n))  #  n:对应的控制引脚
dht.DHT12(Pin(n))  #  n:对应的的控制引脚[/mw_shl_code]

DHT的使用需要加入计时器进行数据读取,否则如果单纯的使用dht.measur()会频繁执行数据读取,影响效率。

示例:以DHT11传感器接掌控引脚 P1 为例:
[mw_shl_code=python,true]from mpython import *
from machine import Timer
import dht

def DHT11(t):
    d = dht.DHT11(Pin(Pin.P1))  # 掌控的P1引脚
    d.measure()     # 运行DHT11进行数据读取
    oled.fill(0)    # 清屏
    temp = d.temperature()
    hum = d.humidity()
    oled.text('Humi: {}%'.format(hum), 0, 0)
    oled.text('Temp: {}C'.format(temp), 0, 20)
    oled.show()

tim = Timer(-1)
tim.init(period=2000, mode=Timer.PERIODIC, callback=DHT11)

try:
    while True:
        pass
except:
    tim.deinit()
    print('stopped')[/mw_shl_code]

P.S.  tim = Timer(-1)   #  在ESP8266控制板上,编号 -1,表示使用虚拟计时器。(掌控为ESP32,使用方式类似。)
                            PYB控制板使用编号为1~14。
      period=2000        #  间隔时间为 2s
      mode=Timer.PERIODIC    #   循环方式为一直  

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
一介布衣
一介布衣
我想问下dht这个包能弄出来嘛,还是已经集成在固件里了。。。。
yywudao
yywudao
作者
回复一介布衣
掌控板固件刷入的话,推荐用mPython X
mPython X 0.3.3 更新
1. 内置固件优化,释放更多ROM空间(0.3.3新增)
2. 允许刷入main.py之外的其他文件(0.3.3新增)
3. 文件系统增加选取任意*.py文件运行的功能(0.3.3新增)
4. “事件”分类增加掌控板被抛起的事件(0.3.3新增)
5. 现有图形化block有所优化(0.3.3新增)
6. 修正已知bug
下载地址
https://mpythonx.readthedocs.io/zh_CN/latest/mPythonX.html
或点击软件“帮助--检查更新”
yywudao
yywudao
作者
回复一介布衣

集成到固件的意思,就是使用的时候直接代码里 import dht,就可以用dht的相应模块功能了。
用Mu编程,有个问题是程序无法直接刷入掌控板子里吧。。。
你可以用thonny (https://randomnerdtutorials.com/ ... -ide-esp32-esp8266/)。
李时念老师那边有整一个中文翻译版本的thonny(https://www.bunnyzoo.com/download.html#thonnybox)
共5条回复,已加载2条,点击查看更多共5条回复,已加载全部
gada888
gada888
MP功能呀
- 没有更多了 -