M5Stack(ESP32)学习笔记(13)—— 回头看Unit ENV.

      之前用温湿度气压传感器制作了一个温度记录仪( https://blog.csdn.net/zhufu86/article/details/91352563 ),当时使用的units.ENV(units.PORTA)的方式来读取传感器的数值的,但是import units似乎很占资源 耗时间。所以,研究了一番固件源码里的units.py后,今天来试试更单纯的方法来读取传感器。

首先,需要下载相关库到M5Stack。

DHT12:(虽然系统自带machine.DHT,不过那个好像只能是单线的连接方式)
https://github.com/m5stack/M5Cloud/blob/master/examples/DHT12/dht12.py
https://github.com/mcauser/micropython-dht12

BMP280:(BMP280的库可以在网上搜索到好几个,随便找了一个用)
https://github.com/dafvid/micropython-bmp280

下载dht12.py和bmp280.py到M5Stack的/flash或者/flash/lib。
注意:需要把bmp280.py的第52行self._bmp_i2c.start()注释掉,变为#self._bmp_i2c.start()

然后就可以运行下列代码,读取传感器的数值了

import time
import dht12
import bmp280

i2c = machine.I2C(sda=21, scl=22)

sensor_dht12 = dht12.DHT12(i2c)
sensor_bmp280 = bmp280.BMP280(i2c)

while True:
  sensor_dht12.measure()
  print(sensor_dht12.temperature())
  print(sensor_dht12.humidity())
  
  
  print(sensor_bmp280.temperature)
  print(sensor_bmp280.pressure)
  
  print()
  time.sleep(2)

注意:dht12在每次读取数值之前,都要先measure()一下。

又试了一下这个bmp280的库:
https://github.com/micropython-Chinese-Community/mpy-lib/tree/master/sensor/bmp280

也不错。

import time
import bmp280

i2c = machine.I2C(sda=21, scl=22)
b = bmp280.BMP280(i2c)

while True:
    time.sleep_ms(500)
    t, p = b.get()
    print(t)
    print(p)
    print()

你可能感兴趣的:(M5Stack(ESP32)学习笔记(13)—— 回头看Unit ENV.)