Arduino. Метеорологическая станция на ESP8266

Сегодня публикую статью нашего коллеги ЛИСа. Встречайте — метеостанция на Arduino

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

Влажность DTH11

meteo2

Давление BPM180

meteo3

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

meteo5 meteo4

На часах реального времени обнаружено место для установки температурного датчика. Я не стал ставить DS18B20+, а поставил аналоговый LM35. Единственное необходимо отпаять резистор.

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

Показания также можно посмотреть через WIFI. Использован ESP8266. На моем модуле GPIO 4 почему то подписан как GPIO5

meteo6

 Прототип:

meteo1

meteo

Описание кода:

Для arduino алгоритм очень простой. С помощью delay организованна задержка на одну минуту, после нее выполняется чтение времени и показаний датчиков после чего это все записывается на SD карту.

Для ESP8266 читаем с serial порта значения, поступающие от arduino и записываем в массивы. Если появляется, wifi подключение к серверу, генерируем HTML страницу и отдаем клиенту.

Два файла с кодом для ARDUINO и ESP8266.

Итоги:

По факту получилась простейшая метеорологическая станция.

Особых проблем при монтаже не возникло, все собранно на макетной плате.

Весь код взят из примеров и ничем особенным не отличается.

Единственное чтобы было удобно в дальнейшем обрабатывать полученные показания между значениями вставлен &.

Из минусов замечено, что мой модуль часов реального времени уходит вперед. Пока не могу понять, почему это происходит и как с этим бороться.

Вот так выглядит сейчас HTML страница:

meteo7

 

И вот так записи на SD карте.

22.6.2015 18:53:36&MSK&LM35&26.37&BMP180&Pressure(mm Hg)&755.84&Temp&27.90&DTH11&Humidity&35&Temp&29&

22.6.2015 18:54:40&MSK&LM35&25.88&BMP180&Pressure(mm Hg)&755.82&Temp&27.90&DTH11&Humidity&35&Temp&29&

22.6.2015 18:55:44&MSK&LM35&26.37&BMP180&Pressure(mm Hg)&755.82&Temp&27.90&DTH11&Humidity&35&Temp&29&

22.6.2015 18:56:48&MSK&LM35&26.37&BMP180&Pressure(mm Hg)&755.81&Temp&27.90&DTH11&Humidity&35&Temp&29&

22.6.2015 18:57:52&MSK&LM35&26.37&BMP180&Pressure(mm Hg)&755.81&Temp&27.90&DTH11&Humidity&35&Temp&29&

 

Что хотелось бы сделать.

  1. Записывать значения не с помощью delay, а по изменению времени в часах реального времени.
  2. Использовать энергонезависимую память установленную на часах реального времени. Не понятно для каких целей ее можно использовать.
  3. В случае пропадания внешнего питания, автоматический перевод контроллера в режим экономии энергии c более большим периодом записи показаний датчиков. Плюс отключение wifi.
  4. Для модуля ESP8266, придумать, для каких целей использовать свободные GPIO выводы.
  5. На страницу генерируемую ESP8266 добавить графики для наглядности.
  6. Добавить запасной канал, контроля состояния/управления используя, например NRF24L01+ так как выяснено, что ESP8266 имеет свойство подвисать и приходиться перезагружать модуль.
  7. Перейти на питание от солнечных батарей. Сейчас питание от сети 220V.
  8. Понять необходимо ли как либо управлять солнечными батареями или стационарной установки будет достаточно.

meteo-1_15-07-2015_bb

 

Схему можно скачать ЗДЕСЬ

 

 

 

 

Комментируем…

Посмотрите так же...
19 комментариев
  1. Toosik:

    Интересная разработка, только без схемы тяжело здесь что-то понять. Схему в студию!!! 🙂

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

  2. KrisRa:

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

    • Изначально все строилось вокруг именно arduino, позже был добавлен ESP8266. Плюс это разделение задач. Я тоже задумывался о выкидывании arduino, но возникает ряд проблем:
      1.Первая работа с SD картой. На текущий момент я не нашел готового примера для ESP8266. Тут же возникает вопрос со свободными GPIO на ESP8266.

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

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

      Вообще данное устройство задумывалось как именно демонстрационное с максимальными «наворотами» и возможностью демонстрировать различные режимы и т.д.

      • Владимир:

        ESP8266 если пропадает сеть — создаёт свою сеть по умолчанию в стандартной прошивке
        и переодически ищет старую сеть

  3. admin:

    Друзья, схема и макет добавлены!

  4. Vlad:

    «Есть еще датчик влажности почвы и датчик дождя, но так как пока все собрано на макетной плате установить эти датчики не представляется возможным.»
    Так размеры датчиков и плат в студию, и я напечатаю тебе корпус, куда можно будет все упаковать. И дополнительный корпуса, для выносных модулей.
    «3.В случае пропадания внешнего питания, автоматический перевод контроллера в режим экономии энергии c более большим периодом записи показаний датчиков. Плюс отключение wifi.» А зачем больший период записи?! Все равно они будут потреблять. А вот отключить, пока «сидишь» на батарее WiFi, это разумно. И делаться легко, в цеп питания от «сети» вставляешь реле, что будет тебе замыкать «+» питание на WiFi при пропадании питания от БП.

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

  5. admin:

    И шоб СМСку отправляла — «Нет основного питания, работаю на резервном» :)))))

    • Есть планы прикрутить GSM модем, но на текущий момент все Serial порты заняты, а в наличии модем с Serial портом. Есть идея соединить arduino + датчики+ ESP8266 по I2C, но когда сделаю пока неизвестно.

  6. Elektron:

    Я тоже не как не вкурю — зачем городить огород? Есть же компакт вариант — ну без записи на карту конечно, но на вашей ESP можно было бы и остановиться http://homes-smart.ru/index.php/oborudovanie/bez-provodov-wi-fi/62-besprovodnoj-datchik-na-baze-esp8266-dlya-servisa-narodmon-ru

  7. 1.Простейший дидос и все, легло все устройство.
    2.Именно из-за записи на SD карту, сейчас накоплена информация примерно за полгода.
    3.Как идея по развитию, недавно откопал проект «Lightning radar» прикрутить его к ESP не получиться.

  8. admin:

    Коллега, если ссылаетесь на проект — ссылайтесь ссылкой. Нам же тоже интересно о чем речь 🙂

  9. Aziat:

    А причем здесь дидос? У вас публичный IP или девайс стоит за роутером?

    • В первых такая схема дает возможность сделать именно публичный девайс. Я размышляю над вопросом как сделать доступными не только текущие, а весь собранный объем измерений.
      Во вторых дидос можно организовать собственными силами, как не правильной конфигурацией, так и ошибкой в коде. Обычные пользователи не всегда могут представить, что домашняя сеть может приближаться к сети небольшого офиса, а иногда быть построенной на железе бизнес класса, которое обычно не покупается в такие офисы.
      В третьих на этом же чипе весьма не плохо можно собрать взломщик Wi-Fi сетей, просто еще нет подробного мануала в журнале хакер.

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

  11. Pete:

    Что касается ухода часов — народ в инете предлагает менять кварц.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *