Каталог
|
Комплекс домашней автоматизации (Часть 2)2017-05-16 Всі статті →Юрий Иванов Следующим этапом разработки комплекса домашней автоматизации стал проект уличной метеостанции. К этому устройству было несколько требований:
После того как определились с задачей был выбран комплект электроники.
После того как все комплектующие были получены, начинаем сборку. Arduino Nano (вместо нее можно взять Arduino Mini она дешевле и USB нужен только на этапе отладки) и радиомодуль соединяются по стандартной схеме, единственное отличие в том, что питание 3.3В подключается к аккумулятору. При плохом сигнале имеет смысл отрезать скальпелем стандартную антенну и припаять самодельный диполь. Для экономии заряда выпаял резисторы светодиодов. Выход 3.3В использовать нельзя так как будет дополнительное падение напряжения на встроенном в CH340 стабилизаторе. Еще можно выпаять стабилизатор на 5В, он все равно не используется, но даже при случайном замыкании контактов Vin и 5В замыкает линию питания на землю, разряжая на себя аккумулятор. На этапе тестирования оказалось, что датчик HTU21 не умеет вычислять значения в фоновом режиме, минимальное время вычисления составляет 6мс при наименьшей разрешающей способности и 17мс при максимальной. Большое время ожидания приводит к большему энергопотреблению, возможно, есть смысл обратить внимание на датчик BME280, он измеряет температуру, давление и влажность, к тому же все на одном чипе, а значит выше надежность.
В этом проекте все микросхемы, кроме atmega328p, работают на пределе возможностей. Для датчиков и радиомодуля рабочее напряжение заявлено 3.3В, но абсолютный максимум 4.25В, так что на свой страх и риск я подключил солнечную батарею через диод на питание всей схемы.
После тестирования было решено убрать практически все разъемы и запаять наглухо перемычки. На модуль NRF24L01 были припаяны конденсатор и антенна биполь. Плата контроллера покрыта прозрачным лаком из баллончика, а платы датчиков аккуратно покрыты лаком с помощью кисточки, чтоб лак не попал внутрь самих датчиков.
Аккумулятор подключается параллельно питанию схемы, так же подключаются соединенные последовательно ионисторы. Я добился энергопотребления схемы 3 мАч, так что 150 мАч должно хватить как минимум на 2 дня очень хмурой погоды. Батарея снабжена защитой от переразряда и при падении напряжения ниже 2.9В она просто отключится от цепи. Ионисторы нужны на случай выхода из строя аккумулятора, при последовательном соединении емкость падает в два раза, но даже 2.5Ф хватит для 30-40 минут работы. В солнечный день емкости достаточно для того чтобы опрашивать датчики пока солнце не скроется за горизонтом. Практика показала, что ионистор не подходит для сглаживания бросков тока при передаче пакета радиомодулем, так что если связь неустойчива, то необходимо припаять на контакты питания NRF24L01 конденсатор. Схема может работать на пониженном до 1.9В напряжении, для этого необходимо поменять фьюзы ATmega BODLEVEL на 1.8В и заодно прошить бутлоадер optiboot. Optiboot нужен для того чтоб нормально работал watchdog, с стандартным загрузчиком контроллер падал в так называемый boot-loop. Датчики влажности и давления подключены к пинам А4 и А5, хватает встроенных подтяжек.
К пину А7 подключен резистивный делитель, для контроля напряжения питания, к А0 подключен резистивный делитель для датчика дождя (в принципе можно и компаратор использовать, но я старался не использовать лишние микросхемы для уменьшения энергопотребления), а к А1 подключен фоторезистор. Программа работает по весьма простому алгоритму. В функции setup() инициализируется вся периферия, после чего микроконтроллер и радиомодуль переходят в режим POWER_DOWN. По сработке watchdog (каждые 128мс) контроллер просыпается сам и переводит радиомодуль в режим прослушивания. Если в течении 4мс получена посылка, то формируем отчет и отсылаем обратно. На время прослушивания эфира, если входящих посылок нет, включается последовательное считывание датчиков. Таким образов любой из датчиков обновляется один раз в секунду. Для получения данных от метеостанции хаб отправляет до 10 запросов (15 повторов каждые 4мс) охват по времени получается 600мс, но метеостанция при хорошей связи отвечает на первую или вторую посылку.
На этом моменте с электроникой все закончили, монтируем в корпус и защищаем от непогоды с помощью тарелок. Модуль расположен не на открытом пространстве, а в относительном теньке, тем не менее, солнечной батареи хватает мощности перезарядить аккумулятор. Напряжение держится в промежутке от 3.6 до 4.1 вольта.
В архиве программа (см. ниже) для RaspberryPi сделанная на основе примера библиотеки RF24. После выполнения возвращает массив данных разделенных пробелом. Пример: 32 1494685076 0 3.952 21.16 1002.993 85 20.17 48.83 0 901 66 013s7 1 6 где: 32 - количество байт посылки (всегда 32) 1494685076 - время отправки посылки 0 - ошибки при опросе или инициализации 3.952 - напряжение АКБ 21.16 - температура датчика давления 1002.993 - атмосферное давление 85 - высота над уровнем моря 20.17 - температура датчика влажности 48.83 - влажность 0 - датчик дождя 901 - датчик освещенности 66 - номер посылки 013s7 - время составления ответа 13мс последний выполненный шаг программы №7 1 - номер попытки запроса данных сервером 6 - время ожидания сервера в миллисекундах Графики показаний за три дня:
Ссылки:
Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Вячеслав
28.04.2018 08:09:49
Непонятно как графики снимали, где отображались и что они означают, а само уличное исполнение мне понравилось. Я сам к такому тяготею :-)
|