M5Stack学习笔记(6)—— 用温湿度气压传感器制作一个温度记录仪

购买M5Stack Fire的时候,我同时购买了一个可以测量温湿度和气压的传感器模块。按照官方介绍,模块里面应该是内置了一个DHT12(测量温湿度)和一个BMP280(测量大气压)。
M5Stack学习笔记(6)—— 用温湿度气压传感器制作一个温度记录仪_第1张图片

模块附送了Grove线,可以和Fire的PORT A口连接起来。

M5Stack学习笔记(6)—— 用温湿度气压传感器制作一个温度记录仪_第2张图片

连接好的样子:
M5Stack学习笔记(6)—— 用温湿度气压传感器制作一个温度记录仪_第3张图片

在MicroPython里面使用传感器的方法:

import units
env0 = units.ENV(units.PORTA)

然后,如下3个引用分别对应温度、湿度 和 大气压:

env0.temperature()
env0.humidity()
env0.pressure()

下面就写一段小程序,可以将环境温湿度和大气压以每隔30秒的速度记录到M5Stack的flash存储空间的一个文件内。
考虑到为了在晚间记录而不影响人的睡眠,程序中使用如下语句可以将屏幕关闭:

lcd.setBrightness(0)

将如下代码保存为文件名为env_rec.py,注意使用utf-8编码,换行符使用unix格式。

[Update 2019/6/9 18:17]
为了方便在PC上调取csv数据文件,代码中改为把文件保存到microSD卡中。按ButtonB手动挂载microSD卡。
参考: https://blog.csdn.net/zhufu86/article/details/90738571

from m5stack import *
from m5ui import *
import units


clear_bg(0x0)
env0 = units.ENV(units.PORTA)


flag_rec  = False
flag_disp = True
inteval   = 30  # seconds
filename  = '/sd/' + str(time.ticks_ms())+'.csv'

if 'sd' in os.listdir('/'):
    flag_sd  = True
    sd_info  = 'SD Mounted'
    sd_color = 0x00FF00
else:
    flag_sd  = False
    sd_info  = 'SD Not Mounted'
    sd_color = 0xFFFF00


btnA    = M5Button(name="ButtonA", text="Rec", visibility=True)
btnB    = M5Button(name="ButtonB", text="SD", visibility=True)
btnC    = M5Button(name="ButtonC", text="Display", visibility=True)

label_t  = M5TextBox(0, 0, "Text", lcd.FONT_DejaVu24,0xFFFFFF, rotate=0)
label_h  = M5TextBox(0, 25, "Text", lcd.FONT_DejaVu24,0xFFFFFF, rotate=0)
label_p  = M5TextBox(0, 50, "Text", lcd.FONT_DejaVu24,0xFFFFFF, rotate=0)
label_s  = M5TextBox(0, 100, "REC stopped.", lcd.FONT_DejaVu24,0xFFFF00, rotate=0)
label_mt = M5TextBox(0, 150, sd_info, lcd.FONT_DejaVu24, 0xFFFF00, rotate=0)


def buttonA_pressed():
    # Rec Start/Stop
    global flag_disp
    global flag_rec
    global flag_sd
    if flag_disp and flag_sd:
        if flag_rec:
            flag_rec = False
            label_s.setText("REC stopped.")
            label_s.setColor(0xFFFF00)
        else:
            flag_rec = True
            label_s.setText("REC started.")
            label_s.setColor(0xFF0000)


def buttonC_pressed():
    # Display On/Off
    global flag_disp
    if flag_disp:
        flag_disp = False
        clear_bg(0x0)
        lcd.setBrightness(0)      
    else:
        flag_disp = True
        lcd.setBrightness(50)
        clear_bg(0x222222)
        
        label_t.show()
        label_h.show()
        label_p.show()
        label_s.show()
        label_mt.show()

def buttonB_pressed():
    # Display On/Off
    global flag_disp
    global flag_sd
    if flag_disp:
        if flag_sd:
            flag_sd = False
            label_mt.setText("SD Not Mounted")
            label_mt.setColor(0xFFFF00)
            os.umountsd()

        else:
            flag_sd = True
            label_mt.setText("SD Mounted")
            label_mt.setColor(0x00FF00)
            os.mountsd()

def save_tofile(rec_string):
    f = open(filename,'a+')
    f.write(rec_string)
    f.close()


buttonA.wasPressed(callback = buttonA_pressed)
buttonC.wasPressed(callback = buttonC_pressed)
buttonB.wasPressed(callback = buttonB_pressed)

timesec_start = round(time.ticks_ms() / 1000)
time_tick     = time.ticks_ms() - inteval * 1000

#save_tofile("SEC,TEMP,HUMI,PRES\n")

while True:
    label_t.setText("TEMP: " + str(env0.temperature()))
    label_h.setText("HUMI: " + str(env0.humidity()))
    label_p.setText("PRES: " + str(env0.pressure()))

    if flag_rec:
        if time.ticks_ms() - time_tick >= inteval * 1000:
            rec_time = round(time.ticks_ms() / 1000)
            save_tofile("%d,%s,%s,%s\n" % (rec_time, str(env0.temperature()), str(env0.humidity()), str(env0.pressure())))
            time_tick = time.ticks_ms()

    wait(1)

用mpfshell之类的工具上传到M5Stack中, 并覆盖 main.py文件。
重启运行。 按键ButtonC(屏幕下方最右边那个按键)可以用来开启和关闭屏幕,按键ButtonA(屏幕下方最左边那个按键)可以开始或者停止记录数据。
数据被记录在/flash文件夹内,一个数字文件名,扩展名为csv的文件内。
可以用mpfshell之类的工具下载这个文件,此文件可以用excel之类的表格处理软件打开,方便查看和处理数据,也可以绘制图表。

使用时需要注意传感器模块需要远离M5Stack主机等可能会发热的物体,以免影响温度测量数据。

M5Stack学习笔记(6)—— 用温湿度气压传感器制作一个温度记录仪_第4张图片

好了,今天晚上睡觉试试看。
夏天晚上睡觉开空调要避免着凉哦。

My Email:

你可能感兴趣的:(M5Stack学习笔记(6)—— 用温湿度气压传感器制作一个温度记录仪)