라즈베리 파이와 Zabbix로 아날로그 센서 읽기 – 단계별 가이드
라즈베리 파이와 Zabbix로 아날로그 센서 읽기
라즈베리 파이에 네이티브 아날로그 입력이 없지만, MCP3008 10비트 8채널 ADC로 아날로그 기능을 쉽게 추가할 수 있습니다. 파이의 GPIO 헤더에 SPI 버스로 직접 꽂히며 추가 구성요소 불필요.
이 튜토리얼은 MCP3008을 파이에 배선하고 파이썬으로 조도 의존 저항(LDR)을 읽고 데이터를 Zabbix에 공급해 모니터링하는 과정을 안내합니다.
SPI 버스 이해
MCP3008은 SPI 인터페이스로 10비트 디지털 값을 전송합니다. SPI는 마스터/슬레이브 모드에서 동작하는 전이중 동기 직렬 프로토콜입니다. 여러 슬레이브가 버스 공유 가능하며 각자 고유 CS 라인으로 선택됩니다.
라즈베리 파이에서 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이 나열되어야 합니다.
파이썬 SPI 라이브러리 설치
파이썬에서 SPI 버스 접근 위해 py-spidev 사용. 먼저 파이썬 개발 헤더 설치:
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.3V |
| VREF | 3.3V |
| 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Ω – 300kΩ 사용. 일반 조명에서 저항 약 10kΩ; 어둠에서 2MΩ 이상 상승.
빛이 LDR에 닿으면 저항이 떨어져 MCP3008 입력 전압이 0V 쪽으로 당겨집니다. 어둠에서는 저항이 올라 전압이 3.3V 레퍼런스 쪽으로 밀려납니다.
물리량에 따라 저항이 변하는 모든 센서를 이런 방식으로 배선 가능.
ADC 출력 해석
MCP3008은 0~1023 범위의 10비트 숫자 생성. 0은 0V, 1023은 3.3V 대응. LDR 기준 약 0~10,000 lux 조도 범위로 변환.
이 원시 값들을 라즈베리 파이 파이썬 스크립트로 Zabbix에 전송해 대시보드 생성, 임계값 설정, 알림 트리거 가능.
자세한 내용: 라즈베리 파이와 Zabbix 슈퍼바이저로 아날로그 센서 읽기