BME280 - датчик температуры, давления и влажности. "Метеостанция" из трёх деталей


Приветствую.
Для проверки показаний датчика влажности у метеостанции, было решено купить более-менее точный датчик, ёмкостного типа (дешёвые резистивные вроде DHT11 менее точны и не показывают влажность менее 20%). Был выбран BME280, как имеющий все сенсоры (и лучший по обзорам) и стоящий немногим дороже того же DHT22.
Также хотелось получить графики температуры/давления/влажности (и познакомиться с oled-дисплеями). Что и было реализовано.


Доставка

Датчик был куплен на али, с купоном вышло около 130р. Был доставлен за обычные 25 дней (трек ZA037342xxxHK). Упакован в стандартную пупырку.
Да, при покупке имейте в виду, что существует более дешёвая версия BMP280, без датчика влажности.

Датчик


Собственные фото
Для проверки датчик был подключен просто проводами. Потом будет запаян нормальный соединитель.


Собственно датчик: BME280 от Bosch Sensortec. Меряет температуру, давление и влажность. Работает по I2C.
Как видим, спереди на плате расположен сам датчик (металлический корпус с отверстием), а на обратной стороне находятся ldo стабилизатор 662k на 3.3В и схема согласования уровня линий данных, для использования с питанием от 5В.

В документации заявлены следующие, достаточно неплохие параметры:

Operating range  -40…+85 °C, 0…100 % rel. humidity, 300…1100 hPa

Точность измерения влажности ±3 %RH (в диапазоне 20…80 %RH)
Точность измерения давления ±1.0 hPa (в диапазоне 300 . . . 1100 hPa)
Точность измерения температуры ±0.5 °C (при 25 °C)


Они подтверждаются сравнением разных датчиков влажности на www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html где победил BME280.

Осталось его задействовать. Метеостанция на ардуине это конечно банально, но что делать )).

Остальные детали

Arduino nano была куплена прошлой осенью — версия от RobotDyn, пожалуй это лучший вариант nano, с полноценным стабилизатором 3.3В.

Фото




OLED-дисплей 0.96 дюймов 128X64 SSD1306 брался здесь. Питание от 3.3В. И да, он оказался совсем маленьким, это его основной недостаток. Пришлось делать переключение между отображением информации крупным шрифтом и показом графиков. Но зато идеальные углы обзора.
Фото




Собираем



Сборка элементарна — так как дисплей и датчик работают по I2C, то просто подсоединяем выводы SDA к пину A4 ардуины, SCK (SCL) к A5, Vin к питанию 3.3V и Gnd к земле. И заливаем скетч.
Потребляемый ток около 20мА. Выдаваемая температура оказалась где-то на 0.3 градуса выше, чем на образцовом градуснике (что соответствует допускам) и корректируется в скетче. Влажность близка к тому, что выдаёт метеостанция (и показываются значения меньшие 20%). Давление такое же как в аэропорту, с учётом разницы высот.

Скетч/Логика работы

С отображением цифр всё должно быть понятно, обновление идёт каждую секунду. С графиками чуть сложнее. Первые семь минут обновляем их каждую секунду. Потом переходим в долгоиграющий режим, где каждая точка это усреднение за семь минут. Точек 100, так что имеем информацию примерно за 12 часов. Графики сверху вниз — температура, влажность, давление (3 читабельные подписи на такой экран не влезают, поэтому без них). И слева пишется минимальное и максимальное значение за период.


Используемые библиотеки: BME280I2C и OLED_I2C (есть её русифицированная версия, а вот Adafruit_SSD1306 мне не понравилась, либа ест больше памяти и шрифты хуже)

Скетч

/*
 Vin (Voltage In)    ->  3.3V
 Gnd (Ground)        ->  Gnd
 SDA (Serial Data)   ->  A4 on Uno/Pro-Mini
 SCK (Serial Clock)  ->  A5 on Uno/Pro-Mini
*/

#include <BME280I2C.h>
#include <OLED_I2C.h>

#define PLOT_LEN      100
#define STORAGE_TIME  300

OLED  myOLED(SDA, SCL, 8);
BME280I2C bme;

extern uint8_t BigNumbers[];
extern uint8_t SmallFont[];

struct {
  byte temp = 0;
  byte hum = 0;
  byte pres = 0;
} infoArr[PLOT_LEN];

struct {
  float temp = 0;
  float hum = 0;
  float pres = 0;
  int counter = 0;
} avrg;

byte wait_cnt = 0;
bool fastMode = true;

void setup() {
  myOLED.begin();
  while (!bme.begin()) {
    delay(1000);
  }
  delay(500);
}

void loop() {
  bool metric = true;
  float temp(NAN), hum(NAN), pres(NAN);
  uint8_t pressureUnit(0); // unit: B000 = Pa, B001 = hPa, B010 = Hg, B011 = atm, B100 = bar, B101 = torr, B110 = N/m^2, B111 = psi

  bme.read(pres, temp, hum, metric, pressureUnit);
//  temp -= 0.3; // correct temp
  pres /= 133.3; // convert to mmHg

  myOLED.setBrightness(10);
  myOLED.clrScr();
  myOLED.setFont(BigNumbers);
  myOLED.print(String(temp, 1), 0, 0);
  myOLED.print(String(hum, 0), 92, 0);
  myOLED.print(String(pres, 1), 42, 40);

  myOLED.setFont(SmallFont);
  myOLED.print("~C", 56, 0);
  myOLED.print("%", 122, 0);
  myOLED.print("MM", 114, 58);
  myOLED.update();

  avrg.temp += temp;
  avrg.hum += hum;
  avrg.pres += pres;
  avrg.counter++;

  if (fastMode && avrg.counter >= STORAGE_TIME) {
    fastMode = false;
    for (int i = 0; i < PLOT_LEN - 1; i++) {
      infoArr[i].temp = 0;
      infoArr[i].hum = 0;
      infoArr[i].pres = 0;
    }
  }

  if (fastMode || avrg.counter >= STORAGE_TIME) {
    if (avrg.counter >= STORAGE_TIME) {
      temp = avrg.temp / avrg.counter;
      hum = avrg.hum / avrg.counter;
      pres = avrg.pres / avrg.counter;
      avrg.temp = 0;
      avrg.hum = 0;
      avrg.pres = 0;
      avrg.counter = 0;
    }
    for (int i = 1; i < PLOT_LEN; i++) {
      infoArr[i - 1] = infoArr[i];
    }
    infoArr[PLOT_LEN - 1].temp = round(temp) + 50;
    infoArr[PLOT_LEN - 1].pres = round(pres) - 650;
    infoArr[PLOT_LEN - 1].hum = round(hum);
  }
  delay(1000);

  /*
  Graph
  */

  if (wait_cnt > 3) {
    wait_cnt = 0;
    myOLED.clrScr();

    byte minTemp = 255;
    byte minHum = 255;
    byte minPres = 255;
    byte maxTemp = 0;
    byte maxHum = 0;
    byte maxPres = 0;

    for (int i = PLOT_LEN - 1; i >= 0 ; i--) {
      if (infoArr[i].temp == 0 && infoArr[i].hum == 0 && infoArr[i].pres == 0) break;

      if (infoArr[i].temp < minTemp) minTemp = infoArr[i].temp;
      if (infoArr[i].hum < minHum) minHum = infoArr[i].hum;
      if (infoArr[i].pres < minPres) minPres = infoArr[i].pres;

      if (infoArr[i].temp > maxTemp) maxTemp = infoArr[i].temp;
      if (infoArr[i].hum > maxHum) maxHum = infoArr[i].hum;
      if (infoArr[i].pres > maxPres) maxPres = infoArr[i].pres;
    }
    if (maxTemp - minTemp < 10) maxTemp = minTemp + 10;
    if (maxHum - minHum < 10) maxHum = minHum + 10;
    if (maxPres - minPres < 10) maxPres = minPres + 10;


    myOLED.setFont(SmallFont);
    myOLED.print(String(minTemp - 50), 0, 12);
    myOLED.print(String(maxTemp - 50), 0, 2);

    myOLED.print(String(minHum), 0, 34);
    myOLED.print(String(maxHum), 0, 24);

    myOLED.print(String(minPres + 650), 0, 56);
    myOLED.print(String(maxPres + 650), 0, 46);

    int x = 24;
    for (int i = 0; i < PLOT_LEN - 1; i++) {
      if (infoArr[i].temp == 0 && infoArr[i].hum == 0 && infoArr[i].pres == 0) continue;

      myOLED.drawLine(x, map(infoArr[i].temp, minTemp, maxTemp, 18, 0), x + 1, map(infoArr[i + 1].temp, minTemp, maxTemp, 18, 0));
      myOLED.drawLine(x, map(infoArr[i].hum, minHum, maxHum, 40, 22), x + 1, map(infoArr[i + 1].hum, minHum, maxHum, 40, 22));
      myOLED.drawLine(x, map(infoArr[i].pres, minPres, maxPres, 62, 44), x + 1, map(infoArr[i + 1].pres, minPres, maxPres, 62, 44));

      x++;
    }

    myOLED.update();

    delay(2000);
  }

  wait_cnt++;

}
+
avatar
  • SEM
  • 18 мая 2017, 17:34
