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

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
Здравствуйте всем. Подскажите пожалуйста, где в скетче подкорректировать температуру, завышает на пару градусов?
void readSensors() {
bme.takeForcedMeasurement();
dispTemp = bme.readTemperature();
dispHum = bme.readHumidity();
dispPres = (float)bme.readPressure() * 0.00750062;
#if (CO2_SENSOR == 1)
dispCO2 = mhz19.getPPM();

if (dispCO2 < 800) setLED(2);
else if (dispCO2 < 1200) setLED(3);
else if (dispCO2 >= 1200) setLED(1);
#endif
}

Строка dispTemp = bme.readTemperature();
 

Contemplator

✩✩✩✩✩✩✩
15 Дек 2018
12
1
Спасибо, но я совершенно не программист. Догадываюсь, что Вы указали мне на процедуру опроса датчика и из показаний необходимо вычесть лишние пару градусов, но я не умею.
 

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
Спасибо, но я совершенно не программист. Догадываюсь, что Вы указали мне на процедуру опроса датчика и из показаний необходимо вычесть лишние пару градусов, но я не умею.
dispTemp = bme.readTemperature() - 2; // уменьшить на 2 градуса значение температуры
 
  • Лойс +1
Реакции: SoftFelix и SeverTV

SeverTV

✩✩✩✩✩✩✩
4 Дек 2020
21
0
Здравствуйте,подскажите -запутался совсем.Загрузил прошивку от Norovl .Работает -но температуру и давление не показывает,тест пишет датчик BME280 не определён - в общем нет его.где искать косяк?
 

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
Здравствуйте,подскажите -запутался совсем.Загрузил прошивку от Norovl .Работает -но температуру и давление не показывает,тест пишет датчик BME280 не определён - в общем нет его.где искать косяк?
Для начала проверить правильность соединения, потом проверить какой адрес BME280 с помощью сканера, если адрес отличный от 0x76, записать правильный в строке:

