Несколько слов о датчике BME280.

Поделиться
HTML-код
  • Опубликовано: 25 янв 2018
  • Проверил датчик на работоспособность. Протестировал по I2C и SPI.
    А в конце видео собрал макет термо-баро-гигрометра.
    Скачать библиотеку Adafruit_BME280_Library github.com/adafruit/Adafruit_...
    Скачать библиотеку Adafruit_Sensor github.com/adafruit/Adafruit_...
    Материалы: drive.google.com/file/d/1OdjH...
    Ссылка на видео: • Несколько слов о датчи...
    Ссылка на playlist "Изучаем Ардуино": • Изучение ардуино
    Ссылка на playlist "Посылки из Китая": • Посылки из Китая
    Ссылка на playlist "Мои самоделки": • Homemade Electroniсs
    .
    Ссылка на канал: / @user-tt3pb2ry6w
    #BME280, #mega2560
    asdfghjklqxwcev
  • НаукаНаука

Комментарии • 62

  • @user-ut5yb4fq8i
    @user-ut5yb4fq8i 6 лет назад +5

    Хорошее видео. Дополню.
    Ага, то же недавно про него видео снимал. про i2C в даташите написано,
    что SDO притяни к GND будет 0x76
    а если SDO притянуть к +3,3В то будет 0x77
    ну и соответственно bme.begin(0x76);

  • @olexangrstetsiuk3092
    @olexangrstetsiuk3092 5 лет назад +6

    Вот это и есть самая доступная для понимания инструкция, безусловно лайк и подписка на канал .

  • @ru7puss
    @ru7puss 6 лет назад +16

    У кого не работает скетч, меняем lcd.begin(); на lcd.init(); и status = bme.begin(); на status = bme.begin(0x76); только с такими параметрами заработало на Nano v3

    • @reels-in-ua
      @reels-in-ua 3 месяца назад

      На Уно - то же самое. Достаточно было изменить lcd.begin(); на lcd.init(); , а второй параметр прописал в библиотеку

  • @RoDanTV
    @RoDanTV 6 лет назад +5

    Привет! Молодец! Понравилось!))Продолжай -очень интересно!Лайк с меня!))

  • @user-ut5yb4fq8i
    @user-ut5yb4fq8i 6 лет назад

    А еще вопрос. Ну вот сам сидел много времени с ним. Ну косячно высоту определяет. Хотя реакция на изменение высоты датчика очень четкая. Хоть контроллер игровой делай.
    Вот и вопрос. Если разберетесь в этом. Буду безмерно благодарен.

  • @poli_vit8981
    @poli_vit8981 5 лет назад

    Спасибо за видео. Но уж если вы рассказываете все так подробно не забывайте о нюансах. Я вот прямо совсем новичок, и для меня некоторые очевидные, для вас, вещи кажутся мне дремучим лесом. У меня плата nano3. Не работал ваш скетч, пока в строке: status = bme.begin(); не прописал адрес датчика: 0х76. Хотя, конечно, только на ошибках и развиваешься/учишься. Просто, первые шаги и уже репу надо морщить))). В любом случае видео очень помогло, спасибо

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  5 лет назад +1

      Спасибо за отзыв. Думаете мне вначале было легко. Также ничего не получалось и кипели мозги. Я рекомендую вам сайт mypractic.ru, на нём есть уроки ардуино, по которым учился я. Также смотрите мой канал, я стараюсь всё излагать доходчиво с подробными комментариями. Поделитесь моим каналом со своими друзьями, и вам легче совместно изучать да и мне просмотров больше. И ещё включите колокольчик!

  • @user-jq7mt9nk8k
    @user-jq7mt9nk8k 5 лет назад +1

    Также блок тестирования датчика -
    // Вывод надписи lcd.print(" BME280 test"); lcd.setCursor(0, 2); lcd.print(" sensor reading"); delay(4000); // Поиск датчика bool status; status = bme.begin(); lcd.clear(); if (!status) { lcd.print(" BME280 sensor"); lcd.setCursor(1, 1); lcd.print("not found"); while (1);
    у меня вообще не отображается. Заливаю Ваш скетч, дуина перезагружается и сразу выдает указанные ранее параметры температуры, влажности и давления...тоже не понимаю почему...

  • @werner4058
    @werner4058 6 лет назад +1

    У меня было , что по I2C не находился из за уровней , после согласования все ОК.

  • @alexanderk.3838
    @alexanderk.3838 4 года назад +1

    Приветствую. Хороший видео обзор. Подписался. Есть вопросы.
    Хочу подключить два датчика, один датчик вынести за окно. каким проводом? Другой для квартиры.
    И как их именно подключить? у меня Raspberry pi 3.

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  4 года назад

      Привет. С Raspberry не возился, подсказать не смогу. Выносить этот датчик на улицу я бы не рискнул, окислится и выйдет со строя. Аналогичные датчики для измерения давления, влажности и температуры я оставил в помещении (застеклённый балкон). Всё работает замечательно. Вопрос к вам: зачем вам два одинаковых датчика в комнате р за окном? Если хотите делать метеостанцию, то уличную температуру можно измерить ds18b20. Посмотрите на моём канале видео "Погодная станция", может вам поможет

    • @alexanderk.3838
      @alexanderk.3838 4 года назад

      @@user-tt3pb2ry6w Корпус для датчика сделать не проблема. Не понятна схема подключения два датчика. Или посоветуйте какой более менее точный датчик для улицы. Длинный. Хотя ещё хотелось бы влажность на улице мерить. А для квартиры тогда bme280. Каким проводом подключали?

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  4 года назад

      @@alexanderk.3838 Датчик ВМЕ подключается по 4 проводам. Я применял два микрофонных про вода (2 жилы в экране). Менее точный датчик влажности это dht 22. Но это скорей показометр, чем датчик. Будет цены на апельсины показывать, а не влажность. И ещё! Мой товарищ адаптировал ВМЕ для улицы. Делал корпус из горлышка пластиковой бутылки, плату датчика заливал эпоксидной. Оставлял нетронутым датчик. В итоге всё это прослужило месяц. Потом отказ! Решать вам. Но я бы этот датчик на улице не использовал

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  4 года назад

      И ещё. Датчик может работать по шине I2C. На шину можно повесить несколько датчиков. Важно знать номер датчика для шины I2C. Подробно нужно почитать в data sheet

    • @alexanderk.3838
      @alexanderk.3838 4 года назад

      @@user-tt3pb2ry6w Спасибо за ответы.
      Ещё вопрос, есть метеостанция Vitek 6404. Перестала ловить внешний датчик. каналы перебирал все, батарейки менял все, толку никакого. что сломалось? как починить?

  • @icerock_
    @icerock_ 3 года назад

    Эх. Теперь бы на этом датчике "Погодную станцию для дома" реализовать. А то , там надо кучу датчиков подключать.

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  3 года назад

      Для погодной станции нужно хороший экран, на который можно выводить не только цифры, но и графики. Например такую ruclips.net/video/Q4nNPgbTF7Y/видео.html

  • @user-jq7mt9nk8k
    @user-jq7mt9nk8k 5 лет назад

    Вопрос: после заливки скетка почему-то не пишет про тест датчика. А сразу выдает например: Т:2.0С4.1% и во второй строке Р7.3 Почему так? Как-будто во всех параметрах перед запятой только один знак...

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  5 лет назад

      Вы изменяли скетч? Также проверьте правильность подсоединения датчика. Попробуйте отсоединить его и перезапустить ардуину

  • @81DGEKA
    @81DGEKA 4 года назад

    лайк с меня ! как с отрицательными температурами ?

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  4 года назад

      за лайк спасибо. По datasheetдиапазон температур -40…+85 °C, но я не проверял

  • @user-zd7ye1jj2j
    @user-zd7ye1jj2j Год назад

    Ртутного столбца?

  • @sergeyhegner9352
    @sergeyhegner9352 4 года назад

    Здравствуйте. прокомментируйте строчку ( lcd.print(bme.readPressure()/133.33,1); ) дома два борометра на bmp180 первый показывает 728, второй 727. ваш барометр показывает 724, объясните что означают эти значения (/133.33).правильно же вроде так : (P*0,7500637554192,2) Спасибо.

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  4 года назад +1

      Здравствуйте! Задали Вы мне вопрос! Прошёл уже год после публикации видео. Поэтому пришлось перечитать datasheet и вспомнить соотношение мер давления. Так вот! Данные датчика - это безнаковое целое 32р число, которые программой( стр 23 datasheet) преобразуется в в формат: 24р целая часть, 8р после запятой. И это Паскали. В первой части видео я использовал пример из библиотеки и там выходные данные делились на 100. Результат был в Гектопаскалях. Теперь вернёмся к моей строке: результат / 133,33. Перейдите на planetcalc.ru/258. В таблице "Единицы давления" в пятой строке указано, что 1 мм рт ст = 133.322368 Па. Поэтому берём результат и делим его на 133.33 (немного округлил).

    • @sergeyhegner9352
      @sergeyhegner9352 4 года назад

      @@user-tt3pb2ry6w большое вам спасибо ,все предельно ясно.

  • @user-ok5pp3tb1n
    @user-ok5pp3tb1n 6 лет назад

    При согревании датчика рукой температура поднялась всего на 0.2 - 0.5 градусов . Что то неправдоподобно. Я подключал этот датчик к контроллеру напрямую без ардуино. При касании его рукой через 5 секунд температура с 23 превышает 30 градусов. BME 280 очень шустро реагирует на колебания.

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  6 лет назад +1

      Здравствуйте! Непонятна фраза "Я подключал этот датчик к контроллеру напрямую без ардуино ". К какому контроллеру подключали? Где температуру смотрели в обоих случаях?

  • @vladimirnikitin5734
    @vladimirnikitin5734 6 лет назад

    Всё здорово! Но почему "столбЦа" ,а не столба? :)))
    И ещё вопрос ,для чего надо "переименовать" библиотеку?

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  6 лет назад

      Вот как-то так получился столбец вместо столба. Почему то без переименования директории библиотека не подключалась.

    • @vladimirnikitin5734
      @vladimirnikitin5734 6 лет назад

      Ну,столбец в таблицах бывает :)) А так ,не чего страшного...
      Я не переименоввывал,и библиотека встала нормально.

  • @dYbius
    @dYbius 3 года назад

    Здравствуйте. При компиляции вашего кода (скетча) выдаёт ошибку
    no matching function for call to 'LiquidCrystal_I2C::begin()'
    В чём может быть причина?

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  3 года назад

      Здравствуйте. Библиотеки все установлены?

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  3 года назад

      Почитайте комменты, вроде был такой вопрос

    • @dYbius
      @dYbius 3 года назад

      Да, всё установлено...
      Сейчас на такой стадии:
      Скетч (ниже) компилируется без ошибок и загружается в UNO Однако, даже без датчика, на дисплее не отображается ничего (подстроечный резистор крутил. Другие скетчи на этом же дисплее работают)
      /* Тестирование датчика влажности давления и температуры BME280 */

      // Подключаем библиотеки
      #include
      #include
      #include
      // Создаём свой символ (градус Цельсия)
      const byte degre[8] = {0x0E,0x11,0x11,0x0E,0x00,0x00,0x00,0x00};
      // Объекты
      LiquidCrystal_I2C lcd(0x3F, 16, 2); // установить адрес индикатора
      Adafruit_BME280 bme; // I2C
      // Инициализация
      void setup()
      {
      lcd.init(); // настройка дисплея
      lcd.createChar(1, degre); // запись символа в память индикатора
      lcd.backlight(); // включение подсветки
      lcd.clear(); // включение подсветки
      // Вывод надписи
      lcd.print(" BME280 test");
      lcd.setCursor(0, 1);
      lcd.print(" sensor reading");
      delay(4000);
      // Поиск датчика
      bool status;
      status = bme.begin(0x76);
      lcd.clear();
      if (!status) {
      lcd.print(" BME280 sensor");
      lcd.setCursor(4, 1);
      lcd.print("not found");
      while (1);
      }
      }

      // Основная программа
      void loop()
      {
      lcd.clear(); // очистка экрана
      // Выводим температуру
      lcd.print("T:");
      lcd.print(bme.readTemperature(),1);
      lcd.print("\1");lcd.print("C H:"); // выводим символ градуса и знак Цельсия
      // Выводим влажность
      lcd.print(bme.readHumidity(),1);
      lcd.print("%");
      // Выводим давление
      lcd.setCursor(2, 1);
      lcd.print("P:");
      lcd.print(bme.readPressure()/133.33,1);
      lcd.print(" mmHg");
      delay(5000);
      }
      Что может быть???

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  3 года назад

      @@dYbius похоже нет инициализации дисплея. Хорошо бы запустить сканер I2C. Но попробуйте сначала в конструкторе поставить адрес 0х27.

    • @dYbius
      @dYbius 3 года назад

      Андрей, спасибо! Разобрался... Всё работает теперь. Была проблема в адресе (27), и в моей версии IDE....

  • @user-jq7mt9nk8k
    @user-jq7mt9nk8k 5 лет назад

    Данный скетч выдает почему-то значения температуры например вместо 20 градусов - 2,2, давление вместо 760 показывает 7.6, влажность - 5% вместо 50. При этом пробую заливать стандартный скетч BME280test - в СОМ-порте показывается всё верно. Подключение не меняю, всё подключено стандартно по I2C - и дисплей 16/2 и датчик
    Также, параметры например давления - mmPh - не отображались до тех пор, пока чисто случайно не сделал вот так:
    /* Тестирование датчика влажности давления и температуры BME280 */
    // Подключаем библиотеки
    #include
    #include
    #include
    // Создаём свой символ (градус Цельсия)
    const byte degre[8] = {0x0E,0x11,0x11,0x0E,0x00,0x00,0x00,0x00};
    // Объекты
    LiquidCrystal_I2C lcd(0x27, 16, 2); // установить адрес индикатора
    Adafruit_BME280 bme; // I2C
    // Инициализация
    void setup()
    {
    lcd.begin(); // настройка дисплея
    lcd.createChar(1, degre); // запись символа в память индикатора
    lcd.backlight(); // включение подсветки
    lcd.clear(); // включение подсветки
    // Вывод надписи
    lcd.print(" BME280 test");
    lcd.setCursor(0, 2);
    lcd.print(" sensor reading");
    delay(4000);
    // Поиск датчика
    bool status;
    status = bme.begin();
    lcd.clear();
    if (!status) {
    lcd.print(" BME280 sensor");
    lcd.setCursor(1, 1);
    lcd.print("not found");
    while (1);
    }
    }
    // Основная программа
    void loop()
    {
    lcd.clear(); // очистка экрана
    // Выводим температуру
    lcd.print("T:");
    lcd.print(":");
    lcd.print(bme.readTemperature(),1);
    lcd.print("\10");
    lcd.print("C");
    lcd.print(" ");
    lcd.print("H");
    lcd.print(":");
    // Выводим влажность
    lcd.print(bme.readHumidity(),1);
    lcd.print("%");
    // Выводим давление
    lcd.setCursor(0, 4);
    lcd.print("P");
    lcd.print(":");
    lcd.print(bme.readPressure()/133.33,1);
    lcd.print(" ");
    lcd.print("m");
    lcd.print("m");
    lcd.print("P");
    lcd.print("h");
    delay(5000);
    }
    т.е. каждый знак вывожу отдельно. Я только знакомлюсь с ардуино, но понимаю, что поидее так не должно быть... На что смотреть?

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  5 лет назад

      давайте по-порядку. 1)На экране появляется надпись "BME280 test sensor reading"? 2)Без подключённого датчика появляется надпись "BME280 sensor not found"?

    • @user-jq7mt9nk8k
      @user-jq7mt9nk8k 5 лет назад

      @@user-tt3pb2ry6w не появляется вообще. При включении питания загорается дисплей. ничего не отображается около 5 секунд, потом появляются данные

    • @user-jq7mt9nk8k
      @user-jq7mt9nk8k 5 лет назад

      @@user-tt3pb2ry6w Если вывести текст вот таким тупым образом - то показывается:
      lcd.print("B");
      lcd.print("M");
      lcd.print("E");
      lcd.print("2");
      lcd.print("8");
      lcd.print("0");
      lcd.print(" ");
      lcd.print("t");
      lcd.print("e");
      lcd.print("s");
      lcd.print("t");

    • @user-jq7mt9nk8k
      @user-jq7mt9nk8k 5 лет назад +1

      @@user-tt3pb2ry6w Догадался удалить старую библиотеку дисплея и поставить новую - всё заработало! Спасибо

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  5 лет назад +1

      @@user-jq7mt9nk8k рад, что у вас получилось!

  • @user-ug5xz1xo1p
    @user-ug5xz1xo1p 5 лет назад

    У меня Ардуино уно, на экране "not found". Где может ошибка в скетче?
    /* Тестирование датчика влажности давления и температуры BME280 */

    // Подключаем библиотеки
    #include
    #include
    #include
    // Создаём свой символ (градус Цельсия)
    const byte degre[8] = {0x0E,0x11,0x11,0x0E,0x00,0x00,0x00,0x00};
    // Объекты
    LiquidCrystal_I2C lcd(0x27, 16, 2); // установить адрес индикатора
    Adafruit_BME280 bme; // I2C
    // Инициализация
    void setup()
    {
    lcd.init(); // настройка дисплея
    lcd.createChar(1, degre); // запись символа в память индикатора
    lcd.backlight(); // включение подсветки
    lcd.clear(); // включение подсветки
    // Вывод надписи
    lcd.print("BME280 test");
    lcd.setCursor(0, 1);
    lcd.print(" sensor reading");
    delay(4000);
    // Поиск датчика
    bool status;
    status = bme.begin();
    lcd.clear();
    if (!status) {
    lcd.print(" BME280 sensor");
    lcd.setCursor(4, 1);
    lcd.print("not found");
    while (1);
    }
    }

    // Основная программа
    void loop()
    {
    lcd.clear(); // очистка экрана
    // Выводим температуру
    lcd.print("T:");
    lcd.print(bme.readTemperature(),1);
    lcd.print("\1");lcd.print("C H:"); // выводим символ градуса и знак Цельсия
    // Выводим влажность
    lcd.print(bme.readHumidity(),1);
    lcd.print("%");
    // Выводим давление
    lcd.setCursor(2, 1);
    lcd.print("P:");
    lcd.print(bme.readPressure()/133.33,1);
    lcd.print(" mmHg");
    delay(5000);
    }

    • @user-ug5xz1xo1p
      @user-ug5xz1xo1p 5 лет назад

      все решил!

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  5 лет назад

      это означает, что датчик не отвечает контроллеру. Проверьте правильность подключения датчика, обратите внимания на провода. Ещё можете закомментировать в setup() команду while(1);. Посмотрите как будет работать система.

  • @ildarmurtazin9063
    @ildarmurtazin9063 6 лет назад

    у меня датчик так и не заработал, и защита кончилась на товар.

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  6 лет назад

      даже не откликнулся на сканер I2C?

    • @ildarmurtazin9063
      @ildarmurtazin9063 6 лет назад

      Ардуино&Я да , сделал что смог что позволял мой опыт ) попробую как нить на уно на след неделе . BMP 280 находит, а этот нет хотел болею компактную систему на bme 280

  • @dmitriykaplan6848
    @dmitriykaplan6848 3 года назад

    Собрал барометр , но на экране всё смещено и показывает на один два порядка меньше . Пробовал менять библиотеки , результата не добился

    • @dmitriykaplan6848
      @dmitriykaplan6848 3 года назад

      E:\Материалы BME280\BME280\BME280.ino: In function 'void setup()':
      E:\Материалы BME280\BME280\BME280.ino:25:26: warning: invalid conversion from 'const byte* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
      In file included from E:\Материалы BME280\BME280\BME280.ino:1:0:
      E:\Program Files\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:134:7: note: initializing argument 2 of 'void LiquidCrystal_I2C::createChar(uint8_t, uint8_t*)'
      void createChar(uint8_t, uint8_t[]);
      ^~~~~~~~~~
      Вот что выводит при загрузке скетча

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  3 года назад

      @@dmitriykaplan6848 перешлите мне свой скетч и библиотеку anjey851@gmail.com

  • @misha_mikheev
    @misha_mikheev 4 года назад

    Скачать так и не смог с данной ссылки...

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  4 года назад

      ссылка рабочая. Попробуйте зайти с другого браузера

  • @olegosinov5743
    @olegosinov5743 3 года назад

    Очень быстро все происходит. По несколько раз пересматривал отдельные куски видео. Так и не понял куда подключён датчик по I2C, на какие пины?.. Видимо у Вас очень узкий круг аудитории. Начинающим смотреть канал не стоит. А я так хочу научиться...

    • @user-tt3pb2ry6w
      @user-tt3pb2ry6w  3 года назад

      Если вы хотите научится, то нужно начинать с нуля.Что касается этого видео, то здесь всё предельно просто. Подключение датчика к Ардуино Мега для различных интерфейсов показано на 3 мин 08 сек. Интерфейс I2C - контакты 20,21. Посмотрите цоколёвку wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:arduino-mega-2560

  • @colt2503
    @colt2503 5 лет назад +2

    Очень режет слух ваши И2Ц, ЛЦД, СПАЙ.
    Это как-то по колхозному....