Метеостанция из компьютера. Настольная метеостанция на esp8266 с поддержкой wifi своими руками

Представляю еще один проект на основе микроконтроллера AVR Atmega8. На этот раз будем конструировать комнатную метеостанцию. В устройстве применяется два датчика - DHT11 и BMP180. Первый мы будем использовать в качестве измерителя влажности воздуха, а второй в качестве измерителя атмосферного давления, а также, раз уж он имеет более точный термодатчик, то и в качестве термометра для измерения температуры в комнате. В итоге с помощью этой схемы можно отслеживать основные параметры погоды, так сказать. Если добавить датчики скорости и направления воздушных потоков, то данную схему можно будет переквалифицировать в наружнюю метеостанцию. Тем не менее сейчас рассмотрим только комнатный вариант.

Схема устройства:

Как можно было судить выше, сердцем схемы является микроконтроллер Atmega8. Данный контроллер можно использовать в любом корпусе - DIP-28 или TQFP-32, не имеет значения, только собственные предпочтения или особенности изготавливаемой печатной платы. Резистор R3, подтягивающий плюс питания к выводу PC6, предотвращает самопроизвольный перезапуск микроконтроллера в случае каких-либо случайных наводок на схему. Далее в качестве индикатора измеряемых параметров используется жидко кристаллический экран на две строки по шестнадцать символов в каждой - SC1602. Данный ЖК экранчик изготовлен на базе контроллера HD44780, поэтому данную модель можно заменить на другую на этом же контроллере или может быть совместимую с ним. Подсветка в данном варианте схемы на ЖК дисплее организована через выводы "А" и "К" (то есть анод и катод подсветки - дисплей имеет дополнительные выводы для подключения подсветки). Однако, просто подключить питание к этим выводам будет не правильно, нужно подключать 5 вольт через резистор ограничивающий ток, чтобы не сжечь подсветку. По схеме это резистор R1, его номинал составляет 22 Ом, чем больше номинал, тем менее ярко будет подсвечиваться дисплей. Номинал менее 22 Ом не рекомендую использовать, так как может появиться риск вывода из строя подсветки экрана при длительном использовании.

Питается вся схема от простого модуля питания на силовом трансформаторе. Переменное напряжение выпрямляется четырьмя диодами VD1 - VD4 марки 1N4007, пульсации сглаживаются конденсаторами C1 и C2. Номинал конденсатора C2 можно увеличить до 1000 - 4700 мкФ. Четыре выпрямительных диода можно заменить одним диодным мостом. Трансформатор применен марки BV EI 382 1189 - преобразует 220 вольт переменного тока в 9 вольт переменного тока. Мощность трансформатора составляет 4,5 Вт, этого вполне достаточно и еще с запасом. Такой трансформатор можно заменить любым другим силовым трансформатором, подходящим для Вас. Либо данный питающий модуль схемы заменить на импульсный источник напряжения, можно собрать схему обратноходового преобразователя либо применить иже готовый блок питания от телефона, например - все это дело вкусов и потребностей. Выпрямленное напряжение с трансформатора стабилизируется на микросхеме линейного стабилизатора L7805 , ее можно заменить на отечественный аналог пяти вольтового линейного стабилизатора КР142ЕН5А, либо применить другу микросхему стабилизатора напряжения в соответствии с подключением ее в схеме (например LM317 или импульсные стабилизаторы LM2576, LM2596, MC34063 и так далее). Далее 5 вольт стабилизируются другой микросхемой - AMS1117 в исполнении, дающей на выходе 3,3 вольта. Это напряжение используется для питания датчика атмосферного давления BMP180 в соответствии с документацией. Стабилизатор напряжения AMS1117 можно также заменить на исполнение ADJ (AMS1117ADJ) - то есть регулируемый вариант, задать необходимое напряжение при таком выборе необходимо будет при помощи двух резисторов, подключаемых к микросхеме в соответствии с даташитом на нее. Самым экономичным вариантом замены этой микросхемы стабилизатора будет замена ее на стабилитрон на нужное напряжение (параметрический стабилизатор на стабилитроне). Номиналы конденсаторов в обвязках микросхем стабилизаторов напряжения можно варьировать в широких пределах в области взятого порядка.

