MicroPython-On-ESP8266——获取温湿度传感器数据(DHT11 / AHT10)
0. [外话] 后期基于nodemuc做开发学习与测试
之前用的青蛙创客的europa开发板,接口封装得太好,以致于想自由接线的时候很是头大。从淘宝上又买了块nodemcu开发板,不到十块钱,用起来不心疼,真的是买不了吃亏买不了上当。
两块板一主一从,后面有需要主从通讯什么的,也可以实验了。nodemcu刷micropython固件方法跟前面提到刷europa是一样的,不过这么会儿功夫,官方固件已经更新到 1.16了。 哎,咱这学习进度又拉下了。。。
强调一下 nodemcu板子上的管脚字符标注跟实际GPIO管脚号是有区别的,需要按网上提供的接线图做对照使用。
比如要使用GPIO0控制或读取信号时,不能接到板子上标注D0的针脚处,需要按对照图接到D3(GPIO 00)上。这个一定要注意。
1. 获取DHT11数据
1.1. 接线
手上有N年时买Arduino开发板时送的DHT11模块。DHT11模块有4根针脚,有3根是有用的,见图示。
我们把数据脚接入到D5(GPIO 14),旁边就有正负极脚,走线整齐。
1.2. 读取数据
micropython标准库已经对DHT驱动进行了封装,咱们直接用就可以了
import dht
import machine
d = dht.DHT11(machine.Pin(14))
d.measure() # 先调用测量函数
d.temperature() # 然后可以查湿度
d.humidity() # 和湿度了
广东的天气吓死人,房间里面都32度。空调开起来~~
DHT11精度只到整数,这就不要谈什么误差了吧,真的是仅限学习使用了。
2. 获取AHT10数据
2.1. AHT10模块说明
买nodemcu时,顺手也买了个AHT10模块,这个模块精度要高于DHT11,网上找了下读取数据的资料。
在厂商奥松官网产品页,赫然看到该模块已停产。流年不利,且行且珍惜吧。不过产品说明书还是能下载。
产品手册前面啰里吧嗦的那些就先不管了,直接在第8页看到有对使用方法和解析数据的说明。干脆也贴下图吧
“传感器读取流程”的意思来看,模块接线并上电后,需要先从主机给它发送初始化指令,然后就跟DHT11的measure一样测量一下,就可以读取温湿度数据了。中间要注意的就是返回的数据可能因为传感器状态忙而无效。
咱们学习时候就先不管状态的事儿了,按正常流程手动指令去执行,芯片怎么地都忙完了。
2.2. 接线
AHT10购买时介绍中说的数据走的I2C总线,官方手册前面也提到这一点了。I2C总线需要4条线来连接,模块背后也标注了。nodemcu上需要用正负极加两个GPIO接口来与之对应。我这里的接线方式为(AHT10 – nodemcu) vin – 3v, GND – G, SCL – GPIO 05 (D1), SDA – GPIO 04 (D2)
如图:
另外还要注意一点,AHT10手册上有说VIN输入的电压范围是1.8V到3.6V之间,所以咱们接线时只能接到3.3V针脚上,不要接到5V了,烧穿就没得玩了。
2.3. micropython读取数据
引入基础库,并定义I2C总结协议使用的引脚
from machine