Comments 108
Насколько я понимаю, батарейки он поедает именно из-за того, что постоянно молотит пустые такты в delay(). Чтобы сделать устройство экономичным, нужно копать в сторону использования аппаратных таймеров c прерываниями, и усыпления контроллера между периодами. Если интересно развивать тему, конечно же)
+5
Конечно интересно. Но если использовать прерывания, разве я тогда смогу получать данные с датчиков каждую секунду?
+3
Да, нужно как-то настроить аппаратный таймер, чтобы он вызывал прерывание каждую секунду (на ардуино я такого ещё не делал, но возможность вроде есть), а уже в прерывании опрашивать датчики и обновлять дисплей.
0
Хм, а тогда не получится тоже самое что и сейчас (по энергозатратам)?
0
Так смысл в том, чтобы в оставшееся время переводить контроллер в режим пониженного энергопотребления, вместо того чтобы выполнять пустые такты. Теоретически потребление должно упасть на порядки) Если опубликуете об этом пост — будет очень полезно, потому что тема перевода ардуино в режим пониженного потребления в интернете плохо раскрыта.
+1
AVR прекрасно переводится в режим сна с пробуждением от сторожевого таймера раз в секунду. В режиме сна ядро стоит, таймеры стоят, все — стоит, только сторожевой таймер тикает. Потребление при этом измеряется в наноамперах.
К сожалению, ардуиновская библиотека мне не знакома, для AVR я пишу на Си и ассемблере, но примеры кода мигания светодиодом со сном в паузах я собрал видимо все
К сожалению, ардуиновская библиотека мне не знакома, для AVR я пишу на Си и ассемблере, но примеры кода мигания светодиодом со сном в паузах я собрал видимо все
+1
Так вроде ардуиновская библиотека это просто надстройка над либами AVR, поэтому никто не мешает их использовать. Готовый пример для сна МК на 8 секунд:
Единственное отличие, то что старые загрузчики арудино не дружат с wdt_reset_mode, и если сторожевой таймер установлен на 8 секунд, а время чтения сенсоров будет дольше этого значения и не будет вызван wdt_reset, то таймер сработает и МК уйдёт в boot-loop, весело моргая светодиодом. Для фикса можно залить кастомный бутлоадер, который при старте делает сброс таймера, либо не использовать reset_mode.
Скрытый текст
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>
volatile boolean wdt_tripped=1;
void system_sleep()
{
delay(2); // Wait for serial traffic
_SFR_BYTE(ADCSRA) &= ~_BV(ADEN); // Switch ADC off
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode(); // System sleeps here
sleep_disable();
_SFR_BYTE(ADCSRA) |= _BV(ADEN); // Switch ADC on
}
void wdt_interrupt_mode()
{
wdt_reset();
WDTCSR |= _BV(WDIE); // Restore WDT interrupt mode
}
void wdt_reset_mode()
{
wdt_reset();
WDTCSR &= ~_BV(WDIE); // Enable WDT reset mode
}
ISR(WDT_vect)
{
wdt_tripped=1; // set global volatile variable
}
...
void setup()
{
wdt_disable();
wdt_reset_mode();
wdt_enable(WDTO_8S);
}
void loop()
{
wdt_interrupt_mode();
if (wdt_tripped) {
wdt_tripped = 0;
delay(10);
}
system_sleep();
wdt_reset_mode();
//read sensors, display data
}
Единственное отличие, то что старые загрузчики арудино не дружат с wdt_reset_mode, и если сторожевой таймер установлен на 8 секунд, а время чтения сенсоров будет дольше этого значения и не будет вызван wdt_reset, то таймер сработает и МК уйдёт в boot-loop, весело моргая светодиодом. Для фикса можно залить кастомный бутлоадер, который при старте делает сброс таймера, либо не использовать reset_mode.
0
Авторам примера видимо невдомек, что контроллер сам прекрасно знает, от какого источника он сбросился и выставляет соответствующий признак в регистре MCUCSR.
Здесь же для этого городят отдельный флаг, для подъема этого флага — отдельный обработчик прерывания. Отвратительно.
Внимание! Симулятор четвертой АВР-студии с установкой MCUCSR откровенно лажает: www.avrfreaks.net/forum/mcucsr-wdrf
Здесь же для этого городят отдельный флаг, для подъема этого флага — отдельный обработчик прерывания. Отвратительно.
Внимание! Симулятор четвертой АВР-студии с установкой MCUCSR откровенно лажает: www.avrfreaks.net/forum/mcucsr-wdrf
0
Если не переводить вачдог обратно в reset-mode, то никаких проблем не будет. Учитывая, что без специального бутлоадера оно все равно нормально работать не будет, это ничего плохого не сделает.
0
А зачем, кстати, каждую секунду-то? Достаточно раз в полчаса получать — никто еще не умирал от того, что прогноз погоды по ТВ сообщают не каждую секунду и даже не каждый час. Про деревни без ТВ вообще молчу.
Другое дело, что в nano слишком много того, что кушает батарейки и без ежесекундных обновлений. Тот же USB, тот же преобразователь напряжений, тот же светодиод. Собственно, я экспериментировал со стандартными библиотеками сна и пришел к простому выводу: не умеешь на чистом c++ — забудь про энергосбережение на AVR.
Поэтому забыл, питаюсь от сети, получаю данные раз в полчаса (чтобы не занимать зря радиоканал беспроводным датчиком) и, не поверите, счастлив.
Другое дело, что в nano слишком много того, что кушает батарейки и без ежесекундных обновлений. Тот же USB, тот же преобразователь напряжений, тот же светодиод. Собственно, я экспериментировал со стандартными библиотеками сна и пришел к простому выводу: не умеешь на чистом c++ — забудь про энергосбережение на AVR.
Поэтому забыл, питаюсь от сети, получаю данные раз в полчаса (чтобы не занимать зря радиоканал беспроводным датчиком) и, не поверите, счастлив.
+4
Ну например, тут есть часы и они работают с точностью до секунды. Люблю точность. Ну а если точность не нужна, да и минут тебе хватает, то вполне можно обновлять данные раз в минуту. Ну а если вообще убрать отсюда часы то и раз в 15-30 минут можно снимать показания.
0
Это, конечно, прекрасно, но лично я не понимаю, причем тут часы и точность до секунды, если не предусмотрено хранение данных. Нет, правда, я не со зла — просто не понимаю смысла в такой интеграции. Так что убрать часы — не самый плохой ход.
Да и вообще, климатические параметры за секунду обычно не меняются, это не те процессы.
Да и вообще, климатические параметры за секунду обычно не меняются, это не те процессы.
0
ну у меня реализовано так что все крутиться в одном цикле и время и датчики. Если опрашивать датчики например раз в 3 секунды, то секунды на экране будут обновляться раз в три секунды.
0
Меняются во время грозы, например.
0
Часы (отдельную микросхему) отсюда можно выбросить и считать время самим контроллером. Точность даже лучше выйдет.
Только кому интересно — то в регистрах сейчас копаться? Чай не 80е. Фигак — и в продакшен!
Только кому интересно — то в регистрах сейчас копаться? Чай не 80е. Фигак — и в продакшен!
0
а как вы будите получать изначальное время и дату? + выключишь контроллер и все время и дата пропала. А с датчиком реального времени все просто, задал ему время и все, он будет его держать и продолжать считать пока его собственная батарейка не сядет.
0
Пока контроллер спит, его сторожевой таймер тикает, как только натикает — разбудит ядро, ядро прибавит единичку к счетчику секунд и завалится дальше спать.
0
А если пропало питание микроконтроллера? Все пропадет и придется все заново настраивать. А с датчиком реального времени все будет нормально, подал питание на микроконтроллер и на экране реальное время.
Ваш метод хорош, когда не нужна точность и нужно просто будить по времени устройство.
Ваш метод хорош, когда не нужна точность и нужно просто будить по времени устройство.
0
При моем методе сам контроллер питается от батарейки, его питание никуда и никогда не девается. Если уж прям вот хочется точности, можно брать время с GPS или с «пиков» радио «Маяк». И настройка не нужна.
0
А на сколько Вам важно в метеостанции проверять данные каждую секунду? Мне вот раз в минуту вполне хватает. + при частом опросе датчики могут греется и от того показывать завышенную температуру.
0
Кстати еще можно часы опрашивать раз в секунду, а остальные датчики — запоминать их показания и опрашивать пореже, так в итоге сэкономите энергию и датчики не будут пытаться перегреваться.
+1
Еще можно ключом (или даже ножкой контроллера, не думаю, что датчикам нужно больше 20 миллиампер) питание с датчиков снимать на то время, пока их показания не нужны.
+1
Насколько я помню, для того же dht22 это не самая лучшая идея — ему нужно некоторое время на инициализацию.
Да и вообще я смотрел — у меня подобный набор датчиков на фоне Ардуино вообще не заметен в плане потребления энергии во время спячки. Разве что саму ардуино отключать и давать ей питание лишь раз в минуту(или какой кому нужен интервал) на нужное время.
Да и вообще я смотрел — у меня подобный набор датчиков на фоне Ардуино вообще не заметен в плане потребления энергии во время спячки. Разве что саму ардуино отключать и давать ей питание лишь раз в минуту(или какой кому нужен интервал) на нужное время.
0
DHT22 в режиме ожидания потребляет что-то около 10мкА, BMP085 около 6мкА, Arduino Pro Mini (с AtMega328) в режиме сна потребляет 0.23мА. Во время съёма и передачи данных всё это дело потребляет около 20мА, правда замеры производились китайским мультиметром, а не осциллографом, поэтому могут быть сильно не точными. Но в любом случае, если добавить к этому набору солнечную батарейку (на 5В и 20-100мА) с аккумулятором или ионистором, то про замену батареек можно забыть надолго.
0
Похоже у меня какая-то неправильная Arduino, меньше чем 2 милиампера она отказывается потреблять.
0
Насколько я помню, большую часть этих 2мА потребляет светодиод, показывающий наличие питания. Но он легко выламывается\выпаивается. Кстати, с AtMega32u4 (Arduino Pro Micro) без светодиода потребление ещё чуть меньше, 0.16мА в режиме сна.
0
Уточню, что пожиранием занимается все же резистор, установленный вместе со светодиодом последовательно. Если есть потребность сохранить индикацию и не транжирить энергию, нужно соорудить этому светодиоду импульсное питание.
0
У меня его отламывание сэкономило где-то 0,5мА. Ну и да, у меня не оригинальная ардуина, потому вполне возможно, что просто китайцы поставили сильножрущий стабилизатор напряжения или еще что, пока сильно разбираться было лень.
0
UFO just landed and posted this here
Для этих контроллеров есть веб-сервер с CGI code.google.com/p/avr-uip/
0
Не только по этому, ардуино вообще жрет непростительно много для питания от батареек, ну и для этого тогда лучше использовать pro mini, в ней нет USB-2-COM конвертора, который отъедает не мало. Ну и вообще в Интернете есть куча статей о том, как бы чего от ардуины отломать (в прямом смысле), что бы она меньше ела.
+1
UFO just landed and posted this here
В среднем, если конечно все с Китая заказывать, то где то 1100. Это вообще все + провода.
0
UFO just landed and posted this here
UFO just landed and posted this here
Я бы даже сказал, что идеальный. Есть почти все необходимое, в большинстве случаев цены ниже чем у других, отправляет быстро.
И мне кажется, что вместо bmp085 лучше взять bmp180, он немного дешевле и точнее. А вместо DHT22 взять SHT21, он хоть и стоит дороже, но зато показания с него читаются стабильно и привирает не так часто, плюс подключается тоже по i2c.
И мне кажется, что вместо bmp085 лучше взять bmp180, он немного дешевле и точнее. А вместо DHT22 взять SHT21, он хоть и стоит дороже, но зато показания с него читаются стабильно и привирает не так часто, плюс подключается тоже по i2c.
0
Я отсюда в основном заказываю AliExpress.
+1
Вы только учтите что у этой коробочки 32 КБ памяти. Подключаем библиотеку термометра, барометра и интернет шилда и получаем 6-10 КБ под код. Не всё так радужно
0
electrodragon.com неплох весьма, правда, чуть дороже… И отзывы пишите перед новой покупкой…
0
И разве оно этого стоит? Ну конечно если только ради обучения… готовые решения намного дешевле…
Вот у меня такой стоит: www.ebay.com/itm/New-LCD-Digital-Alarm-Clock-Thermometer-temperature-Humidity-Hygrometer-Meter-/161114624108
Преимущества:
1. готовое решение, влажность/температура/часы, работает одновременно и снаружи и внутри помещения.
2. автономность работы — от батарейки уже 2 года работает, ни разу не менял.
3. Цена — 5$ это явно дешевле ардуино+детали+работа.
Вот у меня такой стоит: www.ebay.com/itm/New-LCD-Digital-Alarm-Clock-Thermometer-temperature-Humidity-Hygrometer-Meter-/161114624108
Преимущества:
1. готовое решение, влажность/температура/часы, работает одновременно и снаружи и внутри помещения.
2. автономность работы — от батарейки уже 2 года работает, ни разу не менял.
3. Цена — 5$ это явно дешевле ардуино+детали+работа.
+1
Точность датчиков представленных в данном проекте например выше в разы чем в этом устройстве. Плюс проект можно усовершенствовать и подстроить под свои нужды. Ну и кому что нужно, как говорится.
+1
Откуда такая информация про точность, кстати? Если верить описанию DHT22, то у него точность по влажности до +-5% по влажности и до +-0.2C по температуре.
Не говоря о том, что по этому датчику рекомендуемая частота обновлений не чаще раз в 2 секунды (он иначе не успевает).
Другое, конечно, дело, что оставшиеся ресурсы Arduino можно и под другие цели пустить.
Не говоря о том, что по этому датчику рекомендуемая частота обновлений не чаще раз в 2 секунды (он иначе не успевает).
Другое, конечно, дело, что оставшиеся ресурсы Arduino можно и под другие цели пустить.
0
DHT22 действительно врёт в вопросах влажности. Но это враньё имеет закономерность. Если вычислить эту закономерность, используя множественные измерения при разной влажности и сравнивая с калиброванным аналоговым гигрометром, то программно можно подправлять показания, точность будет примерно плюс-минус 2%.
Температуру показывал точно. Опять же, возможно, что описанное поведение зависит от конкретного экземпляра.
Температуру показывал точно. Опять же, возможно, что описанное поведение зависит от конкретного экземпляра.
0
UFO just landed and posted this here
У меня тоже такой термометр есть. Та еще дрянь. Термометр врет, причем погрешность не постоянна, а зависит от температуры, и ее нельзя скомпенсировать. Показометр влажности вообще показывает произвольные числа, надежно показывает только 100% влажность. Нижний порог влажности у него 25-30%, но когда он показывает 30% на самом деле ближе к 70%. Я пробовал несколько похожих девайсов, все одинаково хреново ведут себя.
+1
Спасибо родной.
Давно хотел сделать то же самое но для под водой, возьму ваш проeкт за основу.
Исходники лучше на git залить — мало ли что у mail.ru случится.
Давно хотел сделать то же самое но для под водой, возьму ваш проeкт за основу.
Исходники лучше на git залить — мало ли что у mail.ru случится.
+2
А над более удачным корпусом не задумывались? На первый взгляд смотрится не очень презентабельно, учитывая то что это не прототип а уже готовое устройство.
+2
Задумывался конечно, например планировал все спрятать за этот кусок фанеры и вырезать отверстие под экран. Но так как это для дома, то оставил так + это выглядит очень интересно и необычно. Друзья как только входят в комнату, сразу обращают внимание на странное устройство с проводами.
+1
со2 еще надо мониторить в домашней метеостанции, для того чтобы знать, когда проветривать
0
А не подскажете, чем не дорогим его можно мониторить?
0
я вот такой купил себе домой.
ru.aliexpress.com/item/Portable-Digital-3-in1-Round-Desktop-Indoor-Air-Quality-Temperature-Humidity-RH-Carbon-Dioxide-CO2-Monitor/655960009.html
наблюдения показали что в комнате 14 метров с пластиковыми окнами и 2 людьми надо проветривать раз в 2 часа.
ru.aliexpress.com/item/Portable-Digital-3-in1-Round-Desktop-Indoor-Air-Quality-Temperature-Humidity-RH-Carbon-Dioxide-CO2-Monitor/655960009.html
наблюдения показали что в комнате 14 метров с пластиковыми окнами и 2 людьми надо проветривать раз в 2 часа.
0
Брал вот такую 4 года назад smartliving.ru/Main/WeatherStation на ебей. Цена вопроса 3000р. До сих пор стоит на крыше дома, раз в год меняются батарейки. Внутренний блок показывает параметры в помещении. Итого имеем температуру, влажность, давление внутри и снаружи, направление ветра, скорость ветра и датчик осадков снаружи. Внутренний блок спокойно подключается к windows и linux.
Зачем делать такую поделку из ардуины — непонятно. Разве что интерес.
Зачем делать такую поделку из ардуины — непонятно. Разве что интерес.
+1
Такую погодную станцию хоть сейчас бы купил за 3000руб, но на ебей она продаётся уже за 8000руб. Жаба с такой ценой пока что не согласна.
0
Давление внутри и снаружи
А это для чего? И оно (давление) отличается?
0
А можно ли вместо выключателя поставить датчик освещенности? А то как-то не комильфо руками включать…
0
Еще можно управлять включением-выключением подсветки экрана в зависимости от времени суток. Логика примитивная: например включать после 19:00 и выключать после 6:00, как вариант.
0
Летом темнеет позже, зимой раньше, придется раз в N недель подстраивать (т.е. перепрошивать ардуинку) — тоже как-то не юзер-френдли.
0
Время заката и рассвета можно рассчитать для любого времени/даты и любых координат на Земле.
0
На avr? Зачем? Опять же надо вводить свои координаты, или вы предлагаете снабдить схему еще и GPS-приемником? Не поверю, что датчик освещенности сложнее.
Не говоря уж о том, что из-за пасмурной погоды (или занавешенных штор) может стемнеть раньше.
Не говоря уж о том, что из-за пасмурной погоды (или занавешенных штор) может стемнеть раньше.
0
Ну если есть RTC, значит и календарь есть, а там можно поизголяться и над более сложной логикой ;)
Но это все шутки. Я у себя на малинку подкинул 20х4 экранчик и подсветку выставил таким образом, что при нормальном освещении ее просто незаметно, а в полумраке — чтобы было нормально видно. При этом не настолько яркую, чтобы ночью фонарем светила.
Но это все шутки. Я у себя на малинку подкинул 20х4 экранчик и подсветку выставил таким образом, что при нормальном освещении ее просто незаметно, а в полумраке — чтобы было нормально видно. При этом не настолько яркую, чтобы ночью фонарем светила.
0
Вариант, да.
0
У этого экрана, вроде подсветка работает только так- она либо включена либо нет. Я скорее всего добавлю светорезистор и все, как только порог темноты будет достигнут дисплей включится.
0
Да, но ее яркость регулируется сопротивлением. Я поставил подстроечное, настроил один раз и забыл
0
Там обычные светодиоды, сколько тока на них дать, так и будут светиться, как следствие, поставить потенциометр и можно менять яркость. еще можно при помощи ШИМа это делать.
+1
И еще датчик движения :) Зачем светить, если все равно рядом никого нет?
0
Я думаю это уже перебор для проекта метеостанция)
0
Да, тоже неплохо. Только бы не вышло, как бывает с этими дверями — машешь им, машешь, а они реагируют примерно столь же активно, как зеркало на вампира.
0
> Вот так метеостанция будет выглядеть в сборе
Только не надо говорить, что это будет оконечным видом «прибора». Мне страшно!
Только не надо говорить, что это будет оконечным видом «прибора». Мне страшно!
0
Пожелание:
Много написали о целесообразности…
Есть важная фича, в проекте не развитая. Это предсказание погоды по барометру. Грубо: падение давления — к осадкам, повышение — к солнцу. Ну и отображать изменение давления в периоде и символ погоды.
Много написали о целесообразности…
Есть важная фича, в проекте не развитая. Это предсказание погоды по барометру. Грубо: падение давления — к осадкам, повышение — к солнцу. Ну и отображать изменение давления в периоде и символ погоды.
+1
Я тоже на это надеялся, поставил датчик атмосферного давления, и в итоге как-то совсем не получается у меня глядя на давление и его историю предсказать осадки… ну где-то в 30% случаев разве что.
+1
Желательно этот эффект исследовать. Я анализировал станции с усредненной истории давления за период до 12 часов, 5-8 измерений. Даже возможность отображения такой шкалы принесло бы большую пользу.
Пожелание:
Из дополнительных фич:
Датчик осадков. Подскажет брать зонт или нет. (Может потребоваться подогрев).
Датчик силы (не направления!) ветра.
Пожелание:
Из дополнительных фич:
Датчик осадков. Подскажет брать зонт или нет. (Может потребоваться подогрев).
Датчик силы (не направления!) ветра.
0
Объясните глупому: практическое применение метеостанций этих?
Вот лично (субъективное мнение) для меня даже не интересно знать температуру внутри квартиры, не говоря уже о давлении и влажности. Уличную узнать — в трее висит виджет, там же и прогноз.
Может я чего не понимаю, но для чего вам эти данные?
Вот лично (субъективное мнение) для меня даже не интересно знать температуру внутри квартиры, не говоря уже о давлении и влажности. Уличную узнать — в трее висит виджет, там же и прогноз.
Может я чего не понимаю, но для чего вам эти данные?
0
«Потому что могу» (с)
Ну а если серьезно, у меня вот на балконе мониторится температура, что бы цветы не замерзли. Правда пока так и не реализовал управление теплым полом (потому что нет его, теплого пола =]), но скоро и это будет.
Понимать, это в квартире холодно или просто ты простыл и тебе везде холодно, управлять отоплением и проверять, не дурит-ли тебя ЖКХ отключая ночью батареи :)
Ну а если серьезно, у меня вот на балконе мониторится температура, что бы цветы не замерзли. Правда пока так и не реализовал управление теплым полом (потому что нет его, теплого пола =]), но скоро и это будет.
Понимать, это в квартире холодно или просто ты простыл и тебе везде холодно, управлять отоплением и проверять, не дурит-ли тебя ЖКХ отключая ночью батареи :)
+2
Я, например, живу в таком месте, что виджет в трее часто серьезно врет. Плюс статистика — по графику за неделю/месяц видно, куда вообще температура движется. Про давление вообще молчу — очень удобно по тому же графику понимать, что ждет впереди и от чего болит голова.
+1
UFO just landed and posted this here
Позволю не согласиться: для меня температура окружающей среды в 36 градусов при любой влажности АДу подобно (просто не люблю жару). И температура воздуха, влажность на мой взгляд проще и удобнее определяется самим организмом.
Видимо я так и не проникнусь полезностью идеи постройки/покупки/использованию метеостанции :)
Видимо я так и не проникнусь полезностью идеи постройки/покупки/использованию метеостанции :)
+1
36 градусов мало кто хорошо переносит.
Насчет 36 при 70% и 38 при 55% — надо посчитать какой-нибудь там Humidex.
Насчет 36 при 70% и 38 при 55% — надо посчитать какой-нибудь там Humidex.
+1
для того что бы люди(особенно дети) не болели — у воздуха должны быть определённые параметры, поэтому их важно мониторить.
+1
Sign up to leave a comment.
Комнатная метеостанция на Arduino