+3
Эта вот «дырка от бублика» и есть датчик аж трёх параметров?!
+
avatar
+5
Ага. Притом, он чует даже когда его на полметра вверх-вниз двигают. Давление разное :)

Насчёт температуры на 0.3 выше — на это ко всему прочему может влиять и нагрев от других компонентов, включая нагрев от линейного стабилизатора, расположенного на плате с датчиком.
+
avatar
0
Может «разогревается» сам кристалл при непрерывных измерениях? Пишут (хотя и для DS18B20), что идеально — это проводить 1 измерение в 10 секунд, а между ними отправлять датчик в сон.
+
avatar
0
Да, может быть и сам кристалл тоже, но доки я не читал по этому поводу.

Насчёт DS18B20 — китайские (наверняка ведь подделки) у меня вообще чуть ли не на полградуса разогреваются, если опрашивать раз в секунду. Их только вырубать принудительно между опросами.
+
avatar
0
Разогреваются которые в пластике TO-92 или герметичные в металле тоже?
+
avatar
+1
Так герметичные в металле — это те же самые в ТО-92, засунутые китайцами в металл. Разве что металлическая оболочка, возможно, получше рассеивает тепло, генерируемое самим сенсором.
+
avatar
  • sim31r
  • 19 мая 2017, 02:33
+1
DS18B20 потребляет около 1 мА при измерении, при чем тут подделка? Если ставить максимальную точность в 1/16 градуса, то измеряет 0.75 секунды, вы гоняете его каждую секунду, спит он у вас всего 0.25 секунды, он и разогреется обязательно. Снижайте точность или увеличивайте период опроса.
Если будете опрашивать 1 раз в 2 секунды, спать он будет уже не 0.25 секунды, а 1.25 секунды, большую часть времени…
+
avatar
  • Offi
  • 18 мая 2017, 17:40
+1
Э… как бы датчик рядом с этим отверстием, которое для крепления болтиком к корпусу предназначено.
+
avatar
0
Как бы в датчике маленькое отверстие, если вы об этом
+
avatar
  • kirich
  • 18 мая 2017, 18:53
0
Отверстие в плате, датчик рядом, а автор мог бы фото и получше сделать, еле разглядел где вообще датчик, да и то на фото продавца.
+
avatar
  • SEM
  • 19 мая 2017, 10:06
0
А, всё-таки та мелкая «коробочка» с дырочкой как от иголки, рядом с большой дыркой?
По фото сначала так и подумал, но смутила фраза автора…
+
avatar
+7
Уважаемый! На эту «дырку с бубликом» имеется даже datasheet. Причем, этот «бублик», на мой взгляд, очень даже хорош по параметрам. Так-же, на мой взгляд, «дырка от бублика» в Вас, а не в датчике.
+
avatar
+4
Минусов наставили, никак не аргументировали. Хотелось бы увидеть конструктивный диалог.
+
avatar
  • asdfgh
  • 18 мая 2017, 21:04
+3
Не переживай, они ни на что не влияют
+
avatar
0
Нисколько не переживаю. Но, какой-то неуч заявляет «дырка от бублика» на BME280, сразу вопрос: «А что сделал ты?».
+
avatar
  • asdfgh
  • 18 мая 2017, 21:30
+1
Хочется кому-то самоутвердиться.
+
avatar
  • Dimon_
  • 18 мая 2017, 17:52
+10
Спасибо. Хоть и несложно, но приятно читать.
Плюс.

[ЗанудаModeOn]
pres /= 133.3;
Надо было делить на значение 133.321995 :)
[ЗанудаModeOff]
+
avatar
+1
Мега-зачот и лайк
+
avatar
+4
Здравствуйте. А можно фотографии, на которых хорошо видно, что с чем соединяется или схему. И ссылку на кабель для заливки скетча в Arduino, и провода для соединений. Не хочется чего-то спалить и лишнего брать. Этот обзор с подвиг меня начать движение в сторону Arduino.
+
avatar
+7
И ссылку на кабель для заливки скетча в Arduino
+
avatar
  • asdfgh
  • 18 мая 2017, 20:02
0
О, их есть у меня.
Теперь бы ссылку на программу,… как я понимаю на уровне чайника, в которую скопировать/вставить текст скетча, потом нажать «загрузить в ардуину»?

дописываю позже: вроде все нашел на arduino.ru
+
avatar
+3
Почитайте вот здесь. Пошагово и очень доступно расписано, что и как…
+
avatar
  • asdfgh
  • 18 мая 2017, 22:34
