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

センサーとアクチュエーターで物理的な世界と対話する

このレッスンの概要を示すスケッチノート

スケッチノート: Nitya Narasimhan 作。画像をクリックすると大きなバージョンが表示されます。

このレッスンは Microsoft ReactorHello IoT シリーズ の一環として教えられました。このレッスンは 2 本のビデオで構成されており、1 時間のレッスンと、レッスンの一部を深く掘り下げて質問に答える 1 時間のオフィスアワーがあります。

レッスン 3: センサーとアクチュエーターで物理的な世界と対話する

レッスン 3: センサーとアクチュエーターで物理的な世界と対話する - オフィスアワー

🎥 上の画像をクリックしてビデオを視聴してください

講義前のクイズ

講義前のクイズ

はじめに

このレッスンでは、IoT デバイスにとって重要な 2 つの概念、センサーとアクチュエーターを紹介します。また、これらのデバイスを実際に操作し、IoT プロジェクトに光センサーを追加し、光レベルで制御される LED を追加して、ナイトライトを作成します。

このレッスンでは以下の内容をカバーします:

センサーとは何か?

センサーは物理的な世界を感知するハードウェアデバイスです。つまり、周囲の 1 つ以上の特性を測定し、その情報を IoT デバイスに送信します。センサーは測定できるものが非常に多いため、非常に多くの種類のデバイスがあります。自然の特性(例えば、気温)から物理的な相互作用(例えば、動き)までさまざまです。

一般的なセンサーには以下のものがあります:

  • 温度センサー - これらは空気の温度や浸されている物の温度を感知します。ホビイストや開発者向けには、これらはしばしば気圧や湿度と組み合わされています。
  • ボタン - これらは押されたときに感知します。
  • 光センサー - これらは光のレベルを検出し、特定の色、UV 光、IR 光、または一般的な可視光を検出できます。
  • カメラ - これらは写真を撮ったりビデオをストリーミングしたりして、世界の視覚的な表現を感知します。
  • 加速度計 - これらは複数の方向の動きを感知します。
  • マイク - これらは一般的な音のレベルや方向性のある音を感知します。

✅ 調査を行ってください。あなたの電話にはどんなセンサーがありますか?

すべてのセンサーには共通点があります。それは、感知したものを IoT デバイスが解釈できる電気信号に変換することです。この電気信号がどのように解釈されるかは、センサーと IoT デバイスとの通信プロトコルによります。

センサーの使用

以下のガイドに従って、IoT デバイスにセンサーを追加してください:

センサーの種類

センサーはアナログまたはデジタルのいずれかです。

アナログセンサー

最も基本的なセンサーの一部はアナログセンサーです。これらのセンサーは IoT デバイスから電圧を受け取り、センサーのコンポーネントがこの電圧を調整し、センサーから返される電圧を測定してセンサーの値を得ます。

🎓 電圧は、電気をある場所から別の場所に移動させるための押しの強さの測定値です。例えば、標準的な AA 電池は 1.5V(V はボルトの記号)で、正の端子から負の端子に 1.5V の力で電気を押し出すことができます。異なる電気ハードウェアは動作するために異なる電圧を必要とします。例えば、LED は 2-3V で点灯できますが、100W のフィラメント電球は 240V を必要とします。電圧についての詳細は Wikipedia の電圧ページ を参照してください。

その一例がポテンショメーターです。これは 2 つの位置の間で回転させることができるダイヤルで、センサーはその回転を測定します。

5 ボルトを送信して中間点に設定されたポテンショメーターが 3.8 ボルトを返す

IoT デバイスはポテンショメーターに 5 ボルト(5V)などの電気信号を送信します。ポテンショメーターが調整されると、反対側から出てくる電圧が変わります。ポテンショメーターが 0 から 11 までのダイヤルとしてラベル付けされていると想像してください。ポテンショメーターが完全にオフの位置(0)にあるときは 0V(0 ボルト)が出てきます。完全にオンの位置(11)にあるときは 5V(5 ボルト)が出てきます。

