Датчики — давление, температура и высота с BMP180
Если вы знакомы с CamJam EduKits, то вы уже знакомы с несколькими датчиками, такими как датчик температуры 1-wire, фоторезистор (LDR) и датчик движения — пассивный инфракрасный (PIR) датчик. В этом руководстве мы научимся считывать данные об окружающем мире с помощью набора цифровых датчиков на крошечной плате BMP180.
На схеме слева показан BMP180 от Adafruit, а справа — тип BMP180, используемый в этом руководстве. Они делают абсолютно одно и то же, хотя модуль от Adafruit может использоваться как с 5 В, так и с 3,3 В системами. Если вы используете BMP180 от Adafruit, пожалуйста, убедитесь, что используете вывод 3v3, а не вывод VIN на BMP180.
BMP180 — это плата с интерфейсом i2c, что означает, что она использует протокол i2c (произносится «ай ту си» или «ай квадрат си») для связи с вашим Raspberry Pi. Преимущество i2c в том, что для связи с множеством различных устройств он использует только два вывода на Raspberry Pi (плюс питание и земля). Один вывод передаёт тактовый сигнал, а другой — данные. Если вы хотите узнать немного больше о том, как работает i2c, описание есть на сайте Wikipedia.
На схеме ниже показано расположение выводов 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 или шесть выводов.
На этой схеме соединительные провода подключены следующим образом (при ориентации 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
Если команда сработала, вы должны увидеть следующее:
Это показывает, что 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()) # Давление на уровне моря
И это всё! Теперь вы можете включить этот маленький датчик в свои собственные проекты. Он определённо войдёт в мой текущий проект.