Продолжение. Начало здесь «Метеостанция на Arduino от А до Я. Часть 1. Проектирование».

От автора

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

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

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

Лицензия Creative Commons
Произведение «Метеостанция на Arduino от А до Я» созданное автором по имени tim4dev.com, публикуется на условиях лицензии Creative Commons «Attribution-NonCommercial-ShareAlike» («Атрибуция — Некоммерческое использование — На тех же условиях») 4.0 Всемирная.

 

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

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

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

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

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

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

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

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

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

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

Внешний вид ESP8266 ESP-01

Внешний вид ESP8266 ESP-01

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

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

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

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

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

  • при передаче 120—170 mA
  • при приеме 50—56 mA
  • в режиме Deep Sleep 10 µA (мкА)
  • в выключенном состоянии 5 µA (мкА).

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

nRF24L01+ с антенной

nRF24L01+ с антенной

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

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

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

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

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

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

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

Распиновка датчика температуры и влажности 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 можно здесь примерно за $2.9. DHT11 стоит дешевле — $1, но он и менее точен.

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

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

Arduino Pro Mini

Arduino Pro Mini

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

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

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

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

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

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

Arduino Mega

Arduino Mega

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

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

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

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

  • на напряжение питания 5В и частоту 15МГц
  • на напряжение питания 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 можно здесь примерно за $3.8.

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

Power Supply Module AC 110v ~ 240V to 12V DC

Power Supply Module AC 110v ~ 240V to 12V DC

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

Поэтому Arduino Pro Mini и радиомодуль nRF24 будут запитываться от связки 4-х Ni-Mh аккумуляторов. Вот вам инструкция как покупать хорошие аккумуляторы на Ebay «Где купить честные аккумуляторы Sanyo NiMH». Да, дорого, но и не хочется такого «Ужасы китайского городка».

Sanyo 2700 Ni-Mh

Sanyo 2700 Ni-Mh

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

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

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

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

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

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

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

Чтобы не пропустить следующую публикацию подписывайтесь на канал.

Продолжение «Метеостанция на Arduino от А до Я. Часть 3. Выбор компонентов. Софт».