Conectar Sensores Analógicos ao Raspberry Pi com MCP3008 – Fiação, Configuração SPI e Código Python
Pronto para ler sinais analógicos com seu Raspberry Pi? Este guia orienta você na fiação de um MCP3008 ADC, habilitação do SPI, instalação das bibliotecas necessárias e execução de um script Python básico para obter dados do sensor.
Passo 1: Fiação do MCP3008
- Alimentação (3,3 V) — VDD e VREF ao pino 3,3 V do Raspberry Pi (vermelho).
- Terra — AGND e DGND ao GND do Raspberry Pi (preto).
- Conexões SPI —
- CLK → Pino 23 do Pi (GPIO11) — laranja.
- DOUT → Pino 21 do Pi (GPIO9) — amarelo.
- DIN → Pino 19 do Pi (GPIO10) — azul.
- CS → Pino 24 do Pi (GPIO8) — violeta.
- Entradas Analógicas — Conecte o fio de sinal do seu sensor a um dos pinos A0–A7 do MCP3008 (lado esquerdo do chip). Use 3,3 V para V+ e GND para G–.
Certifique-se que o entalhe semicircular do chip esteja na mesma direção mostrada no diagrama. Para um MCP3004 o layout de pinos é idêntico, exceto que o chip tem apenas quatro entradas analógicas.
Passo 2: Habilite SPI no Raspberry Pi
- Abra um terminal e execute:
sudo raspi-config
- Navegue para Advanced Options → SPI e habilite.
- Reinicie o Pi:
sudo reboot
- Após reiniciar, verifique se dispositivos SPI existem:
ls /dev/
Você deve verspidev0.0espidev0.1. - Se estiverem faltando, atualize seu sistema:
sudo apt-get update && sudo apt-get upgrade
então instale o firmware mais recente:sudo wget https://goo.gl/1BOfJ -O /usr/bin/rpi-update sudo chmod +x /usr/bin/rpi-update sudo rpi-update sudo reboot
Desbloquear I²C (se necessário)
Às vezes o I²C está na blacklist, impedindo o SPI de funcionar. Abra o arquivo de blacklist:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Remova ou comente qualquer linha contendo blacklist i2c-bcm2708, então reinicie.
Passo 3: Instale Biblioteca Python SPI
- Instale pré-requisitos:
sudo apt-get install python-dev git
- Clone o repositório py-spidev:
git clone https://github.com/doceme/py-spidev
- Instale a biblioteca:
cd py-spidev sudo python setup.py install
Passo 4: Código Python de Exemplo
Crie mcp3008.py no seu diretório home:
nano ~/mcp3008.py
Cole o seguinte script:
# mcp3008.py
import spidev
import time
# Abre barramento SPI 0, dispositivo 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) # Lê do canal 0
print(f"Canal 0: {value}")
time.sleep(1)
except KeyboardInterrupt:
spi.close()
print("Programa terminado")
Execute o script com:
python3 ~/mcp3008.py
Você deve ver um fluxo contínuo de valores brutos do ADC (0–1023). Converta estes para tensão ou unidades do sensor usando o datasheet do MCP3008.
Referências
Processo de manufatura
- Fundamentos de C#: Essenciais de Entrada e Saída
- Raspberry Pi e HDC2010: Guia Completo de Configuração I2C para Sensor de Temperatura e Umidade
- Construa um Registrador de Temperatura com Raspberry Pi e Sensor I2C de $5
- Perfilamento de Temperatura Preciso no Raspberry Pi com Python, SQLite e LabVIEW
- Sensor de Temperatura Infravermelho TMP006 com Raspberry Pi: Biblioteca Python e Guia de Configuração
- Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
- Construa Estação Meteorológica Raspberry Pi que Envia Dados Diários por Email
- Monitoramento Remoto do Tempo com Raspberry Pi 3 e PubNub
- Conectando Sensor Ultrassônico HC‑SR04 ao Raspberry Pi 3 – Guia Completo
- Integre TI SensorTag ao Blynk via Node‑RED no Raspberry Pi Zero