Как было указано выше, в качестве датчиков были использованы DHT11 и BMP180:

DHT11 используется в схеме только как датчик влажности воздуха, данные датчик передает контроллеру через второй вывод, подтянутый резистором R8, к плюсу питания. Номинал этого резистора можно варьировать до 10 кОм. На фото использованы два резистора по 2,7 кОм, соединенных последовательно. Вывод 3 датчика не используется вовсе, выводы 1 и 4 используются для подключения питания. Датчик DHT11 выбран в соответствии с оптимальным соотношением цена / функционал - для комнатных условий самый лучший вариант, для применения на улице лучше подойдет DHT21 в корпусе более предназначенном для применения на улице.

Датчик BMP180 используется как термометр и как датчик атмосферного давления. Он выбран для измерения температуры, потому что в отличие от DHT11, он измеряет температуру окружающей среды с точностью до 0,1 градуса. BMP180 требует питания в 3,3 вольта, а микроконтроллер питается от 5 вольт. Именно для питания этого датчика и используется дополнительный стабилизатор VR2 на AMS1117. Также для надежной передачи данных от датчика к контроллеру нужно согласовать уровни I2C протокола передачи, который используется. Для этой цели применена микросхема согласования уровней PCA9517 компании NXP. Резисторы R4 - R7 необходимы для работы I2C интерфейсов микросхем. С их помощью на выводах микросхем образуются сигналы логического нуля и единицы.

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

На картинке выше представлена диаграмма работы I2C интерфейса датчика атмосферного давления BMP180.

Номиналы можно варьировать от 2,2 кОм до 10 кОм. При сборке схемы был использован китайский модуль на базе датчика BMP180. Такой модуль содержит все необходимое для работы с датчиком - стабилизатор напряжения на 3,3 вольта, конденсаторы необходимые в обвязке датчика и стабилизатора, а также pull-up резисторы (подтягивающие к плюсу питания), необходимые для работы по I2C.

Также в схеме предусмотрена кнопка сброса микроконтроллера, подключенная к выводу PC6 - reset, замыкающая этот вывод на землю при необходимости сброса. Все резисторы постоянного сопротивления по схеме используются мощностью 0,25 Вт или можно использовать в варианте SMD типоразмера 1206. Также конденсаторы емкостью 100 нФ можно использовать в SMD типоразмера 0805 или 1206.

Устройство, собранное по традиции на макетной печатной плате для микроконтроллера Atmega8 на фото ниже:

Для программирования микроконтроллера Atmega8 для данного устройства необходимо знать конфигурацию фьюз битов:

Микроконтроллер работает от внутреннего генератора на 8 МГц. Для программирования использовался программатор перепрошитый в AVR doper (STK500).

К статье прилагается прошивка для микроконтроллера на комнатную метеостанцию, документация на датчик атмосферного давления BMP180, исходный код прошивки микроконтроллера, а также небольшое видео, демонстрирующее работоспособность схемы (изменение показаний на дисплее вызывает мокрая салфетка, накрывающая датчик влажности и прикосновение пальца к датчику давления и температуры).

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит

ATmega8

1 В блокнот
IC2 ИС I2C интерфейса

PCA9517

1 В блокнот
IC3 Датчик атмосферного давления BMP180 1 В блокнот
IC4 Датчик температуры

DHT11

1 В блокнот
VR1 Линейный регулятор

L7805AB

1 В блокнот
VR2 Линейный регулятор

AMS1117-3.3

1 В блокнот
VD1-VD4 Выпрямительный диод

1N4007

4 В блокнот
C1, C3-C5, C7, C8 Конденсатор 100 нФ 6 В блокнот
C2, C6, C9 Электролитический конденсатор 220 мкФ 3 В блокнот
R1 Резистор

22 Ом

1 В блокнот
R3-R7 Резистор

10 кОм

5 В блокнот
R2 Подстроечный резистор 10 кОм 1 3296W-1-103LF