+2
Смею предположить, что конкретно данный кабель не подойдет для заливки скетча в обозреваемый Аrduino nano
+
avatar
0
На обратной стороне платы под наклейкой QC pass микросхема в SOIC — скорее всего CH340G, мост USB/UART.
+
avatar
  • asdfgh
  • 19 мая 2017, 10:00
+1
Кабель на фото- миниUSB,
У описываемого Arduino nano — разъем microUSB.
И никакого всемирного заговора.
+
avatar
  • Rzzz
  • 19 мая 2017, 00:04
+1
Она если с USB-портом, то и свой USB-TTL адаптер на борту. Без него это pro.mini.
+
avatar
0
Сборка элементарна — так как дисплей и датчик работают по I2C, то просто подсоединяем выводы SDA к пину A4 ардуины, SCK (SCL) к A5, Vin к питанию 3.3V и Gnd к земле.
+
avatar
  • allll
  • 19 мая 2017, 15:43
+1
Кабель обычный: USB -> Micro-USB. Провода для соединения — типа таких. Берём четыре, снимаем по середине изоляцию и прикручиваем/припаиваем к датчику. Разъёмами подключаем к ардуино и экрану. Готово.
Питать nano можно от компового юсб или какой-нибудь зарядки от телефона, с микро-юсб выходом.
+
avatar
0
Всем спасибо за рекомендации.
+
avatar
0
Operating range -40…+85 °C
А есть такое, но до -70?
+
avatar
  • FloX
  • 18 мая 2017, 18:47
+9
Оймякон?
+
avatar
+1
Можно бы и туда, конечно, но пока что это просто камера климатических испытаний.
+
avatar
+5
Название немного неверное «Метеостанция из трёх деталей», надо было написать «Метеостанция» из пяти деталей: трех радиокомпонентов, прямых рук и умной светлой головы.
+
avatar
+8
hands.sys & brain.sys — не детали а драйвера, это ж всем известный факт, еще со времен ФИДО!
Во кстати, выдернуто с одного известного форума:
+
avatar
  • asdfgh
  • 18 мая 2017, 20:04
+7
во времена фидо библиотека называлась pyku.sys

З.Ы. фидошник с начала 90-х годов прошлого века
+
avatar
+2
так то локализованная версия)))
+
avatar
0
До сих пор пользуетесь FidoNet?
+
avatar
  • asdfgh
  • 19 мая 2017, 22:44
0
Не, фидошничать начинал на БК-0011м (был в свое время советский персональный компьютер), а позже оПиСючился (купил IBM 386dx40). Потом появился интернет, и в начале 2000х фидошничать перестал.
+
avatar
0
Вообще-то

/dev/hands
+
avatar
  • vit375
  • 21 мая 2017, 11:17
0
Виндузятники...)
+
avatar
  • X3Shim
  • 18 мая 2017, 18:40
+6
Я на таком же датчике собрал уличный блок, и еще один жду в комнатный блок вместо 180-го.

Вопрос только один, почему не ESP? Этот датчик она прекрасно умеет, экран тоже, 3.3 на ней есть, из той же ArduinoIDE точно так же программируется. Стоит аналогично :)
+
avatar
  • 644052
  • 18 мая 2017, 18:51
+1
Вопрос только один, почему не ESP? Этот датчик она прекрасно умеет, экран тоже, 3.3 на ней есть, из той же ArduinoIDE точно так же программируется. Стоит аналогично :)
Так именно по этому…
А еще, видимо по тому что...
Arduino nano была куплена прошлой осенью
+
avatar
+1
Есть вероятность, что BME280 на улице долго не протянет. Люди жалуются. Хотя, конечно, это напрямую от условий/климата зависит.
+
avatar
  • X3Shim
  • 18 мая 2017, 20:19
0
Ну вот и проверю. Прямо вода на него попадать не должна у меня. DHT22 совсем криво показывал влажность. Так что даже не знаю что еще можно на улицу из не сильно дорогого поставить.
+
avatar
0
ИМХО, крышка у датчика металлическая, что теоретически может способствовать выпадению на ней росы. Если не обеспечить отвод из-под крышки капель воды через отверстие естественным путем, то при первом заморозке датчику придется несладко.
+
avatar
  • X3Shim
  • 18 мая 2017, 20:52
0
Да, металл. Варианты то какие?
+
avatar
0
Этот датчик мне еще не приехал, но мысли пока такие:
Плату установить горизонтально, чтобы дырка смотрела вниз. Плату покрыть лаком, крышку датчика тоже, но аккуратно, чтобы не залилось внутрь. На многих станциях вижу приточный вентилятор — вероятно это жжжж неспроста.
+
avatar
0
что-то типа si7021 (только с давлением) на них мембрана стоит. Или поискать эту мембрану отдельно.
+
avatar
0
Для датчиков влажности есть специальные корпуса с мембраной из тонкопористой прессованной PTFE пленки. Конский ценник…
+
avatar
0
Попробовать просто обернуть плату ветровлагозащитной пленкой/мембраной из строймага?
+
avatar
  • FloX
  • 21 мая 2017, 08:24