if (bme.begin(0x76,&Wire)) {
 
  • Лойс +1
Реакции: SoftFelix и SeverTV

SeverTV

✩✩✩✩✩✩✩
4 Дек 2020
21
0
Спасибище, заработал ВМЕ280 :D
мне теперь на пальцах объясните где менять -по пунктам.

Для начала проверить правильность соединения, потом проверить какой адрес BME280 с помощью сканера, если адрес отличный от 0x76, записать правильный в строке:

if (bme.begin(0x76,&Wire)) {
вот где менять это что вы написали куда зайти -по пунктам пожалуйста уже давно не ем и не сплю - где это написать или изменить
if (bme.begin(0x76,&Wire)) {
[/QUOTE]
прошивка от Norovl пункт в скетче какой? не найду....
остальное что вы написали проверил всё ок и сканер 0x76 пишет,в библиотеке стоит 0x76

744 пункт
 

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
вот где менять это что вы написали куда зайти -по пунктам пожалуйста уже давно не ем и не сплю - где это написать или изменить
if (bme.begin(0x76,&Wire)) {
прошивка от Norovl пункт в скетче какой? не найду....
остальное что вы написали проверил всё ок и сканер 0x76 пишет,в библиотеке стоит 0x76
[/QUOTE]
Да просто в поиск забейте строку if (bme.begin(0x76,&Wire)) {
 
  • Лойс +1
Реакции: SeverTV

SeverTV

✩✩✩✩✩✩✩
4 Дек 2020
21
0
прошивка от Norovl пункт в скетче какой? не найду....
остальное что вы написали проверил всё ок и сканер 0x76 пишет,в библиотеке стоит 0x76
Да просто в поиск забейте строку if (bme.begin(0x76,&Wire)) {
[/QUOTE]
заменил _загрузил шишь температуру не показывает.жопа какая то.может датчику каюк.?
 

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
Да просто в поиск забейте строку if (bme.begin(0x76,&Wire)) {
заменил _загрузил шишь температуру не показывает.жопа какая то.может датчику каюк.?
[/QUOTE]

Давление и влажность показывает? Только температуры нет?
Вы на бредборде это все проверяете или уже все спаяли?
Попробуйте заменить блок питания.
 
  • Лойс +1
Реакции: SeverTV

SeverTV

✩✩✩✩✩✩✩
4 Дек 2020
21
0
заменил _загрузил шишь температуру не показывает.жопа какая то.может датчику каюк.?
Давление и влажность показывает? Только температуры нет?
Вы на бредборде это все проверяете или уже все спаяли?
Попробуйте заменить блок питания.
[/QUOTE]
всё спаял,давления и влажности тоже нет и температуры -блок питания менял.
 

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
Давление и влажность показывает? Только температуры нет?
Вы на бредборде это все проверяете или уже все спаяли?
Попробуйте заменить блок питания.
всё спаял,давления и влажности тоже нет и температуры -блок питания менял.
[/QUOTE]

Попробуйте библиотеку для BME280 другую версию. Например, которая в коде Гайвера.
 
  • Лойс +1
Реакции: SeverTV

SeverTV

✩✩✩✩✩✩✩
4 Дек 2020
21
0
так ничего и не получилось- всё хватит на сегодня-всё здесь перечитал - перепробовал пока затык.
1.Монтаж проверил.
2.Сканером проверил -пишет
0х27 - адаптер ЖКИ дисплея
0x68 - часы DS3231SN
0х76 - датчик ВМЕ280
(смотрю у других выходит ещё и 0х57 - память какая то - у меня нет этого.)
3.Адрес в библиотеке 0х76 - не менял стояло.
4.в прошивке от Norovl Строка 744 - вписал if (bme.begin(0x76, &Wire)) {
6.Библиотеки менял и от Алекса ставил и от Norovl
не работает - где то рядом разгадка - может не всё удалил,что то от библиотек осталось -нашёл в документах папку libraries там файл какой то- надо наверное убрать.
плана нет - всё снести пока так,тупик - датчик заказал - чёрт его знает может он не работун?
 

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
так ничего и не получилось- всё хватит на сегодня-всё здесь перечитал - перепробовал пока затык.
1.Монтаж проверил.
2.Сканером проверил -пишет
0х27 - адаптер ЖКИ дисплея
0x68 - часы DS3231SN
0х76 - датчик ВМЕ280
(смотрю у других выходит ещё и 0х57 - память какая то - у меня нет этого.)
3.Адрес в библиотеке 0х76 - не менял стояло.
4.в прошивке от Norovl Строка 744 - вписал if (bme.begin(0x76, &Wire)) {
6.Библиотеки менял и от Алекса ставил и от Norovl
не работает - где то рядом разгадка - может не всё удалил,что то от библиотек осталось -нашёл в документах папку libraries там файл какой то- надо наверное убрать.
плана нет - всё снести пока так,тупик - датчик заказал - чёрт его знает может он не работун?
На сайте Гайвера есть инструкция. Пробовали?

Если у вас не работает датчик BME280, скорее всего у него отличается адрес. В проекте используется библиотека Adafruit_BME280, у которой нет отдельной функции смены адреса, поэтому адрес задаётся вручную в файле библиотеки Adafruit_BME280.h почти в самом начале файла (лежит в папке Adafruit_BME280 в вашей папке библиотек, вы должны были её туда установить), у моего модуля был адрес 0x76. Как узнать адрес своего модуля BME280? Есть специальный скетч, называется i2c scanner. Его можно нагуглить, можно скачать с моего FTP. Прошиваете данный скетч, открываете порт и получаете список адресов подключенных к шине i2c устройств. Чтобы остальные модули вам не мешали – можно их отключить и оставить только BME280. Полученный адрес указываем в библиотеке, сохраняем файл и загружаем прошивку метео-часов. Всё!
 
  • Лойс +1
Реакции: SeverTV

SeverTV

✩✩✩✩✩✩✩
4 Дек 2020
21
0
На сайте Гайвера есть инструкция. Пробовали?

Если у вас не работает датчик BME280, скорее всего у него отличается адрес. В проекте используется библиотека Adafruit_BME280, у которой нет отдельной функции смены адреса, поэтому адрес задаётся вручную в файле библиотеки Adafruit_BME280.h почти в самом начале файла (лежит в папке Adafruit_BME280 в вашей папке библиотек, вы должны были её туда установить), у моего модуля был адрес 0x76. Как узнать адрес своего модуля BME280? Есть специальный скетч, называется i2c scanner. Его можно нагуглить, можно скачать с моего FTP. Прошиваете данный скетч, открываете порт и получаете список адресов подключенных к шине i2c устройств. Чтобы остальные модули вам не мешали – можно их отключить и оставить только BME280. Полученный адрес указываем в библиотеке, сохраняем файл и загружаем прошивку метео-часов. Всё!
Да это всё пробовал.пока не работает.

Да это всё пробовал.пока не работает.
Так - всё заработало.Снёс программу.В компе стал проверять что осталось- нашёл в документах папку Ардуино в ней папку libraries - вот это и мешало всей работе!Удалил эту папку Ардуино.Проверил всё чисто.Установил программу,в неё прошивку и библиотеку от Norovl .Зная что датчик у меня с адресом 0x76 - сразу открыл в библиотеке файл Adafruit_BME280.h -там адрес уже стоит 0x76,ничего не менял.В скетче нашёл строку 744 if (bme.begin( &Wire)) { в неё вписал 0х76 получилось- if (bme.begin(0x76, &Wire)) {
Ну и по инструкции в скетче - загрузил.Всё работает.
теперь вопрос следующий стоит фоторезистор но яркость -что то не реагирует от на светло и темно -теперь с этим надо разобраться.Спасибо тем кто сразу ответил- всё как у всех -сразу паника хочется выяснить что и как и где косяк.Спасибо.

Так - всё заработало.Снёс программу.В компе стал проверять что осталось- нашёл в документах папку Ардуино в ней папку libraries - вот это и мешало всей работе!Удалил эту папку Ардуино.Проверил всё чисто.Установил программу,в неё прошивку и библиотеку от Norovl .Зная что датчик у меня с адресом 0x76 - сразу открыл в библиотеке файл Adafruit_BME280.h -там адрес уже стоит 0x76,ничего не менял.В скетче нашёл строку 744 if (bme.begin( &Wire)) { в неё вписал 0х76 получилось- if (bme.begin(0x76, &Wire)) {
Ну и по инструкции в скетче - загрузил.Всё работает.
теперь вопрос следующий стоит фоторезистор но яркость -что то не реагирует от на светло и темно -теперь с этим надо разобраться.Спасибо тем кто сразу ответил- всё как у всех -сразу паника хочется выяснить что и как и где косяк.Спасибо.
Всё и с автояркостью разобрался- дело в настройке поставил -авто.Пока всё работает будем наблюдать (заметил боковым зрением экран моргает ?)- теперь всё это в корпус надо и батарейку поставить.
 

ssp1971

★★✩✩✩✩✩
14 Мар 2020
108
71
отломать все перегородки это не сложно) вместо катушек фото
 
  • Лойс +1
Реакции: SeverTV

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
Всё и с автояркостью разобрался- дело в настройке поставил -авто.Пока всё работает будем наблюдать (заметил боковым зрением экран моргает ?)- теперь всё это в корпус надо и батарейку поставить.
Моргающий экран тут обсуждали как лечить, правда, не помню какой пост.

Я вообще пошел другим путем: на контакты подсветки подключил кнопку без фиксации, хочется посмотреть в экран - нажал кнопку и посмотрел, отпустил - экран потух.
Лишняя иллюминация несколько раздражает.

Вообще, брал исходники men для esp8266, правда использовал Wemos D1 - она мельче.
Выпилил светодиод, и фоторезистор, графики (все равно данные по MQTT передаются и строятся сервером более детально) и поддрержку 2-х строчного экрана. Также выпилил высоту над уровнем моря - странный показатель для данного устройства, как по мне. И изменил положения выводимой информации на экране.
Добавил корректировку температуры и влажности в веб морде.
В общем, схема проще - надежность выше )

Если кому-нибудь такое надо, могу выложить - на здоровье.
 
  • Лойс +1
Реакции: SeverTV

SeverTV

✩✩✩✩✩✩✩
4 Дек 2020
21
0
Моргающий экран тут обсуждали как лечить, правда, не помню какой пост.

Я вообще пошел другим путем: на контакты подсветки подключил кнопку без фиксации, хочется посмотреть в экран - нажал кнопку и посмотрел, отпустил - экран потух.
Лишняя иллюминация несколько раздражает.

Вообще, брал исходники men для esp8266, правда использовал Wemos D1 - она мельче.
Выпилил светодиод, и фоторезистор, графики (все равно данные по MQTT передаются и строятся сервером более детально) и поддрержку 2-х строчного экрана. Также выпилил высоту над уровнем моря - странный показатель для данного устройства, как по мне. И изменил положения выводимой информации на экране.
Добавил корректировку температуры и влажности в веб морде.
В общем, схема проще - надежность выше )

Если кому-нибудь такое надо, могу выложить - на здоровье.
выложите,а схемка есть - так для наглядности.
 

2Уха

★✩✩✩✩✩✩
7 Ноя 2019
11
13
В файле sensor_8266_CO2.ino нужно заполнить строки:

String ssid = ""; // Имя wifi сети
String pass = ""; // Пароль сети
int TIMEZONE = 02; // Часовой пояс относительно GMT
String mqtt_ip = ""; // MQTT ip address
unsigned int ip_addr[]={0,0,0,0};
String mqtt_port = "1883"; // MQTT port
String mqtt_auth; // MQTT user name
String mqtt_pass; // MQTT user password
String mqtt_CO2 = "sensor_8266_CO2/CO2"; // MQTT топик датчика CO2
String mqtt_Hum = "sensor_8266_CO2/humid"; // MQTT топик датчика влажности
String mqtt_Temp = "sensor_8266_CO2/temp"; // MQTT топик датчика температуры
String mqtt_Press = "sensor_8266_CO2/press"; // MQTT топик датчика давления

Схемы нет, она аналогична оригиналу, нужно только из схемы удалить фоторезистор, светодиод и подключить к контактам подсветки кнопку. Кнопку взял из старого корпуса системного блока.

Пины Вемоса прописаны в скетче (D8, например - это тот, который подписан на плате как D8)
#define BTN_PIN 15 //D8
#define MHZ_RX 0 //D3
#define MHZ_TX 2 //D4

Контакты I2C у Wemos подписаны на плате: D1=SCL, D2=SDA

int TempCorrection = -2; // корректировка температуры в градусах
int HumCorrection = 10; // корректировка влажности в процентах
 

Вложения

Изменено:

Wonderrus

✩✩✩✩✩✩✩
20 Мар 2020
17
0
Подскажите как высчитывать этот самый коэффициент SEALEVELPRESSURE_HPA (1013.25) для своего региона? (конкретно надо Екатеринбург).
E1.Ru показывает 760 мм.рт.ст., Яндекс, Гисметео и прочая шлепотень как сговорились (и как будто они пользуются проектом Гайвера) - 730-740 мм.рт.ст
 

Дачник

✩✩✩✩✩✩✩
25 Дек 2020
1
0
Ещё вопрос к специалистам, достаточно будет поменять в скетче выбор библиотеки часов при замене RTClib на DS3231, а то часы или возвращаются к времени загрузки или начинают с нулей при удалении rtc. adjust.

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

poty

★★★★★★✩
19 Фев 2020
2,956
886
@Wonderrus, этот параметр нужен только для вычисления высоты. Для измерений давления он не нужен.