Авторизация
Регистрация

Напомнить пароль

Обзор датчика влажности и температуры si7021 и метеостанция на его основе

С началом отопительного сезона встал у меня вопрос измерения влажности в квартире, в оффлайне цены на гигрометры высокие, а точность никакая. Так как я давно хотел опробовать ардуино решил сделать на его основе метеостанцию. Погуглив выяснил что повсеместно используются дешевые датчики DHT11(Возможно и DHT22), которые очень врут и не откалиброванные, поэтому был найден герой обзора. В датчике si7021 заявлено высокая скорость, точность и защищенность и всего на бакс дороже.

Характеристики.
Влажность
Точность: ± 3% (макс), 0-80%
Рабочий диапазон: от 0 до 100%

Температура
Точность: ± 0,4 ° C (макс), от -10 до 85 ° C
Рабочий диапазон: от -40 до +125 ° C

Рабочее напряжение (От 1,9 до 3,6 В)
Низкое энергопотребление
150 мкА активный ток
60 нА ток в режиме ожидания

Заводская калибровка
интерфейс I2C
Встроенный нагреватель на чипе

Даташит

Пока его заказывал естесно заказал еще кучу датчиков и принялся ждать.
Пока я его ждал случайно нашел в продаже на рынке часы настенные с метеостанцией PEARL (не реклама, брал не тут).
Метеостанция


В общем в этой метеостанции было все что нужно, главное часы идут без рывков, плавно и бесшумно и все приборы аналоговые, было принято решение брать, а ардуину использовать по прямому назначению – изучать програмирвание микроконтроллеров. Как потом выяснилось показания датчиков практически совпали с этой метостанцией.

Когда все пришло, для своей метеостанции я выбрал:

Arduino UNO SMD R3
LCD 1602+HD4478(I2C)
Si7021
BMP180 (Давление и температура)
Провода

Также решил добавить датчик освещенностиTSL2561 (люксометр) и переключать все режимы пультом.
В планах добавить модуль RTC Ds3231, чтобы время точное показывало.
Передачу информации куда либо по сети не планирую.

Все датчики приходят с не припаянными колодками, придется попаять, тоже самое с дисплеем. На дисплее нужно подкрутить контраст, паять нужно с двух сторон платы. Все элементы подключаются по шине I2C, у каждого свой адрес. Все датчики я соединил в шину четырех проводную по интерфейсу и питанию, для дисплея и инфракрасного приемника нашлись выводы на ардуине.

Выложу ряд скетчей под каждый датчик/модуль. В каждой Библиотеке есть свои примеры.

Для тех, кто только начинает
Arduino IDE
Библиотеки класть например в %UserProfile%/Documents/Arduino/libraries/
При конфликте с установленными библиотеками, из папки программы /Arduino/libraries/ их нужно удалить.
Драйвер я нашел через david.info по коду в диспетчере устройств, в IDE выбрал порт ардуины.

Сканер устройств I2C
Скетч
#include <Wire.h>

void setup() {

  // put your setup code here, to run once:
Serial.begin(9600);
 while (!Serial) 
    {
    }

  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;
  
  Wire.begin();
  for (byte i = 8; i < 120; i++)
  {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
      } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}  // end of setup

void loop() {}

Результат
I2C scanner. Scanning…
Found address: 39 (0x27)
Found address: 57 (0x39)
Found address: 64 (0x40)
Found address: 119 (0x77)
Done.
Found 4 device(s).

Видим экран,TSL2561 ,Si7021, BMP180


Вывод из COM порта на LCD
Библиотека LCD руссификация
Будьте внимательны, Serial нужно обязательно писать с большой буквы.
Подключение/Скетч


#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
  lcd.begin();  
  Serial.begin(9600);
  // initialize the lcd 

  // Print a message to the LCD.
  for(int i = 0; i< 3; i++)
  {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }
  lcd.backlight(); // finish with backlight on  
  lcd.setCursor(0,0);
  lcd.print("Hello, world!");

}


void loop()
{
  // when characters arrive over the serial port...
  if (Serial.available()) 
  {
    // wait a bit for the entire message to arrive
    delay(100);
    // clear the screen
    lcd.clear();
    // read all the available characters
    while (Serial.available() > 0) 
    {
      // display each character to the LCD
      lcd.write(Serial.read());
    }
  }
}




Датчик Si7021
Библиотека
Подключение/Скетч


#include <Wire.h>
#include <SI7021.h>

#include <LiquidCrystal_I2C.h>
SI7021 sensor;
LiquidCrystal_I2C lcd(0x27, 16, 2);

int temp1,hum1;
void setup()
{
 lcd.begin(); 
 Serial.begin(9600);
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Hello, world!");
}


void loop()
{
  si7021_env data = sensor.getHumidityAndTemperature();
   temp1=data.celsiusHundredths-data.celsiusHundredths/100*100;
   hum1=data.humidityBasisPoints-data.humidityBasisPoints/100*100;
   
      Serial.print("Temperature ");
      Serial.print(data.celsiusHundredths/100);
      Serial.print(",");
      Serial.print(temp1);
      Serial.println(" `C");
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Temp ");
  lcd.print(data.celsiusHundredths/100);
  lcd.print(",");
  lcd.print(temp1);
  lcd.print(" `C");

      Serial.print("Humidity ");
      Serial.print(data.humidityBasisPoints/100);
      Serial.print(",");
      Serial.print(hum1);
      Serial.println(" \%");
      Serial.println(" ");
  lcd.setCursor(0,1);
  lcd.print("Hum  ");
  lcd.print(data.humidityBasisPoints/100);
  lcd.print(",");
  lcd.print(hum1);
  lcd.print(" \%");
      delay(5000);
    }

Показания дублируются в порту


Датчик TSL2561
Библиотека
Подключение/Скетч


