Raspberry Pi4とScratch3.0で色々なセンサを使ってみよう。

2024年5月29日

【 当サイトには広告リンクが含まれています。 】


Raspberry Pi4(Raspberry Pi4 ModelB 4GB)のGPIOピンを入力状態に設定し、接続したセンサの情報を処理して、LEDを点灯、消灯、点滅させたり、ブザーを鳴らしたりします。


実験準備



部品(追加)


今まで使ってきたキットの他に次に部品を用意します。


部 品 名規 格数 量備 考
人感センサAM312 (3個)Amazon
磁気センサーモジュールKY-003 (5個)Amazon
磁石ボタン状の小さい物
任意
テストリード5色10本 (10本)Amazon
トランジスタ(NPN)2SC2655L-Y-T9N-B(10個)秋月電子通商
ICクリップテストリードS両端TLA-101(6色 6本)秋月電子通商
電池ボックス 単3×2本
リード線・スイッチ付
BH-321-1AS秋月電子通商
電池単三電池


※注:「定番「Lチカ」! Scrach3.0でLEDゲーム。の実験準備」を参照してください。


明るくなったら消灯します。フォトレジスタで節電生活。


「Raspberry Pi4」のGPIOピンに接続された「フォトレジスタ」に光を当てると、GPIOピンに接続された「赤いLED」が消灯し、黒い布等で光をさえぎると点灯します。

ブレッドボードを使った接続


ブレッドボードを使って「フォトレジスタ」、「赤いLED」等をジャンパーワイヤー で接続します。

部品表


キットの中から次の部品を使います。

部 品 名規 格数 量備 考
フォトレジスタ5506
カーボン抵抗1/4W 470Ω
カーボン抵抗1/4W 4.7KΩ
発光ダイオード(LED)赤色
ジャンパーワイヤーオスピン ー オスピン


回路の組立て


ブレッドボード上で配線します。



フォトレジスタ


フォトレジスタ(フォトセル、LDR、光導電セル)は、受動部品であり、受光面上の輝度(光)が増加すると抵抗値が減少します。

一般的に暗い所では数メガ・オーム(MΩ)、明るい所では数百オームの抵抗値を示します。

実際にテスターで抵抗値を測定したところ、暗いところ(黒い布をかぶせる)では30KΩ以上、明るいところ(デスクライトの下)では600Ω以下を示しました。

この値から、暗いところではGPIO21ピンの値をHigh(2.0V以上)、明るいところではLow(0.8V以下)にするために、4.7KΩのカーボン抵抗を使って3.3Vを分圧しています。




オブジェクトの設定


  • Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。

  • 左下の「拡張機能を追加」をクリックして、「Raspberry Pi GPIO」を追加します。


スプライト1(ネコ)の処理


コードは「スプライト1(ネコ)」のコードエリアに作成します。


LEDの点灯/消灯処理


  • 「(緑の旗)」をクリックすると処理を開始します。

  • 暗いところ(黒い布をかぶせる)では、接続されているGPIO21の状態がHighになり、GPIO17を「high」にして「赤いLED」が点灯します。

  • 明るいところ(デスクライトの下)では、GPIO21の状態がLowになり、GPIO17を「Low」にして「赤いLED」が消灯します。





リセット処理


ゲーム終了後、赤いLEDが点灯している可能性があるので、赤いLEDの消灯し、プログラムを停止する処理を行います。


  • キーボードの「q」キーを押すと処理を開始します。

  • 「赤のLED」を消灯し、プログラムを停止します。





「フォトレジスタ」に光を当てると、「赤いED」が消灯し、黒い布等で光をさえぎると点灯します。

場所にもよりますが、部屋の電灯をつけると「赤いLED」が消灯し、消すと点灯します。




人の気配を感じます。受動赤外線センサで防犯対策。


「Raspberry Pi4」のGPIOピンに接続された「受動赤外線センサ」に人が近づいたり離れたりすると、GPIOピンに接続された「赤いLED」が点灯し、「ブザー」が鳴ります。

「タクトスイッチ」を押すと、「赤いLED」が消灯し、「ブザー」が止まります。


ブレッドボードを使った接続


ブレッドボードを使って「受動赤外線センサ」、「赤いLED」、「ブザー」、「タクトスイッチ」等をジャンパーワイヤー で接続します。

部品表


キットと今回、追加した部品の中から次の部品を使います。

部 品 名規 格数 量備 考
受動赤外線センサAM312追加
カーボン抵抗1/4W 470Ω
カーボン抵抗1/4W 2.0KΩ
発光ダイオード(LED)赤色
タクトスイッチ6x6x4.3mm
トランジスタ(NPN)S8050
電子ブザーHYDZ
ジャンパーワイヤーオスピン ー オスピン15


