Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования!

Привет Пикабу!

Кому лень читать "мнОого букОв" - в самом низу поста есть его  видеоверсия ;-)


В одном из предыдущих постов я рассмотрел простой, удобный и бесплатный способ удаленного мониторинга температуры дома или на улице на базе модуля ESP8266, датчика температуры DS18B20 конструктора прошивок WiFi-IoT и сервиса "Народный мониторинг". В следующем посте рассказал как подключить дополнительный датчик температуры, давления и влажности - BME280 и показал, как выводить данные с датчиков на дисплей LSD1602....

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

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

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

Для этого проекта нам понадобятся следующие комплектующие (я покупал их на AliExpress):

1) Плата NodeMCU V3 (ESP8266) - удобна тем, что подключается с помощью micro USB кабеля и ей не нужны никакие UART конвертеры - в ней он сразу встроен на основе китайского чипа CH340;

2) Дисплей TM1637;

3) Датчик температуры DS18B20 (герметичный для размещения на улице);

4) Датчик температуры, давления и влажности BME280 (будет показывать параметры в помещении). Если вам не интересно атмосферное давление, но интересна влажность в помещении, то лучше с этим справится датчик температуры и влажности SHT21, ну а если влажность тоже не интересна, а нужна только температура, то можно обойтись двумя (можно подключить до 10) датчиками DS18B20.

5) Провода Dupont для соединения датчика с платой;

6) Кабель USB - micro USB для прошивки модуля;

7) Любой подходящий по размерам корпус на ваш вкус и цвет, можно в принципе и обойтись и без него сделав "навесной монтаж";

UPD по вопросу из комментариев: Себестоимость комплектующих в районе 8-10$ (ESP8266~3.86$, TM1637~0.89$, DS18B20~1.25-1.75$, BME280~2.80$ или SHT31~3.89$)

Первый этап.

Регистрируемся на сайте wifi-iot.com, где мы создадим прошивку в несколько кликов. После регистрации входим на сайт в свой профиль, следуем по пути "ESP" - "ESP8266".

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

Выбираем новый профиль и вводим для него имя.

- «Сенсоры» ставим галочку «1-wire DS18B20»;

- «Сервисы» ставим галочку «narodmon.ru»;

- «Системные» ставим галочку «Время и NTP»;

- «Дисплеи» ставим галочку «TM1637»;

Этот набор имеет бесплатный функционал.

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

Если Вы планируете добавить датчики температуры и другие, хотите "откалибровать" (скорректировать показания) датчиков под свой эталон, обновить прошивку через интернет и использовать все возможности сайта, то приобретите в личном кабинете лицензионный ключ, который стоит 110 рублей на один модуль ESP8266.


Затем поставьте дополнительные галочки:

- в "Сенсорах" на датчике BME280 и/или SHT21/SI7021, в зависимости от того, какой будете использовать и «Коррекция датчиков" (+ галочку на DS18B20, нажав на шестеренку)

- в "Системных" на "Обновление ОТА" и «Настройки по умолчанию», где нажимаем шестерёнку и вводим «Имя» и «Пароль» своей Wi-Fi точки доступа, здесь же можете указать динамический или статический IP адрес модуля + IP шлюз. Шлюз обычно имеет адрес 192.168.1.1 или 192.168.0.1 – гуглите инструкцию к своему роутеру/маршрутизатору и смотрите в его настройках. Обратите внимание, что цифры до третьей точки IP адреса и шлюза должны быть одинаковы, и только последнюю у IP адреса вы присваиваете самостоятельно.


Либо вы можете пойти другим путём используя Captive Portal для подключения к модулю и уже в нём настроить подключение к сети Wi-Fi. Этот способ подробно описан в моём первом посте на эту тематику.


Далее, в самом низу нажимаем "Сохранить изменения", затем "Скомпилировать".

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

Я скачиваю одним файлом (0х00000). Запоминаем путь, куда скачали файл.

Примечание: в некоторых случаях рекомендовано создать в корне диска (С:) папку с названием английскими символами, например "ESP8266" и поместить скачанный файл туда, вместе с программатором, который скачаем следующим этапом.


Второй этап.

Подключаем через USB-кабель плату NodeMCU к компьютеру.

Правой клавишей нажимаем на значок "Компьютер" - "Управление" - "Диспетчер устройств". Там в разделе "Порты COM и LPT" (раскрываем список нажатием на треугольник слева) у вас должно появиться устройство "USB-SERIAL CH340", как на фото (если не появилось - нужно скачать и вручную установить драйвер для CH340). Запоминаем номер порта - в моём случае - (COM4).

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

Скачиваем с ГитХаба программатор NodeMCU Flasher по этой ссылке.

Распаковываем архив в папку, созданную на диске (С:) (см. Первый этап)

В зависимости от разрядности вашей системы (посмотреть можно нажав правой клавишей мыши "Компьютер" - "Свойства")

в папке Win32/Release (32-разрядная ОС) или Win64/Release (64-разрядная ОС) находим и запускаем файл ESP8266Flasher.exe

После запуска на вкладке "Advansed" сверяем параметры со скриншотом:

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

Во вкладке "Config" выбираем, нажав на шестерёнку нашу ранее сохраненную прошивку на диске (С:) и ставим крестик (если не стоит) слева.