#include <Wire.h>
#include <TSL2561.h>
TSL2561 tsl(TSL2561_ADDR_FLOAT); 

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
  if (tsl.begin()) {
    Serial.println("Found sensor");
  } else {
    Serial.println("No sensor?");
    while (1);
  }
  //tsl.setGain(TSL2561_GAIN_0X);         // set no gain (for bright situtations)
  //tsl.setGain(TSL2561_GAIN_16X);      // set 16x gain (for dim situations)
  
  // Changing the integration time gives you a longer time over which to sense light
  // longer timelines are slower, but are good in very low light situtations!
  tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);  // shortest integration time (bright light)
  //tsl.setTiming(TSL2561_INTEGRATIONTIME_101MS);  // medium integration time (medium light)
  //tsl.setTiming(TSL2561_INTEGRATIONTIME_402MS);  // longest integration time (dim light)
}

void loop() {
  uint32_t lum = tsl.getFullLuminosity();
  uint16_t ir, full;
  ir = lum >> 16;
  full = lum & 0xFFFF;
  Serial.print("Lux: "); Serial.println(tsl.calculateLux(full, ir));
  
      delay(1000);
}

В примерах больше настроек, может менять период измерения а также расделять спектр на видимый и инфракрасный.


Инфракрасный порт(приемник)
Библиотека
Подключение/Скетч


/*
 * Sketch modified by Enjoying Electronics: http://www.instructables.com/member/Enjoying+Electronics/
 Code based off of: 
 * IRremote
 * Version 0.1 July, 2009 
 * Copyright 2009 Ken Shirriff
 * For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
 
 * Special thanks to dablondeemu http://www.instructables.com/member/dablondeemu/
 * and his instructable listed below, IR Remote Controlled Color Changing Cloud (Arduino) 
 * http://www.instructables.com/id/IR-Remote-Controlled-Color-Changing-Cloud-Arduino/  
 
 
 * Lets get started:
 
 The IR sensor's pins are attached to Arduino as so:
 Pin 1 to Vout (pin 11 on Arduino)
 Pin 2 to GND
 Pin 3 to Vcc (+5v from Arduino)

*/

/*******************CODE BEGINS HERE********************/

#include <IRremote.h>

int IRpin = 11;
IRrecv irrecv(IRpin);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() 
{
  if (irrecv.decode(&results)) 
    {
      Serial.println(results.value, DEC); // Print the Serial 'results.value'
      irrecv.resume();   // Receive the next value
    }
  
  
}

Из этого скетча мы в порту наблюдаем код сигнала и также видим что зажатие любой кнопки генерирует одинаковый код.


Датчик BMP180
Библиотека

Все вместе
Дополнительная информация
#include <Wire.h>

#include <SI7021.h>
SI7021 sensor;

#include <TSL2561.h>
TSL2561 tsl(TSL2561_ADDR_FLOAT); 

#include "LiquidCrystal_I2C.h"
#include <LCD_1602_RUS.h>
LCD_1602_RUS lcd(0x27, 16, 2);

#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;

#include <IRremote.h>
int IRpin = 11;  // pin for the IR sensor
IRrecv irrecv(IRpin);
decode_results results;

unsigned long previousMillis; //для контроля обновления показаний с шагов секунду

void Si7021()
{
si7021_env data = sensor.getHumidityAndTemperature();
double temp1=(double)data.celsiusHundredths/100.0;
double hum1=(double)data.humidityBasisPoints/100.0;
   

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(L"Темп ");
  lcd.print(temp1);
  lcd.print(L" °C");


  lcd.setCursor(0,1);
  lcd.print(L"Влажн  ");
  lcd.print(hum1);
  lcd.print(" \%");
}

void Light()
{
  uint32_t lum = tsl.getFullLuminosity();
  uint16_t ir, full;
  ir = lum >> 16;
  full = lum & 0xFFFF;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(L"Освещенность ");
  lcd.setCursor(1,1);
  lcd.print(tsl.calculateLux(full, ir));
  lcd.print(L" люкс");
}

void BMP085()
{

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(L"Темп ");
  lcd.print(bmp.readTemperature());
  lcd.print(L" °C");
   
  double pr=(double)bmp.readPressure() / 133.3224;
       
  lcd.setCursor(0,1);
  lcd.print(L"Давл = ");
  lcd.print(pr,1);
  lcd.print(L" мм");
}

void setup()
{
tsl.begin();

  //tsl.setGain(TSL2561_GAIN_0X);         // set no gain (for bright situtations)
  //tsl.setGain(TSL2561_GAIN_16X);      // set 16x gain (for dim situations)
  
  // Changing the integration time gives you a longer time over which to sense light
  // longer timelines are slower, but are good in very low light situtations!
  tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);  // shortest integration time (bright light)
  //tsl.setTiming(TSL2561_INTEGRATIONTIME_101MS);  // medium integration time (medium light)
  
  bmp.begin();
  
  lcd.begin(); 

  sensor.begin();

  lcd.backlight();

  irrecv.enableIRIn(); // Start the receiver
  

}

int sv;
int interval=2000;
void loop()
{
   if (irrecv.decode(&results)) 
    {
     
      irrecv.resume();   // Receive the next value
    }
   
   unsigned long currentMillis = millis();

if (results.value != 4294967295) {
sv=results.value;
}

   
  if ((unsigned long)(currentMillis - previousMillis) >= interval) {
  
  switch(sv) {
   
  case 16738455:
      Si7021();
      break;
  case 16750695:
      Light();
      break;
  case 16756815:
      BMP085();
      break;
  
   default:
  Si7021();
  }   
      previousMillis = currentMillis;
  }

}
  



Общий вид плюс режимы поочереди





В первом режиме при запуске показываются температура и влажность с Si7021.
Во втором – освещенность с TSL2561.
В третьем – температура и давление с BMP180 (температура всегда выше чем у первого датчика, первому я доверяю больше).
Режимы переключаются пультом.
Потребление порядка 0,01А — 0,03 А (Показания Синего доктора, белый не показал ничего)
Питается от моего самодельного повербанка.

