Меню

Термометр, барометр, гидрометр на Orange Pi

Давным-давно меня покорили мини-компы класса «малины» (Raspberry Pi). В частности, очень понравился клон подешевле с гордым названием Апельсин (Orange Pi). Платка с подходящими почти под все мои задачи параметрами на али стоит сейчас 1300р (с доставкой!)

Платка класс. По сути это полноценный комп. Размер компа — чуть больше кредитки. Памяти целый гиг. Ядер в процессоре 4, куча переферии. В т.ч. i2c шина. И не одна!

Плата бывает I2C / SPI. Я взял i2c

Чуть изучив предлагаемые на али i2c термометры, выбрал платку с BME280 на борту. Датчик даёт данные по температуре, влажности и давлению. Интересно будет собирать и анализировать эти данные.

Распаковал Orange Pi PC, мою любимая модель «Апельсина». Задумался, что в 2019 году на неё лучше ставить. За несколько прошедших лет в топ самой поддерживаемой операционки для этого мини-компа выбился Armbian. Клон Debian на разные ARM, в т.ч. H3 процессор апельсина. По этой ссылке https://www.armbian.com/orange-pi-pc/ скачал 7z архив с образом операционки. Рекомендованной в Armbian FAQ программой Etcher записал образ на флешку. В три клика, ничего сложного.

Флешку в апельсин, HDMI в монитор. В USB — клавиатуру. Комп грузится. Файловый раздел сам расширяется на всю флешку — всё выглядит крайне продуманным. Вхожу в linux, как root с паролем 1234. Тут же предложено сменить пароль и создать не-root юзера. Подключенный эзернет находит себе IP по DHCP. Всё работает как надо… кроме I2C.

Пропущу описание двух часов поиска, проб и ошибок. Выведу резюме. Чтобы включить I2C в апельсине под управлением Armbian достаточно в файле /boot/armbianEnv.txt дописать строку

overlays=i2c1

Распиновка 40-пинового разъёма расширения Апельсина

Я использовал второй I2C, выведенный на разъём малины / апельсины (нумерация с 0, так что номер 1 — второй). Подключил PA19 и PA18 ноги к SDA / SCL соответственно. Подключил питание (! 3.3 В) и землю к сенсору. Перезагрузил апельсина.

Понаставил I2C пакетов, описание нашёл здесь. Кратко, вдруг ссылка помрёт:

apt-get update
apt-get upgrade
apt-get install python-smbus python-dev
apt-get install i2c-tools

После чего на первом I2C появилось устройство 76 (BMP280, как я понимаю, имеет адрес 77. А BME280, как у меня — 76).

root@orangepipc:/etc# 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: — — — — — — 76 —

Мне ближе скриптовые языки, так что нагуглил это:
git clone https://github.com/adafruit/Adafruit_Python_BME280.git

В библиотеке сменил только адрес 77 на 76 и так завелась. Файл Adafruit_BME280.py, строка BME280_I2CADDR = 0x76

О, пишут что библиотека устарела. Но я и сам не сильно новый. А данные получены. Так что задача решена:

Temp = 22.162 deg C
Pressure = 976.56 hPa
Humidity = 56.48 %

Приступлю к следующей овощной задаче. К этому апельсину подключу патисона (камера Datyson T7c) — буду строить AllSky для знакомого.


Чуть позже, ради эксперимента, взял моток витой пары (примерно 15 метров). Напаял с двух сторон разъёмы под пины датчика и апельсина. Работает!

Temp = 24.943 deg C
Pressure = 990.60 hPa
Humidity = 43.49 %

Проводил так:

SLA и земля — одна пара;
SLC и земля — вторая пара;
+5 и земля — третья пара;
четвёртая пара висит без дела. Кабель не экранированный, одножильный.

комментариев: 2

  1. Борис:

    Олег! Подскажи пожалуйста, а вот для вот такого датчика может быть предусмотрено место — Датчик облачности инфракрасный термометр фирмы Melexis – MLX90614

    1. mo:

      Есть такая штука в моём зоопарке датчиков.
      Единственное, перед заказом я обчитался о сложности подключения именно этого датчика по I2C к Raspberry. Так что на Али взял версию с UART (последовательный порт) на борту. Подключается тремя проводами к UART малины / апельсины. Работает уже пару лет.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *