Чтение аналоговых датчиков с Raspberry Pi и Zabbix: пошаговое руководство
Чтение аналоговых датчиков с Raspberry Pi и Zabbix
Хотя Raspberry Pi не имеет нативных аналоговых входов, 10-битный 8-канальный АЦП MCP3008 делает добавление аналоговых возможностей тривиальным. Он вставляется прямо в GPIO-разъем Pi через шину SPI и не требует дополнительных компонентов.
Это руководство проведет вас через подключение MCP3008 к Pi, чтение светозависимого резистора (LDR) с Python и передачу данных в Zabbix для мониторинга.
Оборудование:
- Raspberry Pi
- MCP3008 8-канальный АЦП
- Светозависимый резистор (LDR)
- Резистор 10 кОм
- Макетная плата
- Некоторые провода
Понимание шины SPI
MCP3008 передает 10-битное цифровое значение по интерфейсу SPI, полнодуплексному синхронному последовательному протоколу, работающему в режиме мастер/слейв. Несколько слейвов могут делить шину, каждый выбирается своей линией CS.
На Raspberry Pi SPI доступен через 4-пиновый заголовок (GPIO8, 9, 10, 11). Для включения драйвера аппаратного SPI отредактируйте черный список:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Найдите строку, содержащую spi-bcm2708, и добавьте префикс # для комментирования. Сохраните и перезагрузитесь:
sudo reboot
После перезагрузки проверьте, что драйвер загружен:
lsmod | grep spi_bcm2708
Вы должны увидеть spi_bcm2708 в списке.
Установка Python-библиотеки SPI
Для доступа к SPI-шине из Python мы используем 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 к Raspberry Pi
| MCP3008 Pin | Raspberry Pi Pin |
|---|---|
| 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 |
Восемь пинов CH0‑CH7 на MCP3008 служат аналоговыми входами. В этом примере мы подключим один из них к LDR.
Использование светозависимого резистора (LDR)
Мы использовали LDR EG & G Vactec, VT43, CdS, 8 Ω – 300 kΩ. В нормальном освещении его сопротивление примерно 10 кОм; в темноте оно поднимается выше 2 МОм.
Когда свет падает на LDR, его сопротивление падает, тянучи напряжение на входе MCP3008 к 0 В. В темноте сопротивление растет, толкая напряжение к опорному 3,3 В.
Любой датчик, меняющий сопротивление с физической величиной, может быть подключен подобным образом.
Интерпретация выхода АЦП
MCP3008 выдает 10-битное число от 0 до 1023, где 0 соответствует 0 В, а 1023 — 3,3 В. Для LDR это транслируется в диапазон интенсивности света примерно 0 – 10 000 люкс.
Эти сырые значения можно отправлять в Zabbix через Python-скрипт Raspberry Pi, позволяя создавать дашборды, устанавливать пороги и запускать оповещения.
Для более подробной информации: Analog Sensors Reading with Raspberry Pi and Zabbix Supervisor
Производственный процесс
- Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
- Эффективный мониторинг температуры серверных с Raspberry Pi и Nagios
- Как считывать температуру с DS18B20 на Raspberry Pi 2
- Домашний монитор температуры и влажности на Raspberry Pi с веб-дашбордом — удаленный трекинг в реальном времени
- Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
- Домашний энергетический центр: мониторинг солнечных панелей, тепловых коллекторов и температуры комнат на Ra…
- Точный мониторинг температуры в серверной на Raspberry Pi
- Создание умного домашнего контроллера 433 МГц с Sensorflare и Raspberry Pi
- Измерение аналоговых датчиков на Raspberry Pi с одним GPIO-пином
- Чтение аналоговых датчиков на Raspberry Pi без встроенного АЦП