ARDUINO Часы-метеостанция. Обсуждение проекта

29.01.2019
6
0
1
#1
Всем доброго времени суток! Прошу помощи в дополнении проекта Алекса https://alexgyver.ru/meteoclock/ часы-метеостанция с контролем СО2. Нужно в скетч добавить выход на реле включения вентилятора при загорании на выбор либо желтого либо красного цвета светодиода.
 

Вложения

19.01.2019
101
13
18
Киев
#2
попробуй прицепить на пин светодиода релейный модуль который управляется логическим уровнем и у него питание отдельное
а светодиод выбирай в зависимости от уровня СО2 при котором нужна вентиляция
 
Симпатии: Понравилось EandV
29.01.2019
6
0
1
#3
Спасибо! Смущает, только. что яркость красного светодиода в одной строке на 50 % уменьшается, не будет реле от этого глючить?
 
29.01.2019
6
0
1
#5
Собрал метеостанцию, но показания с датчика СО2 постоянно 5000, при тесте датчики показывают все ОК. Отсоединяю датчик показания меняются на -1. Подскажите что не так ,может сам датчик?
 
29.01.2019
6
0
1
#7
При включении тестируются датчики, если с ними все ОК, показывает на экране. При переходе в основной экран, показания датчика СО постоянно 5000
 

Вложения

#9
410-430 при включении это похоже нормально. У меня также. Пробовал мерять СО2 на улице, может у тебя правда дома 5000 ppm?
 
#11
В этих сенсорах есть автокалибровка, которая подстраивается каждые 24 часа. Попробуй оставить сенсор (или всю метеостанцию) включенной на день-два.

Дополню: либо поискать в даташите на сенсор комманду принудительной калибровки, вынести датчик на улицу и перекалибровать его.
 
28.02.2019
7
1
3
#12
Всем доброго времени суток! Прошу помощи в дополнении проекта Алекса https://alexgyver.ru/meteoclock/ часы-метеостанция с контролем СО2. Нужно в скетч добавить выход на реле включения вентилятора при загорании на выбор либо желтого либо красного цвета светодиода.
Вот код по такой доработке. Нужно добавить инициализацию порта для управления реле. И заменить функцию setLED. Собственно в нее добавлено 3 строчки, включения и выключения реле, в зависимости от цвета диода.


C++:
// Пины
// Пин подключения реле
#define RELE_PIN 10


void setLED(byte color) {
  // сначала всё выключаем
  if (!LED_MODE) {
    analogWrite(LED_R, 0);
    analogWrite(LED_G, 0);
    analogWrite(LED_B, 0);
  } else {
    analogWrite(LED_R, 255);
    analogWrite(LED_G, 255);
    analogWrite(LED_B, 255);
  }
  switch (color) {    // 0 выкл, 1 красный, 2 зелёный, 3 синий (или жёлтый)
    case 0:
      break;
    case 1:
          analogWrite(LED_R, LED_ON);
          // Включаем реле
          digitalWrite(RELE_PIN, HIGH);
      break;
    case 2:
          analogWrite(LED_G, LED_ON);
          // Выключаем реле
          digitalWrite(RELE_PIN, LOW);
      break;
    case 3:
      if (!BLUE_YELLOW) analogWrite(LED_B, LED_ON);
      else {
        analogWrite(LED_R, LED_ON - 50);    // чутка уменьшаем красный
        analogWrite(LED_G, LED_ON);
      }
      // Включаем реле
      digitalWrite(RELE_PIN, HIGH);
      break;
  }
}
 
02.03.2019
1
0
1
#13
Подскажите пожалуйста, как отключить автокалибровку Mh-z19b,
 
28.02.2019
7
1
3
#14
Доработка прошивки для выключения подсветки на ночь.

C-подобный:
// ------------------------- НАСТРОЙКИ --------------------
// Час включения и выключения подсветки
#define BL_START 7
#define BL_STOP 1


// И исправленная функция отрисовки часов
// в конце добавил управление подсветкой
void drawClock(byte hours, byte minutes, byte x, byte y, boolean dotState) {
  // чисти чисти!
  lcd.setCursor(x, y);
  lcd.print("               ");
  lcd.setCursor(x, y + 1);
  lcd.print("               ");

  //if (hours > 23 || minutes > 59) return;
  if (hours / 10 == 0)
    drawDig(10, x, y);
  else
    drawDig(hours / 10, x, y);

  drawDig(hours % 10, x + 4, y);
  // тут должны быть точки. Отдельной функцией
  drawDig(minutes / 10, x + 8, y);
  drawDig(minutes % 10, x + 12, y);

  // Управление подсветкой
  // Для сов, которые засыпают после полуночи
  #if (BL_STOP < BL_START)
    if (BL_STOP <= hours && hours < BL_START) lcd.noBacklight();
      else lcd.backlight();
  #else
    if (BL_START <= hours && hours < BL_STOP) lcd.backlight();
      else lcd.noBacklight();
  #endif

}
Еще думаю можно подтянуть дополнительное питание подсветки через резистор. Тогда она будет не выключаться а гаснуть до слабого свечения.
 
Последнее редактирование:
28.02.2019
7
1
3
#15
Есть вопросик, хочу сделать возможность корректировки времени без перепрошивки ардуины. Самый простой способ, на мой взгляд - это командами через монитор компорта. Типа H15 [Ентер] M33 [Ентер].

C-подобный:
  if (Serial.available() > 0) {
      String buf_txt = Serial.readString();
      
      if (buf_txt.substring(0,1) == "H"){
        Serial.println("Set Hours -> "+buf_txt.substring(1,3));
      }

      if (buf_txt.substring(0,1) == "M"){
        Serial.println("Set Minute -> "+buf_txt.substring(1,3));
      }

  }
Собственно не смог найти, в каком формате надо подавать значения в функцию DateTime()?
 
Последнее редактирование:
05.03.2019
1
0
1
#16
Привет, нужна помощь) Экран дисплея ничего не показывает, тупо горит подсветка, адрес менял...
С чем это может быть связано?
 
28.02.2019
7
1
3
#17
Привет, нужна помощь) Экран дисплея ничего не показывает, тупо горит подсветка, адрес менял...
С чем это может быть связано?
Там с обратной стороны крутилка есть, ее надо покрутить потихоньку, пока не появятся циферки и станут максимально контрастными.
 
09.03.2019
1
0
1
#18
вчера сделал. все здорово, спасибо., вопрос а можно сделать регулировку яркости дисплея? по времени а то ночью слишком яркий
 
28.02.2019
7
1
3
#19
вчера сделал. все здорово, спасибо., вопрос а можно сделать регулировку яркости дисплея? по времени а то ночью слишком яркий
Можно, я сделал. Для управления подсветкой нужно добавить еще один проводок для управление с помощью ШИМ сигнала с ардуино.
Провод пускается со свободного пина с ШИМ (НАПРИМЕР 10) на верхний контакт перемычки на дисплее (перемычку снять).
Ну и прошивку подкорректировать.
Мой вариант прошивки на гитхабе - https://github.com/alex-anp/alexgyver_meteo_clock
 
Симпатии: Понравилось THIEF60
20.03.2019
10
7
3
#20
Мой вариант корпуса:

3.JPG
2.JPG


Датчики вынесены отдельно. Разъём питания использовал DC5.5x2.1mm, ну потому, что БП у меня халява с такими штекерами :)

STL для повторения или для основы своего варианта: https://yadi.sk/d/2JY00BJpWVtLKw

Ну или тут:
Зы. Рамку и подставку можно напечатать отличным от корпуса цветом, будет отлично смотреться ;)
 

Вложения