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

N0rdling

★✩✩✩✩✩✩
15 Янв 2020
154
20
@Bugerman, в прошивке можешь сам найти в цикле loop будет строка -опрос датчиков, в которой вызывается другой цикл, непосредственно с опросом, в котором и можно дописать корректировки значений.
Загрузчик можно записать через программатор или другую ардуину (уно или нано).
 

SoftFelix

✩✩✩✩✩✩✩
16 Фев 2020
32
4
@Bugerman,

Вот на примере 1.5с24 от Norov.

По аналогии с температурой можно корректировать влажность и давление. Но у меня, лично, на BME280 и BME680 проблем с точностью измерения влажности и давления не было. А вот с температурой - да, как и у многих - завышает. Отнимаю 2 градуса.

Это в самом начале до setup'а.
C++:
#define TEMP_CORR 2       // сколько градусов ОТНЯТЬ после чтения из BME680, т.к. датчик ЗАВЫШАЕТ показания.
Это в functions.

C++:
void readSensors() {
  // bme.takeForcedMeasurement();
  dispTemp = bme.readTemperature() - TEMP_CORR; // уменьшить на 2 градуса значение температуры (корректировка - датчик почти всегда завышает примерно на 2 градуса!);
  dispHum = bme.readHumidity();
  dispAlt = ((float)dispAlt * 1 + bme.readAltitude(SEALEVELPRESSURE_HPA)) / 2;  // усреднение, чтобы не было резких скачков (с)НР
  dispPres = (float)bme.readPressure() * 0.00750062;
#if (CO2_SENSOR == 1)
  dispCO2 = mhz19.getPPM();
#else
  dispCO2 = 0;
#endif
}
 
Изменено:

pripav

✩✩✩✩✩✩✩
11 Авг 2023
4
0
Ребята, привет! Собрал всё по схеме, но сейчас примерно раз в 5 секунд сенсорная кнопка мигает светодиодом и переключает режим работы. Кажется, есть какое-то импульсное снижение напряжения между +5 и землёй в это время. Что это может быть? Проблема есть только при питании от зарядного устройства и лабораторника, когда подключаюсь через порт Ардуины - проблемы нет.
 

Bugerman

✩✩✩✩✩✩✩
29 Дек 2023
11
1
@SoftFelix, У меня как раз на оборот температуру отображает нормально.
Давление врёт на 1, в принципе в пределах погрешности.
Влажность врёт на 9 %.

Я правильно понял для давления нужно написать примерно

//
#define PRESS_CORR 2

и в строке
dispPres = (float)bme.readPressure() * 0.00750062;

сделать

dispPres = (float)bme.readPressure() - PRESS_CORR 2 * 0.00750062;

просто не силён в коде.
 

Bugerman

✩✩✩✩✩✩✩
29 Дек 2023
11
1
@SoftFelix, да, действительно)
Я там как то 1 поставил на одной из станций, у меня давление 32000 показывал потом загрузчик платы за одно и "полетел" надеюсь хоть датчик не убил. спасибо за помощь.
Останется настройку даты, и времени чтоб через меню можно было подстраивать сделать. Тут где-то выкладывали скетч, правда для другой платы вроде.
 

SoftFelix

✩✩✩✩✩✩✩
16 Фев 2020
32
4
@Bugerman, не надо забывать про высоту на которой производится измерение давления. У меня на работе данная станция расположена на 2-ом этаже и давление там всегда +- 1 мм.рт.ст и точно совпадает с картой давления от того же Вентуская (измерения у поверхности земли). Дома (7-ой этаж!) эта же станция показывает минус 3-5 мм.рт.ст. от показаний Вентуская. На фото ниже давление от Вентуская и Метеостанции (работа, 2-ой этаж, датчик BME280, в постоянной работе 3 года).

ПитерДавлениеВентускай.jpgФото3395.jpg
 
Изменено:

Fedy64

✩✩✩✩✩✩✩
1 Фев 2024
3
0
Добрый день ! Много лет работала такая метеостанция, но недавно сгорел светодиод (он был с общим катодом). Купил новый, но с общим анодом, при первом включении забыл поменять в коде катод на анод. После изменения кода и повторного включения, у светодиода горят постоянно все три цвета. В видео автор говорит, что можно методом "тыка" определить тип светодиода, нечего не "сгорит". Может быть светодиод большой мощности и нужен другой резистор ?
 