Вопросы к знатокам:
  • В инете мало информации(или я плохо вьехал) о интерфейсе I2C. Я не понял правильно ли я все подключил, у датчиков питание 3,3 В, а у дисплея 5 В, можно ли их без преобразователя логических уровней соединять в одну шину? Есть ли у HD4478 подтягивающие резисторы? И есть ли они у модуля часов?
  • Подскажите програму для рисования соединений, таких как я выложил, Fritzing мне кажется чтото не то.

  • Планирую в другом проекте подключение 4х реле к ардуине, можно их просто запитать от ардуины, или лучше от внешнего питания, если возможность снять с ардуины чистое входное питание, в обход всех стабилизаторов? Что будет, если запитаться от vin?
  • Была у меня идея сделать пульсометр света на основе фоторезистора , но его паказания совсем не совпадали с показаниями датчика освещенности, наверно он совсем для этого не годится?


А так в принципе все работает и не жалуется. Показания датчика выглядят достойно и с большой точностью. Можно еще задействовать память и выводить архивные и усредненные показания, но это потом, а пока для обзора датчика сойдет, своего однозначно стоит.

На изменение влажности реагирует плавно, в разных комнатах показывает по разному, при включении увлажнителя показания начинают расти, Влажность дыхания 66%, падает быстро, растет медленно На открытом балконе показал 3.9 градуса и 71% влажность, это в Киеве.
Планирую купить +146 Добавить в избранное
+66 +156
свернутьразвернуть
Комментарии (122)
RSS
+
avatar
+6
Библиотеки ложить например в ...
«Класть», Батенька, а не то, что Вы написали :)
Но за труды +
+
avatar
+1
Напомните, почему класть, а не ложить?
+
avatar
+1
  • RAT
  • 12 февраля 2016, 08:51
Поговаривают, что «положить» приставочный глагол.
+
avatar
0
Потому, что «класть», но «положить», правило такое есть в русском языке. Попробуйте «погуглить», например…
+
avatar
0
Не знаю, я нахожу только мнения отдельных людей, но «правила» нет. Просто хочу разобраться.
+
avatar
+13
Вам же выше написали про «приставочный глагол», даже ссылку дали. А прислушиваться к «мнению отдельных людей» нужно с умом. Люди могут быть компетентны и нет.
Вы слышали о таком Дале Владимире Ивановиче? Это русский учёный, писатель и лексикограф, военный врач, составитель «Толкового словаря живого великорусского языка». Вот он авторитет. И он по этому поводу сказал следующее:
ложить без приставки не употребляется, корень обязательно должен сопровождаться либо приставкой — заложить, предложить, положить, либо возвратной частицей — ложиться; наоборот, класть с приставкой никогда не употребляется.
+
avatar
+6
Доходчиво, благодарю, поправил
+
avatar
-10
  • kalobyte
  • 12 февраля 2016, 11:23
+
avatar
+7
  • Dimon_
  • 12 февраля 2016, 11:33
ложные знание — это поверхностные знания
Размышления сивой кобылы.

Или вы действительно не видите разницы между ложными и поверхностными знаниями?

Один герой книг Артура Конан Дойля, как я помню, сжигал толковый словарь только за то, что в нём утверждалось, что слова «понимать» и «подразумевать» — суть одно то же.
+
avatar
-9
  • kalobyte
  • 12 февраля 2016, 13:09
+
avatar
+12
  • Dimon_
  • 12 февраля 2016, 13:40
ты мне хочеш сказать
Мы, насколько я помню, на «ты» не переходили? У меня пока такого желания нет точно. Спасибо.

Для меня ваша компетентность в русском языке уже стала очевидной. После «хочешь» без мягкого знака, и после «чуш» чуть ниже. Спасибо.

PS: А если я вам на полном серьёзе посоветую принимать галаперидол, то таблетку на поверхность языка вы будете «ложить» или «класть»?
И внутри в желудке эта таблетка у вас будет рассасываться, как «ложная» или как «кладезь»?
+
avatar
+2
Умоляю прекратите это, можно как то попросить модератора всю эту ветку удалить?
+
avatar
0
  • DJOxid
  • 19 февраля 2016, 18:04
Всё же лож и истина — это противоположные понятия. И лож значит как раз отрицание истины. Алгебра логики наше всё.
+
avatar
+2
  • kvolk
  • 12 февраля 2016, 12:27
Простите, но это полная чушь!
+
avatar
-13
  • kalobyte
  • 12 февраля 2016, 13:10
+
avatar
+4
  • kvolk
  • 12 февраля 2016, 13:19
Без сомнений! ЧушЬ…
+
avatar
+3
  • Dimon_
  • 12 февраля 2016, 08:58
Глагола «ложить» нет в современном русском языке.
Есть в других языках. В украинском, например. Был в старославянском. Остался в церковнославянском.
Но мы тут общаемся именно на русском.
А в нём такого слова нет.
+
avatar
-1
  • ploop
  • 12 февраля 2016, 10:23
Даже браузер это знает

+
avatar
+2
  • HAPKO3
  • 12 февраля 2016, 21:59
Хм, в литературном нет. В разговорном есть. Как и жопа. :) Мои знания конечно поверхностны и фрагментарны, но что-то мне подсказывает…

Вы однозначно понимаете значение речевого потока, которое можно записать как «ложить».
А стало быть, факт существования слово «ложить» есть. Слово существует.

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

Но не на тему существования слова как одной из структурных единиц языка, которая служит для именования предметов, их качеств и характеристик, их взаимодействий, а также именования мнимых и отвлечённых понятий, создаваемых человеческим воображением.
+
avatar
+1
  • brn
  • 17 февраля 2016, 10:15
В моём разговорном языке (и в моём круге общения) слово «гондольер» обозначает не совсем то, что в классическом толковом словаре. Пример использования:
«Вот же гондольеры!».
Но ведь это же не значит, что употреблять его именно таким образом правильно или грамотно. И возможно, иногда это даже ущемляет права и оскорбляет чувства группы лиц, управляющей гондолами. Есть общепринятые нормы языка, например ничего хорошего в «кофе» среднего рода я не вижу. Ещё можно подискутировать на предмет ударений (на мой взгляд, более «по-русски» звучат «жáлюзи» и «латтé», «йóгурт»), но по-моему, всё-таки лучше говорить правильно, чем неправильно :-D.
+
avatar
-1
  • skif31
  • 19 мая 2016, 10:18
Правила русского языка не доучили? Тогда вам надо покласть на всё
+
avatar
-1
  • skif31
  • 19 мая 2016, 10:16