+1
от точки росы это же не спасет
+
avatar
  • SolarW
  • 21 мая 2017, 14:44
0
А можно ссылочку где жалуются?
Чешутся руки попробовать засунуть в самопальную будку Стивенсона из вентиляционных решеток…
+
avatar
0
Жаловались на форуме проекта MySensors, я сам пользуюсь MySensors и время от времени посматриваю форум. forum.mysensors.org/topic/4917/bme280-how-to-use-it-outdoors

DHT22 из «первых партий» померли на улице довольно быстро и сейчас показывают «погоду на марсе», поэтому жаба мне не позволила дорогущие BME280 оставить на улице для проверки.

Тем временем дома другие DHT22 и BME280 показывают примерно одно и то же.
+
avatar
0
пипец! вот у людей руки не из жопы. однозначно +!

себе купил ESPMeteoSmall (у меня руки из от туда) для мониторинга на narodmon.ru/
+
avatar
+2
чтобы из лего собрать заранее определенную фигуру — не надо иметь никаких рук, можно даже ногами
а вот написать безглючную библиотеку — вот где мозги нужны
+
avatar
  • SterX
  • 18 мая 2017, 19:36
0
Эх! Вот бы кто из него сделал обвязку для камеры копчения-вяления колбасы!
чтоб ТЭНы-увлажнители-вентиляторы автоматом включались и нужные параметры кнопами вводились и на дисплее отображались…
+
avatar
  • X3Shim
  • 18 мая 2017, 19:42
0
Так в этом нет проблемы. Люди и автоматические пивоварни делают :)
+
avatar
  • SterX
  • 18 мая 2017, 19:46
0
Охотно верю. По схеме соберу — только в путь. А вот ручками своими и головой — опыта не хватает
+
avatar
  • Sg43
  • 18 мая 2017, 19:46
0
На arduino.ru поищите, наверняка кто-то такое уже делал.
+
avatar
  • kke
  • 18 мая 2017, 19:48
0
А помните как в игре «цивилизация» был пункт исследований «минитюризация»? Так что я ничему не удивляюсь уже!
+
avatar
0
А можно сделать чтоб этот девайс погоду предсказывал? Показывал там тучи и дождь, или солнце.
+
avatar
  • kke
  • 18 мая 2017, 20:09
0
Можно! Если ума хватит!(без обид)
+
avatar
+2
Видел у одного товарища такую штуку, говорит если находишься на одном месте то довольно точно предсказывает, вот и стало интересно, можно ли аналогичное реализовать на ардуино.
+
avatar
  • sim31r
  • 19 мая 2017, 02:36
0
Падение давление к дождю? На Гисметео можно архивы посмотреть, что с давлением перед дождем…
+
avatar
  • tokmin
  • 20 мая 2017, 22:13
0
А если долго на одном месте находишься, то начинаешь без гисметео запоминать, «что с давлением перед дождем». :)
+
avatar
  • trembo
  • 18 мая 2017, 20:09
0
Текущее состояние и направление движения осадков всегда смотрю вот такими прогами на мобильнике:
play.google.com/store/search?q=rain%20radar&c=apps
А конкретно вот этой:
play.google.com/store/apps/details?id=lv.mbriedis.lietus
+
avatar
0
Они берут данные из интернета? если нет 3G связи?
У Rain Radar не нашёл Россию в списке.
+
avatar
  • trembo
  • 18 мая 2017, 21:05
0
Это метеорадары аэропортов.
Обычно они раз в 5- 10 минут сканируют капли дождя в радиусе 250 км.
Можете тут ещё глянуть, там интересно​ кнопки под картинкой понажимать:
lietus.lv.
Хотя скорее всего это не ваш регион…
+
avatar
0
Реализовать хотя бы простейший алгоритм Замбретти.
+
avatar
+2
Для Замбретти еще флюгер надо приделать.
+
avatar
  • dansar
  • 18 мая 2017, 20:06
-1
в диапазоне 20…80 %RH
т.е. как датчик влажности, он совершенно не годится?
+
avatar
+6
Вы выдернули кусочек фразы из контекста. Автор говорил про точность в 3% в этом диапазоне (от 20 до 80).

С тем же успехом можно сказать, что и как датчик давления он совершенно не годится. Ни там глубокого вакуума, ни даже банально давление в шинах не проверить.
+
avatar
  • dansar
  • 20 мая 2017, 11:35
