Современные миникомпьютеры типа Raspberry Pi все чаще используются в системах домашней автоматизации и устройствах мониторинга параметров окружающей среды. Одним из основных компонентов таких систем и устройств является датчик температуры. Сегодня на рынке электронных компонентов представлено большое количество типов этих датчиков, отличающихся своими параметрами, формой исполнения и ценой.
Вы хотите в своем проекте использовать датчик температуры и измерять температуру максимально точно? Тогда прецизионный датчик MCP9808 с точностью 0.25 градусов Цельсия и интерфейсом I2C будет для вас идеальным решением.

В данном случае мы рассмотрим, как задействовать этот датчик с миникомпьютерами Raspberry Pi или BeagleBone Black с помощью специальной библиотеки, написанной на Python.
Для начала убедитесь, что Raspberry Pi работает под управлением операционной системы Raspbian или Occidentalis, а BeagleBone под управлением последней версии Debian.
Соединение с датчиком MCP9808 по шине I2C осуществляется легко. Для Raspberry Pi оно будет выглядеть следующим образом:

Для BeagleBone:

Теперь нужно скачать саму библиотеку. Сперва убедитесь, что ваш миникомпьютер подключен к интернету через Ethernet-соединение или по беспроводному каналу. Для начала скачаем зависимости:
sudo apt-get update
sudo apt-get install build-essential python-dev python-pip python-smbus git
Если будут появляться предупреждения, игнорируйте их. Затем в случае Raspberry Pi проверьте, что библиотека RPi.GPIO установлена:
sudo pip install RPi.GPIO
А в случае BeagleBone Black должна быть установлена библиотека Adafruit_BBIO:
sudo pip install Adafruit_BBIO
Теперь скачиваем Python-библиотеку для MCP9808 и устанавливаем ее:
cd ~
git clone https://github.com/adafruit/Adafruit_Python_MCP9808.git
cd Adafruit_Python_MCP9808
sudo python setup.py install
Чтобы поближе познакомиться с библиотекой, вы можете запустить пример simpletest.py, расположенный в каталоге examples:
cd examples
sudo python simpletest.py
В случае успеха вы увидите значения температуры, обновляемые каждую секунду. Если же вы видите ошибку, то убедитесь, что все зависимости и библиотеки установлены, и что запуск выполняется с помощью команды sudo из root.
Основой данного примера являются следующие строчки:
while True:
temp = sensor.readTempC()
print 'Temperature: {0:0.3F}*C / {1:0.3F}*F'.format(temp, c_to_f(temp))
time.sleep(1.0)
Таким образом, функция sensor.readTempC() отвечает за правильное считывание показаний температуры и возвращение значений в Цельсиях.
© digitrode.ru