Библиотеки ЛОЖАТ.
+
avatar
+3
  • jiraff
  • 12 февраля 2016, 08:26
А где обзор si7021? Как в работе себя ведет?
+
avatar
+1
Подскажите как он может себя вести? Не сбоит, точность большая, с защитой от пыли, есть функция нагрева для самотестирования.
+
avatar
+1
  • jiraff
  • 12 февраля 2016, 08:44
Интересно было бы провести испытания в различных условиях. Например в ванной комнате, или после проветривания.
+
avatar
+1
В ванной поднялась влажность до 57, у моего сухого дыхания влажность 66) в квартире у меня сейчас аномально высокая влажность, 52, попробую позже проверить. При открытом балконе упала до 42. Фиг его знает что-то мало.На открытом балконе показал 3.9 градуса и 71% влажность, это в Киеве.
+
avatar
+1
  • Karfax
  • 12 февраля 2016, 11:37
Так на улице влажность большая наверное — «плюс» и слякоть )
+
avatar
+1
По Gismeteo 75%
+
avatar
+2
  • Aostspb
  • 12 февраля 2016, 11:48
При включенном отоплении — в квартире, обычно, аномально сухо 25-35%, поэтому 57% — это хорошо.
+
avatar
+1
В том то и дело, всегда около 30, а это почемуто 52))
+
avatar
+1
  • satari
  • 12 февраля 2016, 18:33
Радуйтесь, счастливчик!
Человек на 70% состоит из воды.
Оптимальная влажность воздуха для человека составляет 40-60%. Сухой воздух (влажность ниже 40%) ухудшает общее самочувствие и даже у здоровых людей вызывает сонливость, сухость кожи и слизистых оболочек, а также повышает вероятность заболеваний острыми респираторными инфекциями.
Не стоит забывать, что влажность величина относительная. Показывает сколько процентов воды в воздухе, от тех 100, которые могли бы в нем находиться при данной температуре. В абсолютном выражении более холодный воздух удерживает влаги меньше, чем более теплый. Поэтому в холодное время года, пусть на улице хоть 100% влажность при проветривании, и дальнейшем нагреве воздуха в жилище, имеем обычно 20-25%, чем чаще проветриваем, тем суше. Что очень сухо, и отрицательно сказывается на комфорте и здоровье.
Не сочтите за издевку — может у вас не так велика разница температур снаружи и внутри?
У меня дома отопление не регулируется и в результате большая разница с наружным воздухом весь отопительный сезон. Весь отопительный сезон процентов 20 стабильная влажность. Постоянно сухо во рту и в глотке, и сухими глазами больно моргать.
+
avatar
+1
  • VladSher
  • 12 февраля 2016, 19:07
аномально это у меня на работе зимой — от 5% до 10%. В среднем 7-8%.
DHT22 чувствует дыхание стоящего рядом (0.5м) человека уже секунд через 30.

Позавчера тоже заказал si7021 на пробу. Подключать буду к esp8266.
+
avatar
+1
  • ugsm
  • 20 июня 2017, 19:20
лучше поздно, чем никогда :).
Висит данный датчик на улице уже 1.5 года и продолжает работать, хотя до него 2 AM2320 проработали 2 недели, сдохла влажность (показывает всегда 1.4), температуру показывают до сих пор.
Датчик за балконом на удалении от стены еще на 0.5 метра. Закрыт от прямого попадания воды и солнца.
При повышенной влажности (порядка 80% и выше) начинает врать в большую сторону, что совпадает с даташитом. Во время дождя (температура резко падает) датчик показывает не просто 100%, а даже выше. Пришлось программно отрезать на 99.9%, чтобы народмон.ру принимал показания.
У нас бывают моменты с низкой облачностью (выше 10 этажа все в тумане) с конденсацией воды — т.е. условия приближенные к 100% влажности. В результате график влажности упирается в 99.9 на несколько часов.
При средней влажности показания более адекватные.
Температуру показывает вполне точно в сравнении с AM2320, расхождение обычно не более 0.5 градуса. В морозы отработал без проблем.
Вывод: применим для помещений без запредельной влажности.
+
avatar
0
Хотелось бы уточнить — ваш датчик имеет защитный фильтр? Или вы его удалили? Сейчас собираю метеостанцию и думаю — снять или оставить? Не будет ли на улице происходить загрязнение фильтра, что в итоге приведёт к неправильным измерениям? В общем, интересен реальный опыт эксплуатации
+
avatar
0
вот здесь
+
avatar
0
  • soundman
  • 04 декабря 2016, 06:44
Спасибо за статью! Очень помогла.
+
avatar
+1
Буквально на днях заказал такой датчик.
Но действительно, где обзор самого датчика?
Тесты, сравнения…
У вас вижу только способ его применения.
Больше похоже на обзор домашней метеостанции.
Вот этот проек по мне более удачный.
homes-smart.ru/index.php/oborudovanie/bez-provodov-wi-fi/proekt-umnogo-modulya-na-baze-esp8266
narodmon.ru/
+
avatar
+2
  • RAT
  • 12 февраля 2016, 08:43
Тесты, сравнения…
Да, было бы неплохо сравнить те же показания влажности\температуры с датчиком DHT22, а то
датчики DHT22, которые очень врут и не откалиброванные
+
avatar
0
DHT22 не заказывал, все говорят что он врет и не безосновательно.
+
avatar
0
  • serg_mur
  • 12 февраля 2016, 09:38
Кто все? Может, всё-таки DHT11? У него и диапазон измерений уже, и погрешность выше. А про DHT22 я ничего плохого не слышал.
+
avatar
+1
Если загуглить «DHT22 точность», то видно, что есть о чем подумать. Я не утверждаю, что этот датчик лучше, но есть основания так говорить.
+
avatar
0
  • hogans
  • 12 февраля 2016, 12:44
заказывал пару DHT-22, разброс показаний между ними в полтора градуса, и примерно такая же погрешность с ртутным термометром. Тот же BMP180 показывает гораздо точнее.
+
avatar
0
  • Q2W
  • 12 февраля 2016, 13:09
