利用树莓派与温湿度传感器实现温湿度检测

Dec 25,2018   1301 words   5 min

Tags: RaspberryPi

1.目的与效果介绍

利用温湿度传感器对一段时间内的温度、湿度进行连续观测,并绘制出变化曲线图,如下。

2.硬件准备

主要需要准备温湿度传感器一个,这里我用的是DHT22,接口非常简单,按照之前博客接树莓派的GPIO口就可以了。3.3V和5V都可以。

3.代码编写

代码也比较简单,主要分为数据记录与绘图两部分,完整代码见Github项目:OneDayTemperature。这里主要贴一下部分绘图的代码。

# coding=utf-8
from matplotlib import pyplot as plt
import time


def readData(file_path):
    date_file = open(file_path, 'r')
    linux_times = []
    times = []
    temps = []
    hus = []
    lines = date_file.readlines()
    for item in lines:
        str_item = item.strip("\n")
        str_time = str_item.split(",")[0]
        temp = str_item.split(",")[1]
        hu = str_item.split(",")[2]

        if float(hu) > 100:
            continue

        times.append(time)
        lt = time.strptime(str_time, "%Y-%m-%d %H:%M:%S")
        timeStamp = int(time.mktime(lt))
        linux_times.append(timeStamp)
        temps.append(float(temp))
        hus.append(float(hu))
    return linux_times, times, temps, hus


def drawPlot(times, temps, hus):
    plt.figure(1)
    plt.title("temperature of one day")
    plt.plot(times, temps, color='orange')
    max_temp = max(temps)
    min_temp = min(temps)
    plt.axhline(max_temp, color='red')
    plt.axhline(min_temp, color='blue')
    plt.figure(2)
    plt.title("humidity of one day")
    max_hu = max(hus)
    min_hu = min(hus)
    plt.axhline(max_hu, color='red')
    plt.axhline(min_hu, color='blue')
    plt.plot(times, hus)
    plt.show()


if __name__ == '__main__':
    linux_times, times, temps, hus = readData("records.txt")
    drawPlot(linux_times, temps, hus)

在代码中对于一些错误的观测数据,通过if语句进行了剔除。

5.总结

本篇博客实现的内容比较简单,主要是温湿度传感器的使用以及利用Matplotlib绘图。

本文作者原创,未经许可不得转载,谢谢配合

返回顶部