Привет Пикабу!
Кому лень читать "мнОого букОв" - в самом низу поста есть его видеоверсия ;-)
В одном из предыдущих постов я рассмотрел простой, удобный и бесплатный способ удаленного мониторинга температуры дома или на улице на базе модуля ESP8266, датчика температуры DS18B20 конструктора прошивок WiFi-IoT и сервиса "Народный мониторинг". В следующем посте рассказал как подключить дополнительный датчик температуры, давления и влажности - BME280 и показал, как выводить данные с датчиков на дисплей LSD1602....
Сегодня соберём более компактную погодную станцию на тех же элементах, но в качестве дисплея будем использовать маленький светодиодный TM1637, на который будут поочерёдно выводиться три любых показания с датчиков. Например время, температура на улице и температура в квартире. Так же подключим станцию к "Народному мониторингу" для возможности смотреть погоду удалённо.
Для этого проекта нам понадобятся следующие комплектующие (я покупал их на 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".
Выбираем новый профиль и вводим для него имя.
- «Сенсоры» ставим галочку «1-wire DS18B20»;
- «Сервисы» ставим галочку «narodmon.ru»;
- «Системные» ставим галочку «Время и NTP»;
- «Дисплеи» ставим галочку «TM1637»;
Этот набор имеет бесплатный функционал.
Если Вы планируете добавить датчики температуры и другие, хотите "откалибровать" (скорректировать показания) датчиков под свой эталон, обновить прошивку через интернет и использовать все возможности сайта, то приобретите в личном кабинете лицензионный ключ, который стоит 110 рублей на один модуль ESP8266.
Затем поставьте дополнительные галочки:
- в "Сенсорах" на датчике BME280 и/или SHT21/SI7021, в зависимости от того, какой будете использовать и «Коррекция датчиков" (+ галочку на DS18B20, нажав на шестеренку)
- в "Системных" на "Обновление ОТА" и «Настройки по умолчанию», где нажимаем шестерёнку и вводим «Имя» и «Пароль» своей Wi-Fi точки доступа, здесь же можете указать динамический или статический IP адрес модуля + IP шлюз. Шлюз обычно имеет адрес 192.168.1.1 или 192.168.0.1 – гуглите инструкцию к своему роутеру/маршрутизатору и смотрите в его настройках. Обратите внимание, что цифры до третьей точки IP адреса и шлюза должны быть одинаковы, и только последнюю у IP адреса вы присваиваете самостоятельно.
Либо вы можете пойти другим путём используя Captive Portal для подключения к модулю и уже в нём настроить подключение к сети Wi-Fi. Этот способ подробно описан в моём первом посте на эту тематику.
Далее, в самом низу нажимаем "Сохранить изменения", затем "Скомпилировать".
Я скачиваю одним файлом (0х00000). Запоминаем путь, куда скачали файл.
Примечание: в некоторых случаях рекомендовано создать в корне диска (С:) папку с названием английскими символами, например "ESP8266" и поместить скачанный файл туда, вместе с программатором, который скачаем следующим этапом.
Второй этап.
Подключаем через USB-кабель плату NodeMCU к компьютеру.
Правой клавишей нажимаем на значок "Компьютер" - "Управление" - "Диспетчер устройств". Там в разделе "Порты COM и LPT" (раскрываем список нажатием на треугольник слева) у вас должно появиться устройство "USB-SERIAL CH340", как на фото (если не появилось - нужно скачать и вручную установить драйвер для CH340). Запоминаем номер порта - в моём случае - (COM4).
Скачиваем с ГитХаба программатор NodeMCU Flasher по этой ссылке.
Распаковываем архив в папку, созданную на диске (С:) (см. Первый этап)
В зависимости от разрядности вашей системы (посмотреть можно нажав правой клавишей мыши "Компьютер" - "Свойства")
в папке Win32/Release (32-разрядная ОС) или Win64/Release (64-разрядная ОС) находим и запускаем файл ESP8266Flasher.exe
После запуска на вкладке "Advansed" сверяем параметры со скриншотом:
Во вкладке "Config" выбираем, нажав на шестерёнку нашу ранее сохраненную прошивку на диске (С:) и ставим крестик (если не стоит) слева.
Перед первой прошивкой рекомендуется залить в модуль blank по адресу 0х00000, особенно, если в модуле до этого использовалась какая-либо другая прошивка. Подробнее в документации на wifi-iot.com. Я прошиваю сразу, без "чистки бланком", пока проблем не было.
Во вкладке "Operation" выбираем COM Port, который мы запомнили выше в "Диспетчере устройств" и нажимаем кнопку "Flash(F)". По завершении прошивки появится галочка в зеленом кружочке в левом нижнем углу, как на скриншоте:
После прошивки и подключения питания к плате NodeMCU нажимаем однократно кнопку «RST» (ресет) на плате модуля.
Третий этап.
Подключаем датчики и дисплей согласно схеме.
Вы можете использовать другие GPIO для подключения, но тогда вам нужно зафиксировать их для себя, чтобы указать в настройках. На фото выше приведена «распиновка» на этот случай.
Четвёртый этап.
Подключаем питание к плате NodeMCU и заходим в web-интерфейс модуля, для этого вбиваем указанный в прошивке IP адрес модуля.
- Первым делом нажав «Get Pro mode». Активируйте свою лицензию, купленную на сайте wifi-iot.com
- Жмём "Set" и "Main" - переходим в главное меню;
- Переходим во вкладку "Main";
- Здесь в окошке «GMT zone» устанавливаем свой часовой пояс;
- Возвращаемся в главное меню "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".
- После того, как датчик найден, жмем "Main" - переходим в главное меню и наблюдаем показания датчиков;
- Если хотите скорректировать показания датчика температуры по своему эталону (при наличии) во вкладке "Correction". вводите правки со знаком +/ –, где 10 — это 1 градус.
Самый простой и доступный эталон температуры– это температура человеческого тела )))
- Далее переходим во вкладку настройки дисплея «7SEGM»;
- Ставим галочку «Enable TM1637»;
- Устанавливаем яркость дисплея от 0 до 7;
- Жмём "Set"
- Ниже выбираем параметры, которые будут циклично отображаться на дисплее. У меня это время, температура датчика на улице и температура датчика дома. Комфортное время цикла для меня 4-3-2 секунды.
- Жмём "Set" и "Main" - переходим в главное меню. На дисплее TM1637 у вас должны появиться указанные параметры с заданной цикличностью.
Если вы желаете удалённо через интернет мониторить параметры датчиков, то переходим во вкладку "Servers". Ставим галочку рядом с "Enable Narodmon.ru send". Указываем "Period" 5 минут (НЕ МЕНЕЕ!!!, если указать меньше - ваш модуль "забанят" на "Народном мониторинге").
Копируем ваш ID в блокнот, нажимаем "SET" и "SEND NOW". После появления надписи "Server Reply:OK" ваши показания были успешно переданы на "Народный мониторинг".
Настройки на сайте «Народный мониторинг» я описывал в своём первом посте на эту тематику: Температура за Вашим окном в кармане - это просто! Без программирования - за 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 вольт позволяет применять достаточно длинный провод до датчика на улице, не переживая за падение напряжения до критически низкой отметки...
Видеоверсия: