Menghubungkan Sensor Analog ke Raspberry Pi dengan MCP3008 – Pemasangan, Setup SPI, dan Contoh Kode Python
Siap untuk membaca sinyal analog dengan Raspberry Pi Anda? Panduan ini memandu Anda melalui pemasangan ADC MCP3008, mengaktifkan SPI, menginstal perpustakaan yang diperlukan, dan menjalankan skrip Python dasar untuk mengambil data sensor.
Langkah 1: Pemasangan MCP3008
- Daya (3,3 V) – VDD & VREF ke pin 3,3 V Raspberry Pi (merah).
- Ground – AGND & DGND ke GND Raspberry Pi (hitam).
- Koneksi SPI –
- CLK → pin Pi 23 (GPIO11) – oranye.
- DOUT → pin Pi 21 (GPIO9) – kuning.
- DIN → pin Pi 19 (GPIO10) – biru.
- CS → pin Pi 24 (GPIO8) – ungu.
- Input Analog – Sambungkan kabel sinyal sensor Anda ke salah satu pin A0–A7 MCP3008 (sisi kiri chip). Gunakan 3,3 V untuk V+ dan GND untuk G–.
Pastikan semicirkular notch chip menghadap arah yang sama seperti yang ditunjukkan dalam diagram. Untuk MCP3004, tata letak pin identik kecuali chip hanya memiliki empat input analog.
Langkah 2: Aktifkan SPI pada Raspberry Pi
- Buka terminal dan jalankan:
sudo raspi-config
- Navigasi ke Advanced Options → SPI dan aktifkan.
- Reboot Pi:
sudo reboot
- Setelah reboot, verifikasi perangkat SPI ada:
ls /dev/
Anda seharusnya melihat spidev0.0 dan spidev0.1. - Jika hilang, perbarui sistem:
sudo apt-get update && sudo apt-get upgrade
lalu instal firmware terbaru:sudo wget https://goo.gl/1BOfJ -O /usr/bin/rpi-update sudo chmod +x /usr/bin/rpi-update sudo rpi-update sudo reboot
Unblacklist I²C (jika perlu)
Kadang-kadang I²C dalam daftar hitam, mencegah SPI bekerja. Buka file blacklist:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Hapus atau beri komentar pada baris yang berisi blacklist i2c-bcm2708, lalu reboot.
Langkah 3: Instal Perpustakaan Python SPI
- Instal prasyarat:
sudo apt-get install python-dev git
- Clone repositori py-spidev:
git clone https://github.com/doceme/py-spidev
- Instal perpustakaan:
cd py-spidev sudo python setup.py install
Langkah 4: Kode Python Contoh
Buat mcp3008.py di direktori home Anda:
nano ~/mcp3008.py
Tempelkan skrip berikut:
# mcp3008.py import spidev import time # Buka bus SPI 0, perangkat 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) # Baca dari saluran 0 print(f"Channel 0: {value}") time.sleep(1) except KeyboardInterrupt: spi.close() print("Program diakhiri") Jalankan skrip dengan:
python3 ~/mcp3008.py
Anda seharusnya melihat aliran terus-menerus nilai ADC mentah (0–1023). Konversikan ini ke tegangan atau satuan sensor menggunakan datasheet MCP3008.
Referensi