0
Я смотрел прогноз погоды на четверг, влажность была указана 97%. Этот датчик будет показывать такую влажность?
+
avatar
0
Да что же Вы за человек такой 8)

Сейчас лично подошёл и подышал на датчик. Не уверен, сможет ли он показать 97% (кстати, при какой температуре?), но 95.4% я добился с первого раза. Датчик дома, температура около +25 градусов цельсия. Не знаю, достаточно ли Вам моих слов или надо какие-то более серьёзные доказательства.

Может быть Вы потрудитесь datasheet глянуть, вдруг там есть ответ на этот вопрос?
+
avatar
+1
Иногда и под 100% показывает. На самом деле влажность в течение дня меняется достаточно сильно:
+
avatar
0
Проблем из-за двух резисторов, подтягивающих линию данных не возникает, какие номиналы там?
+
avatar
  • ariss
  • 18 мая 2017, 20:26
0
Тут попросили мониторить теплицу — инет в доме есть. У кого нить решения есть как с минимальными затратами организовать?
+
avatar
0
MySensors гляньте, просто делается, с картинками, готовыми примерами и так далее.
+
avatar
  • ariss
  • 18 мая 2017, 21:57
0
спасибо, бум изучать
+
avatar
  • dansar
  • 20 мая 2017, 11:39
0
trembo уже написал про WiFi-IoT
Мне нравится, что прошивка сама обновляется с сайта. т.е. модуль ESP8266 к компьютеру нужно только один раз подключать. Только для полного управления скорее всего потребуется лицензия, 110 р. на модуль.
+
avatar
+3
На Али есть более дешевые датчики, без стабилизаторов на плате.
Соответственно питание на 3.3В Для более точного измерения температуры, это даже лучше.
+
avatar
  • AndrVU
  • 18 мая 2017, 22:06
+1
У них еще два вывода SDO и CSB. Для чего они?
+
avatar
+3
Это для SPI интерфейса. Датчик BME280 может по I2C и по SPI, на выбор.
+
avatar
  • Eeyore
  • 18 мая 2017, 20:32
0
Я подключил несколько таких датчиков к RaspberryPi в разных частях дома с передачей данных по SNMP на сервер, который все показывал через Cacti. Инструкции для RPi здесь www.satsignal.eu/raspberry-pi/monitoring.html
+
avatar
0
Как решили вопрос с одинаковыми i2c адресами датчиков?
+
avatar
  • Eeyore
  • 18 мая 2017, 20:39
0
Я подключал к разным RPi. Но вопрос решить можно, в датчике адрес изменяется. Инструкцию где-то видел, адрес с налета не вспомню.
+
avatar
0
Если разные то наверное подешевле было использовать esp или orange pi zero. Или они ещё что-то умное делают?
Спасибо за наводку, погуглю про смену адреса.
+
avatar
  • Eeyore
  • 18 мая 2017, 21:48
0
Ничего особо умного. На одной Kodi, другая самолеты мониторит для Flightradar24. Может с другими было бы дешевле, у меня не хватает времени и на то что есть.
+
avatar
+2
Посмотрел цены на 2«42 OLED. Стало плохо.
+
avatar
0
товарищи хелп. есть датчики давления до 16 бар?!
+
avatar
+1
Конечно!
тыц US $19.90

и тыц2 US $14.00 чуть большее давление
+
avatar
0
с ардуино будет работать? :) я просто нуб в этом деле, :)
+
avatar
  • Crafty
  • 18 мая 2017, 23:09
+3
А я такой же к ESP8266 подключил
Без дисплея, все данные получаю просто по WiFi и смотрю в браузере (+ данные логируются на сервер)
Золотистого цвета — это MH-Z19 (датчик CO2)
+
avatar
+1
А скетч где посмотреть можно?
+
avatar
  • Crafty
  • 19 мая 2017, 10:37
0
Я к сожалению, не знаю как правильно сделать скетч
Просто кусочек исходника
Оно на lua, а графики строятся на сервере с Django (куда отсылаются данные раз в 10 секунд)
К сожалению, у меня не было возможности написать код нормально, да и с lua я не знаком, использован код многих людей в частности barkon
pastebin.com/FsHKKdYJ
Тут без считывания с MH-Z19 если надо и его — пишите (он отдельными файликами)
+
avatar
  • Surami
  • 19 мая 2017, 10:03
0
Меня тоже скетч интересует. Спасибо!
+
avatar
  • Crafty
  • 19 мая 2017, 10:39