Мой DHT22 завышает.
BMP180 тоже завышает, но реже и он менее инертный.
А вот DS18B20 показывает точнее, хоть и инертный. В таком корпусе:
+
avatar
0
Как проверяли точность?
+
avatar
0
  • Aostspb
  • 12 февраля 2016, 17:01
По datasheet? :) Он идет с заводской тарировкой.
+
avatar
0
  • Q2W
  • 12 февраля 2016, 18:03
Сравнивал с другими термометрами в т.ч. аналоговыми, показания которых между собой совпадают.
+
avatar
0
  • sir0ta
  • 13 февраля 2016, 11:24
Совсем не показатель. У меня есть 2 DS18B20, на 1 градус расхождения, заказывал у одного продавана вместе, следовательно большая вероятность что из одной партии
+
avatar
0
  • Q2W
  • 13 февраля 2016, 22:45
Согласен, что не показатель.
Потому и поделился личным опытом, чтобы мы все могли использовать больше статистики реального использования этих датчиков.
+
avatar
+1
  • VladSher
  • 12 февраля 2016, 19:10
У меня DHT22 расходится с поверенным ртутным термометром на 0.1 градуса.
BMP180 и DS18B20 врут относительно них на пару градусов. Специально подключал все датчики к одному контроллеру и одновременно на экран выводил.
+
avatar
0
  • SerjNSK
  • 13 февраля 2016, 02:09
Даласс не должен на два градуса врать. У вас опрос как часто идет? Из-за частых опросов у него саморазогрев идет. И при поверке, вы связываете датчики между собой хотя бы медной проволокой для выравнивания температуры между ними? Можно в одну пенопластовую коробку еще их засунуть. И помнить что толстые медные подводящие провода тоже могут как пригнать температуру извне на датчик так и отнять, если на них действуют внешние силы(сквозняк или выдув из ноутбука, например)
+
avatar
0
  • Jet
  • 13 февраля 2016, 03:51
на метеостанциях измерительные приборы стоят строго по госту, в котором описаны условия для замера, так что любой любительский датчик, который выкинут за окно, в любом случае просто показометр
+
avatar
0
  • sir0ta
  • 13 февраля 2016, 11:26
Я вообще не уверен в том что дома нужно что-то более чем показометр? Хотя скажем если строить те же инкубаторы или там контроль влажности и температуры для скажем грибов или еще чего, то там ±1 градус уже может повлиять.
+
avatar
+1
  • Aostspb
  • 12 февраля 2016, 12:03
Когда все работает — то да, «проект удачный». У меня эта побрякушка (esp8266) — виснет, или самопроизвольно включает «безопасный режим», примерно раз в неделю-полторы… В отличие от ардуины, которая, если и отлетает, то раз в два-три месяца. Только не надо петь басен про питание… Если уж изготовитель не может запаять на свою поделку, для ее нормальной работы, пяток smd резисторов — то чему тут удивляться.
+
avatar
0
  • sav13
  • 13 февраля 2016, 20:15
На какой прошивке виснет? На Хомесмартовской?
У меня на ESP8266 Core для Arduino IDE все работает нормально. Если и перезагружается, то сама выходит в режим.
Были странные зависания на одном роутере, когда перезагрузка не спасала, даже пришлось сторожевой таймер внешний реализовать. Но все решилось заменой роутера
+
avatar
0
  • Aostspb
  • 15 февраля 2016, 10:47
Да, на home-smart, свою прошивку собрать все никак руки не доходят…
+
avatar
+1
  • DDimann
  • 12 февраля 2016, 08:38
Плюс за начало.
Насчет фоторезистора для измерения пульсаций освещенности — почему нет?
Хоть у них и довольно высокая инерционность, но не для этого применения — пульсации интересуют в основном низкочастотные, а фоторезисторы тянут до единиц килогерц.
Так что можно.
+
avatar
+3
  • RAT
  • 12 февраля 2016, 08:39
Первый раз читал по диагонали — все ждал, когда увижу в корпусе метеостанции потроха из ардуины. Особенно когда открывал спойлер «Результат». При повторном прочтении понял, что пассаж про аналоговую метеостанцию не более чем лирическое отступление.
А так да, интересно.
Только к давлению еще бы его изменение, ибо емнип именно перепады давления сигнализируют об изменении погоды.
+
avatar
-2
Исправьте ошибки, глаза режет…
+
avatar
-1
  • RAT
  • 12 февраля 2016, 08:56
del
+
avatar
+1
  • Lavur
  • 15 февраля 2016, 11:01
Кстати да. Тенденция изменения давления — очень полезная информация. Вот здесь, например, удачно сделано
+
avatar
+1
  • Bloop
  • 12 февраля 2016, 09:40
Планирую в другом проекте подключение 4х реле к ардуине, можно их просто запитать от ардуины, или лучше от внешнего питания, если возможность снять с ардуины чистое входное питание, в обход всех стабилизаторов? Что будет, если запитаться от vin?
Я думаю, реле, как впрочем и любую другую индуктивную нагрузку, надо подключать к цифровой части через транзисторные ключи с защитными диодами и питание для них тоже желательно организовать отдельно.
+
avatar
0
  • andre147
  • 12 февраля 2016, 10:35
Если это будет шилд с четырьмя реле, то, ИМХО, можно напрямую к цифровым выходам подключать. Там питание идет отдельно, а с выходов берется управление через опторазвязку. У меня так работает в схеме управления воротами.
+
avatar
0
Именно о таком шилде и речь, я только спрашиваю насчет нагрузки, если все одновременно включить, выдержит ли стабилизатор?
+
avatar
+2
  • Vipeg
  • 12 февраля 2016, 11:20
Переформулируйте вопрос. Ничего не понял, что Вы спрашиваете. Если Вы говорите о питании, необходимом для питания самого шилда от стабилизатора самой Ардуины, то я бы не рекомендовал. Причина — потребление шилдом 100...150 мА тока (для шилда в 4 реле), при том, что кроме шилда с реле будут другие потребители. Стабилизатор выдержит, но нагрев стабилизатора почти гарантирован, возможно, с последующим падением напряжения на выходе сталилизатора. Если Вы питаете саму Ардуину блоком питания на 5 вольт (имеет прямой смысл делать именно так), то подключать шилд именно к этому блоку питания, до стабилизатора Ардуины. Уверен, реле легко переживут нестабилизированный диапазон 4,5...5,5 вольт.
+
avatar
0
Вы все правильно поняли, если у блока питания выход USB, как из него взять питание в обход стабилизатора? Есть ли такой выход у ардуины? Можно конечно подпаяться в разьем с обратной стороны…
+
avatar
0
  • Vipeg
  • 12 февраля 2016, 13:35
Насколько я понял, в вашем случае используется Uno R3. Вот её схема. Судя по всему, "+5" берется с полевого транзистора (ключа) FDN340P «транзитом» с питания USB. То есть, греться не должно, если подключите прямо к "+5V" вместо подпайки к разъёму USB. Другими словами, только эксперименты покажут точный тепловой режим.
+
avatar
0
  • sir0ta
  • 13 февраля 2016, 11:30
Питать релейные модли надо не с ноги (пусть даже +5V) ардуины. А отдельное питание надо брать. Скажем я взял зарядник от смарта старого (5,1V 700mA), и распотрошив кабель питаю с него как ардуину (Vin), так и релейные модули. Сейчас на таком блоке 4 релейных модуля и ардуинка, все норм.
+
avatar
0
  • sir0ta
  • 13 февраля 2016, 11:28
Если вы берете уже готовые модули релейные, то там уже стоит диод и транзистор. Если делать самому, то естетсвенно только через диод и транзистор. Не более 20мА на ножку. Что бы прижать реле надо больше.
+
avatar
+1
Ура вот и обзор, давно ждал!
Вот тут еще есть информация, плюс другая библиотека…
elchupanibrei.livejournal.com/23293.html
+
avatar
0
в этой библиотеке разве что можно взять самотестирование, моя же мне приглянулась ввиду снятия показаний одной командой.
+
avatar
+1
  • 5189837
  • 12 февраля 2016, 09:43
Была у меня идея сделать пульсометр света на основе фоторезистора, но
… с нетерпением буду ждать продолжения и развития проекта… Сам давно искал возможность сделать «пульсометр света » на Arduino, что бы LED лампы проверять, но к сожалению пока ничего толкового не нашёл. Кроме как вот эту статью "Логический анализатор на 8 каналов", но пока не знаю как её связать воедино в готовый продукт.
Сегодня заказал себе пару датчиков освещения и давления, а всё остальные компоненты у меня в уже имеется. На выходных точно повторю Ваш проект, но пока без двух датчиков.
Спасибо за интересный обзор. + от меня в карму.
+
avatar
+2
Человек тут делал люксометр с функцией пульсометра на базе датчика из обзора. Точность никакая, 13 мс недостаточно, но он там говорил что на аналоговом датчике возможно, буду пробовать.
+
avatar
+2
Э… Даю торжественное обещание: как только будет свободная минутка, «причешу» свой «пульсометр на ардуино» и сделаю обзор… фотодиода :)
«Внизу» точность выходит не очень — небо дает 1-2%, видимо надо более вдумчиво фильтровать шумы. А вот «вверх» диапазон отменный, некоторые светодиодные лампочки дают под 300% :) благо по формуле из нового ГОСТа к-т пульсаций сверху не ограничен.
+
avatar
0
  • bdfy63
  • 03 апреля 2017, 11:22
Обещанного 3 года ждут, год прошёл) Очень бы хотелось посмотреть.
+
avatar
+1
у датчикой питание 3,3 В, а у дисплея 5 В, можно ли их без преобразователя логических уровней соединять в одну шину?
Да, можно. Только подтяжку лучше вешать на 3.3В в таком случае.
Есть ли у HD4478 подтягивающие резисторы? И есть ли они у модуля часов?
Не должно быть. На I2C резисторы обычно вешают около мастера — чтобы при отключении слейвов шина продолжала работать.
Подскажите програму для рисования соединений
Я рисую в Orcad Capture. Но это монстр и покупать её для дома бессмысленно (ну, про обходные пути я промолчу :) ).
А так — Eagle, KiCad. До черта их всяких: en.wikipedia.org/wiki/Schematic_capture
+
avatar
0
  • noblako
  • 12 февраля 2016, 10:03
Похоже ваш датчик является полным аналогом SHT21 только гораздо дешевле.
+
avatar
0
  • Aostspb
  • 12 февраля 2016, 17:04
Сейчас еще появились какие-то платы на чипах HTU21D. Тоже заявлено i2c и измерение температуры с влажностью…

Ко мне пока едут…
+
avatar
0
так и есть. писал под него либу. можно взять тут

подробности тут

вот еще про датчик освещенности BH1750FVI. что лучше TSL2561 или BH1750FVI не знаю
+
avatar
0
  • rx3apf
  • 15 февраля 2016, 02:02
У TSL2561 — два сенсора с доступом к каждому. У BH1750 — один (по крайней мере по даташиту), причем с провалом спектральной чувствительности как раз там, где должен быть пик (или хитрый фильтр, или все же как бы два сенсора). Математика для первого явно сложнее (если нужно аппроксимировать под чувствительность человеческого глаза). Купите оба, поиграйтесь…
+
avatar
0
  • 5077070
  • 12 февраля 2016, 10:16
А так в принципе все работает и не жалуется. Показания датчика выглядят достойно и с большой точностью.
В этой паре фраз весь обзор или стоит подождать завершения?
+
avatar
+1
Да, инженерность фразы зашкаливает) Постараюсь сделать какие то замеры.
+
avatar
0
  • batal
  • 12 февраля 2016, 10:21
Тоже на днях наконец получил почти аналогичные детали, только датчик DHT22.

Спасибо за обзор!
+
avatar
0
  • Mplus
  • 12 февраля 2016, 10:42
