「HAL」で利用している当サイト推奨回路~ SOCKET SERVER 'HAL'

ソケットサーバー「HAL」を使うと、ちょっとした電子回路と少しのプログラムだけで様々な事ができるようになります。

このコーナーでは、当サイトが常時稼働させている 2016/08/18 現在の電子回路をご紹介します。常時稼働させており比較的安定していると思われる回路です。

おススメ!記事
Raspberry Pi 用「HAL」で、
カップラーメン・タイマーを作ってみよう!
ラズパイDIYの決定版! ソケットサーバー「HAL」をご紹介します。

当サイトで利用している回路

ソケットサーバー「HAL」を使うと、ちょっとした電子回路と少しのプログラムだけで様々な事ができるようになります。

このコーナーでは、当サイトが常時稼働させている 2016/08/18 現在の電子回路をご紹介します。

小さめのブレッドボード 1 枚で組み立ててありますが、

  • 赤外線リモコン信号受信
  • 赤外線リモコン信号送信
  • 室内温度計
  • 明るさセンサー
  • 人感センサー
  • ボリュームコントロール

が接続されていて、Raspberry Pi には他に USB 接続してあるマイクと、アナログ端子に接続してあるスピーカーがあります。

当サイトの回路

構築が簡単であり、常時稼働させていて安全性と安定性がある回路です。特に、大電流が流れて部品を壊してしまったり発熱を起こしたりしないよう配慮しました。もし今後、何か問題点や改良した方が良い点が判明した場合は、このページで告知致します。

この回路ですと、スピーカーとマイク、半固定抵抗のダイヤルと設置金具、及び Raspberry Pi 本体諸々を除くと、全く部品ゼロからでも 4000 円を大きく下回ります。近くに電子部品屋さんがあれば 2000 円代で済むでしょう。(温度センサーモジュールは 4 箇所のハンダ付けが必要なので、ハンダ付けに関する費用が別にかかります)

電気代は通常の利用なら月 50 円くらいかと思います。

なお、一般的なブレッドボードでは電子部品と回路が点で接触するタイプの物が多く、その一点に電流が集中するためそこから発熱しやすくなります。ですから、熱がこもりやすい場所での使用は避け、動作が確認できたらユニバーサル基板(ブレッドボードと同じ配列のハンダ付けできる基盤)などに回路を移し替えるなどしてください。

ユニバーサル基板とはこんな感じの基盤です

ブレッドボード互換ユニバーサル基板 UB-BRD01|サンハヤト

ブレッドボード配線図

実際にどのように接続を行っているか、ブレッドボードを上から見た図です。

当サイトのブレッドボード図

ブレッドボードはこんな感じの 400 穴タイプです。電源が上下で2系統あって、部品を配置する部分が、5 ✕ 30 の 150 穴が上下に 2 列有るタイプで、きっちりと納まるようになっています。

ブレッドボード BB-801(秋月電子通商)200円

ブレッドボード EIC-801(秋月電子通商)270円

Amazon

同等の製品はいくつもあって、当サイトでは何枚か買って使っています。Amazon レビューを見ると安いだけあって品質に少々バラつきがあるようにも見えますが“これは使えない”という事は今までありませんでした。

ジャンパワイヤ―

ジャンパワイヤ―は、Raspberry Pi とブレッドボードを繋ぐための少し長めのメス-オスが一束、後はブレッドボード上で配線を行うためのオス-オスの短めのジャンパワイヤ―が一束有ると良いでしょう。

ブレッドボード・ジャンパーコード(オス-オス)(10cm)20本セット(秋月電子通商)180円

ブレッドボード・ジャンパーワイヤ EIC-J-L(秋月電子通商)400円

ブレッドボード・ジャンパーコード(オス-メス) 15cm(赤) (10本入)(秋月電子通商)220円

