この記事でわかること
Raspberry Pi4(Raspberry Pi4 ModelB 4GB)のGPIOピンを入力状態に設定し、接続したセンサの情報を処理して、LEDを点灯、消灯、点滅させたり、ブザーを鳴らしたりします。
本ブログで作成したプログラムはこちらからダウンロードできます。
実験準備
「定番「Lチカ」! Scrach3.0でLEDゲーム。の実験準備」を参照してください。
部品(追加)
今まで使ってきたキットの他に次に部品を用意します。
部 品 名 | 規 格 | 数 量 | 備 考 |
---|---|---|---|
人感センサ | AM312 (3個) | 1 | Amazon |
磁気センサーモジュール | KY-003 (5個) | 1 | Amazon |
磁石 | ボタン状の小さい物 | 1 | |
箱 | 任意 | 1 | |
テストリード | 5色10本 (10本) | 1 | Amazon |
トランジスタ(NPN) | 2SC2655L-Y-T9N-B(10個) | 1 | 秋月電子通商 |
ICクリップテストリードS両端 | TLA-101(6色 6本) | 1 | 秋月電子通商 |
電池ボックス 単3×2本 リード線・スイッチ付 | BH-321-1AS | 1 | 秋月電子通商 |
電池 | 単三電池 | 2 |
※注:「定番「Lチカ」! Scrach3.0でLEDゲーム。の実験準備」を参照してください。
明るくなったら消灯します。フォトレジスタで節電生活。
「Raspberry Pi4」のGPIOピンに接続された「フォトレジスタ」に光を当てると、GPIOピンに接続された「赤いLED」が消灯し、黒い布等で光をさえぎると点灯します。
ブレッドボードを使った接続
ブレッドボードを使って「フォトレジスタ」、「赤いLED」等をジャンパーワイヤー で接続します。
キットの中から次の部品を使います。
部 品 名 | 規 格 | 数 量 | 備 考 |
---|---|---|---|
フォトレジスタ | 5506 | 1 | |
カーボン抵抗 | 1/4W 470Ω | 1 | |
カーボン抵抗 | 1/4W 4.7KΩ | 1 | |
発光ダイオード(LED) | 赤色 | 1 | |
ジャンパーワイヤー | オスピン ー オスピン | 7 | |
ブレッドボード上で配線します。
フォトレジスタ(フォトセル、LDR、光導電セル)は、受動部品であり、受光面上の輝度(光)が増加すると抵抗値が減少します。
一般的に暗い所では数メガ・オーム(MΩ)、明るい所では数百オームの抵抗値を示します。
実際にテスターで抵抗値を測定したところ、暗いところ(黒い布をかぶせる)では30KΩ以上、明るいところ(デスクライトの下)では600Ω以下を示しました。
この値から、暗いところではGPIO21ピンの値をHigh(2.0V以上)、明るいところではLow(0.8V以下)にするために、4.7KΩのカーボン抵抗を使って3.3Vを分圧しています。
オブジェクトの設定
- Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。
- 左下の「拡張機能を追加」をクリックして、「Raspberry Pi GPIO」を追加します。
スプライト1(ネコ)の処理
コードは「スプライト1(ネコ)」のコードエリアに作成します。
- 「(緑の旗)」をクリックすると処理を開始します。
- 暗いところ(黒い布をかぶせる)では、接続されている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 | 追加 |
カーボン抵抗 | 1/4W 470Ω | 1 | |
カーボン抵抗 | 1/4W 2.0KΩ | 1 | |
発光ダイオード(LED) | 赤色 | 1 | |
タクトスイッチ | 6x6x4.3mm | 1 | |
トランジスタ(NPN) | S8050 | 1 | |
電子ブザー | HYDZ | 1 | |
ジャンパーワイヤー | オスピン ー オスピン | 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 | 追加 |
カーボン抵抗 | 1/4W 470Ω | 2 | |
カーボン抵抗 | 1/4W 47KΩ | 1 | |
発光ダイオード(LED) | 赤色 | 1 | |
発光ダイオード(LED) | 緑色 | 1 | |
ジャンパーワイヤー | オスピン ー オスピン | 7 | |
ジャンパーワイヤー(20Pジャンパー線) | オスピン ー メスピン | 3 | ※注 |
磁石 | ボタン状の小さい物 | 1 | |
段ボール箱 | 任意 | 1 | |
※注: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 | |
カーボン抵抗 | 1/4W 470Ω | 2 | |
カーボン抵抗 | 1/4W 47KΩ | 2 | |
カーボン抵抗 | 1/4W 10KΩ | 2 | |
カーボン抵抗 | 1/4W 220Ω | 1 | |
カーボン抵抗 | 1/4W 100Ω | 1 | |
発光ダイオード(LED) | 赤色 | 1 | |
整流用ダイオード | 1N4007 | 1 | |
DCモーター | 130型 | 1 | |
小型ファンブレード | 水色 | 1 | |
トランジスタ(NPN) | S8050 | 1 | |
トランジスタ(NPN) | 2SC2655L-Y-T9N-B | 1 | 追加 |
ジャンパーワイヤー | オスピン ー オスピン | 15 | |
テストリード | 5色10本 (10本) 赤、黒、緑を使用 | 3 | 追加 |
ICクリップテストリードS両端 | TLA-101(6色 6本) 赤を使用 | 1 | 追加 |
電池ボックス 単3×2本 リード線・スイッチ付 | BH-321-1AS | 1 | 追加 |
電池 | 単三電池 | 2 | 追加 |
ブレッドボード上で配線します。
「S8050」と「2SC2655」は同じNPN型トランジスタのですが、ベース(B)、エミッタ(E)、コレクタ(C)のピン配置が違いますので、配線する時は注意が必要です。
「サーミスタ」は熱(thermal)と抵抗器(resistor)の合成語で、温度により抵抗値が変化する半導体抵抗器の一種です。
今回使った「3950」はNTCサーミスタで-40℃~200℃の間の温度に対応しており、25℃近辺の特性は、次のようになっています。
温 度(℃) | 抵抗値(KΩ) | 備 考 |
---|---|---|
20 | 12.47 | |
21 | 11.92 | |
22 | 11.41 | |
23 | 10.91 | |
24 | 10.45 | |
25 | 10.00 | |
26 | 9.575 | |
27 | 9.170 | |
28 | 8.784 | |
29 | 8.416 | |
30 | 8.064 | |
31 | 7.730 | |
32 | 7.410 | |
33 | 7.106 | |
34 | 6.815 | |
35 | 6.538 |
オブジェクトの設定
- Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。
- 左下の「拡張機能を追加」をクリックして、「Raspberry Pi GPIO」を追加します。
スプライト1(ネコ)の処理
コードは「スプライト1(ネコ)」のコードエリアに作成します。
温度が35℃位になったの時の処理指で「サーミスタ」を押さえて35℃位(体温)になった時、「赤いLED」が点灯し、モーターが回転します。
- 「サーミスタ」の温度が上がり抵抗値が下がると、GPIOの入力がHighになり処理を開始します。
- 「赤いLED」が点灯し、モーターが回転します。
「サーミスタ」から指を離して35℃位(体温)を下回った時、「赤いLED」が消灯し、モーターが停止します。
- 「サーミスタ」の温度が下がり抵抗値が上がると、GPIOの入力がLowになり処理を開始します。
- 「赤いLED」が消灯し、モーターが停止します。
指で「サーミスタ」を押さえると「赤いLED」が点灯し、モーターが回転します。
指を離すと「赤いLED」が消灯し、モーターが停止します。
まとめ
Raspberry Pi4(Raspberry Pi4 ModelB 4GB)のGPIOピンに、光を感知する「フォトレジスタ」、人の動きを感知する「受動赤外線センサ」、磁気を感知する「磁気センサ」、そして熱を感知する「サーミスタ」の基本的な使い方を学びました。
センサからのアナログ出力をデジタル化して、Raspberry Pi4で処理させるのが一般的ですが、Scratch3.0の標準「拡張機能」では実験することができませんでした。
今後は、別のプログラミングを使って、センサの処理を行っていきます。