Fedy64

✩✩✩✩✩✩✩
1 Фев 2024
3
0
Добрый день ! Сам спросил, сам отвечаю. Версия v1.5c23 работает только со светодиодами с общим катодом !!!
 

ya.exzotica

✩✩✩✩✩✩✩
13 Дек 2023
10
0
Всем привет,в теме с корпусами читал,что люди подключают кнопку для калибровки датчика MH-Z19B
Вопрос: куда припаивать кнопку? И как будет происходить калибровка?
 

Fedy64

✩✩✩✩✩✩✩
1 Фев 2024
3
0
Добрый день !
Хочу поделится своим опытом калибровки датчика MH-Z19B. Быстрая калибровка замыканием контактов не помогает. Мне помогла калибровка в течении 24 часов. Для этого нужно в коде включить автокалибровку, прошить метеостанцию и вынести её на улицу или балкон, где СО2 около 400 ед. Оставить её там ровно на 24 часа, можно больше, но не меньше . После этого в коде отключить автоколибровку и заново прошить метеостанцию. Вылечил таким образом уже 2 датчика.
 

Gomerchik

✩✩✩✩✩✩✩
3 Фев 2020
25
7
А мне помогла установка другой прошивки, а именно на #349 посту прошивка от ProkVya "meteoClock_v1.5c24v7" и проблема с датчиком сама исчезла.
 

Serg_1

✩✩✩✩✩✩✩
21 Фев 2024
1
0
Здравствуйте. Вот такие значения на дисплее. Прошивка оригинальная 1.5. В настройках выбрал дисплей 1602 и отключил работу и вывод на дисплей датчика СО2. Где я мог ошибиться, почему нет значений датчика bme 280?
 

Вложения

35house

✩✩✩✩✩✩✩
9 Май 2020
4
0
Народ всем привет. У меня раз в несколько секунд мерцает дисплей, вроде где-то видел, что надо добавить кондер в какой-то модуль по питанию. Какой номинал и куда добавлять? Спасибо.
 

N0rdling

★✩✩✩✩✩✩
15 Янв 2020
154
20
@35house, сами ответили на свой вопрос "куда" - по питанию. Номинал, чем больше, тем лучше. Мерцает из-за просадки напряжения, вызванной работой датчика СО2.
 

35house

✩✩✩✩✩✩✩
9 Май 2020
4
0
@N0rdling,
А сколько там потребление всей системы, никак руки не дойдут подцепить к ЛБП? А пробовал кто-то повесить питание всех модулей отдельно, напрямую, а не через ардуино? Сделать общую землю, чтобы данные ходили и все.
 

SoftFelix

✩✩✩✩✩✩✩
16 Фев 2020
32
4
Уменьшить мерцание индикатора до практически незаметного состояния из-за работы датчика MH-Z19C, удалось следующим подключением питания:

У меня данная метеостанция была сделана ещё 3 года тому назад. На Ардуино Нано и LCD2004 (естественно с BME280 и MH-Z19C). Так вот питаю я её от AC-DC блока питания от какого роутера D-LINK, который на выходе выдаёт 12В/1А (адаптер трансформаторный, НЕ ИМПУЛЬСНЫЙ! Внутри только трансформатор, диодный мостик и небольшой электролитический конденсатор). Так вот сразу на разъёме входного питания в станции установлен электролит на 470 мкФ х 25В. Далее питание (+12В) идёт на вход "Vin" Ардуинки (это вход встроенного стабилизатора на +5В на плате Ардуино). А вот с выхода (вывода) "+5V" платы я снимаю питание на всё остальное (датчики, кнопка, индикатор). Прямо на выводах питания индикатора (+5В и GND) у меня напаян полимерный электролит 820 мкФ х 6.3В. И вот можете верить или нет, но мерцаний вообще не заметно.

p.s. Сейчас эту же станцию перевйл на ESP32 и BME680. Уже работает синхронизация времени от NTP. Исходным кодом послужила версия от Norovl.
 

Вложения

BotKot1k

✩✩✩✩✩✩✩
3 Мар 2024
2
0
Попробовал собрать часы-метеостанцию. По итогу столкнулся с проблемой, что на экране 2 полоски + не светит светодиод

Светодиод работает
 
Изменено:

SoftFelix

✩✩✩✩✩✩✩
16 Фев 2020
32
4
По итогу столкнулся с проблемой, что на экране 2 полоски
Очень нежно подстрой резистор контрастности на I2C-плате LCD2004.
+ не работает светодиод
Проверяй монтаж согласно с цоколёвкой светодиода и его подключением к пинам Ардуино. +Проверяй, какой светодиод купил. По умолчанию в скетче прописан светодиод с общим катодом. Если используется светодиод с общим анодом, то нужно изменить настройку:

C++:
#define LED_MODE 0        // тип RGB светодиода: 0 - общий катод, 1 - общий анод
 
  • Лойс +1
Реакции: BotKot1k

gla

✩✩✩✩✩✩✩
25 Фев 2024
3
0
@leontr,
Насчет светодиода. Если реизисторы на каждом цвете, то все ок
 

gla

✩✩✩✩✩✩✩
25 Фев 2024
3
0
@Gomerchik,
резистор у gnd ноги светодиода убрал и поставил по такому же на каждую ногу. Теперь желтый ок, и красный другие не перебивает. И даже все три цвета одновременно дают белый (чего раньше не было вообще)
 

gla

✩✩✩✩✩✩✩
25 Фев 2024
3
0
@SoftFelix,
тут несколько раз писали, что перевели на esp8266, вы перевели на esp32. Это круто. Но может быть у вас есть подробная схема под вашу распиновку и описанием изменений в стандарной схеме? для чайников так сказать. Просто тут много вопросов: и с распиновкой, и с изменением питания 5 > 3.3(другие датчики из-за этого?)
 

SoftFelix

✩✩✩✩✩✩✩
16 Фев 2020
32
4
@gla,

Схема есть. Она в P-CAD'e, но можно сделать и в PDF. Выложу чуть позже. Нужно ещё отстроить автояркость от фотодиода. Так же из-за максимального напряжения ШИМа от ESP32 всего в 3.3В, придётся до-собрать схему на одном ОУ LM358, что бы ей нормально регулировать яркость подсветки LCD2004 (ему нужно 0...5В).

1. Схема полностью повторяет логику работы схемы и программы от ув. Norovl.
2. Все датчики запитаны от +5В. Для 3.3В I2C и UART ESP32 это не проблема.
3. Проблема - только сенсорная кнопка. Её пришлось запитать от +3.3В.
4. Делители на измерение +5В и U_BAT можно не впаивать, если планируется работа только от внешнего AC-DC-адаптера. У меня используется адаптер 12В/1А от какого-то старого роутера D-LINK.
5. Питание всей конструкции после AC-DC-адаптера сделано от DC-DC на MP1584EN, которая на выходе выдаёт +5В. Прямо на выходные контакты платки паяем конденсатор 470...680 мкФ х 10В и прямо из этих же точек пайки разводим питание на датчики и ESP32! Для ESP32 и MH-Z19 берём провода минимальной длины и сечением не менее 0.35мм2! ESP32 потребляет очень приличный импульсный ток при работе WiFi! Совместно с датчиком MH-Z19 (который тоже очень прилично потребляет в момент зажигания инфракрасного светодиода и является тут причиной частых вопросов "мерцание подсветки LCD2004 - как справится?") просадки питания будут выражаться в перезагрузке ESP32. Особенно это будет проявляться, когда ESP32 работает в режиме AP (точка доступа с адресом 192.168.4.1).
6. Можно допаять дополнительные электролитические конденсаторы 470мкФ х 10В прямо на выводы +5В и GND ESP32 и прямо на ноги питания LCD2004.
7. Фоторезистор использовал 5518.
8. В программе заложена возможность использования датчика BME680, но пока без контроля качества воздуха.
9. На данный момент не отлажена схема регулировки яркости LCD2004 и работа фоторезистора (в настройках яркость везде установлена в 100%)
10. На данный момент программа работает с простейшей страничкой на GyverPortal и отдаёт в неё только основные измерения.
11. RTC синхронизируется от NTP (GyverNTP).

Ниже предварительная схема.
 

Вложения

  • Лойс +1
Реакции: gla

BotKot1k

✩✩✩✩✩✩✩
3 Мар 2024
2
0
@SoftFelix,
Если быть немного точнее сначала всё работало, а потом перестало.
Экран мелькал из-за работы MH-Z19. После его отсоединения экран перестал мелькать