アナログ値を測る(ADコンバータ使用)(WebIOPi利用)

解説

Raspberry Pi には、アナログ入力はないので、そのままでは、アナログ値を測ることはできませんが、ADコンバータ(アナログ-デジタル変換器)を使用すれば、アナログ値を測ることができます。

ADコンバータ MCP3002 は、SPI通信によって、アナログ値を取得します。
ADコンバータ MCP3002 から、アナログ値を取得する場合、以下のデータを送信します。

「CH0」から取得する場合
0b01101000、0b00000000
「CH1」から取得する場合
0b01111000、0b00000000

※「0b~」は、2進数表現です。

各ビットの意味は以下です。

ADコンバータ MCP3002の分解能は 10ビット = 2^10 = 1024 です。
返ってくる値は、0 から 1023 で、0[V] から 3.3[V](Vdd/Vref の電圧) を表します。

部品表

部品名 数量 商品名 参考価格
ADコンバータ 1 10ビット2ch ADコンバータ MCP3002 200円
ボリューム 2 小型ボリューム 10KΩB 50円
LCDシールド 1 LCD (Liquid Crystal Display) に文字列を表示する(WebIOPi 利用)」の内容をシールド化したもの -
Raspberry Pi 1 Raspberry Pi 3 Model B 6,300円
ブレッドボード 1 EIC-801 250円
ジャンパーワイヤ 適量 ブレッドボード・ジャンパーコード(オス-オス)セット 100mm49個
150mm8個
200mm4個
250mm4個
のセット200円
ジャンパーワイヤ 適量 ジャンパーワイヤ(オス-メス) 10本300円

接続表

MCP3002側 Raspberry Pi側
ピン番号 ピン名称 ピン名称
1 ChipSelect SPIチップセレクト0
2 CH0 ボリューム1の真ん中の端子
3 CH1 ボリューム2の真ん中の端子
4 Vss GND
5 Din SPI MOSI
6 Dout SPI MISO
7 CLK SPI SCLK
8 Vdd/Vref 3.3V

接続例


※LCDシールドに関する接続は省略
 (LCDシールドは、GPIOの 6, 5, 22, 27, 17, 4 を使用)

WebIOPiのインストール

Raspberry Pi にWebIOPiをインストールしてない場合は、まず、WebIOPiをインストールします。

WebIOPiのインストール

SPI通信の有効化

SPI通信を有効化していない場合は、SPI通信の有効化が必要です。

SPI通信の有効化

スクリプトファイルの作成

「/home/pi/work/webiopi」フォルダに、「mcp3002.py」というファイル名で、以下の内容のスクリプトファイルを作成します。

WebIOPi サービスの設定の変更

WebIOPi のサービスを開始したときに、作成したスクリプトが実行されるように、WebIOPi サービスの設定を変更します。

WebIOPi サービスの設定は、「/etc/webiopi/config」ファイルに記述されています。

以下のコマンドを実行し、「/etc/webiopi/config」ファイルを開きます。

[SCRIPTS] セクションを探し、[SCRIPTS] セクションの「myscript =」に、作成したスクリプトファイルを指定します。

編集し終えたら、
Ctrl + O
で上書き保存し、
Ctrl + X
で nano を終了します。

実行

WebIOPi のサービスを開始します。

CH0、CH1に流れる電圧に対応する値がLCDに表示されます。
値は、0 から 1023 で、0[V] から 3.3[V](Vdd/Vref の電圧) を表します。

WebIOPi のサービスを終了するには、以下のコマンドを実行します。

ダウンロード

サンプルスクリプトファイル