Raspberry Piで電子工作 その2

電流、抵抗、電圧の意味がわからず、アキバのパーツ屋で買物すらできなかった私。勉強のためにお金をつぎ込んだ結果、だんだんと意味がわかってきました。

前回のブログ「ド素人がRaspberry Piで電子工作を始める」では、Raspberry Pi (以下ラズベリー)を知ったきっかけとLED点灯について紹介しました。今回はLED以外にどのようなデバイスが存在するのか、簡単に紹介します。

ダイオード [Wikipedia]

これまでは「ダイオード」と言えば発光ダイオード(LED)の事を言っているのだろうと思っていました。ダイオードとは、電気を一方向にしか流さないデバイスのことで、LEDはその中の1つの種類にすぎないのです。他にも電気を流すだけのダイオードや、光を当てると電気を流すもの等があるようです。

ダイオード

ダイオード

左下から順番に、

  • LEDランプ(5mm)
  • LEDランプ(3mm)
  • フルカラーLEDランプ(5mm)
  • 赤外線LEDランプ(3mm)
  • 紫外線LEDランプ(3mm)
  • フォトダイオード
  • 7セグメントLED (後方列の数字状のLED)

LEDランプ

電気を光に変換するダイオードです。単色LEDは赤(プラスチックの色)を発光しますが、フルカラーLEDは赤、緑、青を好きな割合で混ぜて発光できます。フルカラーLEDをいくつも並べると大型スクリーンが作れます。

テレビに映るボウリングのスコア表をよく見ると・・・

ボウリングのスコア表

ボウリングのスコア表

ボウリング

ボウリング

当たり!・・・なんですけど、ボールの上にあるスコアボードを見てください。各ドットがLEDランプです。

数字のLEDは「7セグメントLED」です。

ある1セグメントに通電した結果

ある1セグメントに通電した結果

名前の通り、1つの数字が7個のLEDからできており、点灯させたいセグメントに通電すると点灯します。上の写真は、ある1セグメント(左1セグメント、右1セグメント)に通電した結果です。

フォトダイオードはこれまでとは逆で、光を電気に変換するものです。受光した光の色や強さを電気に変換できます。写真のフォトダイオードは浜松ホトニクスのS6775という機種です。このフォトダイオードは放射線も電気に変換できるようです。そもそも放射線は目に見えない「光」のようです。そして我々が普段使う「光」という言葉は電磁波の中のほんの一部である「可視光線」の事だそうです。電磁波は波長の大きい順に、電波、赤外線、可視光線(赤、緑、青)、紫外線、放射線 (X線など)と定義されているそうです。(Wikipedia 可視光線)

S6775は320~1,100ナノメートルの波長を電気に変換できると仕様書に書かれています。しかし、X線は0.001ナノメートル~10ナノメートルの電磁波であり、ガンマ線は10ピコメートル(0.01ナノメートル)未満の電磁波ですので、320~1,100ナノメートルの範囲には入りません。それでもS6775を使った放射線測定機が売られていることを考えると、仕様外ではあるものの反応しないこともない、という事だと思います。これを裏付ける記事がCQ ham radio QEX Japan No.1の53ページに書かれていました。

一般的なPINフォト・ダイオードは、赤外線や可視光線を高感度に検出するためのセンサです。それに加え、ガンマ線の検出においても若干の感度を有しています。ただ、感度を有しているとはいっても、本来の用途外の帯域で使用するため、その感度は低くなってしまいます。この低い感度を補いながら、PINフォト・ダイオードを放射線(ガンマ線)の検出器として転用します。

液晶ディスプレイ [Wikipedia]

SC1602互換液晶ディスプレイ

SC1602互換液晶ディスプレイ

文字を表示するデバイスです。身の回りに溢れてますね。特にパソコンの画面出力機器でおなじみです。私にとっては、もはや電子機器というよりも紙と鉛筆の「紙」に相当するものです。このサイズにもなると表示領域が限られているため、「紙」としては使えませんが、本来の機能である「電気を文字へ変換する」ためには必須のデバイスです。

私が目にした液晶ディスプレイは全てSC1602互換と書かれていました。SC1602とは、台湾のSUNLIKE社が開発した液晶ディスプレイです。互換というのは、制御方法がSC1602と同じという意味です。他のサイズのSC1602互換液晶ディスプレイに差し替えても、そのまま動作させることができます。日本の電子工作においてSC1602はデファクトスタンダードのようです。私はSC1602互換ではない液晶ディスプレイをまだ見たことがありません。

SC1602を制御するには、GPIOで電圧を加減します。電圧を加減する手順(プロトコル)については、多くの資料がありますので検索してみてください。私は日経Linux 2013年3月号を参考にしました。この本では手順の一部しか扱いませんが、それでも文字を出すことが可能です。

詳しくは「Raspberry PiでSC1602とSC2004を制御する」を見てください。

スピーカー [Wikipedia]

スピーカー

スピーカー

もはや説明不要ですね。私はスピーカーも電子機器だとは考えたこともありませんでした。そしてどうやってスピーカーが音を出すのかすら知りません。つなげるだけで使えるからです。それでもきっと生きていけるのですが、特に音楽が好きな人はスピーカーの原理を知っていると得だと思います。

音を出すには、後に述べる「パルス」を加えます。「ラ」を出すには、

  • 1136ミリ秒(0.001136秒)間だけ電圧を加える
  • 1136ミリ秒(0.001136秒)間だけ電圧を下げる

という作業を440回繰り返します。もし音楽に詳しい人であれば、この440という数に覚えがあるはずです。これは「ラ」の周波数(Hz)です。「1秒間にON/OFFのセットが何回あるのか」というのが周波数の定義です。厳密に言うと、周波数は音の単位ではありません。「ある2つの事象が一定間隔で切り替わる」という現象を示す単位にHzを使うのです。(脱線するので詳しくは書きませんが、dBも音の単位ではありません。) なお、1136ミリ秒という数字は、1(秒) / 440(回) / 2で求まります。

スピーカーにはコイルがあります。このコイルに電気が流れるとコイルが動き、それがコーン(スピーカーの振動部分)に伝わり、空気を振動させます。先ほどの手順では、空気が440回振動することになるのですが、我々はそれを「ラ」と定義したのです。

ちなみに1136ミリ秒を半分の568ミリ秒に減らし、440回を880回に増やすと、1オクターブ高い「ラ」になります。また440回~880回の間に他の音を割り当てるのですが、割り当て数を12にし、等間隔(厳密に言うと等比間隔)でラ、ラ#、シ、ド、ド#、レ、レ#、ミ、ファ、ファ#、ソ、ソ#に割り当てる方法が現在では一般的です。この分け方の定義を「平均律」といいます。

平均律が全てではありません。各時代や各地域には異なる割り当て方が存在します。

マイク [Wikipedia]

マイク

マイク

これも説明不要ですね。他の機器と同じ撮影方法なのが面白くもあり、違和感もあるのですが、まさに「同じ土俵に乗っている」のであり、電気の性質を上手に利用した発明品なのです。

原理はスピーカーと同じようです。空気の振動をコイルに伝えると、コイルが電気を発生させます。それを電気信号としてGPIOで入力すればいいわけです。どうやるのか、まだよくわかっていませんが・・・。

ファン [Wikipedia]

CPUファン

CPUファン

電気を回転に変換します。扇風機でおなじみですね。写真のファンはパソコンに使われるCPUファンです。駆動するには、赤へ12Vの電圧を加え、黒をGNDへ接続するだけです。ラズベリーには3.3Vと5Vの電圧しかないので、そのままでは12Vを加えることができません。3.3Vや5Vを12Vに変換するにはDC-DCコンバーターという部品を使うのですが、電圧を上げたところでファンは回りませんでした。ファンを回すのに十分な電力がラズベリーから得られなかったためだと思います。

ラズベリーからファンを制御するには、前回のブログ「ド素人がRaspberry Piで電子工作を始める」の最後に書いたLED点灯回路と同じ方法が使えました。LEDはラズベリーの5Vにより点灯しましたが、これを12VのACアダプタに置き換えます。

ファンには他にも黄色と青の端子があります。黄色の端子は、回転数に応じた電圧を出力するようです。その電圧と回転数の関係は検証中です。青の端子は、回転数を変化させるためのものです。次に書いた「パルス」をかけることでファンの回転数を制御できます。こちらも検証中です。検索しても出て来ないんですよね。

サーボモーター [Wikipedia]

ファンと同じく、電気を回転に変換するものです。ただしファンのように回転しつづけるものではありません。ある角度へ腕を回転するためのものです。

サーボモーター

サーボモーター

写真の機器はMiniStudio IncのMiniS RB995です。よくテレビで見るような歩行ロボットは、サーボモーターをいくつも組み合わせて作られているようです。

腕を回転するとこうなります。

回転したサーボモーター

回転したサーボモーター

このように、サーボモーターは電圧が加わった時に角度を変えます。しかし、単に乾電池につなぐだけでは動作しません。動作させるには、

  • 1.5ミリ秒(0.0015秒)間だけ電圧を加える
  • 18.5ミリ秒だけ電圧を下げる (合計すると20ミリ秒になる)

という順序(?)で乾電池をつないだり外したりする必要があります。これは人間には不可能です(笑)。ラズベリーはこれができます。簡単に説明すると、

  • GPIOを出力モードに設定する
  • 電圧をHIGHへ設定する※
  • 1.5ミリ秒間スリープする
  • 電圧をLOWへ設定する
  • 18.5ミリ秒間スリープする
  • 回転が終わるまで※へ戻る (回転が終わったかどうかをラズベリーが知る手段がないので、1秒待つ事にしました)

というプログラムを実行すれば、サーボモーターを駆動できます。このような電圧の加え方をパルスを発生させるとか、パルスを加えるとか言います。パルスという言葉は聞いたことがありましたが、こういう事だったとは知りませんでした。

角度を変えるには、電圧HIGHとLOWの長さを増減します。RB995の仕様によると、「最大パルス範囲1.5±0.9ms」とあるので、0.6ミリ秒(スリープは19.4ミリ秒)から2.4ミリ秒(スリープは17.6ミリ秒)の間で電圧HIGHとLOWを加えます。すると、腕が反時計回りにカクッ、カクッ、と一定の角度で回転します。このようにパルス幅を変えることでデバイスを制御することを「パルス幅変調」 (PWM) と言います。これがCPUクーラーのPWM(青のケーブル)の意味です。

なお、このようにプログラムで制御する方法をソフトウェアPWMと言います。この方法だと正確なスリープができず、腕がプルプルと震えます。ラズベリーはハードウェアPWMもできるのですが、未検証です。

温度計

名前の通り、温度を測るデバイスです。

温度計

温度計

写真のチップはSTMicroelectronicsのSTTS751-0WB3Fです。この黒いチップはお米1粒ほどの大きさなのですが、それを基板にはんだ付けしました。拡大すると・・・

温度計拡大

温度計拡大

はんだが多かったり少なかったりしています。

計測結果はデジタルデータになるので、ラズベリーに保存させたり液晶ディスプレイに表示させたりできます。そんな事をしてどうするのか・・・ほんの一例ですが、ラズベリーが定期的に温度を測定し、結果によって他の機器をON/OFFさせるようにできます。

温度を測るには、

  • I2Cというプロトコルで通信する
  • STTS751に定義された仕様に基づきデータを取得する
  • データを変換する

という手順が必要ですが、スクリプトで簡単に動作できます。(初期状態ではi2cgetがインストールされていないのでエラーになります。インストール方法については検索してください。)

$ sudo i2cget -y 1 0x39 0x00 b

たったこれだけでラズベリーがI2C通信し、STTS751からデータを取得できます。ただし、返ってくる値が

0x1A

というように16進数なので、以下のようにデータを変換する必要がありますが・・・。

[表示] – [プログラム電卓]を選択する

16進を選択する

1Aをタイプする

電卓で温度計算1

電卓で温度計算1

10進を選択する

電卓で温度計算2

電卓で温度計算2

気温は26℃だということがわかります。

大気圧計

大気圧を測ります。

大気圧計

大気圧計

写真はFreescale SemiconductorのMPL115A2です。これも小さいですね。

拡大図

拡大図

結果はデジタルデータになります。大気圧がわかると天気が予想できるようになります。

ペルティエ素子 [Wikipedia]

ペルティエ素子

ペルティエ素子

電気が通ると、片面は熱くなり、反対面が冷えるデバイスです。私はとても不思議なものだと感心しました。これを使うと冷蔵庫や保温庫が作れます。むしろ、私は冷蔵庫を捨てる前に解体し、これを取り出しました。随分と前の話です。どうしても仕組みが知りたかったのです。

蛍光灯

蛍光灯

蛍光灯

蛍光灯がデバイスなのかはわかりませんが、日常生活に欠かせないので取り上げました。LEDとは異なり交流で動作することが前提になっていますし、電圧の加え方にコツがいります。私の行った大学では、1年生は物理の実験が必修でした。その実験の1つで蛍光灯の点灯と電圧の関係について実験し、レポートを出したのが懐かしいです。

ラズベリーから蛍光灯をON/OFFさせる場合、ラズベリー自身の出力で駆動させのではなく、リレーを使ってON/OFFさせます。

記録メディア

記録メディア

記録メディア

デジカメや携帯でおなじみです。記録メディア1つ1つに制御チップが内蔵されており、SPIというプロトコルで通信することができるので、記録メディアというよりもデバイスです。

ラズベリーはUSBポートがありますので、OSにカードリーダを認識させるだけでメディアを読み書きできます。でもあえてSPI経由で読み書きしてみるのも勉強になるかもしれません。

もし本記事に興味、ご関心があれば、ぜひ「ラズベリーと電子工作の記事一覧」を見てください。例えばこんな記事があります。

  • ド素人がRaspberry Piで電子工作を始める
    ラズベリーパイ財団が制作したたばこの箱サイズのパソコン「Raspberry Pi」は、私をパソコンから電気工学へ橋渡ししてくれる存在となりました。基盤やコネクタに群がるゾンビにしてしまったと言った方が正確かもしれませんが(笑)。
  • Raspberry Piで電子工作 その2
    電流、抵抗、電圧の意味がわからず、アキバのパーツ屋で買物すらできなかった私。勉強のためにお金をつぎ込んだ結果、だんだんと意味がわかってきました。
  • Raspberry Piでの電子工作にあたって購入した道具
    ラズベリーで電子工作を始めて4ヵ月が経ちました。勉強を進めるにあたり、本や電子パーツ、道具など、必要に応じて購入する必要がありました。今日は私がラズベリー以外に購入した道具を紹介します。

This post is also available in: 英語

コメントを残す

頂いたコメントは見逃さないようにメールでも送られるようになっています。