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

Датчик температуры Raspberry Pi

Несколько недель назад я купил Raspberry Pi. После прочтения Руководства пользователя Raspberry Pi Эбена Аптона, особенно двух глав, на которых он сосредоточивает внимание на GPIO, у меня возникла идея для моего первого проекта. В публикации рассказывается о первой итерации проекта мониторинга температуры в доме, который я собрал с использованием Raspberry Pi, MCP9808, старого Mac Mini (начало 2008 г.), InfluxDB, Grafana, немного Python и runit.

Аппаратное обеспечение датчика

Для этого проекта я решил использовать плату MCP9808 Breakout Board от Adafruit - отличный источник компонентов, схем и идей. Я выбрал этот агрегат по нескольким причинам:

  1. Он управляется через I²C - GPIO Raspberry Pi поддерживает требуемую шину I²C через контакты 3 (последовательная линия данных, SDA) и 5 ​​(последовательная линия синхронизации, SCL).
  2. Он работает в диапазоне питания и логики от 2,7 В до 5,5 В - Raspberry Pi обеспечивает линии питания с напряжением 3,3 и 5 В
  3. Это было довольно дешево (<5 долларов США) - мои навыки пайки не самые лучшие.

Сборка схемы

Плата MCP9808 Breakout Board от Adafruit в основном собирается. Этот конкретный комплект требует только, чтобы вы припаяли прилагаемую 8-контактную полосу заголовка к коммутационной плате.

Я использовал GPIO Breakout и макетную плату для подключения Raspberry Pi к MCP9808; этим подходом немного проще управлять, исправить ошибки проводки и он менее долговечен, чем припаивание датчика к Raspberry Pi. Для считывания температуры с MCP9808 требуются только вывод питания, заземление и выводы I²C SDA и SCL:

Остальные, необязательные, контакты в этом проекте не используются. Они предоставляют обходные пути для решения проблем I²C, когда несколько устройств используются на одной шине, и вывод для предупреждения, если датчик считывает температуру выше или ниже порогового значения.

Хранилище данных

Я знал, что хочу поддержать проект постоянным хранилищем данных. Это позволило бы мне собирать данные, а затем анализировать их на предмет общих тенденций, сопоставить модели отопления / охлаждения с погодными явлениями и т. Д.

Я выбрал InfluxDB из-за его языка запросов и модели хранения, ориентированного на время. Я установил Influx на старый Mac Mini (начало 2009 года с OSX 10.10), который сидел у меня под столом. Получение и запуск базовой установки InfluxDB хорошо задокументировано; поскольку я уже использую Homebrew для управления большинством своих сторонних зависимостей и существует формула для InfluxDB, установка была завершена с помощью команды brew install Influxdb .

Настроить базу данных InfluxDB

Установив InfluxDB, я настраиваю базу данных для хранения показаний температуры и пользователя базы данных для управления ею. Для этого я использовал веб-консоль своего экземпляра InfluxDB; по умолчанию он работает на порту 8083 хоста InfluxDB.

Конфигурация Raspberry Pi

Теперь, когда оборудование и хранилище данных настроены, для Raspberry Pi «из коробки» необходимо немного настроить ОС для связи с MCP9808 по шине I²C.

Включить I²C

По умолчанию Raspberry Pi не загружает необходимые модули ядра для использования шины I²C. Чтобы включить связь I²C через GPIO, я добавил следующие две строки в / etc / modules

  i2c-bcm2708i2c-dev  

Затем перезагрузите Raspberry Pi

  перезагрузка sudo  

После инициализации системы она должна быть способна распознать, что MCP9808 подключен. Я использовал i2cdetect cli для этого:

  sudo i2cdetect 1 # канал 1 используется по умолчанию в модели Raspberry Pi B +  

Программное обеспечение датчика

Adafruit предоставляет оболочку MCP9808 и абстракцию I²C. Я использовал оба из них в основном скрипте драйвера для этого проекта.

Установить зависимости сборки

  sudo apt-get updatesudo apt-get install build-essential python-dev python-smbus  

Установите оболочку Adafruit_Python_MCP9808

  cd ~ / Downloadsgit clone https://github.com/adafruit/Adafruit_Python_MCP9808/blob/master/Adafruit_MCP9808cd Adafruit_MCP9808sudo python setup.py install  

При этом также будет установлена ​​абстракция I²C, поскольку от нее зависит оболочка MCP9808.

Прочитать, сообщить, повторить

Затем я написал небольшой скрипт на Python, poll.py , чтобы читать с MCP9808 через определенный промежуток времени и сообщать о своих результатах в экземпляр базы данных InfluxDB mcp9808_test.

#! / usr / bin / python import time import Adafruit_MCP9808.MCP9808 as MCP9808 из influxdb import InfluxDBClient # Создает необходимую полезную нагрузку для публикации # данных о температуре в InfluxDB def temperature_data (deg_c):return [{'points':[[c_to_f (deg_c)]]], 'name':'Temperature Readings', 'columns':['deg_f']}] # Преобразует представление температуры в градусах # в Farenheight def c_to_f (c):return c * 9.0 / 5.0 + 32.0 # Инициализирует связь с MCP9808 # по шине I2C. sensor =MCP9808.MCP9808 () sensor.begin () # Определяет интервал, в течение которого будет выполняться логика захвата capture_interval =60.0 # Каждые 60 секунд # Устанавливает соединение с mcp9808_test # InfluxDB instance InfluxClient =InfluxDBClient (' ', 8086,' mcp9808 ',' ',' mcp9808_test ') # Чтение, отчет, повторение, пока True:temp =sensor.readTempC () print "Температура {0:0.3} F" .format ( c_to_f (temp)) InfxClient.write_points (temperature_data (temp)) time.sleep (capture_interval)

Теперь его можно запустить с помощью следующей команды; обратите внимание, что сценарий необходимо запускать от имени root пользователь Raspberry Pi для взаимодействия с GPIO.

  sudo python  /poll.py  

Для-ev-er

Ура! Все было запущено и работало… пока я не нажал на выключатель powertip под своим столом. На этом этапе я понял, что хочу убедиться, что poll.py скрипт работал, пока Raspberry Pi был под напряжением. Для этого я использовал супервизор процессов runit.

Подробнее:Датчик температуры Raspberry Pi


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

  1. Регистратор температуры Raspberry Pi
  2. Температурный профиль Raspberry Pi с использованием LabVIEW
  3. Измерение температуры с помощью однопроводного датчика DS18B20 и Raspberry Pi
  4. Сетевой монитор температуры и влажности Raspberry Pi
  5. Считать температуру с помощью DS18B20 | Raspberry Pi 2
  6. Мониторинг температуры на Raspberry Pi
  7. Измерение температуры с помощью RASPBERRY PI
  8. Библиотека Python датчика температуры TMP006 с использованием Raspberry pi,
  9. Датчик температуры Python и Raspberry Pi
  10. Метеостанция Raspberry Pi