ARDUINO Предсказатель погоды. Обсуждение проекта

ansel73

✩✩✩✩✩✩✩
31 Июл 2018
9
2
AlexGyver спасибо за Ваш труд,сделал себе,все работает,один вопрос,допустим предсказатель был откланен в ту или иную сторону,при нажатии на ардуинке на кнопку,чтобы посмотреть батарею,стрелка после всех манипуляций становится на середину ,а не на то место где она раньше была,это произошел сброс на заводские установки или она со временем встанет опять правильно
 

uhan

✩✩✩✩✩✩✩
6 Авг 2018
3
0
при нажатии на "сброс" произошел сброс всех данных во всех массивах (см. скетч) и перезапуск программы. поэтому все данные потеряны. но в течение, примерно часа, массивы будут заполнены вновь поступившими данными и прибор опять будет предсказывать погоду. Это все есть в описании.
 

uhan

✩✩✩✩✩✩✩
6 Авг 2018
3
0
кто нибудь измерял потребляемый ток в режиме сна?
У меня 38 мА.
считаю что это много.
 

uhan

✩✩✩✩✩✩✩
6 Авг 2018
3
0
вопрос решен. проблема в самой плате адруинло нано. точнее в контроллере usb. плату пришлось заменить. так что даже оригинальные платы бывают с дефектом.
 

EandV

★★★✩✩✩✩
4 Авг 2018
288
163
@ansel73, Я просто в свой вариант исполнения добавил модуль-индикатор уровня заряда, включаемый при нажатии кнопки. Теперь нет необходимости перезапускать программу, чтобы посмотреть уровень заряда.
 

Патрушев Артём

✩✩✩✩✩✩✩
4 Сен 2018
26
2
Появился вопрос по проекту, если давление падает то стрелка отклоняется влево, если растет то вправо, такая логика?
 

EandV

★★★✩✩✩✩
4 Авг 2018
288
163
Появился вопрос по проекту, если давление падает то стрелка отклоняется влево, если растет то вправо, такая логика?
В целом да. Если я правильно понял алгоритм, то проводится измерение каждые 10 минут и стрелка отражает резкие скачки.
 
  • Лойс +1
Реакции: Патрушев Артём

VAVASTO

✩✩✩✩✩✩✩
7 Дек 2018
4
3
Добрый день

Несколько странная ситуация с проектом - попробовал собрать на макетке - всё без проблем работает. Стал переносить проект в "железо", после подключения питания (аккумуляторы, батарейки или питание от USB порта - неважно) arduino практически сразу уходит в перезагрузку. Путем экспериментов удалось выяснить, что перезагрузка происходит при попытке подачи питания на мосфет.

C++:
#define servo_Vcc 12           // пин питания, куда подключен мосфет
...

pinMode(servo_Vcc, OUTPUT);
digitalWrite(servo_Vcc, 1);      // <----- падает здесь
Если эту строку закомментировать, проект работает - ну только что сервопривод понятное дело остается неподвижным. Тип используемого мосфета - IRLB8743. Если мосфет выкинуть из схемы, все опять же работает (без энергосбережения). Перепробовал 3 или 4 мосфета того же номинала, картина аналогичная

Может быть кто-нибудь подскажет, в чем может быть проблема?

P.S. наверное три раза пересобирал проект на макетке для проверки, потом перепаивал в "железе". На макетке всегда работает, в железе - нет (перегружается)
 

EandV

★★★✩✩✩✩
4 Авг 2018
288
163
@VAVASTO, Честно говоря у меня всё нормально работает без всяких изменений в коде. Конечно к алгоритму работы есть вопросы в плане правильности предсказаний, но в целом всё работает. Были проблемы с работой серво. Причина был в недостаточности питания напрямую от аккумулятора. Помогло добавления повышающего преобразователя.

Вот в этой теме перечислил список доработок:
https://community.alexgyver.ru/threads/predskazatel-pogody.32/
 

VAVASTO

✩✩✩✩✩✩✩
7 Дек 2018
4
3
Всем доброго дня
Спустя почти полгода наконец то собрал проект. Ардуинка, если помните, постоянно перезапускалась и "падала" на моменте, когда надо крутить серву. Сначала думал, что проблема в мосфете или обвязке. Заказал готовый модуль мосфета. Шёл он, к слову, больше 2х месяцев :). Нервы не выдержали ждать, и начал думать дальше. Нашёл у Алекса видео про Bluetooth лабиринт. Если помните там параллельно питанию серв стоят конденсаторы. Решил попробовать и о чудо! Всё работает! Конденсатор взял на 16 В 220 Микрофарад (первый который попался под руку), просто воткнув его параллельно линии питания.
В общем теперь всё работает! Добавил кнопку, по нажатию на которую стрелка показывает напряжение. Если кому надо, могу нарисовать схему подключения.
Погоду, кстати, показывает достаточно верно (стрелка опустилась примерно на 75 к дождю и действительно появились облака). Спасибо за проект!photo_2019-04-27_13-48-21.jpg
 