🎓 これは過度に単純化されています。ポテンショメーターと可変抵抗器についての詳細は Wikipedia のポテンショメーターページ を参照してください。

センサーから出てくる電圧は IoT デバイスによって読み取られ、デバイスはそれに応じて反応します。センサーによって、この電圧は任意の値である場合もあれば、標準単位にマッピングされる場合もあります。例えば、サーミスタ に基づくアナログ温度センサーは、温度に応じて抵抗を変化させます。出力電圧はコード内の計算によってケルビン温度に変換され、それに応じて °C または °F に変換されます。

✅ センサーが送信された電圧よりも高い電圧を返すとどうなると思いますか(例えば、外部電源から来る場合)? ⛔️ これを試さないでください。

アナログからデジタルへの変換

IoT デバイスはデジタルです - アナログ値では動作しません。0 と 1 だけで動作します。これにより、アナログセンサーの値は処理される前にデジタル信号に変換する必要があります。多くの IoT デバイスにはアナログ入力をデジタル表現に変換するアナログ-デジタルコンバーター(ADC)が搭載されています。センサーもコネクターボードを介して ADC と連携できます。例えば、Raspberry Pi で Seeed Grove エコシステムを使用する場合、アナログセンサーは Pi の GPIO ピンに接続された 'hat' の特定のポートに接続され、この hat には電圧をデジタル信号に変換する ADC が搭載されています。

3.3V を使用する IoT デバイスに接続されたアナログ光センサーが 1V の値を返していると想像してください。この 1V はデジタルの世界では意味がないため、変換する必要があります。電圧はデバイスとセンサーに応じたスケールを使用してアナログ値に変換されます。1 つの例は、0 から 1,023 までの値を出力する Seeed Grove 光センサーです。このセンサーが 3.3V で動作している場合、1V の出力は 300 の値になります。IoT デバイスはアナログ値として 300 を処理できないため、Grove hat によって 300 のバイナリ表現である 0000000100101100 に変換されます。これが IoT デバイスによって処理されます。

✅ バイナリを知らない場合は、0 と 1 で数値がどのように表現されるかを少し調べてください。BBC Bitesize のバイナリ入門レッスン は素晴らしい出発点です。

コーディングの観点からは、通常これらはセンサーに付属するライブラリによって処理されるため、自分でこの変換を心配する必要はありません。Grove 光センサーの場合、Python ライブラリを使用して light プロパティを呼び出すか、Arduino ライブラリを使用して analogRead を呼び出して 300 の値を取得します。

デジタルセンサー

デジタルセンサーはアナログセンサーと同様に、電圧の変化を使用して周囲の世界を検出します。違いは、内蔵の ADC を使用してデジタル信号を出力することです。デジタルセンサーは、コネクターボードや IoT デバイス自体に ADC を使用する必要がないため、ますます一般的になっています。

最も単純なデジタルセンサーはボタンやスイッチです。これはオンまたはオフの 2 つの状態を持つセンサーです。

ボタンに 5 ボルトが送信されます。押されていないときは 0 ボルトが返され、押されているときは 5 ボルトが返されます

GPIO ピンなどの IoT デバイスのピンは、この信号を 0 または 1 として直接測定できます。送信された電圧が返された電圧と同じ場合、読み取られる値は 1 です。そうでない場合、読み取られる値は 0 です。信号を変換する必要はなく、1 または 0 のみです。

💁 電圧は正確ではなく、センサーのコンポーネントにはいくらかの抵抗があるため、通常は許容範囲があります。例えば、Raspberry Pi の GPIO ピンは 3.3V で動作し、1.8V 以上の信号を 1 として読み取り、1.8V 未満の信号を 0 として読み取ります。

  • 3.3V がボタンに送信されます。ボタンがオフのため、0V が出てきて、値は 0 になります。
  • 3.3V がボタンに送信されます。ボタンがオンのため、3.3V が出てきて、値は 1 になります。

より高度なデジタルセンサーはアナログ値を読み取り、内蔵の ADC を使用してデジタル信号に変換します。例えば、デジタル温度センサーはアナログセンサーと同様にサーモカップルを使用し、現在の温度でサーモカップルの抵抗によって引き起こされる電圧の変化を測定します。アナログ値を返す代わりに、センサーに内蔵された ADC が値を変換し、0 と 1 の一連の信号として IoT デバイスに送信します。これらの 0 と 1 は、ボタンのデジタル信号と同じ方法で送信され、1 は完全な電圧、0 は 0V です。

アナログ読み取りをバイナリデータに変換し、0 を 0 ボルト、1 を 5 ボルトとして IoT デバイスに送信するデジタル温度センサー

デジタルデータを送信することで、センサーはより複雑になり、より詳細なデータ、さらにはセキュアセンサーの暗号化データを送信できます。1 つの例はカメラです。これは画像をキャプチャし、その画像を含むデジタルデータとして送信するセンサーで、通常は JPEG などの圧縮形式で IoT デバイスに読み取られます。画像をキャプチャして、完全な画像をフレームごとに送信するか、圧縮ビデオストリームを送信することで、ビデオをストリーミングすることもできます。

アクチュエーターとは何か?

アクチュエーターはセンサーの反対で、IoT デバイスからの電気信号を物理的な世界との相互作用に変換します。例えば、光や音を発する、またはモーターを動かすなどです。

一般的なアクチュエーターには以下のものがあります:

  • LED - 点灯すると光を発します
  • スピーカー - 信号に基づいて音を発し、基本的なブザーから音楽を再生できるオーディオスピーカーまでさまざまです
  • ステッピングモーター - 信号を一定量の回転に変換し、例えばダイヤルを 90° 回転させます
  • リレー - 電気信号によってオンまたはオフにできるスイッチです。これにより、IoT デバイスからの小さな電圧で大きな電圧をオンにすることができます。
  • スクリーン - より複雑なアクチュエーターで、マルチセグメントディスプレイに情報を表示します。スクリーンはシンプルな LED ディスプレイから高解像度のビデオモニターまでさまざまです。

✅ 調査を行ってください。あなたの電話にはどんなアクチュエーターがありますか?

アクチュエーターの使用

以下のガイドに従って、センサーによって制御されるアクチュエーターを IoT デバイスに追加し、IoT ナイトライトを作成してください。光センサーから光レベルを収集し、光レベルが低すぎる場合に LED というアクチュエーターを使用して光を発します。

光レベルを読み取り、チェックし、LED を制御する課題のフローチャート

アクチュエーターの種類

センサーと同様に、アクチュエーターもアナログまたはデジタルのいずれかです。

アナログアクチュエーター

アナログアクチュエーターはアナログ信号を受け取り、それを何らかの相互作用に変換します。この相互作用は供給される電圧によって変化します。

一例として、家庭にある調光可能なライトがあります。ライトに供給される電圧の量が明るさを決定します。

低電圧で調光されたライトと高電圧で明るくなったライト

センサーと同様に、実際のIoTデバイスはアナログではなくデジタル信号で動作します。つまり、アナログ信号を送信するには、IoTデバイスにデジタルからアナログへの変換器(DAC)が必要です。これは、IoTデバイスからの0と1をアクチュエーターが使用できるアナログ電圧に変換します。

✅ IoTデバイスがアクチュエーターが処理できる電圧よりも高い電圧を送信した場合、何が起こると思いますか? ⛔️ これを試さないでください。

パルス幅変調

IoTデバイスからのデジタル信号をアナログ信号に変換するもう一つの方法は、パルス幅変調(PWM)です。これは、アナログ信号のように動作する多数の短いデジタルパルスを送信することを含みます。

