Метеостанция ДАНУНАХ
- Войдите на сайт для отправки комментариев
ДАНУНАХ (Домашнее Автономное Настольное Устройство Накопления Атмосферных Характеристик)
Добрый день всем кто в этом форуме. Ну, вот и мои ручки добрались до метеостанции. Пока данный проект находится на стадии обмозгования, подбора компонентов и заказа необходимых деталей. Скетчей пока нет, времени на написание не хватает. Хочу пока общую концепцию накидать и использовать данный форум в качестве дневника, ну и хотелось бы услышать мнение и советы.
Итак, устройство метеостанция с несколькими беспроводными датчиками для загородного дома.
Назначение – измерение температуры, влажности в помещении, температуры, влажности, давления, освещения, наличие дождя «за бортом». Предполагается, что уличный датчик будет один, пару датчиков на разных этажах и сама база будет снабжена датчиками
Питаться все будет от аккумуляторов, базовый модуль пока не решил от каких, беспроводные предположительно от 18650 банок, одной или двух, все зависит на сколько мне удастся снизить энергопотребление.
От внешних датчиков требуется собирать все данные скажем раз в 10 мин и передавать на БАЗУ. по предварительным расчетам энергопотребления не так важен период ожидания – 5 мин, 10 мин, и 30 мин не существенно влияют на продолжительность жизни от батареи, так как отношение продолжительности «бодрствования» и «сна» очень велики. «Бодрствуют» датчики пару секунд, спят 10 мин = 600 сек. поэтому большое внимание стоит уделить потреблению в режиме сна. Ну это будет потом, на финальной стадии так сказать. А пока нужно сделать, чтобы они просто хоть как то работали.
Для краткости будем называть уличный датчик ДАИПОХ (Датчик Автономный Измеряющий Погодные Основные Характеристики), внутренние КУДАНАХ (Комнатный Универсальный Датчик Анализирующий Наиважнейшие Атмосферные Характеристики), и базовый модуль просто РУКОЖОП (Ручное Устройство Консолидирующее Основные Жизненно-Ориентированные Показатели)
Компоновка:
· ДАИПОХ (наружный): мозг-pro mini 3.3v, температура, абсолютная влажность, давление - ВМЕ280, освещенность - ТЕМТ6000, трансмиттерWL102-341, датчик дождя платка с дорожками. Еще есть идея прикрутить солнечную панельку маленькую, чтобы заряжался днем, но пока так;
· КУДАНАХ (в помещении) все то же самое, но без освещения, дождя и вместо BME280 возьму АM2320 (или DHT22);
· РУКОЖОП Тут идей много: прежде всего приемник WL101-341, дисплей 2004 с I2С, кнопочки для навигации меню настроек, датчик наклона (или вибрации, или ПИР), чтобы понимать когда Базу взяли в руки.sound buzzer чтоб пищала, часы DS1307, светочувствительный резистор для регулировки яркости экрана, датчик ТВ (DHT22 или AM2320), RGBдиод тоже пока не знаю зачем, что ни будь прикрутим.
Для модулей специально собираюсь использовать разные датчики, чтобы посмотреть какой будет «врать» больше.
НЕОБХОДИМЫЕ ЗАДАЧИ
Для датчиков ДАИПОХ, КУДАНАХ:
Управлять питанием датчиков;
управлять питанием передатчика;
считывать показания;
считывать заряд батареи;
скомпоновать данные в пакет;
передавать пакет в эфир (тут я еще подумаю как там сделать чтобы все без потерь);
уметь засыпать на 10 мин.
Для РУКОЖОПа:
Управлять питанием датчика, приемника, экрана;
Принимать пакеты от датчиков;
Показывать актуальность принятых показаний(поясню ниже);
Включать передатчик, когда нужно (поясню ниже);
Выводить данные на экран;
Выключать подсветку, затем возможно экран (посмотрю, сколькоLCD без подсветки жрет) когда РУКОЖОП не активен (датчик наклона или ПИР не меняет показаний, кнопки не нажимаются);
Автоматически выставлять яркость экрана по светорезистору;
Иметь возможность выставления времени, погрешности датчиков, настройки режимов яркости (солнечно, пасмурно, облачно), настройки с датчика дождя (граница чувствительности);
радостно пищать при действиях (не очень сильно и только днем);
Теперь поподробнее о непонятном. Под актуальностью показаний подразумевается, сколько циклов назад (у нас цикл это 10 мин) обновлялись показания, то есть удалось их получить. Идею видел где-то на форуме, на пример если по каким то причинам приемник не получил пакета, то эту самую актуальность уменьшаем. Визуально это можно легко реализовать как сигнал от сотового :4 палочки, все «ОК», 3 палочки – пропущен 1 пакета из 4 последних, 2 палочки пропущены 2 пакета и так далее, также можно где то в дополнительное меню вести лог пропущенных, чтобы понимать какой датчик «чудит».
По поводу включения передатчика «когда нужно» здесь такая мысль. У нас же передатчики передают инфу раз в 10 мин, соответственно держать приемник включенным все остальное время чтобы он кушал батарейку и ловил шум волн совсем не нужно. Так вот, мы запоминаем время приема последнего удачного пакета, и ждем, скажем, 9 мин 55 сек, на это время, отключая приемник, ну и так для каждого датчика поотдельности. Единственное что мне в этом пока не понятно это если передачи прием пакета не состоялся, стоит ли ждать постоянно сигнала или отключаться через определенное время, думаю, этот вопрос решится при отладке.
Вот пока все что есть, за минусом разных детальных сумбурных мыслей. Надеюсь услышать Ваше мнение в комментариях, также буду рад каким нибудь ссылочкам на похожее или скетчикам, особенно волнует пока беспроводная передача, и энергосбережение, поскольку раньше не делал этого.
Ждите дальнейших постов в этой теме когда появятся наработки
если уж взяли 2004 дисплей то берите вот эту библиотеку. она быстрее стандарнтой и более универсальна. подробности тут.
пожалуста откажитесь от АM2320 и DHT22. Датчики полный хлам. возьмите лучше раз, два.
чото подобное у меня имеется, правда на другой элементарной базе, поэтому выскажу общие нюансы которые нужно учесть при построение такой системы.
- нужно организовать двусторонний обмен данными между ДАИПОХ КУДАНАХ и РУКОЖОП --- база получает данные с датчиков и передает время для коррекции на ДАИПОХ КУДАНАХ, это нужно обязательно иначе уже через месяц изза неточности хода часов pro mini без часовой микросхемы смещение времени может достигнуть 30-40 минут, но если их синхронизировать каждые 10-30 минут такого небудет.
- передачу данных осуществлять не всем сразу а поочередно, кпримеру опрашивать один из ДАИПОХ КУДАНАХ в минуту. у меня сомнения что РУКОЖОП сможет одновременно принять много сигналов. смысл получается следующий - поскольку время синхронизировано опрос всех датчиков производится в один момент времени, потом поочередно данные передаются на базу с меткой времени, передаваемый пакет в таком случае будет выглядеть так ==датавремякогдабылиполученыданные==номердатчика==показаниядатчика==
- для РУКОЖОП использовать более продвинутую платформу, кпримеру малинку с базой SQL(MySQL), потому как получается давольнотаки большой обьем данных и использование данной платформы позволит их все хранить за все время работы, а также выводить в виде графиков (за сутки, за месяц и т.д.). и еще неплохо былобы сделать синхронизацию времени РУКОЖОП через интернет на NTP сервер.
- питание... для РУКОЖОП сетевое с аварийным от аккумулятора, ДАИПОХ солнечные батареи+ аккумулятор, КУДАНАХ сетевое (по возможности) с аварийным от аккумулятора
использовать передатчик WL102-341 и приемник на 433МГц - это ад и израиль. Эти модули полная шляпа. Их целесообразно применять только если вы в будущем собираетесь подключать готовый датчик от метеостанции типа Oregon или Acurite. Во всех остальных случаях проще использовать nRF24L01. с ним не нужны тацы с бубном вокруг коррекции времени - можно опрашивать датчики по очереди. если почитать datasheet то внезапно выяснится, что на nRF24L01 можно организовать до 6 логических каналов на каждом из 125 физических каналов. В билиотеках логические каналы называют - pipe. итого, теоритический можно подключить 750 устройств. RF24L01 умеет неплохо засыпать. если все правильно сделать, то одной RC2032 будет хватать на 3-4месяца, а АА аккумулятров с низким саморазрядом на год.
на данный момент самая популярная и менее глючная библиотека тут.
для организации опроса датчиков, например, температуры. ведомый периодически измеряет температуру и отправляет ее к себе в буфер - в эфир ничего не говорит, не засоряет и вообще спит. ведущий обращается когда надо к ведомому с командой, а в ответ принимает температуру. при такой работе количество прослушиваемых ограниченно теоритическим максимумом в 750 устройств.
Не хотите добавить туда обобщённую ESP, чтобы метеостанция показывала не только то, что сама намеряла, но и прогноз погоды с гисметео?
Блин, писал большой развернутый комментарий с цитатами, на работе остался, теперь прижется с телефона писать, постораюсь ответить всем.
To enjoyneering
Про датчики понятно, так и сделаю, тем более по цене они даже дешевле того же dth22.
Про библеотеку для 2004 тоже попробую
Про передатчик приемник выбор пал из соображения просто освоить их. На nRF24L01 проще конечно, но я считаю (пока) что двусторонний обмен мне не нужен. Будем мудрить с алгоритмом передачи благо в соседней теме http://arduino.ru/forum/proekty/chtenie-i-emulyatsiya-datchikov-oregon-s... есть хорошие наработки по этому вопросу. В общем я не ищу легких путей, главное не заблудиться. 750 устройств опять же не к чему, хочу съэкономить по энергосбережению. Если уж ничего получаться не будет будем пробовать другие датчики. Спасибо за наводки
To Lelik Lelikovich
По поводу двусторонней передачи, как и писал, думаю пока без нее обойтись, все таки это узконаправленное устройство (пока). Ваши опасения по поводу убегания времени при моем алгоритме немного не уместны так как у меня РУКОЖОП отсчитывает время следующей передачи с момента приема последней, а ДАИПОХ и КУДАНАХ соответственно с момента передачи последней. Момент передачи и будет точкой синхронизации как бы. Те же самые Origonы работают и ничего.
Делать РУКОЖОП на малинке тоже (пока) не хочется, с базами и графиками там... очень объемно пока для меня, но как дальняя задача на абгрейд пойдет.
Если не жалко поделитесь проектом, хоть у нас и разные подходы может что нибудь полезное подчеркну для себя.
По питанию да, РУКОЖОПА скорее всего сетевого делать нужно будет, но датчики на батарейках это как бы одно из заданий лично для себя, думаю плату зарядки туда воткнуть от микро usb для удобства.
To ЕвгенийП
Про ESP идея хорошая, может тогда уж вместо мозгов ее поставить? Есть NodeMCU V3 Lua WI-FI, пока до нее руки не дошли. Как она будет жить с приемником моим интересно. Прогноз опять же идея хорошая, как идея дальнейшего апдейта пойдет. А пока нужно сделать то что есть.
Всем спасибо за комментарии.
Было бы хорошо внедрить ПОШЕЛНАХ(Программа Отображения Широкого, Естественно-Линейного, Набора Автономных Характеристик). По средством ESP организовать возможность доступа к вебинтерфейсу контроллера для мониторинга основных жизнено важных характеристик в режиме реального времени.
Del
Было бы хорошо внедрить ПОШЕЛНАХ
Тоже как идея на дальнюю перспективу. Я пока не могу начать то что запланировал...
Сейчас есть несколько идей, связанных с измерением скорости и направления ветра на улице. Если со скоростью немного понятно, есть генератор воздушный http://s.aliexpress.com/MvYr2i2y (им кстати и заряжать аккум можно) измерять напряжение от него и как то превращать это в ветер, ну вроде как ветренно очень или слегка. А вот с направлением есть 2 варианта-либо сделать флюгер и закрепить его на энкодере, либо поставить магнитный компас. С энкодером есть 2 проблемы-во первых боюсь что показания со временем могут "уплыть", во вторых он будет жрать питание, так как проц не сможет спать спокойно, что идет в разрез концепции энергосбережения. Я пока больше склоняюсь к магнитному компасу, причем сделать так что весь датчик смог бы вращаться по направлению ветра, и вычислять его положение. Если есть какие то другие решения был бы рад услышать.
Идея с измерением направления и скорости ветра мне нравится. Насчёт передатчиков WL102-341 согласен, что дерьмо. Дальности передачи на них я никак не добился.