Перед первой прошивкой рекомендуется залить в модуль blank по адресу 0х00000, особенно, если в модуле до этого использовалась какая-либо другая прошивка. Подробнее в документации на wifi-iot.com. Я прошиваю сразу, без "чистки бланком", пока проблем не было.
Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

Во вкладке "Operation" выбираем COM Port, который мы запомнили выше в "Диспетчере устройств" и нажимаем кнопку "Flash(F)". По завершении прошивки появится галочка в зеленом кружочке в левом нижнем углу, как на скриншоте:

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

После прошивки и подключения питания к плате NodeMCU нажимаем однократно кнопку «RST» (ресет) на плате модуля.


Третий этап.

Подключаем датчики и дисплей согласно схеме.

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

Вы можете использовать другие GPIO для подключения, но тогда вам нужно зафиксировать их для себя, чтобы указать в настройках. На фото выше приведена «распиновка» на этот случай.


Четвёртый этап.

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

- Первым делом нажав «Get Pro mode». Активируйте свою лицензию, купленную на сайте wifi-iot.com

- Жмём "Set" и "Main" - переходим в главное меню;

- Переходим во вкладку "Main";

- Здесь в окошке «GMT zone» устанавливаем свой часовой пояс;

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост
Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

- Возвращаемся в главное меню "Main";

- Переходим во вкладку "Hardware";

- Ставим галочку "EnableDS18B20";

- Указываем GPIO к которому подключен наш датчик температуры, у меня 14;

- Ставим галочку "Enable BME280" или "SHT21" (в зависимости от того, какой датчик установлен);

- "Interval sensors read" - время опроса датчика указываем любое в секундах, я ставлю 9 секунд с учётом дальнейшей настройки дисплея;

- Жмём "Set";

- Ниже указываем I2C GPIO датчика BME280 или SHT21, у меня GPIO SDA (4) GPIO SCL (5)

- Жмём "Set" и "Main" - переходим в главное меню.

- Переходим во вкладку "1-wire". Нажимаем "Clear & Scan list".

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

- После того, как датчик найден, жмем "Main" - переходим в главное меню и наблюдаем показания датчиков;

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

- Если хотите скорректировать показания датчика температуры по своему эталону (при наличии) во вкладке "Correction". вводите правки со знаком +/ –, где 10 — это 1 градус.

Самый простой и доступный эталон температуры– это температура человеческого тела  )))

- Далее переходим во вкладку настройки дисплея «7SEGM»;

- Ставим галочку «Enable TM1637»;

- Устанавливаем яркость дисплея от 0 до 7;

- Жмём "Set"

- Ниже выбираем параметры, которые будут циклично отображаться на дисплее. У меня это время, температура датчика на улице и температура датчика дома. Комфортное время цикла для меня 4-3-2 секунды.

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост

- Жмём "Set" и "Main" - переходим в главное меню. На дисплее TM1637 у вас должны появиться указанные параметры с заданной цикличностью.


Если вы желаете удалённо через интернет мониторить параметры датчиков, то переходим во вкладку "Servers". Ставим галочку рядом с "Enable Narodmon.ru send". Указываем "Period" 5 минут (НЕ МЕНЕЕ!!!, если указать меньше - ваш модуль "забанят" на "Народном мониторинге").

Копируем ваш ID в блокнот, нажимаем "SET" и "SEND NOW". После появления надписи "Server Reply:OK" ваши показания были успешно переданы на "Народный мониторинг".

Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования! Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Видео, Длиннопост
Настройки на сайте «Народный мониторинг» я описывал в своём первом посте на эту тематику: Температура за Вашим окном в кармане - это просто! Без программирования - за 30 минут. (ESP8266 + DS18B20 + WiFi-iot + NarodMON)
- Жмём "Main" - переходим в главное меню.

Если это ваш пилотный проект, и Вы захотите изменить прошивку добавив какие-либо датчики или сервисы, то сможете это сделать легко, обновив прошивку через интернет. Для этого вносите изменения своей прошивки на сайте wifi-iot.com нажимаем "Сохранить изменения", затем "Скомпилировать". Далее в веб интерфейсе модуля переходим во вкладку «Firmware_update» и здесь жмём «Fast OTA !»


На этом, но настройке модуля погодной станции у меня в принципе всё, остальное это дело вашей фантазии и желания экспериментировать.... ;-)

Из особенностей, в заключении хочу добавить, что данная схемотехника позволяет питать станцию, как непосредственно от USB кабеля, подключенного к модулю, так и через кабель для подключения датчика температуры DS18B20, т.к. здесь у нас общая "земля" и "пин 5 вольт" соединён на плате на прямую с USB. В схемотехнике так же указан резистор 4,7 кОм, без него датчик температуры тоже работает, но рекомендовано его всё же поставить, т.к. его назначение – повысить управляющий сигнал для однопроводной шины, без него питание идёт по паразитной составляющей и датчик может работать некорректно или вовсе выйти из строя. По даташиту датчик температуры DS18B20 работает в диапазоне напряжений от 3 до 5.5 вольт, выбранное мной питание 5 вольт позволяет применять достаточно длинный провод до датчика на улице, не переживая за падение напряжения до критически низкой отметки...


Видеоверсия:

Всем бобра! ;-)