private131

✩✩✩✩✩✩✩
20 Июл 2019
8
0
Вот мой вариант. Подскажите, хочу переделать вход сигналов с датчика давления на пины А5 ,А6 вместо существующих А4, А5. В скетче вижу только это
pinMode(A3, OUTPUT);
pinMode(A2, OUTPUT);
Опытные, поясните, как мне сделать такое переназначение. Прошу не пинать, я не программист((
И еще хотел спросить, что нужно переписать, чтобы использовать BMP280?? Просто есть такие датчики и я хотел бы их применить.
 

Вложения

private131

✩✩✩✩✩✩✩
20 Июл 2019
8
0
К ним же датчик давления идет??? А питание и земля на оставшиеся два вывода датчика давления???
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
я смотрю схему. A4-A5 это данные датчика по I2C, если А2 и А3 идут к проводам питания датчика, то запитать его можнго подва HIGH (или 1 как в скетче) на один и LOW (иди 0) на второй. и в принципе на пару любых выводов ардуины
 

Lumenman

✩✩✩✩✩✩✩
19 Дек 2019
4
0
Хотел было собрать этот проект, но есть замечания к алгоритму работы. Судя из видео-описания (кадры с изображениями графиков), Алекс использует значения давления с точностью до Паскалей и строит линию тренда по изменениям этих Паскалей, но для предсказания погоды не нужна такая точность. Дело в том, что достаточно точности в 1 гПа (100 Па). Раньше на метеостанциях использовали барограф, который "рисовал" график на ленте, которую и использовали для прогноза. Так вот, точность барографа +/- 1 гПа.
Что касается тренда, то в пределах 40-60 градусов Св. широты, например, падение от 1 до 2 гПа в 1 час - непогода, больше 2 гПа - буря. Более точно - это использовать тренд не за 1 час, а за 3 часа (об этом можно почитать тут).
Таким образом, если использовать разницу в Паскалях, то в большинстве случаев, прибор будет давать некорректный прогноз. Когда разница показаний достигнет несколько сотен Паскалей (1-3 гПа), тогда он покажет правдивый прогноз (понимаю, что для прогноза одного давления мало, но всё же).
Исходя из этого, за 1 час можно собрать 6 или больше значений в гПа (с одной стороны, экономится память на тип данных, а с другой - можно и с округлением до десятых для более высокой точности) и просто выводить разницу 2-х значений (текущее минус час назад) в форме -150 +150 или любом другом удобочитаемом виде, памятуя о правилах, изложенных выше (см. ссылку). Отпадает необходимость в среднем арифметическом, т.к значения и так округлены + пренебрегается шум в несколько десятков Паскалей, который ни на что не влияет. Так же, отпадает необходимость в аппроксимации, хотя с ней можно поэкспериментировать, т.к она даст более плавный тренд (помним о том, что значения и так округлены). Как вариант, всё это можно вывести на экран. К сожалению, я не программист, поэтому не смогу реализовать предложенные правки (хотя, я заказал детали, попробую поэксперементировать) :) ЗЫ. Если использовать настоящий проект, то что можно изменить для приведения давления к гПа без десятичной точки или с округлением до десятых?
 

EandV

★★★✩✩✩✩
4 Авг 2018
288
163
@Lumenman, Лично я так сильно не углублялся в алгоритм обработки показаний, и думаю ,что таких людей вообще не много. Если удастся допилить алгоритм, чтобы предсказания были более правильными было бы шикарно. Больше года юзаю эту штуковину, могу сказать, что она довольно неплохо предсказывает, что что-то будет меняться, но часто ошибается в какую сторону буде меняться...
 

Lumenman

✩✩✩✩✩✩✩
19 Дек 2019
4
0
@Lumenman, Лично я так сильно не углублялся в алгоритм обработки показаний, и думаю ,что таких людей вообще не много. Если удастся допилить алгоритм, чтобы предсказания были более правильными было бы шикарно. Больше года юзаю эту штуковину, могу сказать, что она довольно неплохо предсказывает, что что-то будет меняться, но часто ошибается в какую сторону буде меняться...
Да, показывать прибор будет, т.к он все таки учитывает перепады давления, но кроме существенных перепадов, он учитывает и малые величины (несколько десятков Паскалей). А малые перепады - обычное явление, так называемый, суточный ход (давление поднимется между 4 и 10 часами утра, и потом - между 4 и 10 вечера; падает между 10 утра и 4 вечера и снова - между 10 часами вечера и 4 утра; в наших широтах - это, как раз, несколько десятков Паскалей, которые и могут вносить ошибку в работу прибора). Но это уже тонкости, которые не требуется учитывать.
Для эксперимента, чтобы кардинально ничего не переделывать, можно величину давления в Паскалях привести к гПа, т.е поделить на 100 и округлить к десятым. Как это можно сделать в этом коде? Куда вставить эту формулу? :) Если я правильно понял, в алгоритме используется среднее арифметическое, значит в строке aver_pressure = pressure / 10; можно поделить ещё на 100 и тогда: aver_pressure = pressure / 1000; Правильно? В строках касательно угла наклона, я не знаю, нужно ли что-то менять...
ЗЫ. А так, я думаю, можно просто забить массив через каждые 10 минут давлением в гПа (деление на 100) и считать разницу в 1 час, которую потом отображать стрелкой. Округление избавит нас от "шума", среднего арифметического и аппроксимации. В идеале - за 3 часа. Дождусь необходимых элементов с Китая и попробую повторить, и поэкспериментировать.
 
