今回はセンサー出力をアナログデータとして取り込む例を紹介。ただしRaspberry Pi 2 Model BにはA/D変換機能がないので、I2C対応の温度センサーを使用する。
前回は、Raspberry Pi 2 Model BにLEDとスイッチを接続して、それを制御する方法を紹介した。今回はアナログ入力を取り扱う例を取り上げる。
前回は、Raspberry Pi 2 Model B(以下Raspberry Pi)と接続したLED出力もスイッチ入力も、オンかオフかのデジタルデータとして取り扱った。だが、現実のデバイスではデジタルではなく、アナログ値を扱うことも少なくない。
例えば温度や湿度、圧力(気圧)、光量、音量などを測定するセンサーは、通常は結果をアナログの値(電圧や電流)や抵抗値などとして返すようになっている。コンピューターで取り扱うためには、何らかの方法でこれらのアナログ値をデジタルの値に変換する、A/D変換(Analog to Digital変換)が必要だ。
残念ながらRaspberry Piは標準ではA/D変換機能を持っておらず、アナログデータを利用したい場合は何らかの外付けのデバイスや部品が必要となる。Raspberry PiでA/D変換を行うにはいくつか方法があるが、今回は「I2C(Inter-Integrated Circuit)」(「アイ・スクエア・シー」もしくは「アイ・ツー・シー」と読む)という、シリアル伝送デバイスを使う方法を紹介する(これ以外にも、SPIや1 Wire、UARTなどのシリアル通信インターフェースが利用できる)。
I2Cは、電子機器の内部で使うための安価なシリアル通信技術であり、速度はあまり速くないが(せいぜい数Mbit/s)、センサーの情報をやりとりしたり、複数の回路基板間で通信したりといった用途には向いている。I2Cはバス構造になっており、1つのバスに複数のデバイスを接続して通信できる。各デバイスには7bitのアドレスが付いているので、1つのI2Cバスには最大で100程度のデバイスが接続できる。バスといっても(電源とGNDを除くと)クロック線とデータ線の2本だけなので、システムの構成も非常に簡素である。
I2Cに対応したセンサーやデバイスは、通常は外付けの抵抗や部品などを追加することなく、I2Cバスに接続するだけですぐに利用できるものが多い。今回はI2C対応の温度センサーIC「ADT7410」を接続して室温を測定してみよう。といってもICチップを直接Raspberry Pi 2 Model Bに接続するのは困難なので、ブレッドボードで簡単に実験できるようにした製品を利用する。
ADT7410やI2Cに関する説明はここでは省略するので、以下のサイトを参照していただきたい。特別な外付け部品や校正作業などは不要で、I2Cバス経由でADT7410にアクセスするだけで、摂氏で表現した温度データが16bitの精度(整数部8bit、小数部7bit)ですぐに得られる。測定可能な温度範囲は−40〜+105℃である(あまりにも低温/高温だと、Raspberry Pi 2 Model B自身が動かなくなるだろうが)。
接続方法は簡単で、Raspberry Pi 2 Model BのI2Cバス(SDAとSCLピン)に、ADT7410のSDAとSCLピンを接続するだけである。これ以外に3.3Vの電源とGNDも接続する。
供給する電源は使用するデバイスによって異なるが(使用する部品のデータシートなどを参照のこと)、ADT7410の場合は5Vと3.3Vのいずれでもよい。
実際にブレッドボード上に配線したのが次の写真である。
Copyright© Digital Advantage Corp. All Rights Reserved.