メス-オスの長いものは、上記のようなバラよりも以下の様な束になっている物を割いて使うほうがずっとオススメです。特に、このコーナーでも紹介する A/D コンバーター を使う際に束になっていると、とても取り回しが楽です。

Amazon

また、15cm というのは微妙に短いため、2 本を繋いで使うことが多くなります。ですから 15cm のものは2、3 束(20~30本)合ったほうが良いでしょう。

あとタックシールです。写真でジャンパワイヤーに貼ってあるのがわかると思いますが、結構便利です。

コクヨ タックインデックス

こんな感じのです。コンビニや事務キチで買って下さい。

部品

部品は次のようになります。(価格は 2016/08/18現在の価格)

赤外線LED受光モジュール部分

まず、赤外線リモコン信号受光部です。

赤外線リモコン信号受光部

当サイトで現在使っている受光モジュールは

  • PL-IRM2161-XD1

です。秋月電子通商で1年半前に購入したのですが、現在は販売されていないようです。似た製品で良さそうなものは

赤外線リモコン受信モジュールPL-IRM1261-C438(秋月電子通商)100円

かと思います。当サイトの回路は 2161 で、こちらは 1261 と、とても良く似た型番がついています。どちらも2.4V~5Vで動作するので、Raspberry Pi の GPIO の電圧である 3.3V で動作させることができます。

データシート を見ると、

サンプル回路

こんな感じで Vccと3.3Vの間に 130~200Ω 程度の抵抗を置き、また、ノイズ除去のため VccとGND の間に 4.7μF のコンデンサを挟むと良いようです。(当サイトの回路では別の部品を使っているため 1.0μF のコンデンサを挟んでいます)

回路図はこんな感じになるでしょう。

PL-IRM1261-C438用回路

130 Ωという数字は、仮に 200Ω の抵抗が 5V を前提にしていた場合、オームの法則から 5V ÷ 200Ω = 1/40A = 25mA の電流が流れる事になるので、その電流を 3.3V で流すとしたら 3.3V ÷ 0.025A = 132 Ω という計算です。

仕様書を見ると、このモジュール(PL-IRM1261-C438)の内部には 40KΩ もの抵抗があるのでVCC前の抵抗はそれほど厳密でなくても良いのではないかと思います。

積層セラミックコンデンサー4.7μF25V±10%(秋月電子通商)20円

カーボン抵抗(炭素皮膜抵抗) 1/4W 200Ω (100本入)(秋月電子通商)100円

カーボン抵抗の方は 100 本入りです。お店で 1 本だけ買うと 4 円くらいするかと思いますから束で買ったら随分お得ではあるんですが、「Raspberry Pi でちょっと電子工作をやってみよう」という人が、同じ値の抵抗を 100 本も持っていても、絶対に使いきれません。

ですから、できれば抵抗に関しては、近くで入手できるお店を見つけたほうが良いと思います。あるいは、仲間を見つけて分け合いましょう。

ステータス確認用LED回路

以下の赤色部分です。

LED回路

ソケットサーバー「HAL」の内部の状態を簡単に把握するため、緑と赤の 2 つの LED を配置しています。ステータス確認ということもあって光りさえすれば良いため、抵抗は手元にあった 330Ω を使っただけです。

LED の型番は失念してしまいましたが、本当になんでも良いです。正常時に緑、異常時に赤にしているので、以下の様な物で良いと思います。

高輝度5mm赤色LED 7cd60度 (10個入)120円

超高輝度5mm緑色LED OSG58A5111A (10個入)200円

それぞれ 10 個入りですが、LED は誤って大電流を流すと「ぷしゅぅ」という悲しい音を立てて内部が焼き切れます。ですから、多少の予備を考えておいたほうが良いと思います。

また、本当に大きな電流を流すと LED でも破裂します。ですから、電気を通すときにはあまり顔を近づけず、できればメガネやゴーグルをしましょう。

上記赤色 LED は 定格電流50mA、緑色 LED は 30mA のようです。

