树莓派配合 MCP3008 ADC 与 Zabbix 监控模拟传感器:分步指南
树莓派配合 MCP3008 ADC 与 Zabbix 监控模拟传感器
虽然树莓派缺乏原生模拟输入,但 MCP3008 这款 10 位、8 通道 ADC 让添加模拟能力变得轻而易举。它直接插在树莓派 GPIO 排针上通过 SPI 总线通信,无需额外元件。
本教程将指导你将 MCP3008 接线到树莓派,用 Python 读取光敏电阻(LDR),并将数据送入 Zabbix 进行监控。
硬件清单
- 树莓派
- MCP3008 8 通道 ADC
- 光敏电阻(LDR)
- 10 kΩ 电阻
- 面包板
- 若干连接线
理解 SPI 总线
MCP3008 通过 SPI 接口传输 10 位数字值,这是一种全双工同步串行协议,工作在主从模式。多个从设备可共享总线,各自通过片选(CS)线选中。
树莓派通过 4 引脚排针(GPIO8、9、10、11)暴露 SPI。启用硬件 SPI 驱动,编辑黑名单文件:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
找到含 spi-bcm2708 的行,前加 # 注释掉。保存并重启:
sudo reboot
重启后验证驱动加载:
lsmod | grep spi_bcm2708
应看到 spi_bcm2708 列出。
安装 Python SPI 库
从 Python 访问 SPI 总线使用 py-spidev。先安装 Python 开发头文件:
sudo apt-get install python-dev
下载安装库:
mkdir py-spidev
cd py-spidev
wget https://raw.github.com/doceme/py-spidev/master/setup.py
wget https://raw.github.com/doceme/py-spidev/master/spidev_module.c
sudo python setup.py install
连接 MCP3008 到树莓派
| MCP3008 引脚 | 树莓派引脚 |
|---|---|
| VDD | 3.3 V |
| VREF | 3.3 V |
| AGND | GND |
| CLK | GPIO11 (P1‑23) |
| DOUT | GPIO9 (P1‑21) |
| DIN | GPIO10 (P1‑19) |
| CS | GPIO8 (P1‑24) |
| DGND | GND |
MCP3008 的八个 CH0‑CH7 引脚作为模拟输入。本例将其中一个连接 LDR。
使用光敏电阻(LDR)
我们使用 LDR EG & G Vactec, VT43, CdS, 8 Ω – 300 kΩ。正常光照下电阻约 10 kΩ;全黑时升至 2 MΩ 以上。
光照射在 LDR 上,电阻下降,将 MCP3008 输入电压拉向 0 V。黑暗中电阻升高,推高电压向 3.3 V 基准。
任何随物理量变化电阻的传感器均可类似接线。
解读 ADC 输出
MCP3008 输出 10 位数值 0–1023,对应 0 V 至 3.3 V。对 LDR 而言,这大约映射 0–10,000 lux 光照范围。
这些原始值可通过树莓派 Python 脚本发送到 Zabbix,创建仪表盘、设阈值、触发报警。
更多详情:树莓派 Zabbix 监控模拟传感器
制造工艺
- 树莓派多路DS18B20 1-Wire温度监测:接线与编程全指南
- 树莓派+Nagios高效监控机房温度
- 树莓派2上使用DS18B20读取温度完整指南
- 树莓派家庭温湿度监测系统:Web仪表盘实时远程追踪
- 树莓派结合 Maxim 1-Wire 传感器与 DS2482 I2C 桥接器的多点温度测量
- 家庭能源中心:树莓派与 Moteino 监测光伏、光热与室温
- 树莓派精准监测机柜温度:DS18B20 多点部署实战
- 基于 Sensorflare 与树莓派的 433 MHz 智能家居控制器构建指南
- 树莓派单 GPIO 引脚读取模拟传感器:RC 充电法实战
- 树莓派无原生 ADC 读取模拟传感器:阶跃响应法实战
- 树莓派 + Arduino UNO + 三星 SAMI 极速构建火灾检测系统
- 精通树莓派传感器:电子与通信协议实战指南