Датчики — давление, температура и высота с BMP180

Датчики — давление, температура и высота с BMP180

Если вы знакомы с CamJam EduKits, то вы уже знакомы с несколькими датчиками, такими как датчик температуры 1-wire, фоторезистор (LDR) и датчик движения — пассивный инфракрасный (PIR) датчик. В этом руководстве мы научимся считывать данные об окружающем мире с помощью набора цифровых датчиков на крошечной плате BMP180.

На схеме слева показан BMP180 от Adafruit, а справа — тип BMP180, используемый в этом руководстве. Они делают абсолютно одно и то же, хотя модуль от Adafruit может использоваться как с 5 В, так и с 3,3 В системами. Если вы используете BMP180 от Adafruit, пожалуйста, убедитесь, что используете вывод 3v3, а не вывод VIN на BMP180.

BMP180

BMP180 — это плата с интерфейсом i2c, что означает, что она использует протокол i2c (произносится «ай ту си» или «ай квадрат си») для связи с вашим Raspberry Pi. Преимущество i2c в том, что для связи с множеством различных устройств он использует только два вывода на Raspberry Pi (плюс питание и земля). Один вывод передаёт тактовый сигнал, а другой — данные. Если вы хотите узнать немного больше о том, как работает i2c, описание есть на сайте Wikipedia.

На схеме ниже показано расположение выводов i2c на Raspberry Pi.

Расположение выводов i2c на Raspberry Pi

Использование i2c на вашем Raspberry Pi

Первое, что вам нужно сделать — это настроить Raspberry Pi для использования i2c. Саймон Монк написал очень хорошие инструкции о том, как настроить Raspberry Pi для работы с i2c на сайте Adafruit. Следуйте всем инструкциям полностью, включая проверку того, что всё работает, пройдя также и ручные инструкции.

Подключение BMP180

Чтобы подключить BMP180 к вашему Raspberry Pi, вам понадобятся макетная плата и четыре соединительных провода «мама-папа». Лучше всего выключить Raspberry Pi перед подключением чего-либо к нему, поэтому введите следующую команду и дождитесь, пока зелёный индикатор погаснет:

sudo shutdown -h now

Теперь следуйте схеме ниже, чтобы подключить BMP180 к вашему Raspberry Pi. Обратите внимание, что существует несколько различных вариантов плат BMP180. BMP180 на самом деле относится к микросхеме, а не ко всей плате, поэтому ваша плата может иметь 4, 5 или шесть выводов.

Подключение BMP180 к Raspberry Pi

На этой схеме соединительные провода подключены следующим образом (при ориентации Raspberry Pi, как показано выше):

  • Красный провод идёт от вывода 3v3 (источник питания 3,3 вольта) Raspberry Pi к выводу VCC на BMP180.

  • Жёлтый провод идёт от второго вывода справа в верхнем ряду Raspberry Pi к выводу SDA на BMP180. BMP180 использует этот провод для связи с Raspberry Pi.

  • Синий провод идёт от третьего вывода справа в верхнем ряду Raspberry Pi к выводу SCL на BMP180. Этот вывод подаёт тактовый сигнал (он включается и выключается через равные промежутки времени), который используется устройствами i2c для синхронизации связи с Raspberry Pi.

  • Чёрный провод идёт от любого из выводов заземления (GND) Raspberry Pi к выводу GND на BMP180.

Прежде чем что-либо включать, дважды проверьте свои соединения. Маловероятно, что произойдёт что-то плохое, но лучше проверить дважды перед подачей питания.

Использование BMP180

Если всё было установлено правильно и всё было подключено правильно, вы теперь готовы включить Raspberry Pi и начать видеть, что BMP180 сообщает вам об окружающем мире.

Первое, что нужно сделать — проверить, видит ли Raspberry Pi ваш BMP180. Попробуйте следующее в окне терминала:

sudo i2cdetect -y 1

Если вы получили сообщение об ошибке и у вас очень ранняя модель Raspberry Pi Model B, попробуйте:

sudo i2cdetect -y 0

Если команда сработала, вы должны увидеть следующее:

Вывод i2cdetect для BMP180

Это показывает, что BMP180 находится на канале „77“.

Теперь нам нужно установить некоторые библиотеки, чтобы Python мог считывать данные с BMP180. Библиотеки были написаны Adafruit для использования с предшественником BMP180 — BMP085, но поскольку микросхемы были разработаны совместимыми друг с другом, библиотеки работают и с этим более новым устройством.

Чтобы установить эти библиотеки и необходимые библиотеки Python, введите следующее в окне терминала вашего Raspberry Pi:

  • Установите приложение GIT, которое сможет загрузить код с GitHub (веб-сайт, используемый для хранения кода и контроля версий):

sudo apt-get update
sudo apt-get install git build-essential python-dev python-smbus
  • Создайте и перейдите в каталог, который будет содержать ваш код. Этот каталог может называться как угодно:

mkdir ~/BMP180Code
cd ~/BMP180Code
  • Загрузите GIT-репозиторий для BMP180. Это загрузит содержимое Python-библиотеки Adafruit в текущее расположение:

git clone https://github.com/adafruit/Adafruit_Python_BMP.git
  • Теперь библиотеку нужно скомпилировать, чтобы вы могли её использовать. В том же окне терминала выполните следующее:

cd Adafruit_Python_BMP
sudo python setup.py install

Теперь вы готовы к использованию BMP180.

Простой код

Код для использования BMP180 очень прост. Следующий пример кода можно найти (с бо́льшим количеством комментариев) в Adafruit_Python_BMP/examples/simpletest.py. Вы можете отредактировать его с помощью:

nano ~/BMP180Code/Adafruit_Python_BMP/examples/simpletest.py

Давайте разберём код. Помните, что BMP085 совместим с BMP180. Библиотека ссылается на BMP085.

#!/usr/bin/python

import Adafruit_BMP.BMP085 as BMP085  # Импортирует библиотеку BMP

# Создаём 'объект', содержащий данные BMP180
sensor = BMP085.BMP085()

print 'Temp = {0:0.2f} *C'.format(sensor.read_temperature())          # Температура в градусах Цельсия
print 'Pressure = {0:0.2f} Pa'.format(sensor.read_pressure())          # Локальное давление
print 'Altitude = {0:0.2f} m'.format(sensor.read_altitude())           # Текущая высота
print 'Sealevel Pressure = {0:0.2f} Pa'.format(sensor.read_sealevel_pressure())  # Давление на уровне моря

И это всё! Теперь вы можете включить этот маленький датчик в свои собственные проекты. Он определённо войдёт в мой текущий проект.