树莓派4B加微雪2.13寸墨水屏,监测pm2.5信息

倾然丶 夕夏残阳落幕 提交于 2020-02-26 19:12:00

获取pm2.5信息的教程参照我的博客https://my.oschina.net/wangandi/blog/901648

微雪2.13寸墨水屏的资料参照http://www.waveshare.net/wiki/2.13inch_e-Paper_HAT, 缺什么软件包也请参照这里

下载示例包https://github.com/waveshare/e-Paper

下面的python文件要放在e-paper/RaspberryPi&JetsonNano/python/examples/里面

代中的url参照第一个网址的getData.php,格式如下{"pm":"(23,32,35,23,32,35,3669,1042,136,13,1,1,10.0,19.9,64.4)","date":"2020-02-24 13:40:01"},我代码中另一个树莓派的地址,你也可以在同一个树莓派中使用

python代码如下:

#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import os
import datetime
import requests
picdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic')
libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib')
if os.path.exists(libdir):
    sys.path.append(libdir)

import logging
from waveshare_epd import epd2in13_V2
import time
from PIL import Image,ImageDraw,ImageFont
import traceback

logging.basicConfig(level=logging.DEBUG)

try:
    logging.info("epd2in13_V2 Demo")
    epd = epd2in13_V2.EPD()
    logging.info("init and Clear")
    epd.init(epd.FULL_UPDATE)
    #epd.Clear(0xFF)

    # Drawing on the image
    font15 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 15)
    font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)

    logging.info("1.Drawing on the image...")
    image = Image.new('1', (epd.height, epd.width), 255)  # 255: clear the frame
    draw = ImageDraw.Draw(image)

    #GetTime
    #time = (datetime.datetime.now() + datetime.timedelta(hours=8)).strftime('%Y.%m.%d %H:%M:%S')
    #PrintWord
    #draw.text((20, 40), '呵呵', font = font15, fill = 0)
    #PrintTime
    #draw.text((20, 80), time, font = font15, fill = 0)
    #Your PM2.5 data url
    #Content for example:
    #{"pm":"(25,37,46,25,37,46,3519,982,166,30,5,3,10.0,19.8,64.8)","date":"2020-02-24 13:30:03"}
    url = "http://192.168.1.196/pm25/getData.php"

    #Format pm2.5 data
    alldata = requests.get(url)
    pmdata = alldata.json()["pm"]
    pmdata = pmdata[1:-1]
    pmdata = pmdata.split(",")

    #Get time
    time = alldata.json()["date"]

    #Get pm2.5,temperature,humidity
    pm25 = pmdata[4]
    temperature = pmdata[13]
    humidity = pmdata[14]

    #Draw all data
    draw.text((20, 10), '空气质量:' + pm25 + 'μg/m³', font = font15, fill = 0)
    draw.text((20, 30), '温度:' + temperature + '°C', font = font15, fill = 0)
    draw.text((20, 50), '湿度:' + humidity + '%', font = font15, fill = 0)
    draw.text((20, 70), time, font = font15, fill = 0)
    draw.text((20, 90), 'By Andy', font = font15, fill = 0)

    #ScreenRotate180
    image = image.transpose(Image.ROTATE_180)
    epd.display(epd.getbuffer(image))

    logging.info("Goto Sleep...")
    epd.sleep()

except IOError as e:
    logging.info(e)

except KeyboardInterrupt:
    logging.info("ctrl + c:")
    epd2in13_V2.epdconfig.module_exit()
    exit()

执行后的效果如下:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!