この LED は Rapberry Pi の GPIO に繋ぐため、電圧は 3.3V です。そこに 30mA 以下の電流ですから余裕を持って10mAくらい流すとすると、3.3V ÷ 0.01A = 330Ω となるわけです。

緑色 LED の定格電流が 30 mA なので、この場合、110Ω 以上の抵抗であれば LED は大丈夫そうですから、200Ω(16.5mA流れる)のものでも大丈夫なはずなので 赤外線LED受光モジュール部分 で使った 200Ω の抵抗を使うのも良いでしょう。

または、赤外線LED受光モジュール部分 で、160Ω の抵抗を使い、この LED の前ではそれを 2 つ直列に繋げて 320Ω にしても大丈夫です。ただし、ブレッドボードではブロックのうち並んでいる 5 つの穴は内部で繋がっているため、抵抗の配置には一捻りが必要になります。

なお、後述しますが Raspberry Pi の GPIO は 1 本あたりに流せる電流量が決められているため、恐らく、抵抗を全く挟まなくても 16mA 以上は流れないはずです(GPIO からは。3.3V や 5V からは大電流が流せるので LED の回路には抵抗を挟むクセをつけましょう)。

赤外線信号送信部分

以下の赤色部分です。

赤外線信号送信回路図

赤外線 LED はこちらです。

5mm赤外線LED OSI5LA5113A (10個入)100円

こちらの定格電流は 100mA ですが、赤外線リモコンで使われるパルス信号(極めて短い感覚で明滅を繰り返す)では 1000mA です。

このような大電流を流すには、GPIO 端子からの給電では無理があります。Raspberry Pi の GPIO には電流制限が設けられていて、最大でも 16mA です。これではせっかく赤外線信号を送信しても離れた場所にある電化製品まで届きません。

参考)Raspberry Pi の Drive Strength を変更して少し大きめの電流を流す

そこで、大電流が流せる 5V を利用します。

まず、5V と 赤外線 LED のアノードの間に 10Ω 抵抗を挟みます。これで、LED に流れる最大電流は オームの法則により、5V ÷ 10Ω = 500mA になります。

勿論、これだけの電流が常に LED に流れ続けると破裂します。

赤外線リモコンでは、LED を極めて短い間隔で明滅させパルス信号にすることで家電を制御しますから、この明滅をコントロールするため、GPIO から HIGH か LOW を出力することで、電流を流したり切ったりします。

この、流したり切ったりを切り替えるスイッチとして、トランジスタを使います。

トランジスタ 2SC2120-Y 35V800mA(20個入)200円

35V耐圧800mA まで流せます。上記は 20 個で 1 パックです。

2SC2120 は NPN 型のトランジスタで、ベースに電流が流れると、その電流量に応じてコレクタからエミッタに向けて増幅された電気が流れます。ベースの電流が止まると、同様にコレクタからエミッタへの電流も止まります。

ちなみにトランジスタですが、最後の Y や GR といった記号は品質表示(ランク)です。トランジスタはベースに流れた電流の何倍の電流をコレクタ→エミッタ間に流せるかという保証を、以下のように規定しています。

O(オレンジ)70~140倍

Y(イエロー)120~240倍

GR(グリーン)200~400倍

BL(ブルー)350~700倍

GPIO(3.3V) とトランジスタのベースの間には 240Ω の抵抗を挟んであり、2SC2120のベース・エミッタ間飽和電圧は 仕様書 によると 0.5~0.8V となっているため、

(3.3 - 0.8)V ÷ 240Ω = 10mA

程度の電流がベースに流れる事になります。

GPIO 全体で流せる電流が 50mA と決まっているため、実際に GPIO 1 本から流れる電流がどの程度になるかは状況によるのですが、仮に最低の 2mA しか流せなかったとしても、Y ランクの2SC2120であれば 240~480mA 程度がコレクタ→エミッタに流れるわけです。

