Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Подключение аналоговых датчиков к Raspberry Pi через MCP3008 — сборка, настройка SPI и пример Python-кода

Готовы считывать аналоговые сигналы с Raspberry Pi? Это руководство проведет через подключение MCP3008 АЦП, включение SPI, установку библиотек и запуск базового Python-скрипта для получения данных датчика.

Шаг 1: Подключение MCP3008

Убедитесь, что полукруглый вырез чипа направлен как на диаграмме. Для MCP3004 распиновка идентична, только 4 аналоговых входа.

Шаг 2: Включение SPI на Raspberry Pi

  1. Откройте терминал и выполните:
    sudo raspi-config
  2. Перейдите в Advanced Options → SPI и включите.
  3. Перезагрузите Pi:
    sudo reboot
  4. После перезагрузки проверьте наличие SPI-устройств:
    ls /dev/
    Должны появиться spidev0.0 и spidev0.1.
  5. Если отсутствуют, обновите систему:
    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: Установка Python-библиотеки SPI

  1. Установите предварительные пакеты:
    sudo apt-get install python-dev git
  2. Клонируйте репозиторий py-spidev:
    git clone https://github.com/doceme/py-spidev
  3. Установите библиотеку:
    cd py-spidev
    sudo python setup.py install

Шаг 4: Пример Python-кода

Создайте mcp3008.py в домашней директории:

nano ~/mcp3008.py

Вставьте следующий скрипт:

# mcp3008.py
import spidev
import time

# Открыть SPI bus 0, device 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

Вы увидите непрерывный поток сырых значений АЦП (0–1023). Конвертируйте в напряжение или единицы датчика по даташиту MCP3008.

Ссылки

Производственный процесс

  1. Основы ввода-вывода в C#: Console.WriteLine, ReadLine и форматирование
  2. Raspberry Pi и HDC2010: полное руководство по настройке I2C датчика температуры и влажности
  3. Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
  4. Точный температурный профиль Raspberry Pi с Python, SQLite и LabVIEW
  5. ИК-датчик температуры TMP006 с Raspberry Pi: библиотека Python и руководство по настройке
  6. Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
  7. Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
  8. Удалённый мониторинг погоды на Raspberry Pi 3 с PubNub
  9. Подключение ультразвукового датчика HC‑SR04 к Raspberry Pi 3 — полное руководство
  10. Интеграция TI SensorTag с Blynk через Node‑RED на Raspberry Pi Zero