0
По скетчу — ответил чуть выше
mySKU.me/blog/aliexpress/52057.html#comment2062858
+
avatar
+6
Мой вариант: BME + ESP8266
Питание — солнечная панель, «usb зарядка» для лития + LM3671, акк от вертолетика.
Работает почти год, зимой были проблемки с подзарядкой, поставил панель побольше.
Тут (моя песочница) можно глянуть погоду с моего балкончика.
+
avatar
0
А солнечная панель какая? Напряжение, ток? Или хотя бы размеры.
+
avatar
+1
Брал такую 15 см х 6.9 см.
Но у меня регион северный, в средней полосе и южнее (РФ), такая большая явно не нужна.
+
avatar
0
Годная вещь. Можно еще мелкий вентилятор запитать в солнечный день.
+
avatar
  • Z2K
  • 19 мая 2017, 12:56
0
Но у меня регион северный
— а где это у Вас на северном регионе 14.05, 18.05 +45С? :) Неплохой север.
+
avatar
0
Сыктывкар, температура скачет от солнца, балкончик небольшой и в солнечную погоду, если не открывать окна, хорошенько прогревается :)
Да и сам датчик под солнечные лучи попадет
+
avatar
0
У меня сделано аналогичное, только спящий режим не допилен, поэтому заряженной за день батарейки — на всю ночь не хватает.
+
avatar
  • Virtum
  • 20 мая 2017, 00:46
+1
Очень заинтересовал ваш вариант! А не мог ли бы вы описать более конкретно вашу реализация(схему и какие использовали компоненты)? т.к. в железе не очень рублю, но подумываю над таким же устройством.
+
avatar
0
Чуть позже нарисую и покажу схемку
+
avatar
  • VJean
  • 20 мая 2017, 17:31
0
Позанудствую немного :)
Время на оси х из-за разворота текста — нечитаемо. Опечатка в «Тепмература» )
Я бы рисовал все три показателя на одном графике разным цветом. Ось х — время, ось y (слева) — температура + влажность; справа — давление.
°С / %                                                             P, мм рт.ст. 
100 |                                                            | 761.0
    |                                                            | 760.9
 90 |                                                            | 760.8
    |                                                            | 760.7
 ...
    |                                                            | 759.3
 10 |                                                            | 759.2
    |                                                            | 759.1
 0  |                                                            | 759.0
   ----------------------------------------------------------------
      00    ...
+
avatar
0
Вы правы, но на тот момент, важна была лишь работоспособность. Сейчас руки не доходят довести до ума, в планах распечатать корпус и повесить в теплице.
+
avatar
  • VJean
  • 21 мая 2017, 22:25
0
как-то так, но еще требует напильника.
+
avatar
  • Apox
  • 21 мая 2017, 00:10
-1
Этот OLED не может разными цветами.
+
avatar
  • VJean
  • 21 мая 2017, 00:26
0
А причем тут OLED?
Речь про
Тут (моя песочница) можно глянуть погоду с моего балкончика.
+
avatar
0
Скетчем не поделитесь?
+
avatar
0
Скетч достаточно старый, в нем есть костыли для корректной работы ESP8266, возможно сейчас они не актуальны
я.диск
+
avatar
0
Спасибо.
+
avatar
0
насколько ваш датчик точнее такого:
mySKU.me/blog/china-stores/30078.html
и можно ли купить термометр/гигрометро уже готовый на этой BME?
+
avatar
  • allll
  • 19 мая 2017, 13:08
+1
Там гигрометр с простым резистивным датчиком, точность которого — как повезёт. При удачном варианте, в диапазоне 30-70% RH разница будет невелика. Хотя по-моему, завышение на ~10% встречается чаще.
Готовые термогигрометры на точных емкостных датчиках бывают, но считаются (полу)профессиональными и стоят прилично, скажем TFA 30.5010 больше 2 тысяч.
+
avatar
0
спасибо) придется осваивать адруино))
+
avatar
  • dushes
  • 19 мая 2017, 09:19
0
А такие есть с уже напаяными штырьками для хлебо-доски?
И еще вопрос, сравнивали ли показания с DHT11 в полевых условиях?
+
avatar
  • allll
  • 19 мая 2017, 10:22
0
C напаянными штырьками не встречал.
DHT11 выдавал влажность на десятку больше, чем метеостанция (и BME280)
+
avatar
  • Q2W
  • 19 мая 2017, 11:36
0
Если будете припаивать ножки сами, то осторожней — есть опасность перегреть датчик.
Я так BMP085 сломал.
Но потом я купил несколько BMP180 (ещё не знал о BME280) и припаял ноги к ним — вышло успешно.
Так что попытки со второй и у вас наверняка получится.
+
avatar
+3
BME280 — прекрасен для внутреннего применения.
Мне пришлось вынести датчик из корпуса, ибо нагрев прибора (реализовано на ESP-12 + мини-БП в корпусе китайского блока питания) всё портит.

