広告

記事

2016年7月22日

【自由研究下調べ】ウェザーステーション、キャラクタLCDの実験

BME280 センサーモジュール

 BME280センサーモジュールとキャラクタLCDを付けました。

ウェザーステーション

ウェザーステーション・プロトタイプ

 Raspberry PiにBME280センサーモジュールとキャラクタLCDを接続してプロトタイプ風な見た目にしました。

LCDパネルはI2CタイプではなくGPIO接続の安いモデルを利用しています。(40文字x4行:800円)

LCDパネルに表示が出ていると、なんとなく動作している感はありますね。

LCDパネル表示

日付が出ていた方がいいかも・・・

pythonプログラム

 16文字x2行用のLCDモジュールライブラリを40文字4行対応に、簡単書き換えのライブラリを利用したので簡単スクリプトです。

#!/usr/bin/python
import sys, time
from datetime import datetime, timedelta

from RPiCharLCD import *
from Adafruit_BME280 import *

# Create I2C bus & BMP085 Objects
sensor = BME280(mode=BME280_OSAMPLE_8)

# LCD
myLCD = RPiCharLCD()
myLCD.lcd_init()

# Inherit from Daemon class
class ws:
    # implement run method
    def run(self):
        # record event times
        lastTimeUpd = datetime.now()
        lastSensorReading = datetime.now()
        lastTweet = datetime.now()
        lastLog = datetime.now()

        #initialise temperature and pressure, humidity
        t = 0
        p = 0
        h = 0

        # main loop
        while True:
            # Calculate elapsed time since last events
            now = datetime.now()
            timeElapsed = now - lastTimeUpd
            sensorElapsed = now - lastSensorReading

            # Time to read temp & pressure
            if sensorElapsed > timedelta(seconds=5):
                t = sensor.read_temperature()
                p = (sensor.read_pressure()/100)
                h = sensor.read_humidity()
                lastSensorReading = now

            myLCD.lcd_write_string("T: {0:5.2f} C".format(t), 2)
            myLCD.lcd_write_string("P: {0:7.2f} hPa".format(p), 3)
            myLCD.lcd_write_string("H: {0:5.2f} %".format(h), 4)

            print 'Temp      = {0:0.3f} deg C'.format(t)
            print 'Pressure  = {0:0.2f} hPa'.format(p)
            print 'Humidity  = {0:0.2f} %'.format(h)

            # Time to update LCD Display
            if timeElapsed > timedelta(seconds=1):
                myLCD.lcd_byte(myLCD.LCD_LINE_1, myLCD.LCD_CMD)
                myLCD.lcd_write_string(datetime.now().strftime('%H:%M:%S'), 1)
                lastTimeUpd = now

            time.sleep(0.3)

    def prttph(self):
        temp = sensor.read_temperature()
        hectopascals = sensor.read_pressure()/100
        humidity = sensor.read_humidity()

        print 'Temp      = {0:0.3f} deg C'.format(temp)
        print 'Pressure  = {0:0.2f} hPa'.format(hectopascals)
        print 'Humidity  = {0:0.2f} %'.format(humidity)

if __name__ == "__main__":
    a = ws()
    #a.prttph()
    a.run()

データベースとグラフ

計測データをデータベースに保存して、グラフを作成して見ました。

3分間テスト:

グラフのテスト

測定間隔を1時間にして、半日程データを測定してどうなるか確認して見ましょう。

他に課題は?

 何かあるかな・・・デーモン動作は必要だけど、ツィートは微妙だとおもう。。。
 
* デーモン動作
* ツィート機能

計測データをツィートしているツィッターアカウント見てみた。

自分用に「動作チェック」用とか「測定データのバックアップ」として利用する分にはいいんじゃないかなぁと思うんだよね。

も少し考えよう。

結び

 テレビのニュースによると、日本全国の小中学校は夏休みに入ったようですね。

ここ数日間でテスト稼働させてみて不具合が無いようなら、この夏休みの期間中はできるだけデータを取りつづけておきましょう!

ついでに、実測データとレポートも公開予定で。

スロースターターな人というか、大器晩成な人でしょうか、8月末になると駆け込み需要でダウンロードする人がいるようだから〜♪

0 件のコメント:

コメントを投稿