ですから Vcc の先にある 10Ω の抵抗と、トランジスタのベース前にある 240 Ωの抵抗で、240~500mA の電流が赤外線 LED に流れるわけです。

トランジスタのエミッタからベースに向けてもう一本 240Ω の抵抗を挟んであるのは「漏れ電流(リーク電流)」を GND に逃がすために設置しています。メカニズムについては 「デジタルトランジスタ(デジトラ)の基本的な考え方を教えてください。|ROHM」 の「抵抗R2について」に説明があります。

トランジスタが誤作動してスイッチが入ってしまうのを防ぐ抵抗ですが、トランジスタの利用では頻繁に使われていて、基本的な考え方としては GPIO とベースの間に挟んである抵抗と同じ値の抵抗を、エミッタからベースの間にも挟むだけです。

アナログ/デジタル コンバーター部分

以下の赤色部分です。

A/Dコンバーター回路

ここで使用している A/D コンバーターは MCP3208-CI/P です。

12ビット8ch ADコンバータ MCP3208-CI/P(秋月電子通商)320円

12 bit の分解能で 4096 段階の アナログ→デジタル変換ができます。通信は SPI 通信を使って行います。ですから、Raspberry Pi の設定で SPI 通信を有効にして使う必要があります。

半月の切り欠きを上(又は円形のくぼみを左上)にして、右側半分の足がすべて Vcc と GND 及び、SPI 通信用の GPIO につながります。

反対に左側の足は全て入力用です。つまり、この IC 1 つで 8 つまでのアナログ機器の値を計測できるわけです。

動作電圧は 2.7~5.5V、最大定格電圧 7.0V なので、Raspberry Pi の基本である 3.3V で動作しますし、5V から繋がっている回路の入力を受けることもできます。

明るさセンサー

以下の赤色部分です。

明るさセンサー回路図

ここで使っている部品は 2 つ、CdS セルと抵抗です。

CdSセル 5mmタイプ(秋月電子通商)30円

カーボン抵抗(炭素皮膜抵抗) 1/6W10kΩ (100本入)(秋月電子通商)100円

CdS セルは明るさによって抵抗値が変化し、暗いと抵抗が大きく、明るいほど抵抗が小さくなります。CdS セルと GND を 10KΩ の抵抗で繋いでいて、CdS セルとこの 10KΩ の抵抗の間が A/D コンバーターの入力に繋がっていますが、CdS セルの抵抗が変化することで分圧がされます。

参考)分圧と分流の検証

上記参考ページの「分圧」の図を見ていただくとわかりますが、この CdS セルでは明るい時(10Lux時)には 10~20KΩ の抵抗値になるので、

  • 分圧後 : 3.3V ✕ (10KΩ ÷(10KΩ + 10KΩ)) = 1.65V

暗い時は 1MΩ なので

  • 分圧後 : 3.3V ✕ (10KΩ ÷(1000KΩ + 10KΩ)) = 0.03V

が A/D コンバーターの入力端子にかかります。この電圧の変化を読み取るわけです。

明るさの単位 Lux については以下を参照して下さい。

参考)照度と明るさの目安

分圧用の抵抗を寸法の小さい 1/6W 耐性抵抗にしたのは手元にあったから、というのもありますが、ブレッドボードの横 2 列の橋渡しとして 1/4W 耐性の物では大き過ぎたからです。

どうせ 3.3V ですし、CdS セル自体の抵抗が 明るい時でも 10KΩ(暗い時は 1MΩ)もあるので流れる電流も微々たる物です。1/6W 耐性で十分でしょう。

この CdS セルの先を、A/D コンバーターの CH7 に繋いでいます。

ボリューム

以下の赤色部分です。

固定抵抗ボリューム回路

用いている半固定抵抗は

RV24シリーズ 炭素系可変抵抗器 (ポテンショメータ 通産機器用)(モノタロウ)479円

です。通信機器用ということで、電子回路用の物とくらべてかなり寸法の大きな抵抗です。なにしろ、音声ボリュームとして利用するので、ブレッドボードに配置するような小さな物だと使い勝手が悪すぎますからこの製品を選びました。

B303 ということで、0~30KΩ までの可変です。(30 ✕ (10 の 3 乗))

半固定抵抗には A カーブ と B カーブがあって、B カーブはほぼ直線的に抵抗値が変化しますが、A カーブは二次曲線のようなカーブを描きます。

参考)可変抵抗のBカーブ|始める電子回路

B カーブでは急に音が大きくなるように感じられるそうで、オーディオなどでは A カーブの物が使われる事が多いそうです。当サイトで B カーブの抵抗を選んだのは「ものは試し」という感じです。

実際、当サイトの回路では音量をプログラムで制御しているため、どちらのカーブでもそれに合った補正をかければ良いだけなので、あまり気にはしていませんでした。

問題なのは、この半固定抵抗を備え付ける金具とダイヤルです。これらはネットで探して通販というのはなかなか大変そうです。できれば、近くの無線機器屋さんやジャンクショップ等に足を運んで探すのが良いかと思います。

人感センサー

以下の赤色部分です。

人感センサー

こちらも、当サイトで使っているモジュールは既に販売が終了していました。ですが、類似品はたくさんあるので以下の物等で良いでしょう。

焦電型赤外線センサーモジュール(焦電人感センサ)(秋月電子通商)400円

Amazon

こうした人感センサーモジュールは大抵駆動電圧として 5V 以上で設計されていて、Vcc を 5V に繋がないと上手く動作してくれない場合が多いようです。

Vout については直接 GPIO に繋ぐ場合には(モジュール内の回路にもよりますが)分圧して 3.3V 以下にする必要があるかもしれません。

しかし、当サイトの回路の場合は MCP3208 で値を取得しているので、7V 耐圧ですから分圧せずにそのまま入力しています。

温度センサー

以下の赤色部分です。

温度センサー回路図

当サイトで使っている温度センサーモジュールは以下です。

ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール(秋月電子通商)500円

モジュールとして必要な部品は全部ハンダ付けされていますが、ブレッドボード等に繋ぐためのピンヘッダだけは自分でハンダ付けしなければなりません。(4箇所)

通信には I2C(アイ・スクウェア・シー)という規格を使うため、Raspberry Pi で I2C を有効にする必要があります。

使い方は 室内温度の測定(ADT7410使用モジュールとPHP) を参照して下さい。

まとめ

このような回路に合わせて USB マイクやスピーカーを繋ぐことで、かなり色々な事が出来るようになります。

将来的にはここにサーボモーターを接続しようと思っています。

それで試しに圧電スピーカーを繋いで ハードウェア PWM 信号を出力してみたところ、アナログ端子に繋いでいるスピーカーから音が出なくなることがわかりました。

HDMI 端子からの音声出力は音の立ち上がりが悪く、音声ファイルの最初の0.5秒くらいが出力されないため、USB スピーカーを用いるのが良いかもしれません。

これについては USB スピーカー を入手してから検証してみたいと思います。


ご購入

もう少々お待ち下さい。

体験版

version 1.5 から、IPアドレス制限が無くなり、ライセンス制になりました。ライセンスされていない場合、起動後30時間後に自動的に HAL を終了します。

体験版のインストーラー・スクリプトをダウンロード インストーラー・スクリプト
SHA-1: dd2a390b4f0f8c15301eaee23cd92bd5e831da91
※インストール方法については ソケットサーバー「HAL」の概要 (version 2.0対応版)~導入方法 を御覧ください。

体験版パッケージ
HAL_trial_2_0.tar.gz | version 2.0 | SHA-1: ce31802a5b423a9b0d73721a3d43e0585b009a6f
試用期限 2017/1/31 まで

この記事へのコメント

※現在コメントはMarkdown記法が強制です。>>Markdown の書き方


この記事に返信

このコメントに返信