例えば、PWMを使用してモーターの速度を制御できます。

5Vの供給でモーターを制御していると想像してください。モーターに短いパルスを送信し、電圧を0.02秒間高(5V)に切り替えます。その間にモーターは1/10回転、つまり36°回転できます。その後、信号は0.02秒間一時停止し、低信号(0V)を送信します。オンとオフの各サイクルは0.04秒続きます。サイクルは繰り返されます。

150 RPMでモーターを回転させるパルス幅変調

これは、1秒間に25回の5Vパルスが0.02秒ずつモーターを回転させ、その後に0.02秒の0Vのパルスが続き、モーターは回転しないことを意味します。各パルスはモーターを1/10回転させるため、モーターは1秒間に2.5回転します。デジタル信号を使用してモーターを1秒間に2.5回転、または150 回転毎分(回転速度の非標準的な測定単位)で回転させました。

25 pulses per second x 0.1 rotations per pulse = 2.5 rotations per second
2.5 rotations per second x 60 seconds in a minute = 150rpm

🎓 PWM信号が半分の時間オンで、半分の時間オフの場合、これは50%デューティサイクルと呼ばれます。デューティサイクルは、信号がオン状態にある時間の割合として測定されます。

75 RPMでモーターを回転させるパルス幅変調

パルスのサイズを変更することでモーターの速度を変えることができます。例えば、同じモーターでサイクル時間を0.04秒に保ち、オンパルスを0.01秒に半分にし、オフパルスを0.03秒に増やすことができます。1秒あたりのパルス数は同じ(25)ですが、各オンパルスの長さは半分です。半分の長さのパルスはモーターを1/20回転させるだけで、1秒あたり25パルスで1.25回転、つまり75rpmになります。デジタル信号のパルス速度を変更することで、アナログモーターの速度を半分にしました。

25 pulses per second x 0.05 rotations per pulse = 1.25 rotations per second
1.25 rotations per second x 60 seconds in a minute = 75rpm

✅ モーターの回転を滑らかに保つにはどうすればよいでしょうか?特に低速での回転を滑らかにするには、長いパルスと長いポーズを少数使用するか、非常に短いパルスと非常に短いポーズを多数使用しますか?

💁 一部のセンサーもPWMを使用してアナログ信号をデジタル信号に変換します。

🎓 パルス幅変調の詳細については、Wikipediaのパルス幅変調ページをご覧ください。

デジタルアクチュエーター

デジタルアクチュエーターは、デジタルセンサーと同様に、高電圧または低電圧によって制御される2つの状態を持つか、DACが内蔵されているため、デジタル信号をアナログ信号に変換できます。

簡単なデジタルアクチュエーターの一例はLEDです。デバイスがデジタル信号1を送信すると、高電圧が送信されてLEDが点灯します。デジタル信号0が送信されると、電圧が0Vに下がり、LEDが消灯します。

0ボルトでオフ、5VでオンのLED

✅ 他にどのような簡単な2状態のアクチュエーターを思いつきますか?一例として、電磁石を使用してドアボルトを動かし、ドアのロック/解除を行うソレノイドがあります。

より高度なデジタルアクチュエーターは、画面のように、特定のフォーマットでデジタルデータを送信する必要があります。これらは通常、正しいデータを送信して制御するためのライブラリが付属しています。


🚀 課題

前回の2つのレッスンの課題は、自宅、学校、職場にあるできるだけ多くのIoTデバイスをリストアップし、それらがマイクロコントローラーまたはシングルボードコンピュータ、またはその両方の混合で構築されているかどうかを判断することでした。

リストアップした各デバイスには、どのセンサーとアクチュエーターが接続されていますか?これらのデバイスに接続されている各センサーとアクチュエーターの目的は何ですか?

講義後のクイズ

講義後のクイズ

レビューと自己学習

課題

センサーとアクチュエーターの調査