Skip to content

アクティビティ

エネルギーライトタイマー

上級 | MakeCode, Python | LED表示, ボタン, 光センサー | 13 気候, センサー, ブール論理, 入出力, 変数

ステップ1: 作る

説明

あなたのライトがつけっぱなしになっている時間を計って、エネルギー使用量を記録しよう。 また、このプロジェクトは、気象観測プロジェクトの日照時間の記録にも利用できます。

これは、SDGs(持続可能な開発目標)を達成する技術を探求するために作られた、課題解決とプロトタイピング活動の一連のプロジェクトの一つです。

学ぶこと

  • 現実世界の現象を、センサーとプログラムで観測する方法
  • 信頼できるデータを記録するためにデータロガーを使用すること
  • エネルギー使用のパターンを発見するために、一定時間のデータを収集し、照合すること
  • 行動を変えられるようにデータを解釈、分析すること
  • 使う前にシステムを設定するために、変数を変える方法

使い方

  • まずエネルギーライトメータープロジェクトを使って、照明を点けたとき、消した時の測定値を確認します。 測定用のmicro:bitを置くのと同じ場所、もしくは同じ明るさの場所で確認してください。日光で照明が点いていると誤検知しないように気をつけてください。
  • LIGHT変数がセットされているコードに明るさの測定値を入れましょう。 100という数字を与えていますが、プログラムをmicro:bitに書き込む前に変更する必要があるかもしれません。
  • バッテリーパックを取り付けて、観測したい照明の下にmicro:bitを置きます。 照明が点いていないときはディスプレイに点が表示され、照明が点くとディスプレイが点灯するばずです。 うまくいかない場合は、再度ライトメータープロジェクトを使用して、照明が点いているときの光量を求めたり、micro:bitを移動させたりしてみてください。
  • micro:bit は時間を計り続けているので、Bボタンを押すと、これまで照明が点いていた時間が分で表示されます。

動作の仕組み

  • プログラムを制御するために timing というブール型変数を使用します。 ブール変数は、true または false の 2 つの値のみを持つことができます。
  • 光センサーの読み取り値が設定したレベルを超えると、タイマーがスタートし、LEDディスプレイが点灯します。 設定したレベル以下になると、タイマーを停止し、ディスプレイに点が表示されます。
  • このプロジェクトでは、 履歴効果 を利用して、タイマーをオンにするしきい値付近の明るさのときに、タイマーがオンとオフにひんぱんに切り替わらないようにします。 これでタイマーをオンオフするしきい値の幅を広げることができます。
  • 履歴効果は、サーモスタットを持つ加熱システムなど、センサーを使用する制御システムにも利用されています。 サーモスタットを特定の温度に設定したときに、設定した温度付近にあるときに加熱装置がオンオフをひんぱんに何度も繰り返してほしくはないですね。 履歴効果はこれを防ぎます。

必要なもの

  • micro:bit
  • MakeCodeまたはPythonエディター
  • バッテリーパック(推奨)

ステップ2: プログラムする

1from microbit import *
2display.show('L')
3
4LIGHT = 100  # <<< Enter your 'measured' reading here
5
6HYSTERESIS = 8
7LIGHT -= (HYSTERESIS/2)
8DARK = LIGHT - HYSTERESIS
9ON_IMAGE = Image('99999:99999:99999:99999:99999')
10OFF_IMAGE = Image('00000:00000:00900:00000:00000')
11timing = False
12start_time = 0
13total_time = 0
14reading = display.read_light_level()
15sleep(1000)
16
17def show_number(n):
18    # Make number display the same as MakeCode
19    if len(str(n)) == 1:
20        display.show(n)
21    else:
22        display.scroll(n)
23
24while True:
25    reading = display.read_light_level()
26    if reading < DARK:
27        if timing:
28            # it has just gone dark, update timer for 'on' time
29            end_time = running_time()
30            total_time += (end_time - start_time)
31            timing = False
32        
33    elif reading >= LIGHT:
34        if not timing:
35            # it has just gone light, start the timer
36            start_time = running_time()
37            timing = True
38        
39    if button_b.was_pressed():
40        # calculate and display cumulative time in minutes
41        minutes = total_time / 60000
42        if timing:
43            # adjust live for current ON time
44            minutes += (running_time() - start_time) / 60000
45        display.clear()
46        show_number(round(minutes))  # whole numbers only
47        sleep(500)
48
49    # update the display with the ON/OFF state
50    if timing:
51        display.show(ON_IMAGE)
52    else:
53        display.show(OFF_IMAGE)
54    sleep(1000)
55
56        

ステップ3: 改善する

  • LEDディスプレイに表示されるパターンを変更して電池を長持ちさせたり、ディスプレイを暗くしたりしてみましょう。
  • 記録された時間を使用して、使用した電力量とコストを計算してみましょう。 詳細は エネルギーコスト計算プロジェクト にあります
  • 同じコードを使用して、日光の時間を測定してみましょう。 明るさメータープロジェクトを利用して、micro:bit で太陽が輝いているときと曇っているときの明るさの値を計算します。 光を拡散したり、micro:bitを雨から守ったりするために、micro:bit 用に半透明のフタつきのいれもの(例えば古くなったプラスチックの食品容器など)を作る必要があるかもしれません。