ラズパイでSPI通信とADコンバーター(MCP3002)で半固定ボリュームの値を読む(1)
こんばんは。國松です。
今回はADコンバーターを使って半固定ボリュームの値を読んでいきたいと思います。
この説明だけだと何のっこっちゃなので回路を組む前にもう少し説明したいと思います。キーワードはデジタルとアナログ、AD変換、半固定ボリューム、SPI通信です。
参考書籍
カラー図解 最新 Raspberry Piで学ぶ電子工作
やさしくはじめるラズベリー・パイ 電子工作でガジェット&簡易ロボットを作ってみよう【クジラ飛行机(著)】
ラズパイのGPIO
ラズパイのGPIOはデジタルのデータしか扱えません。しかし様々なセンサー部品が出力するのはアナログのデータです。ラズパイでアナログのデータを読むにはADコンバーターを使用します。ADコンバーターとは(Analog toDigital)変換器です。
ちなみにラズパイと並んで電子工作入門などでよく名前のあがるArduino UnoにはADコンバータが内蔵されているので直接アナログ値を読むことができます。
AD変換とは
アナログ(連続的な値)をデジタル(離散的な値に)変換することです。変換の詳しい方法などは以下のサイトなどを参考にして下さい。
参考サイト
ミームス(MEMEs)のサポートページ
AD変換とは?仕組みや原理についてわかりやすく説明
半固定ボリューム
半固定ボリュームは可変抵抗の1つで抵抗の大きさを変えられるものです。つまみを回すこで抵抗の大きさを調整できます。本来は『一度抵抗値を調整したらその後は値を変更しない』用途で用いられることが多いため半固定と言います。
参考サイト
いざなぎ電子キット(半固定抵抗の使い方)
ADコンバーターとラズパイの通信方式
ADコンバーターとラズパイの通信方式はADコンバーターの種類によって決まっています。今回使用するMCP3002はSPI通信を利用します。
SPI 通信とは
SPI(Serial Peripheral Interface)とはモトローラ社が提唱した同期式シリアル通信の規格です。4本(MOSI, MISO, SCLK, CE0/CE1)の信号線で通信します。通信速度が速いことが特徴です。
名称 | 機能 | 使用するGPIOピン |
MOSI(Master-Out Slave-In の略) | マスター側からスレーブ側にデータを送信 | GPIO10(MOSI) |
MISO(Master-In Slave-Outの略) | スレーブ側からマスター側にデータを送信 | GPIO9(MISO) |
SCLK(Serial Clockの略) | データ転送のタイミングを制御 | GPIO11(SLK) |
CE0/CE1*1 | マスターとスレーブを決定する信号を送信 | GPIO8/GPIO7 |
*1本来はマスターとスレーブを決定する信号線だが液晶やセンサー類などスレーブにしかなりえないデバイスの場合はそのデータをどのデバイスが受け取るかを決めるための信号線となっている場合が多い |
ラズパイのSPIを有効にする
「アプリケーションメニュー」⇒「設定」⇒「Raspberry Piの設定」と進み「インターフェイス」のタブを開きSPIの項目の有効にチェックを入れる。
ラズパイを再起動する。
SPIが有効になっているかの確認。ターミナルに以下のコマンドを入力。
1 | ls -la /dev/spi* |
写真のようにSPIデバイスを確認できればOKです。
SPI通信も利用できるようになりました。今回はここまでにしたいと思います。次回はAD変換された値を読む例として半固定ボリュームを用いた回路を作成して動かしていきたいと思います。