+
avatar
0
с доставкой в Беларусь аж 5,55 долл.
+
avatar
  • DLL
  • 19 мая 2017, 11:24
0
а к компьютеру можно подключить этот датчик? ещё вопрос — в какой корпус будете это всё помещать или так оставите?
+
avatar
  • allll
  • 19 мая 2017, 15:34
0
Если по проводам, то проще и дешевле через ту же ардуину писать в вирт. ком-порт. (для WI-FI используют ESP8266).
I2C-USB переходники бывают, но похоже стоят дороже.
Корпус — пока не знаю ))
+
avatar
0
Обычная nano и есть переходник I2C-USB
+
avatar
  • tklim
  • 20 мая 2017, 08:14
0
А что там в ардуиновской библиотеке насчет сна? У меня такой же датчик стоит рядом с двумя 1820 — врет а ж на +2 градуса, и это при опросе раз 10 секунд. Хотя пока пока не прогреется, то все одинаково
+
avatar
  • f1203
  • 20 мая 2017, 18:52
0
Сколько стоит вся метеостанция с андруиной и прочим? Давно хотел собрать что -то подобное, только опыта нет
+
avatar
  • allll
  • 20 мая 2017, 21:47
+1
Порядка 10$ если брать в одном магазине (чего я не делал).
+
avatar
  • allll
  • 20 мая 2017, 23:05
0
И да, Arduino Nano с разъёмом Micro USB (а не мини) на сегодня явно практичней. Так что похоже одним магазином не обойтись.
+
avatar
  • f1203
  • 20 мая 2017, 23:21
0
Извиняюсь за тупой вопрос. Датчик СО2 там ещё прикрутить можно дополнительно? Контакты под доп. оборудование остались?
+
avatar
  • allll
  • 21 мая 2017, 10:17
+1
Да, можно. Задействованы только выводы I2C, а к ним можно подключить много.
+
avatar
  • VG1544
  • 21 мая 2017, 18:41
0
И у меня появился вопрос, если сделать вот такое устройство, как в этом обзоре, можно в него установить датчики температуры и влажности и что бы включался кондиционер или вентилятор по таймеру? (более простым способом, и в программной части тоже), или сделать как в том обзоре со всему этими датчиками (не получится ли много нестыковок), может и вас натолкнёт на мысль как это лучше использовать.
+
avatar
  • centr
  • 21 мая 2017, 12:04
0
Я новичёк в этом деле. Собрал, залил Ваш скетч. Температуру и давление показывает, а влажность 0 процентов. Модуль ВМР280 отличается от Вашего — с шестью пинами. Что можно сделать?
+
avatar
  • rx3apf
  • 21 мая 2017, 12:25
+3
Купить BME280. В BMP280 датчика влажности нет.
+
avatar
  • centr
  • 21 мая 2017, 12:31
0
У автора тоже Е/P, но всё равно спасибо за совет, куплю, конечно
+
avatar
+3
У автора маркером подчёрнута BME-версия, у Вас выделена чёрным маркером BMP-версия. Они крайне похожие, поэтому китайцы и делают одну плату на оба датчика.
+
avatar
  • centr
  • 21 мая 2017, 16:50
0
понял, спасибо
+
avatar
  • rx3apf
  • 21 мая 2017, 12:55
+1
Это плата под E/P, а уж какой чип будет стоять (и сколько будет стоить модуль) — совершенно другое дело.
+
avatar
  • f-lirt
  • 21 мая 2017, 14:00
0
Ребята, может кто хочет сделать метеостанцию со средним размером экрана, 2-3 выносными датчиками, чтобы менять температуру на улице и других комнатах. Можно скооперироваться и собрать что-то подобное.
+
avatar
0
А можно ли у ардуины понизить частоту до 32 кГц (или какой там минимум в режиме «от внутреннего генератора») без перепрограммирования загрузчика?
+
avatar
  • kiv69
  • 22 мая 2017, 04:21
0
Датчик хорош, отложил в вишлист. Хотя вряд ли найду на него время. А покупать впрок не буду, и так уже набрал вкусняшек целый вагон на 20 лет вперёд :)
Ардуино непонятно, зачем приплели, можно использовать с любым МК.
Думал, ардуино в жизни не буду ставить, однако на носу сборка второго 3D принтера, придётся всё же ставить его для заливки прошивки.
+
avatar
0
«Метеостанция» из трёх деталей ??? Типа «машина из четырёх колёс»???
В первом случае не хватает станции, во втором,- машины.
Ничего не имею против идеи, и даже очень приветствую. Однако, заголовок мог быть поскромнее.