树莓派用 MCP3008 读取模拟传感器:接线、SPI 配置与 Python 示例
想让树莓派读取模拟信号?本指南带你为 MCP3008 ADC 接线、启用 SPI、安装依赖库,并运行基础 Python 脚本获取传感器数据。
步骤 1:MCP3008 接线
- 电源 (3.3V) — VDD 与 VREF 接树莓派 3.3V 引脚 (红)。
- 地 — AGND 与 DGND 接树莓派 GND (黑)。
- SPI 连接 —
- CLK → 树莓派 Pin 23 (GPIO11) — 橙。
- DOUT → Pin 21 (GPIO9) — 黄。
- DIN → Pin 19 (GPIO10) — 蓝。
- CS → Pin 24 (GPIO8) — 紫。
- 模拟输入 — 传感器信号线接 MCP3008 A0–A7 任一引脚(芯片左侧)。V+ 用 3.3V,G- 用 GND。
确保芯片半圆缺口朝向与示意图一致。MCP3004 引脚布局相同,仅模拟输入为 4 通道。
步骤 2:在树莓派上启用 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 数据手册换算为电压或传感器单位。
参考资料
制造工艺
- 树莓派对接HDC2010:I²C温湿度传感器完整接线与编程指南
- 树莓派+$5 I²C传感器打造温度记录仪
- 树莓派温度画像:Python+SQLite+LabVIEW实战
- 树莓派配合 TMP006 红外温度传感器:Python 库与安装指南
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 树莓派自制气象站:每日邮件推送温湿雨数据
- 树莓派 3 配合 PubNub 实现远程气象监测
- 树莓派 3 接 HC‑SR04 超声波测距传感器完全指南
- 树莓派 Zero 配合 Node‑RED 融合 TI SensorTag 与 Blynk 物联网平台
- 树莓派 PIR 运动传感器控制 LED 实战指南
- 树莓派低成本土壤湿度传感器:智能灌溉 DIY 指南
- C# 基础:输入输出核心技巧完全指南