回路の組立て


ブレッドボード上で配線します。



受動赤外線センサ


受動赤外線センサは、近くの物体から放射される赤外線を感知し、熱やエネルギーをセンサ自体が発しないことから「受動」と呼ばれています。

生きている動物は赤外線を放射しているので、センサはこれを感知し動きが検出されると、信号(OUT)ピンが「High」になります。

注:赤外線を放射していても動きがなければ感知しません。


オブジェクトの設定


  • Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。

  • 左下の「拡張機能を追加」をクリックして、「Raspberry Pi Simple Electronics」と「Raspberry Pi GPIO」を追加します。


スプライト1(ネコ)の処理


コードは「スプライト1(ネコ)」のコードエリアに作成します。


初期設定


  • 「(緑の旗)」をクリックすると処理を開始します。

  • 「受動赤外線センサ」の信号(OUT)ピンと接続されている入力ピン(GPIO13)が、フローティングにならないように、内部プルダウン抵抗でLowに設定します。

  • 「タクトスイッチ」と接続されている入力ピン(GPIO21)がフローティングにならないように、内部プルアップ抵抗Highに設定します。

  • 「赤いLED」を消灯、「ブザー」を停止します。






受動赤外線センサ処理


  • 「受動赤外線センサ」が赤外線を感知すると処理を開始します。

  • 「赤いLED」を点灯し、「ブザー」を鳴らします。

  • 感知後に4秒停止し、「受動赤外線センサ」の信号出力がLow状態に戻るのを待ちます。






リセット処理


一度感知すると、「赤いLED」は点灯、「ブザー」は鳴り続けますので、「タクトスイッチ」を押して停止させます。

  • 「タクトスイッチ」を押すと処理が開始します。

  • 「赤いLED」は消灯し、「ブザー」も停止します。





「受動赤外線センサ」に手を近づけたり離したりすると(人が近づく)、「赤いLED」が点灯し続け「ブザー」が鳴り続けます。

「タクトスイッチ」を押すと「赤いLED」は消灯し、「ブザー」も停止します。

「タクトスイッチ」を押す時に、「受動赤外線センサ」に手を近づけてしまうと、再び感知してしまう時があります。

手を動かしても検知できない場合もあります。




わなに掛かった!磁気センサで開閉監視。


「Raspberry Pi4」のGPIOピンに接続された「磁気センサ」に磁石を近づけると、GPIOピンに接続された「赤いLED」が点灯、「緑のLED」が消灯します。

この性質を利用して、段ボール箱に「磁気センサ」と磁石を付けて、ふたが開閉されると赤と緑の「LED」が点灯/消灯するおもちゃを作成します。


ブレッドボードを使った接続


ブレッドボードを使って「磁気センサ」、「LED」等をジャンパーワイヤー で接続します。

「磁気センサ」は段ボール箱で作った「わな」の中に、磁石をいっしょに設置します。

部品表


キットと今回、追加した部品の中から次の部品を使います。

部 品 名規 格数 量備 考
磁気センサKY-003追加
カーボン抵抗1/4W 470Ω
カーボン抵抗1/4W 47KΩ
発光ダイオード(LED)赤色
発光ダイオード(LED)緑色
ジャンパーワイヤーオスピン ー オスピン
ジャンパーワイヤー(20Pジャンパー線)オスピン ー メスピン※注
磁石ボタン状の小さい物
段ボール箱任意


※注:20Pジャンパー線(オスピン ー メスピン)の中で、3本を使います。今回は3本だけ裂いて使いました。


回路の組立て


ブレッドボード上で配線します。



磁気センサ


磁気センサ(KY-003)はホール効果を利用して磁界に反応するスイッチで、磁界が存在しない場合、センサーの信号出力はHigh、磁界が加わると信号出力はLowなり、センサに付いているLEDが点灯します。

ホール効果とは、電流の流れてい導体の電流に対して、垂直に磁界を加えると、電流と磁界の両方に垂直な向きに電圧が現れる現象です。

KY-003は磁界の極性(S・N)のどちらか一方にしか反応しませんので、磁石等の設置には注意が必要です。



オブジェクトの設定


  • Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。

  • 左下の「拡張機能を追加」をクリックして、「Raspberry Pi GPIO」を追加します。


スプライト1(ネコ)の処理


コードは「スプライト1(ネコ)」のコードエリアに作成します。

磁界未検出処理


