сайт для палких паяльників

Метеостанция собрана на базе модуля ESP8266. Работает через WiFi, имеет web-интерфейс, дисплей и возможность отправлять данные в Интернет. Реализована возможность публиковать погодные графики и информационные блоки на собственном сайте (Пример: http://avislab.com/meteo/) или использовать службу thingsspeak.com. Все это можно сделать своими руками всего за один вечер из общедоступных модулей.

Возможности метеостанции

  • Датчик BME280 позволяет измерять температуру, атмосферное давление и относительную влажность воздуха
  • Накапливает данные за последние несколько дней, показывает данные в виде графиков на web-интерфейсе
  • Дисплей для просмотра текущей температуры, давления и влажности
  • Метеостанция подключается к домашнему WiFi. Просмотр данных на метеостанции возможен с любого персонального компьютера, или мобильного устройства, подключенного к домашней сети WiFi
  • Метеостанция может публиковать данные в сети Интернет (направлять данные на собственный сайт или thingspeak.com)
  • Web интерфейс для настройки метеостанции и просмотра погодных данных. Для настройки метеостанции, ради безопасности, используется собственная WiFi точка доступа

Ссылка для загрузки файлов необходимых для повторения метеостанции: https://github.com/avislab/NodeMCUExamples/tree/master/WeatherStation

Пример публикации погодных данных на сайте: http://avislab.com/meteo/

Пример использования thingspeak.com: https://thingspeak.com/channels/260722

Необходимые компоненты

  • модуль ESP-12 (плата NodeMCU v3) (возможно использовать ESP-01 с Flash памятью объемом 4 Мб)
  • датчик BME280
  • дисплей SSD1306 с интерфейсом I2C
  • система питания

Схема метеостанции

Схема для ESP-12. Питание от специальной платы:

Схема для ESP-12. Питание через USB шнур от платы модуля ESP12:

Схема для модернизированного ESP-01 (4 Мб Flash):

Примечание: Для модуля ESP-01 нужно заменить файл meteo_main.lua файлом из каталога:
https://github.com/avislab/NodeMCUExamples/tree/master/WeatherStation/esp-01-files

* В этой схеме используется модернизированный модуль ESP-01 с памятью 4Мб. Модуль с памятью 512Кб не подходит. Как модернизировать модуль ESP-01 я рассказывал здесь: http://www.avislab.com/blog/esp-01-upgrade/

Программное обеспечение

Программное обеспечение разработано для Framework NodeMCU на языке программирования LUA. Код доступен в открытом виде. Скачать можно здесь:
https://github.com/avislab/NodeMCUExamples/tree/master/WeatherStation

Сначала нужно загрузить в ESP модуль Framework NodeMCU с нужными модулями. Скачать его можно здесь:
https://github.com/avislab/NodeMCUExamples/tree/master/WeatherStation/firmware). Закачать можно с помощью ESP8266Flasher.exe или esptool

Команда для загрузки с помощью esptool:

 sudo python esptool.py --port COM10 write_flash 0x0 nodemcu-meteo.bin 0x3fc000 esp_init_data_default.bin

Затем скачать и закачать в файловую систему NodeMCU все файлы из этой директории:
https://github.com/avislab/NodeMCUExamples/tree/master/WeatherStation/esp-12-files
загрузить можно с помощью ESPlorer или nodemcu-uploader. Команда для загрузки с помощью nodemcu-uploader:

sudo python nodemcu-uploader.py --port COM10 upload *

После перезагрузки метеостанция готова к работе.

Примечание: Подробнее о программном обеспечении для работы с модулями ESP читайте здесь: http://www.avislab.com/blog/esp8266-nodemcu-start_ru/

Настройка метеостанции

После включения метеостанции выполняется пауза 10 секунд, после чего на дисплее должна появиться информация с текущими погодными данными. Модуль настраивает Wi-Fi точку с именем Meteostation и паролем 1234567890 (в настройках можно изменить). Именно через подключение к этой точке и выполняется настройка метеостанции. Это делается в целях безопасности. Подключитесь к этой Wi-Fi точки, после чего с помощью браузера зайдите по ссылке: http://192.168.4.1/ Вы должны увидеть следующую форму настроек:

Примечание: * Внутренняя Wi-Fi точка для настройки выключается через 5 минут после включения питания метеостанции. Считается, что 5 минут достаточно для выполнения всех настроек.

Описание настроек

Wi-Fi Options

SSID — домашняя сеть Wi-Fi к которой метеостанция должна подключаться для коммуникации с внешним миром.

Password – пароль домашней сети Wi-Fi.

Own Wi-Fi AP

SSID — собственный Wi-Fi который метеостанция создает самостоятельно для обеспечения доступа к ее настроек.

Password – пароль к собственной Wi-Fi.

Примечание: * Wi-Fi для настройки включается после подачи питания и выключается через 5 минут. Считается, что 5 минут достаточно для того, чтобы сделать все необходимые настройки.

Cron

Mask – маска планировщика задач. Задает период сохранения данных и передачи данных в сеть Интернет. По умолчанию это выполняется каждые 15 минут. Как настраивается маска Cron можно прочитать здесь: https://en.wikipedia.org/wiki/Cron#Overview

Data storage

Filename – имя файла в котором хранится информация о погоде (при необходимости файл можно загрузить с метеостанции по ссылке вида: http://IP/filename, например, http://192.168.0.100/log.txt).

Max File size – максимальный размер файла при достижении которого запускается процедура уменьшения его размера (удаляются старые данные).

Store last lines when file reduce – Количество записей (строк) в файле, которую процедура уменьшения размера файла оставит. Остальные, более старые записи будут удалены.

Send to Web

URL – ссылка для отправки данных на свой сайт. (См. Отправка данных на сайт)

ID – идентификатор устройства отправляет данные (устанавливается произвольно). Если в будущем предполагается отправлять данные с нескольких устройств, с идентификатором можно будет узнать от какого именно устройства были получены данные.

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

Queue filename – файл очереди. Используется для хранения данных в очереди в случае возникновения временных проблем при передаче данных на сайт. Данные из очереди будут отправлены после восстановления связи. Это предотвращает потерю данных.

Enable / Disable – включает или выключает передачу данных на сайт.

Send to thingsspeak.com

thingsspeak.com – служба которая позволяет (бесплатно, если данных немного) хранить и анализировать данные полученные с любых устройств или сервисов. Есть возможность построения графиков и многое другое. С момента, как я его начал использовать этот сервис немного расширил свой функционал. Описывать подробно не буду. Заходите и смотрите сами. Для того, чтобы Вы смогли пользоваться услугой thingsspeak.com нужно пройти процедуру регистрации.

Server name – сервер thingshspeak.com на который отправляются данные.

API Key – Write API Key который выдает thingsspeak.com. Без него служба не принимает данные.

Enable / Disable – включает или выключает передачу данных на сайт thingshspeak.com.

Как работает метеостанция

Старт

Сразу после старта выполняется скрипт init.lua Скрипт выполняет паузу продолжительностью 10 секунд (зачем это сделано читайте здесь) после чего запускает скрипт meteo_main.lua. Этот скрипт выполняет стартовые настройки. А именно инициализацию настроек, WiFi, шины I2C, датчика BME280, дисплея SSD1306, настраивает и запускает таймер опроса датчика, настраивает планировщик для сохранения и передачи данных в Интернет, запускает web-интерфейс, запускает синхронизацию времени через Интернет.

Опросы датчика, работа дисплея

По таймеру раз в 10 секунд запускается скрипт для опроса датчика BME280_read.lua и скрипт для отображения данных на дисплее display_show.lua

Сохранение данных, формирование Json файлов для графиков, передача данных на сайт

Согласно настроек планировщика (по умолчанию один раз в 15 минут) запускается скрипт schedule.lua. Скрипт опрашивает датчик и сохраняет данные в файл – хранилище (по умолчанию – log.txt), отправляет данные в Интернет (если включено в настройках) и запускает формирование JSON файлов, содержащих данные для графиков.

Примечание: сохранение данных и отправки в Интернет происходит только после синхронизации времени по протоколу NTP.

Отправка данных на сайт. Настройки для отправки данных на сайт

Если Вы хотите, чтобы информация о погоде публиковалась на Вашем сайте, нужно настроить отправку данных на сайт. Прежде всего нужно закачать на сайт скрипт, который будет принимать данные. В директории https://github.com/avislab/NodeMCUExamples/tree/master/WeatherStation/website находится файл meteo.php, который реализует необходимый функционал. Прежде чем заливать скрипт на сайт откройте его и измените переменную $key. Ключ обязательно должен быть длиной 16 символов и состоять из букв и цифр. Такой же ключ нужно будет указать в настройках метеостанции. При необходимости измените другие настройки. Теперь можно закачать скрипт на сайт. После чего в настройках метеостанции в разделе Send to Web укажите путь к скрипту, ключ и включите передачу данных на сайт (Enable). Сохраните настройки метеостанции и перезагрузите ее. Данные будут отправляться на сайт с периодичностью согласно настроек Cron. По умолчанию скрипт meteo.php сохраняет данные на сайте в файл meteo.txt.

Отображение данных на сайте

Пример отображения погодных данных находятся в файлах insex.html, weather.js, date.format.js. Погодные данные могут отображаться как в виде текстового информера, так и в виде графиков. Рабочую версию можно посмотреть здесь: http://avislab.com/meteo/

Контейнер для датчика

На период испытаний датчик был выставлен в окно в полиэтиленовом пакетике :). Затем для него был сделан контейнер из подручных материалов.


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

Ссылка для загрузки необходимых файлов:

https://github.com/avislab/NodeMCUExamples/tree/master/WeatherStation

Эта простая метеостанция сделана как пример к статьям посвященных ESP8266 и NodeMCU. Все программы доступны в открытом виде. Вы можете скачать и модифицировать их по своему усмотрению. В этом примере продемонстрированы возможности ESP8266 и использованы различные модули и функции Framework NodeMCU. А именно работа с датчиком и дисплеем по шине I2C, WEB интерфейс построен с использованием TCP сервера, работа с настройками основанна на использовании файловой системы NodeMCU, работа с WiFi в режиме клиента и в режиме точки доступа, работа с таймерами, планировщиком задач Cron, протоколом синхронизации времени через Интернет NTP, реализована передача данных с помощью http клиента, и через TCP подключение с использованием модуля NET. Продемонстрированы начальные приемы построения Web приложений и методы коммуникации Ваших самодельных устройств с внешним миром через Интернет.

Желаю успехов.

UPD: 30.11.2017. Добавлена возможность отключения дисплея. Исправлены ошибки.

Смотри также:

6 комментариев: Метеостанция на ESP8266

  • Александр говорить:

    Wi-FI Meteostation появляется, пытаюсь подключится, Wi-FI Meteostation исчезает. Прошивал программой nodemcu flasher master. Заливал файлы через ESPlorer. Периодически выскакивает ошибка при подключении .Can’t autodetect firmware, because proper answer not received (may be unknown firmware).PANIC: unprotected error in call to Lua API (BME280_read.lua:5: attempt to perform arithmetic on a nil value).

  • Vavan говорить:

    Сделал все по инструкции, все заработало. Спасибо за труд.
    Одно но – на дисплее неправильно отображаются пиктограммы температуры, давления, и влажности. Вместо них – кракозябры. Как их изменить или убрать?

    • andre говорить:

      Проверьте залиты ли файлы t.MONO, h.MONO, p.MONO
      Попробуйте их перезалить. Отключить вывод картинок можно убрав строки
      disp:drawXBM( 8, 0, 12, 22, xbm_data_t )
      disp:drawXBM( 7, 24, 15, 22, xbm_data_h )
      disp:drawXBM( 0, 48, 29, 22, xbm_data_p )
      в файле display_show.lua

      Если хотите сделать свои картинки, в этой статье читайте как работать с картинами: http://www.avislab.com/blog/esp8266-nodemcu-u8g_ru/

  • Дмитрий говорить:

    Здравствуйте! Большое спасибо за ваш труд! Собрал, все получилось, но… без дисплея. Я купил вместе с Nodemcu v3 к ней и плату расширения с питанием от 6 до 24 вольт(написано на плате сзади) и боюсь что нибудь испортить. Насколько я понял, просто необходимо вставить Nodemcu-ESP8266 в плату расширения и далее подводить питание 6 вольт только через круглый разъем на плате? Никаких перемычек не надо? С уважением, Дмитрий.
    P.S. Ссылка на фото платы расширения https://cdn1.savepice.ru/uploads/2018/1/12/08c33f2d6457b8ec073d48441d35ecec-full.jpg

    • Дмитрий говорить:

      Здравствуйте. Уже разобрался. Но встает один вопрос. У меня дисплей 128х32, а не 64. Изображение из за этого расплющено. Как можно исправить данную проблему? С уважением, Дмитрий.

  • andre говорить:

    Comments are disabled due to spam.
    Коментарі відключені через спам.
    Комментарии отключены из за спама.

Translate
Архіви

© 2011-2018 Андрій Корягін, Кременчук - Київ, Україна