MCP3008 ADC로 라즈베리 파이에 아날로그 센서 연결하기 – 배선, SPI 설정, 파이썬 예제
라즈베리 파이로 아날로그 신호를 읽을 준비가 되셨나요? 이 가이드는 MCP3008 ADC 배선, SPI 활성화, 필수 라이브러리 설치, 기본 파이썬 스크립트 실행으로 센서 데이터를 가져오는 과정을 안내합니다.
1단계: MCP3008 배선
- 전원 (3.3V) – VDD & VREF를 라즈베리 파이 3.3V 핀(빨강)에 연결.
- 접지 – AGND & DGND를 라즈베리 파이 GND(검정)에 연결.
- SPI 연결 –
- CLK → 파이 핀 23 (GPIO11) – 주황
- DOUT → 파이 핀 21 (GPIO9) – 노랑
- DIN → 파이 핀 19 (GPIO10) – 파랑
- CS → 파이 핀 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단계: 파이썬 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단계: 파이썬 예제 코드
홈 디렉터리에 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 데이터시트를 사용해 전압이나 센서 단위로 변환하세요.
참고 자료