Захотелось иметь свою метеостанцию, которая передает показания с датчиков на карту народного мониторинга (ищется в гугле за 5 секунд). Оказалось это не так сложно, как кажется. Рассмотрим, что было сделано.

Для данного действия я взял себе Arduino Uno и Ethernet Shield w5100 для нее. Все это заказывалось из Китая на Aliexpress.

Так же там заказал себе датчики: DHT22, DHT11, DS18B20, BMP280 (в планах еще датчики газа, дыма…)

Покурив форумы, гугл, яндекс, я нашел неплохой вариант скетча — https://student-proger.ru/2014/11/meteostanciya-2-1/

Там же в комментариях человек выкладывал дописанный скетч с датчиками освещенности, газа. Я взял их за основу.

В тех скетчах не было поддержки 280-го датчика давления, пообщались с автором, он заменил 180 на 280. Все заработало прекрасно (спасибо ему за это огромное)

Ниже приведу пример итогового скетча, что получился у меня.

В данный момент у меня подключены датчики:
DHT22 — 1шт.
DHT11 — 1шт.
BMP280 — 1шт.
DS18B20 — 2шт.

ВНИМАНИЕ! Перед тем как заливать скетч, не забудьте изменить MAC-адрес устройства, чтобы не пересекаться с другими (например взять Mac-адрес вашего мобильного телефона и изменить в нем последние буквы/цифры, что не «будоражило» вашу локальную сеть!

Примерная схема подключения (картинка взята на просторах интернета от данного скетча):

По техническим причинам у меня не получается выложить скетч прямо сюда. Поместил его в архив. Ссылка на него строчкой выше.

Как видно, показания есть, идут исправно, для примера выложу пару скриншотов со своих датчиков:

Просматривая разные проекты метеостанций, заметил одну тенденцию. Это или датчик температуры и влажности, чаще всего всеми любимый китайский DHT-11 или DHT-22, к которым добавляют либо датчик освещенности (Метеостанция на Arduino с визуализацией данных) либо давления (Ethernet метеостанция), или покупное-навороченное за много сотен долларов (Автоматическая метеостанция на даче)

Так как лично для меня - метеостанция без измерения направления и скорости ветра не метеостанция, а потратить порядка 700USD на по большому счету игрушку я не готов, то решено было сделать похожее на «дорогое-навороченное» но занедорого.

Электроника


Теперь о измерении направления ветра. Было много вариантов, от оптических энкодеров - заводских (дорого) или самодельных в виде нескольких пар светодиодов и фотодиодов, и диска с кодом Грея (сложно и много компонентов), до магнита и 4-8 герконов (слишком просто и неточно). В итоге выбор пал на AS5040 – магнитный энкодер. Так как особая точность не нужна, то аналоговый выход энкодера подключен к ADC микроконтроллера.

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

На этом с электроникой все, никаких нюансов, ничего интересного, все по даташитам. Переходим к механике.

Механика

К сожалению, напечатать корпус на 3D принтере возможности нет, а у заводских корпусов с водонепроницаемостью беда практически у всех. К тому же подшипники и все остальное - тела вращения, значит круглый корпус будет самым логичным выбором. Пришлось обратить взор на другие сферы - на водоснабжение. В качестве корпуса взята соединительная муфта «на 32» для канализации, и два патрубка для размещения в них подшипниковых узлов. Из латуни были выточены две заглушки, в которых запрессованы по два подшипника 626.

Магниты… Магнит для датчика скорости подойдет практически любой, а вот с датчиком направления было сложнее. Ему нужен круглый магнит с намагниченностью от края до края

В то время как у основной массы продающихся - разные полюса на разных сторонах.

Но, оказалось, что нужные магниты находятся на шпинделях двигателей CD/DVD приводов.

В собранном виде подшипниковые узлы выглядят так

После изготовления и сборки плат - датчики скорости и направления ветра принимают окончательный вид

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

В качестве датчика дождя так же используем половинку теннисного шарика, в котором между двумя слоями геотекстиля расположены два контакта

Собираем, подключаем и прикручиваем повыше

Интерфейс

Как я уже рассказывал (Очередной умный дом, в трех частях. Часть третья, пользовательско-интерфейсная) есть два вида интерфейса. Первый вид, в котором на экране отображаются практически все данные с устройства, выглядит так

Температура текущая, минимум, максимум, направление изменения. Давление, аналогично. Влажность. Ветер - направление и роза ветров. Цифры нужны скорее для отладки, показывают сколько времени в каком секторе был флюгер. Скорость ветра, время, показания датчика освещенности (без калибровки, то что измерил ADC) и датчик дождя. Все данные и обработка - ведутся в микроконтроллере метеостанции.

Второй тип интерфейса - на основе виджетов. Тут данных меньше, температура, влажность, давление, скорость и направление ветра

И куда уж без Android Wear - на часах

В связи с тем, что раз в минуту происходит опрос всех контроллеров с записью в БД- то любые метеоданные доступны для анализа или отображения в виде графиков

Вам понадобится

  • - Плата Ардуино или аналог;
  • - датчик температуры и влажности DHT11;
  • - датчик давления BMP085;
  • - датчик углекислого газа MQ135;
  • - LCD дисплей 1602;
  • - потенциометр 10 кОм;
  • - корпус для погодной станции;
  • - кусок фольгированного стеклотекстолита;
  • - винты для крепления компонентов;
  • - компьютер;
  • - соединительные провода;
  • - разъём для подачи питания;
  • - паяльник.

Инструкция

Для начала нужно подобрать подходящий корпус. Туда должны вместиться все комплектующие будущей комнатной метеостанции. Такие корпуса продаются во многих магазинах радиоэлектроники. Или воспользуйтесь любым другим корпусом, который сможете найти.
Прикиньте, как все компоненты будут размещаться внутри. Прорежьте окно для закрепления LCD дисплея, если его нет. Если будете размещать внутри датчик углекислого газа, который достаточно сильно греется, то разместите его в противоположной от других датчиков стороне или сделайте его выносным. Предусмотрите отверстие для разъёма питания.

Несколько слов об используемых компонентах.
LCD-дисплей 1602 использует 6 пинов Arduino + 4 на питание (подсветка и знакосинтезатор).
Датчик температуры и влажности DHT11 подключается к любому цифровому пину. Для чтения значений будем использовать библиотеку DHT11.rar, которую можно скачать, например, тут: https://yadi.sk/d/1LiFmQWITGPAY
Датчик давления BMP085 подключается по интерфейсу I2C к двум пинам Arduino: SDA - к аналоговому пину A4 и SCL - к аналоговому пину A5. Обратите внимание, что для питания на датчик подаётся напряжение +3,3 В.
Датчик углекислого газа MQ135 подключается к одному аналоговому пину.
В принципе, для оценки метеообстановки достаточно иметь данные о температуре, влажности и атмосферном давлении, а датчик углекислого газа необязателен.
Но используя все 3 датчика, у нас будут задействованы 7 цифровых и 3 аналоговых пина Ардуино. Ну и питание, естественно.

Схема метеостанции показана на рисунке. Тут всё ясно.

Напишем скетч для Ардуино. Текст программы, ввиду значительного размера, приводится в виде ссылки в приложении к статье в разделе "Источники". Весь код снабжён подробными и понятными комментариями.
Загрузим скетч в память контроллера платы Ардуино.

Сделаем печатную плату для размещения компонентов внутри корпуса - это самое удобное решение для компоновки и подключения сенсоров. Для изготовления печатной платы в домашних условиях я использую "лазерно-утюжную" технологию (мы её подробно описывали в прошлых статьях) и травление с помощью лимонной кислоты. Предусмотрим на плате места для перемычек ("джамперов"), чтобы иметь возможность отключать датчики. Это будет полезно, если будет нужно перепрограммировать микроконтроллер, когда возникнет желание модифицировать программу.
С помощью пайки установим датчики давления и газов.
Для установки платы Arduino Nano удобно использовать специальные адаптеры или гнёзда с шагом 2,54. Но за неимением этих деталей и из-за экономии пространства внутри корпуса, я установлю Ардуино также пайкой.
Термодатчик будет располагаться на некотором отдалении от платы и будет теплоизолирован от внутренностей метеостанции с помощью специальной изоляционной прокладки.
Предусмотрим места для подводки внешнего питания к нашей самодельной плате. Я буду использовать обычное зарядное устройство на 5 В от старого сломанного роутера. Плюс 5 вольт от зарядного устройства будут подаваться на пин Vin платы Arduino.
ЖК-экран будет крепиться винтами прямо к корпусу, к передней части. Подключаться будет проводами с разъёмами быстрого подключения типа "Dupont".



«Так, давайте сразу договоримся: вы не собираетесь снимать кино для Голливуда. Даже в Стране чудес утверждается не более пяти процентов от всех сценариев, и только один процент идет затем в производство… Таким образом, вместо всего этого вы собираетесь создать свой собственный Голливуд.»
Эд Гаскель «Снимаем цифровое кино, или Голливуд на дому»

Предисловие

Что, ещё одна погодная станция на Arduino?! Да, ещё одна и, что-то мне подсказывает, не последняя в интернете вещей.


Точно также, как каждый программист обязан написать программу «Hello World!», так и каждый ардуинщик обязан иметь за плечами опыт построения простой или не очень метеостанции.
Уже созданных проектов метеостанций в интернете описано немалое количество, читатель может выбрать любой из них для реализации. Не скрою, я внимательно изучил около десятка подобных проектов и ещё кучу смежных. Поэтому нельзя сказать, что я создал всё с нуля, конечно же я «стоял на плечах гигантов».


Сразу скажу, что в мои планы не входило использование сторонних сервисов для хранения и отображения данных. Хотелось лично пощупать и понять как всё это работает изнутри от начала до конца, от А до Я.


Так что тем, кто хочет быстро склепать нечто из ничего, эта серия статей скорее всего не подойдёт. Проще пойти и купить готовый конструктор с инструкцией по сборке. Профессионалам микроэлектроники тут совсем делать нечего, может быть поржать и вспомнить себя в начале пути.
А вот тем, кто действительно хочет разобраться, я думаю понравится. Возможно материал пригодится в качестве учебного пособия.



Этот проект был реализован в далеком уже 2016 году, но надеюсь еще актуален.

Набор технологий

Мы изучим и будем работать с простыми и сложными вещами:

  • датчиками температуры и влажности типа DHT22, DHT11
  • датчиком барометрического давления типа BMP180
  • WiFi модулем ESP8266
  • радиомодулем типа nRF24 2,4 Ггц
  • семейством Arduino Pro Mini, Arduino Mega
  • солнечной батареей и аккумуляторами
  • языком программирования C/C++
  • языком программирования PHP
  • системой управления базами данных MySQL
  • языком программирования Java и фреймворком Android (создание приложения для Adnroid для отображения погодных данных на смартфоне).

Некоторые темы из перечисленных и яйца выеденного не стоят, а некоторые можно изучать годами. Поэтому сложные вещи мы затронем только в части, непосредственно касающейся данного проекта, так чтобы вы поняли как это всё работает.


Но начнем мы с самого начала правильно. А именно с описания и проектирования будущего устройства «на бумаге» , чтобы в конце концов каждый кирпичик лёг на своё место.

Прототипирование

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


Но это в промышленности, где работники заняты полный рабочий день.


Каждый, кто клепает по вечерам свои поделки pet-project для «internet of things», должен отдавать себе отчёт в том, что он создаёт именно прототип, полуфабрикат. До уровня нормального промышленного изделия ему очень далеко. Поэтому не следует поручать нашим любительским поделкам какие-либо ответственные участки жизнеобеспечения и надеяться, что они нас не подведут.


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


Итак, вместо всей этой тягомотины, мы создадим свою собственную игрушку, но не простую. С элементами технического творчества, зачатками программирования и познания (в процессе создания) многих других смежных вещей.


Конечно, электронщикам тяжко придется на этапе программирования, а программистам придется попотеть над схемотехникой, но автор постарается изложить всё максимально доступно и ясно описать, почему были использованы те или иные решения.

Требования

Обычно этот этап пропускают. Решая сделать что-нибудь эдакое прямо сейчас, а потом выясняются мелкие детали, которые ставят весь проект в тупик или вовсе делают его неподъемным. Все наши хотелки необходимо записывать, я использую для этого гугл диск, он доступен с ПК и с мобильного устройства.


Итак, наша метеостанция должна:

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

Датчики используются самые простые и дешевые. Например, забегая наперед скажу, что температуру DHT22 измеряет достаточно точно, а вот с влажностью немного неточен. Но, опять таки повторюсь, это не имеет значения, поскольку перед нами - прототип, и разброс в 5% влажности ни на что важное в нашей жизни не повлияет.


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

Железо. Выбор компонентов

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


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


Замкнутый круг? Но замкнутые круги для того и существуют, чтобы их разрывать.


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


Итак. Архитектура погодной станции базируется на Arduino. Потому что Arduino имеет небольшой порог вхождения и я уже имел с этим дело. Дальше выбирать уже проще.


Сразу стало ясно, что в составе метеостанции будет удаленый, заоконный датчик и центральный модуль.


Центральный, основной блок будет расположен внутри помещения. Это важно определить на начальном этапе, от этого «пляшут» такие важные характеристики как температурный режим работы и питание.


Удаленный датчик (или датчики) будет без «мозгов», его задача - периодически проводить измерения и передавать данные на центральный домашний блок. Центральный блок принимает данные от всех датчиков, показывает их на экране и отправляет их же в интернет в базу данных. Ну, а там уже много проще, как только данные оказываются в базе с ними можно делать всё что захочешь, даже графики рисовать.


Для сношений с внешним миром интернет был однозначно выбран WiFi модуль ESP8266 практически без альтернативы (прим. возможно сейчас такие альтернативы появились). К Arduino выпускаются Ethernet платы расширения, но совсем не хотелось привязываться к кабелю.



Интересный вопрос состоял в том, чем обеспечивать связь между заоконным датчиком (или датчиками, про требование расширяемости системы помним?) и центром. Радиомаячки на 433 Мгц однозначно не подходят (они не подходят ни для чего вообще).


Воспользоваться опять ESP8266 ?


Минусы такого решения:

    необходим устойчивый WiFi за пределами дома

    дальность связи не будет большой

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

    большее энергопотребление.

    Энергопотребление ESP8266:

    при передаче 120-170 mA

    при приеме 50-56 mA

    в режиме Deep Sleep 10 µA (мкА)

    в выключенном состоянии 5 µA (мкА).

В конце концов для связи удаленных датчиков с основным домашним блоком был выбран чип nRF24L01+ с 2,4 Ггц передатчиком и приемником в одном флаконе, с дополнительной внешней антенной, чтоб уж наверняка «пробить» стены.



Энергопотребление nRF24L01+ 2,4 GHz:

  • при приеме 11 mA
  • при передаче на скорости 2Mbps - 13 mA
  • в режиме standby-I - 26 μA (мкА)
  • в выключенном состоянии 900 nA (нА).

Что у ESP8266, что у nRF24L01+ диапазон рабочих температур подходящий: от -40℃ до +80℃.


Купить nRF24L01+ можно примерно за $1, или сразу с внешней антенной за $3. Купить ESP8266-01 можно примерно за $4. Читайте внимательно описание товара! Иначе купите одну антенну.


Ядро системы вырисовалось. Переходим к самим датчикам.


На улице, как известно, температура может достигать отрицательных значений, поэтому датчик DHT11 не подходит, а вот DHT22 в самый раз.



Характеристики DHT22 / AM2302:

  • питание от 3,3 В до 5 В, рекомендуется 5 В
  • потребление 2.5mA максимум, в момент измерения и передачи данных
  • диапазон измерения влажности 0-100% с погрешностью 2-5%
  • диапазон измерения температуры от -40 до +125°C с погрешностью ±0.5°C
  • запрос на измерение не чаще 0,5 Гц - одного раза в 2 секунды.

Внутри дома, я надеюсь, отрицательных температур не будет, поэтому можно использовать DHT11, тем более, что он у меня уже был.


Характеристики DHT11:

  • питание от 3,3 В до 5 В
  • потребление 2,5 mA максимум, в момент измерения и передачи данных
  • диапазон измерения влажности 20-80% с погрешностью 5%
  • диапазон измерения температуры от 0 до +50°C с погрешностью ±2°C
  • запрос на измерение не чаще 1 Гц - одного раза в секунду.

Купить DHT22 можно примерно за $3. DHT11 стоит дешевле - $1, но он и менее точен.


Теперь возвращаемся опять к Arduino. Какую плату выбрать?


Я тестировал отдельные части системы на Arduino UNO. Т.е. подключал к уно ESP модуль и изучал его, отключал, затем подключал nRF24 и т.д. Для финальной реализации заоконного датчика выбрал Arduino Pro Mini как наиболее близкую к Uno из миниатюрных.



По энергопотреблению Arduino Pro Mini также выглядит неплохо:

  • нет преобразователя USB-TTL, который сам по себе «кушает» много,
  • светодиод подключен через 10к резистор.

Для продвинутого сбережения энергии планировалось:

  • удалить светодиод - индикатор питания на Arduino Pro Mini (я пожалел, не стал портить плату)
  • либо использовать «голую» сборку на микропроцессоре Atmel ATmega328 (не использовал)
  • использовать библиотеку Low Power Library или JeeLib .

Из библиотек выбрал Low Power Library , она проста и содержит только то, что нужно.


Для центрального блока, поскольку к нему планировалось подключить многочисленную периферию, была выбрана плата Arduino Mega. К тому же она полностью совместима с UNO и имеет больше памяти. Забегая наперед скажу, что этот выбор полностью оправдался.


Купить Arduino Mega можно примерно за $8.

Питание и энергопотребление

Теперь про питание и энергопотребление.


Arduino Pro Mini бывают двух видов:

  • на напряжение питания 5В и частоту 16МГц
  • на напряжение питания 3,3В и частоту 8МГц.

Поскольку радио-модуль nRF24L01+ требует для питания 3,3 В, а быстродействие здесь не важно, то покупайте Arduino Pro Mini на 8MHz и 3,3В.


При этом диапазон питающего напряжения Arduino Pro Mini составляет:

  • 3,35-12 В для модели 3,3 В
  • 5-12 В для модели 5 В.

У меня уже была Arduino Pro Mini на 5В, только поэтому я её и использовал. Купить Arduino Pro Mini можно примерно за $4.


Питание центрального блока будет от сети 220 В через небольшой блок питания, дающий на выходе 12В, 450mA, 5W. Типа такого за $5. Там еще есть отдельный вывод на 5В.



А ежели этого не хватит, то можно и помощнее поставить. Другими словами экономить электропитание для центрального блока нет особого смысла. А вот для удаленного беспроводного датчика энергосбережение является важнейшей частью. Но и функциональность не хотелось бы терять.


Поэтому Arduino Pro Mini и радиомодуль nRF24 будут запитываться от связки 4-х Ni-Mh аккумуляторов.


И помните, максимальная емкость современного аккумулятора примерно 2500-2700mAh, всё что больше это либо маркетинговые уловки (Ansmann 2850) либо обман (UltraFire 3500).


Li-Ion аккумуляторы я не использую по нескольким причинам:

  • очень дорогие
  • при снижении температуры окружающего воздуха ниже 0°C происходит снижение мощности литий-ионного аккумулятора до 40-50%
  • те которые дешёвые производятся без защиты и небезопасны (при КЗ или разряде могут взрываться и гореть, см. кучу роликов на ютюбе)
  • стареют, даже если не используются (впрочем это можно сказать обо всех химических элементах), через 2 года Li-Ion батарея теряет около 20% ёмкости.

Для прототипа вполне можно обойтись качественными Ni-MH AA или AAA аккумуляторами. Тем более, что нам не нужны большие токи. Единственный минус Ni-MH аккумуляторов - это их долгая зарядка.

Общая схема метеостанции

Подведем итоги. Вот общая схема как всё работает.



Продолжение следует.

Поделиться