Изменено:

VAVASTO

✩✩✩✩✩✩✩
7 Дек 2018
4
3
@Lumenman, Использую предсказатель больше полугода, и сделал для себя кое-какие выводы по поводу работы. При использовании алгоритма, написанного Алексом, устройство нуждается в постоянном контроле. Т.е. если вы сидите за столом и работаете, периодически на него поглядывая, то можно предсказать погоду достаточно точно часа на 2-3 вперёд. В коридоре висит станция-часы за 15$ с алика, вот она анализирует давление за 24 часа с шагом в 3 часа. При помощи неё можно предсказать погоду часов на 10 вперёд, но и меняться погода будет неторопливо. Мораль сей басни такова, что хорошо бы добавить в устройство Алекса кнопочку, по нажатию на которую, оно бы выводило предсказание на основе давлений хотя бы часов за 6. Даже начинал писать подобный скетч, но понял, что в программировании на таком уровне я пока не силён:)
 

Lumenman

✩✩✩✩✩✩✩
19 Дек 2019
4
0
@VAVASTO, да, рекомендуют следить за изменением давления за последние 3 часа. Но актуальность такого прогноза, действительно, около 6 часов. Так что, наблюдения нужно проводить за 6 часов до желаемого прогноза, например, утром и до вечера. К сожалению, в русскоязычном сегменте интернета этому вопросу мало уделено внимания, а вот, заграницей... Например, нашёл такие "правила" для барометра (ссылка). Там тоже за 3 часа (разница: 1-3, 4, 6, 10 гПа) и учитывается текущее (меньше 1009 гПа, 1009 - 1018 гПа, 1018-1023 гПа, больше 1023 гПа). Как видно, используется значение гПа, а не Па (высокая точность просто не нужна). Для более серьёзного прогноза нужно учитывать направление ветра и облачность, например, как тут (Sager Weathercaster) и тут (Zambretti, более гибкий вариант тут) :) Если Zambretti ещё можно запилить, то Sager Weathercaster - это трынцец (там очень много переменных и большая кодовая таблица). Кстати, у меня есть инфа по обеим алгоритмам ;) Но это уже слишком круто, можно оставить как есть, просто допилить алгоритм. Я тоже не программёр, но получу детальки и поэкспериментирую :geek:
ЗЫ. Нашёл ещё одну картинку по теме (во вложении).
 

Вложения

Изменено:

ASM

★★★★✩✩✩
26 Окт 2018
1,485
292
Всем привет, что-то тихо тут)
Собрал схему с мосфетом, дождался жужжания моторчика и поставил стрелку в ноль, далее если нажимать сброс, то стрелка останавливается в разных местах. Оставил на некоторое время, стрелка была и в +250 и в -300. Странно как-то работает) Перепрошил заново, посмотрим, что будет)
Корпус склеил из рекламного пластика)
Предварительно так)
застыл на отметке в -140, похоже на правду)
ушел на +160 после -140, бред)

крутится как хочет, не работает как на видео)
датчик исправен, данные считываются примером из библиотеки, у кого было такое, как решили?)
 

Вложения

Изменено:

ASM

★★★★✩✩✩
26 Окт 2018
1,485
292
Судя по всему это сервопривод постоянного вращения, нужен другой на 180 градусов
mg90s как и указано в проекте
тогда надо подправить код?)
или поставить ограничители на серву, чтобы не уходила из диапазона?)
 
Изменено: