メインコンテンツまでスキップ

ナイトライトを作る - 仮想IoTハードウェア

このレッスンのこの部分では、仮想IoTデバイスに光センサーを追加します。

仮想ハードウェア

ナイトライトには、CounterFitアプリで作成された1つのセンサーが必要です。

センサーは光センサーです。物理的なIoTデバイスでは、光を電気信号に変換するフォトダイオードになります。光センサーはアナログセンサーで、標準的な測定単位(ルクスなど)に対応しない相対的な光量を示す整数値を送信します。

CounterFitにセンサーを追加する

仮想光センサーを使用するには、CounterFitアプリに追加する必要があります。

タスク - CounterFitにセンサーを追加する

CounterFitアプリに光センサーを追加します。

  1. 前の部分の課題からCounterFitウェブアプリが実行されていることを確認します。実行されていない場合は、起動します。

  2. 光センサーを作成します:

    1. SensorsペインのCreate sensorボックスで、Sensor typeボックスをドロップダウンしてLightを選択します。

    2. UnitsNoUnitsのままにします。

    3. Pin0に設定されていることを確認します。

    4. Addボタンを選択して、Pin 0に光センサーを作成します。

    光センサーの設定

    光センサーが作成され、センサーリストに表示されます。

    作成された光センサー

光センサーをプログラムする

デバイスは内蔵の光センサーを使用するようにプログラムできます。

タスク - 光センサーをプログラムする

デバイスをプログラムします。

  1. 前の部分の課題で作成したVS Codeのナイトライトプロジェクトを開きます。必要に応じて、仮想環境を使用して実行されていることを確認するためにターミナルを終了して再作成します。

  2. app.pyファイルを開きます。

  3. 必要なライブラリをインポートするために、importステートメントの残りと一緒にapp.pyファイルの上部に次のコードを追加します:

    import time
    from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensor

    import timeステートメントは、後でこの課題で使用するPythonのtimeモジュールをインポートします。

    from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensorステートメントは、CounterFit GroveシムPythonライブラリからGroveLightSensorをインポートします。このライブラリには、CounterFitアプリで作成された光センサーと対話するためのコードが含まれています。

  4. 光センサーを管理するクラスのインスタンスを作成するために、ファイルの下部に次のコードを追加します:

    light_sensor = GroveLightSensor(0)

    light_sensor = GroveLightSensor(0)行は、光センサーが接続されているCounterFit Groveピン0に接続するGroveLightSensorクラスのインスタンスを作成します。

  5. 上記のコードの後に無限ループを追加して、光センサーの値をポーリングし、コンソールに出力します:

    while True:
    light = light_sensor.light
    print('Light level:', light)

    これは、GroveLightSensorクラスのlightプロパティを使用して現在の光レベルを読み取ります。このプロパティはピンからアナログ値を読み取ります。この値はコンソールに出力されます。

  6. 光レベルを継続的にチェックする必要がないため、whileループの最後に1秒のスリープを追加します。スリープはデバイスの消費電力を減らします。

    time.sleep(1)
  7. VS Codeターミナルから、次のコマンドを実行してPythonアプリを実行します:

    python3 app.py

    光の値がコンソールに出力されます。最初はこの値は0になります。

  8. CounterFitアプリから、アプリが読み取る光センサーの値を変更します。これを行うには2つの方法があります:

    • 光センサーのValueボックスに数値を入力し、Setボタンを選択します。入力した数値がセンサーから返される値になります。

    • Randomチェックボックスをオンにし、MinおよびMax値を入力してからSetボタンを選択します。センサーが値を読み取るたびに、MinMaxの間のランダムな数値が読み取られます。

    設定した値がコンソールに出力されます。値を変更するか、Random設定を変更して値を変化させます。

    (.venv) ➜  GroveTest python3 app.py 
    Light level: 143
    Light level: 244
    Light level: 246
    Light level: 253

💁 このコードはcode-sensor/virtual-deviceフォルダーにあります。

😀 ナイトライトプログラムは成功しました!