С каких пор DHT22 врут? Вы с 11 не попутали? Тестил 22е, отлично они работают и все точно
+
avatar
+1
Подправил, хотя я читал и про неточность и DHT11 и DHT22, в руках не держал, не знаю. Хотя, может, как Si7021 наберут популярность, тоже все расскажут как они врут)
+
avatar
+2
работал и DHT22 и HTU21D он же HTU21 он же TSL2561. земля и небо. HTU21D/ HTU21/TSL2561 превосходят поточности и скорости измерения и по потреблению в режиме ожидания на порядок.

едиственное приемущество убогого DHT22 это его можно кинуть на длинные провода. с HTU21D такое не пройдет тк он использует i2c шину
+
avatar
0
  • makc1806
  • 14 февраля 2016, 23:09
Вот Спасибо, за инфо., купим и такой… Сам собирал на DHT22 так, по правде сказать, раздражает малая скорость. А, как по мне, то i2c — это только плюс, т.к. удобно весь «зверинец» датчиков и уст-в садить на одну маленькую колодочку (запиленную, например от четырех рядов штырьков COM/LPT со старой метеринки) с +5 SCL SDA и Ground. Я проверял с проводами от передней панели корпусов системных блоков (ок. 0,5м) — любой i2c работал стабильно.
+
avatar
+1
  • c350l
  • 12 февраля 2016, 11:54
Вот спасибо тебе, добрый человек! И цель дал и все ссылки. Уже закупаюсь… Эх, ща как наардуиню! )
+
avatar
0
  • sseriy
  • 12 февраля 2016, 12:04
На дисплее нужно подкрутить контраст, паять нужно с двух сторон платы.
Не нужно с двух сторон, отверстия метализированные, достаточно с одной. Хотя если очень хочется…
+
avatar
0
Я не знаю, у меня не контачило, это смотря как кто паяет и чем, я паяю плохо и советским паяльником и канифолью, поэтому паял с двух сторон)
+
avatar
0
  • ev6dx
  • 12 февраля 2016, 13:09
https://aliexpress.com/item/item/Mini-LCD-Digital-Thermo-hygrometer-Temperature-Humidity-Meter-Tester-with-Probe/32334921628.html,searchweb201644_2_505_506_503_504_301_502_10001_10002_10016_10017_10010_10005_10011_10006_10003_10004_10009_10007_10008,searchweb201560_3,searchweb1451318400_-1,searchweb1451318411_6452&btsid=2a237313-67b4-478d-a374-2017d580101f

Подскажите тип датчика в данном девайсе… Где можно приобрести датчик. Хотелось бы на пасеке в каждый улей вставить.
+
avatar
0
  • Aostspb
  • 12 февраля 2016, 17:10
С инструментом внутрь не лазал, но судя по цене — терморезистор. «Вставлять» придется прибор целиком, т.к. длина провода в таких датчиках не больше 1.5-2 метров.

Влажность — меряет внутри себя, а не на выносном датчике.
+
avatar
0
  • rx3apf
  • 15 февраля 2016, 02:05
Однозначно терморезистор. Они нынче производятся очень даже с неплохой точностью и воспроизводимостью.
+
avatar
0
  • Son2003
  • 12 февраля 2016, 13:32
А кто может похожий собрать в Мск с некоторыми изменениями?! Все в личку!
+
avatar
0
  • Setevod
  • 12 февраля 2016, 14:30
Я правильно понимаю, что модуль на базе si7021 из данного обзора можно запитывать от 5 В (VIN) и подсоединять к I2C Ардуино (5 В) без преобразователей уровней?
+
avatar
0
я думаю запитывать от 5 В не стоит.
+
avatar
0
  • Setevod
  • 12 февраля 2016, 16:51
Но там же стоит линейный преобразователь из 5В в 3.3В? Или на вашем модуле его нет?
+
avatar
0
Похоже во всех трех датчиках есть стабилизитор и их можно от 5 В запитывать, точнее во всех модулях, в понедельник уточню и подправлю обзор.
+
avatar
0
а коробочку для ардуины сами делали?
+
avatar
0
Тоже с китая
Решил не включать в обзор, вещь необязательная, можно снять защитное покрытие и будет красивы прозрачный корпус, хотя это не корпус, а как пишет китаец: оболочка/чехол, плата фиксируется внутри и впритык покрывается снаружи, внутрь больше ничего не вставить, хотя может можно чтото и приделать сверху.
+
avatar
+4
Да уж, я когда то попробовал разобраться с точностью таких датчиков, то «засел» надолго. Производится их просто «море».
Датчики выполняются из пьезоматериалов, полимерного конденсатора. Материалы и «обвеска» разные, качество тоже и цена соответственно в разы выше у более точных и стабильных датчиков.

(фото вскрытого DHT22 не мое) DHT22, SEN0137/AM2302, Si7021-A20, HTS221, HIH-4010/4020/4021, BMP180, SHT71, SHT75.
После всего изученного, я лично в итоге не стал заморачиваться, показывает приблизительно и ладно, потому что точный и калиброванный на заводе датчик стоит от 50 баксов, смысла таких для погодной станции не вижу (хотя в других проектах наверняка нужны). Мне важно чтобы показания были приемлемыми для «организма» :) влажность от 50% до 70%, температура от +18 до +28 градусов, а на улице чтобы знать как одеваться, датчик давления — тут важна в принципе не величина давления (мое мнение), а перепад — если резко уменьшается, значит к «слякоти», если увеличивается — к хорошей солнечной погоде (хотя для стариков важен и показатель давления, они «погоднозависимые» как раз из за величины давления).
И почитайте еще вот эту статьи, может кому то поможет:
«Поверка и калибровка гигрометра DHT22» www.kandrsmith.org/RJS/Misc/calib_dht22.html
«Сравнение DHT22, DHT11 и Sensirion SHT71» www.kandrsmith.org/RJS/Misc/calib_dht22_dht11_sht71.html
А по поводу «механической» погодной станции «PEARL» могу сказать, что у меня такая уже 15 лет «молотит» (покупал в 2000 году). Купил себе и еще паре родственников как раз за их тихий ход часов. Правда по прошествии лет десяти, стали уже «погромче», когда механизм толкает стрелки часов наверх. При покупке трех штук оказались очень разные на них показания, пришлось калибровать по данным гидрометеослужбы аэропорта, на улице (сзади отвинчиваются крышки и настраиваются все без исключения).
+
avatar
+1
  • Sanja
  • 12 февраля 2016, 15:56
В инете мало информации(или я плохо вьехал) о интерфейсе I2C. Я не понял правильно ли я все подключил, у датчиков питание 3,3 В, а у дисплея 5 В, можно ли их без преобразователя логических уровней соединять в одну шину?
Нет. Гуглите "IIC I2C Level Conversion Module 5V-3V"

+
avatar
0
Почему нет? Датчики питаются от 3,3 В, или все же через конвертер экрана 5 В попадает на интерфейс датчика?
+
avatar
0
  • Sanja
  • 12 февраля 2016, 17:55
Да, именно. Вам просто повезло, что ваши экземпляры датчиков вам простили такое насилие. Правильнее бы было подключить к Ардуине экран, затем по цепочке конвертер уровней, и за ним — трёхвольтовые датчики. Мне удавалось гирлянды по 5 датчиков собирать, всё работало.
+
avatar
0
Вот здесь более менее доходчиво о шине www.itt-ltd.com/reference/ref_i2c.html
конвертер экрана для «стыковки» логических уровней входов — выходов устройств между собой, так как если говорить без лишних объяснений и грубо — логический «0» у 5 вольтового порта почти что равен уровню «1» для 3-х вольтового, а логическая «1» 3 вольтовика это практически может восприняться 5-ти вольтовиком как «0». То есть будут «глюки». Да и входы с 3 вольтовки могут погореть от 5ти вольтовки, поэтому и применяются «шилды» переходники. И питаются они по сути от разных источников — от +5 и от +3,3 вольта. Для этого применяется модуль регулятора напряжения AMS1117 3,3В

или вот такая «приблуда»
+
avatar
0
  • manatu
  • 12 февраля 2016, 16:25
Отличный обзор датчика влажности и температуры, а точнее проекта в который он внедрен! Спасибо автору за труды-старания для нас.
+
avatar
0
У меня вопросик: а как два бмп180 подключить к ардюинке? У всех датчиков одинаковый адрес. Может кто знает?
+
avatar
0
  • Sanja
  • 12 февраля 2016, 19:00
Вкратце — через ж...: github.com/mahfuz195/Pressure_sensor_BMP180
+
avatar
0
  • kifitim
  • 12 февраля 2016, 19:45
неужто перепад мерить собрался))
+
avatar
0
  • gulin176
  • 13 февраля 2016, 07:27
а есть такие жк дисплеи побольше. чтобы читаемо было метров с двух
+
avatar
0
Осваивайте Fritzing хорошая программа, аналоги которые бесплратные просто убогие. Реле питать только отдельным каналом минуя ардуину, иначе могут быть подвисания и просадка яркости экрана.
+
avatar
+1
  • Motto
  • 14 февраля 2016, 12:17
"… в оффлайне цены на гигрометры высокие, а точность никакая."
Да ладно. Гигрометр-психрометр ВИТ-1или ВИТ-2. Цена деления 0,1 градуса. Включены в государственный реестр средств измерений.
Цена от 200 руб.
На работе у меня два таких уже 8 лет, ежегодную поверку проходят без проблем и домой себе такой же взял, калибровать китайские термостаты и термодатчики.
+
avatar
0
  • rx3apf
  • 14 февраля 2016, 14:40
Однако допустимая погрешность у ВИТ-1 и ВИТ-2 в комнатных условиях — до 6%.
+
avatar
0
спасибо за труды
щас возможно тупой вопрос задам, но: измеряет ли si7021 влажность при отрицательных температурах воздуха?

я конечно же читал его ТТХ:
Влажность
Точность: ± 3% (макс), 0-80%
Рабочий диапазон: от 0 до 100%

Температура
Точность: ± 0,4 ° C (макс), от -10 до 85 ° C
Рабочий диапазон: от -40 до +125 ° C
но недостаток опыта не позволяет мне сделать какой-либо вывод
кто что знает?
ЗЫ чтение даташита ничего не прояснило (
+
avatar
+1
  • rx3apf
  • 15 февраля 2016, 01:57
В даташите есть еще рекомендуемый диапазон влажности для диапазона вне -10...+60. Так что я бы предположил, что по крайней мере в этом температурном диапазоне можно ожидать достоверных результатов во всем диапазоне влажности. Иначе нелогично указывать область отрицательных температур. Датчики влажности, работающие «в минусе» — не экзотика (но это не ширпотреб, который ставят в бытовые настенные термогигрометры).
+
avatar
0
  • IVA2
  • 14 февраля 2016, 23:00
С катами перебор
+
avatar
0
  • 5189837
  • 15 февраля 2016, 17:19
Я не понял правильно ли я все подключил,
интересная информация " Метеостанция на Arduino с визуализацией данных"
здесь реально помогут расставить все точки над " i ".
*
+
avatar
0
что то я там не нашел ни слова про i2c, именно с ним и загвоздка, в принципе я уже выяснил что похоже все можно и нужно подключать на 5В и не морочить голову, возможно еще конденсаторы нужны.
+
avatar
0
Отличное руководство для начинающих! Но пара вопросов по si7021:
1) Можно ли подключить к ардуине (про мини) на 5 вольт? Параллельно LCD?
2) Какой максимальной длины провода можно использовать для датчика?
+
avatar
+1
Присоединяюсь к вопросам.
+
avatar
+1
  • Jon2016
  • 21 сентября 2016, 00:08
с DHT22 показания врут безбожно.
Брал у разных продавцов. Проверено около 20 штук.
Показания температуры зимой завышают, летом занижают. Влажность вообще не коррелирует с реальностью.
Месяц снимаю показания с si7021. Результат нравится больше, но пока мало статистики. И датчик задействован пока всего один.
+
avatar
0
На датчике установлен фильтр, как я понял использовать можно с ним? Купил два, на одном снял, заметно, что на дыхание через фильтр реагирует более инертно.
+
avatar
0
  • d1zz3l
  • 13 июня 2017, 14:18
Скажите а можно на одной ардуине повесить 2 датчика Si7021. Если да то как?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.