MCP3008 ADCでRaspberry Piにアナログセンサーを接続 - 配線、SPI設定、サンプルPythonコード
Raspberry Piでアナログ信号を読み取りたい?このガイドではMCP3008 ADCの配線、SPI有効化、必要ライブラリのインストール、基本的なPythonスクリプトでのセンサーデータ取得までを解説します。
ステップ1:MCP3008の配線
- 電源(3.3V) – VDD & VREFをRaspberry Pi 3.3Vピン(赤)に
- グランド – AGND & DGNDをRaspberry Pi GND(黒)に
- SPI接続 –
- CLK → Piピン23(GPIO11) - オレンジ
- DOUT → Piピン21(GPIO9) - 黄色
- DIN → Piピン19(GPIO10) - 青
- CS → Piピン24(GPIO8) - 紫
- アナログ入力 – センサーの信号線をMCP3008のA0〜A7ピン(チップ左側)のいずれかに接続。V+に3.3V、G-にGNDを使用
チップの半円形ノッチが図と同じ向きになるよう注意。MCP3004の場合もピン配置は同一ですが、アナログ入力が4チャネルのみです。
ステップ2:Raspberry PiでSPIを有効化
- ターミナルを開き実行:
sudo raspi-config
- Advanced Options → SPIに進み有効化
- 再起動:
sudo reboot
- 再起動後、SPIデバイスの存在確認:
ls /dev/
spidev0.0とspidev0.1が見えるはず - 見えない場合はシステム更新:
sudo apt-get update && sudo apt-get upgrade
最新ファームウェアインストール:sudo wget https://goo.gl/1BOfJ -O /usr/bin/rpi-update sudo chmod +x /usr/bin/rpi-update sudo rpi-update sudo reboot
I²Cのブラックリスト解除(必要な場合)
I²Cがブラックリスト入りしていてSPIが動かないことがあります。ブラックリストファイルを開く:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
blacklist i2c-bcm2708を含む行を削除またはコメントアウトし、再起動。
ステップ3:Python SPIライブラリのインストール
- 前提パッケージインストール:
sudo apt-get install python-dev git
- py-spidevリポジトリをクローン:
git clone https://github.com/doceme/py-spidev
- ライブラリインストール:
cd py-spidev sudo python setup.py install
ステップ4:サンプルPythonコード
ホームディレクトリにmcp3008.pyを作成:
nano ~/mcp3008.py
以下のスクリプトを貼り付け:
# mcp3008.py
import spidev
import time
# SPIバス0、デバイス0を開く
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 1350000
def read_channel(channel):
if channel < 0 or channel > 7:
return -1
adc = spi.xfer2([1, (8 + channel) << 4, 0])
data = ((adc[1] & 3) << 8) + adc[2]
return data
try:
while True:
value = read_channel(0) # チャネル0から読み取り
print(f"Channel 0: {value}")
time.sleep(1)
except KeyboardInterrupt:
spi.close()
print("Program terminated")
実行:
python3 ~/mcp3008.py
生ADC値(0〜1023)が継続的にストリーミングされます。MCP3008データシートに従って電圧やセンサー単位に変換してください。
参考資料
製造プロセス
- Raspberry Pi & HDC2010:I2C温湿度センサー完全セットアップガイド
- 5ドルI2C温度センサーで作るRaspberry Pi温度ロガー
- Python、SQLite、LabVIEWによるRaspberry Pi高精度温度プロファイリング
- Raspberry PiでTMP006赤外線温度センサーを使う – Pythonライブラリとセットアップガイド
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- Raspberry Piで気象観測ステーションを構築し、日次天気データをメール送信
- Raspberry Pi 3とPubNubでリモート気象監視
- HC-SR04超音波距離センサーをRaspberry Pi 3に接続 – 完全ガイド
- TI SensorTagをNode-RED経由でBlynkと統合 – Raspberry Pi Zero編
- Raspberry PiでPIRモーションセンサーとLEDを制御
- C# 入出力の基礎:ユーザー入力と出力の基本をマスター