段ボール箱のふたが開いている時、磁石は磁気センサから離れていますので、磁界は検出されません。

  • 信号出力がHigh(磁界未検出)の場合、処理を開始します。

  • 「緑のLED」は点灯し、「赤いLED」は消灯します。





磁界検出処理


段ボール箱のふたが閉じると、磁石は磁気センサに接近しますので磁界が検出されます。


  • 信号出力がLow(磁界検出)の場合、処理を開始します。

  • 「緑のLED」は消灯し、「赤いLED」は点灯します。






箱が開いていると「緑のLED」は点灯、「赤いLED」は消灯し、閉じると「緑のLED」は消灯、「赤LED」は点灯します。




温度が上がったらファンが回ります。サーミスタで熱中症予防。


「Raspberry Pi4」のGPIOピンに接続された「サーミスタ」を温める(指で握る)と、GPIOピンに接続された「赤いLED」が点灯し、モーターが回転し、指を離すと「赤いLED」が消灯し、モーターが停止します。

実験では、温度が35℃位になった時、「赤いLED」が点灯し、モーターが回転するように外部抵抗値(67KΩ)を設定しました。


ブレッドボードを使った接続


ブレッドボードを使って「サーミスタ」、「LED」、「モーター」等をジャンパーワイヤー で接続します。

部品表


キットと今回、追加した部品の中から次の部品を使います。

部 品 名規 格数 量備 考
サーミスタ3950
カーボン抵抗1/4W 470Ω
カーボン抵抗1/4W 47KΩ
カーボン抵抗1/4W 10KΩ
カーボン抵抗1/4W 220Ω
カーボン抵抗1/4W 100Ω
発光ダイオード(LED)赤色
整流用ダイオード1N4007
DCモーター130型
小型ファンブレード水色
トランジスタ(NPN)S8050
トランジスタ(NPN)2SC2655L-Y-T9N-B追加
ジャンパーワイヤーオスピン ー オスピン15
テストリード5色10本 (10本)  赤、黒、緑を使用追加
ICクリップテストリードS両端TLA-101(6色 6本) 赤を使用追加
電池ボックス 単3×2本
リード線・スイッチ付
BH-321-1AS追加
電池単三電池追加


回路の組立て


ブレッドボード上で配線します。



「S8050」と「2SC2655」は同じNPN型トランジスタのですが、ベース(B)、エミッタ(E)、コレクタ(C)のピン配置が違いますので、配線する時は注意が必要です。


サーミスタ


「サーミスタ」は熱(thermal)と抵抗器(resistor)の合成語で、温度により抵抗値が変化する半導体抵抗器の一種です。

今回使った「3950」はNTCサーミスタで-40℃~200℃の間の温度に対応しており、25℃近辺の特性は、次のようになっています。

温 度(℃)抵抗値(KΩ)備 考
2012.47
2111.92
2211.41
2310.91
2410.45
2510.00
269.575
279.170
288.784
298.416
308.064
317.730
327.410
337.106
346.815
356.538



オブジェクトの設定


  • Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。

  • 左下の「拡張機能を追加」をクリックして、「Raspberry Pi GPIO」を追加します。


スプライト1(ネコ)の処理


コードは「スプライト1(ネコ)」のコードエリアに作成します。

温度が35℃位になったの時の処理


指で「サーミスタ」を押さえて35℃位(体温)になった時、「赤いLED」が点灯し、モーターが回転します。

  • 「サーミスタ」の温度が上がり抵抗値が下がると、GPIOの入力がHighになり処理を開始します。

  • 「赤いLED」が点灯し、モーターが回転します。




温度が35℃位より下がった時の処理


「サーミスタ」から指を離して35℃位(体温)を下回った時、「赤いLED」が消灯し、モーターが停止します。

  • 「サーミスタ」の温度が下がり抵抗値が上がると、GPIOの入力がLowになり処理を開始します。

  • 「赤いLED」が消灯し、モーターが停止します。


指で「サーミスタ」を押さえると「赤いLED」が点灯し、モーターが回転します。

指を離すと「赤いLED」が消灯し、モーターが停止します。




まとめ

Raspberry Pi4(Raspberry Pi4 ModelB 4GB)のGPIOピンに、光を感知する「フォトレジスタ」、人の動きを感知する「受動赤外線センサ」、磁気を感知する「磁気センサ」、そして熱を感知する「サーミスタ」の基本的な使い方を学びました。

センサからのアナログ出力をデジタル化して、Raspberry Pi4で処理させるのが一般的ですが、Scratch3.0の標準「拡張機能」では実験することができませんでした。

今後は、別のプログラミングを使って、センサの処理を行っていきます。