Инструменты пользователя

Инструменты сайта


bananapi:bmp180

Подключение датчика давления BMP180 к Banana Pi

схема подключения:
—> VIN - контакт 3,3 вольта (1-я ножка) на CON3
—> GND - контакт GND (6-я ножка) на CON3
—> SDA - контакт SDA (3-я ножка) на CON3
—> SLC - контакт SCL (5-я ножка) на CON3

Смотрю какие есть устройства I2C

root@bananapi ~ # ls -l /dev/i2c*
crw------- 1 root root 89, 0 Янв  1  2010 /dev/i2c-0
crw------- 1 root root 89, 1 Янв  1  2010 /dev/i2c-1
crw------- 1 root root 89, 2 Янв  1  2010 /dev/i2c-2
crw------- 1 root root 89, 3 Янв  1  2010 /dev/i2c-3
crw------- 1 root root 89, 4 Янв  1  2010 /dev/i2c-4

Устанавливаю i2c-tools

root@bananapi ~ # apt-get install i2c-tools

Ищу устройство с адресом 0х77, это и будет BMP180.

root@bananapi ~ # i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@bananapi ~ # i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@bananapi ~ # i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77

Устанавливаю библиотеку Adafruit BMP на Python для работы с датчиком.

apt-get install git build-essential python-dev python-smbus
cd /usr/local/src
/usr/local/src # git clone https://github.com/adafruit/Adafruit_Python_BMP.git
cd /usr/local/src/Adafruit_Python_BMP
/usr/local/src/Adafruit_Python_BMP (git)-[master] # python setup.py install

Редактирую файл simpletest.py. Снимаю комментарии со строки sensor = BMP085.BMP085(busnum=2) и комментирую строку #sensor = BMP085.BMP085() Проверяю

/usr/local/src/Adafruit_Python_BMP/examples (git)-[master] # python simpletest.py
Temp = 32.90 *C
Pressure = 98047.00 Pa
Altitude = 276.81 m
Sealevel Pressure = 98049.00 Pa

Датчик выдаёт четыре значения:

  • температура (Temp),
  • давление в паскалях (Pressure),
  • высоту над уровнем моря (Altitude),
  • давление на уровне моря (Sealevel Pressure)

Для хранения показаний использую rrd. Для этого создаю базу даннх bmp180_01.rrd с трёмя источниками данных. therm - для температуры, press для давления, alt для высоты.

root@bananapi /var/db/rrdtool # rrdtool create bmp180_01.rrd --start N --step 300 \
\`> DS:therm:GAUGE:600:U:U \
\`> DS:press:GAUGE:600:U:U \
\`> DS:alt:GAUGE:600:U:U \
\`> RRA:AVERAGE:0.5:1:288 \
\`> RRA:AVERAGE:0.5:6:336 \
\`> RRA:AVERAGE:0.5:12:744 \
\`> RRA:AVERAGE:0.5:144:730\

В папке /usr/local/bin создаю ссылку на файл

cd /usr/local/bin
ln -s /usr/local/src/Adafruit_Python_BMP/examples/simpletest.py bmp180

А файл simpletest.py делаю исполняемым.

Для добавления данных в базу написал скрипт. Для перевода паскалий в миллиметры ртутного столба использую формулу мм.рт.ст.=Pa/133,3224

cat /scripts/BMP180_rrd.sh 
#!/bin/bash

TEMP=`bmp180 | grep =`
therm=`echo $TEMP | awk '{print $3}'`
press=`echo $TEMP | awk '{print $7}' | awk -F. '{ print $1 }'`
let "press = $press / 133,3224"
alt=`echo $TEMP | awk '{print $11}'`
#echo $therm
#echo $press
#echo $alt

/usr/bin/rrdtool update /var/db/rrdtool/bmp180_01.rrd N:$therm:$press:$alt

echo -n ${press} >/var/www/therm/current_press.csv

exit 0

Добавил запуск скрипта в crontab каждые пять минут.

  • /5 * * * * root /scripts/BMP180_rrd.sh > /dev/null 2>&1

Ссылки:
http://www.linuxx.eu/2014/09/banana-pi-i2c-barometer-bmp085.html
http://jeelabs.org/book/1452c
http://picoboard.pl/raspberry-pi-bmp180-cyfrowy-barometr-czujnik-cisnienia-i2c/
https://micro-pi.ru/%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-bmp280-%D0%BA-orange-pi-rpi-bpi/

bananapi/bmp180.txt · Последние изменения: 2022/05/03 13:05 — alex