Термометр с подключением к интернету через wifi

Обновлено: 06.07.2024

Эта штука не только показывает температуру и влажность на своём экране, но и позволяет контролировать эти параметры, а также их изменение из любой точки мира.

Термогигрометр стоит около 1000 рублей . Его можно поставить на стол или повесить на стену, питается он от трёх батареек AA.

Показания достаточно точные (расхождение влажности 3% это практически идеальный результат).

Производитель утверждает, что на одном комплекте батареек устройство может работать до двух лет. Учитывая "прожорливость" Wi-Fi это звучит удивительно, но всё просто: энергия экономится хитрым образом. Wi-Fi-соединение не держится постоянно, а включается только для передачи данных, причём это может происходить довольно редко. Раз в час термогигрометр проверяет, есть ли существенные изменения температуры и влажности и только если они есть, передаёт обновлённые данные. Если устройство стоит в помещении с постоянной температурой и влажностью, оно вообще не будет включать Wi-Fi и передавать данные, пока температура и влажность не изменятся.

Термогигрометр работает на самой популярной китайской платформе Tuya (Smartlife), статистические данные хранятся в облаке.

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

Есть возможность создавать сценарии с использованием данных прибора, но важно понимать, что это не подходит для быстротекущих процессов (например, можно включить отопление, если температура опустилась ниже 10 градусов, и отключить, если стало больше 20, но нельзя включать-выключать отопление для точного поддержания температуры).

У этого устройства множество отзывов на Aliexpress и половина из них негативные - люди просто не понимают, как оно работает. Некоторые пишут, что батарейки садятся за три недели (так и будет, если настроить Wi-FI, а потом выключить роутер - устройство будет непрерывно искать сеть). Многие пишут, что после первой передачи данных устройство отключается от Wi-Fi и не понимают, что так и должно быть. Многие пишут, что данные не передаются продолжительное время и не понимают, что так и должно быть, если температура и влажность почти не меняются. Кто-то пишет, что устройство не пригодно для автоматизации, а оно вполне пригодно, если понимать принципы его работы.


Особенно приглянулись:
ESP-01 — удобен для прототипирования (есть разъем под макетку), но выведен всего 1 GPIO;
ESP-03 — много выводов, плюс керамическая антенна;
ESP-07 — то же самое что и ESP-03 + экран и разъем под внешнюю антенну.


DS18B20

Как вариант, можно купить уже с проводом и в герметичном корпусе.

Питание 3.3В
Необходим источник питания как минимум на 200мА.

USB-UART
Для прошивки и отладки. Я использовал преобразователь на основе CP2102

Подключение

Подключаем питание на ESP8266. На ногу CH_PD так же подаем плюс.
Внимание! У кого модули не ESP-01, необходимо подать GPIO15 — GND; GPIO2 -3.3V. У ESP-01 это уже сделано. RX и TX подключаем к USB-UART преобразователю для прошивки и отладки кода:


Подключаем DS18B20 к ESP8266. Если смотреть на маркировку: левая — земля, средняя — сигнал (GPIO12 на ESP-03), если у вас ESP-01, подключайте к GPIO0, правая — питание(3.3V). Между питанием и сигнальной линией желательно подключить резистор 4.7 кОм (у меня работает и с 10 кОм):


Прошивка NodeMCU

NodeMCU — это прошивка, позволяющая запускать Lua скрипты на ESP8266. Качаем последний NodeMCU Flasher и запускаем его.
Подключаем GPIO0 на землю. Выбираем нужный COM порт и скорость 74880 или 115200 (как я понимаю, у некоторых версий ESP8266 бутлоадер работает на 74880). Нажимаем Flash и передергиваем питание на ESP8266. Если прошивка не запускается, проверяем корректность подключения RX,TX, запустив PuTTY на скорости 74880. В момент подачи питания в консоль должна валится строка вроде "ets Jan 8 2013,rst cause:1, boot mode:(1,0)". После корректной прошивки отключаем GPIO0 от земли:


Заливка Lua скриптов и запуск

Скачиваем и запускаем LuaLoader. Выбираем COM-порт и скорость 9600, если нет соединения — пробуем передернуть питание у модуля ESP8266. Проверяем соединение, нажав на кнопку ChipID. В консоль должен вывестись идентификатор чипа.


Заливаем нужные файлы (кнопка UploadFile):


Планы

Это первый опыт работы с ESP8266. В планах попробовать следующее:

1. Найти альтернативу thingspeak. Графики хочется двигать и масштабировать. Может, кто-то знает аналоги?
2. Датчик влажности (возможно, DHT22). Вроде уже есть в стандартных библиотеках.
3. Датчик CO2 на основе датчика K-30.
4. Управляемый рассвет без дополнительного контроллера, управление с ESP8266. Вдохновила публикация «Искусственный рассвет».


Эту простейшую самоделку сможет повторить каждый, кто в состоянии соединить три провода. С помощью этой штуки можно дистанционно контролировать температуру, например, на даче.


Ещё понадобится резистор 4.7К, провода, любая зарядка от телефона с разъёмом MicroUSB. В качестве корпуса удобно использовать электрическую распаечную коробку.

Скорее всего можно использовать и совсем малюсенький контроллер Wemos D1 Mini, но я не пробовал.

В базовом варианте достаточно припаять датчик температуры к контроллеру (красный провод к 3V, чёрный к GND, жёлтый к D4), между жёлтым и красным проводам датчика ставится резистор (на фото датчик припаян к D1, не обращайте внимания).


Это необязательно, но можно подключить экран. Термометр поддерживает четыре вида экранов (цветной TFT 240x320 точек, OLED 128x64 точки, ЖК двух- или четрырёхстрочный, семисегментный светодиодный). На мой взгляд лучше всего поставить самый дешёвый четырёхсимвольный индикатор. У индикатора четыре контакта, подключаем их к контроллеру (VCC к 3V, GND к G, DIO к TX, CLK к RX).


Я пробовал подключать к термометру OLED-экран, но цифры на нём малюсенькие и выводится много лишней информации, включая неотключаемый адрес сайта разработчика прошивки.


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


А так в приложении (разумеется, датчики можно переименовать).



Как вы уже наверное догадались, для того, чтобы превратить контроллер в облачный термометр в него нужно загрузить прошивку и настроить её. Но сделать это гораздо проще, чем многие из вас подумали. :)

Когда заливка прошивки завершится, отключите контроллер и подключите его снова (можно к компьютеру, можно к любой зарядке). Нажмите три раза кнопку Reset с паузой не менее полсекунды. Контроллер создаст временную точку доступа Wi-Fi под названием WiFi-IoT без пароля. Подключитесь к этой точке смартфоном, и нажмите «подключение к сети». Откроется веб-страница настройки термометра.


Можно всё настроить сразу, можно настроить только подключение к Wi-Fi и продолжить настройку на компьютере. Покажу, как настроить всё сразу на телефоне:

1. Нажимаем «Hardware», ставим галку «Enable DS18B20» и меняем его GPIO на «2». Нажимаем «Set». Нажимаем «Main».
2. Заходим в «1-Wire», там «Clear & Scan List». Должен появиться адрес датчика. Снова «Main».


3. Если подключили экран, заходим в «7SEGM», ставим галку «Enable», вводим в поле «GPIO Clk» 3, в «GPIO Data» 1. Нажимаем верхний «Set». Пункт «1» меняем на DS18B20 1, нажимаем нижний «Set». Жмём «Main».



Отключаем контроллер от питания и включаем снова. Теперь он подключится к домашнему Wi-Fi. Можно зайти в его веб-интерфейс из браузера по адресу, который можно посмотреть в веб-интерфейсе домашнего роутера или с помощью повторного подключения к временной точке доступа контроллера: ещё раз три раза нажимаем на контроллере RST, снова подключаемся к нему телефоном, заходим в «Main» и видим внизу адрес. В данном случае 192.168.1.212.


На Народном мониторинге заходим в «Профиль — Мои датчики».


Нажимаем «Добавить» и вводим ID нашего термометра (его мы сохранили на этапе 4).


На самом деле всё очень просто и эту самоделку действительно можно сделать и настроить за десять минут. Что касается цен, то конечно не может не впечатлять то, насколько это всё дёшево.

WiFi термометр своими руками Термометр, Nodemcu, Своими руками, Сделай сам, Видео

Все питается от пяти вольт, то-есть от любой USB зарядки. При соответствующей настройке WiFi роутера градусник доступен в браузере как из домашней сети, так и из Интернет.
Потребуется сама платка NodeMCU

Датчик температуры DS18B20

Резистор 4.7 кОм


Крафт

1.4K постов 12.1K подписчика

Правила сообщества

Могли бы быть здесь, но пока не написаны (

Когда проще создать такую приблуду, чем подойти к окну.

Что за шрифт отображает температуру?

Иллюстрация к комментарию

Зачем тут резистор на 4.5ком?

Можно к этой плате припаять простенький дисплей для показа температуры?

Понять не могу, почему люди собирают конечное устройство на отладочной плате? Это же дорого что писец. Обычно достаточно отладить плату, собрать standalone схему на чипе и не париться :)

А можешь мне такой же сделать?)

@kitsel обновите пожалуйста ссылку на скетч

Ссылка со скетчем больше не работает, будь другом, подскажи где ещё можно взять этот скетч?

@kitsel музыку подскажешь из видео)? Забыл название

Простите за оффтоп. Случилось следующее горе: по незнанию питал 4.7 вольтами 3в вход. В итоге перестал работать. Но светодиодом светит и прошивается. Что могло сгореть?

@kitsel Есть пару вопросов: Какая прошивка должна быть у ESP?

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

@alexgyver помоги пожалуйста восстановить скетч по инструкции ТС. А то оригинальный автор этой темы куда то пропал :(

Все комплектующие по инструкции купил, а доделать не могу из-за метрвой ссылки на скетч

так он же вроде страницу сам апдейтит. это разве норм?

а есть такое тока сборе подключ? повесил подключился и смотришь?

На NodeMCU не обязателен подтягивающий резистор, там свой уже есть. Только вчера игрался с таким же набором, разницы никакой. Кстати, а как заставить отдавать значение в JSON?

Как вовремя, сам на днях искал что либо подобное!)

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

Вопрос следующий, как осуществить автономное питание и информирование без использования компа и прочего?

Вываливается с ошибкой при компиляции

Написал типа умного дома, который работает через сервак.

Иллюстрация к комментарию

Иллюстрация к комментарию

@kitsel, ссылку в камментак надо нам.


Увеличение количества пинов NodeMCU с помощью сдвигового регистра

Так как у NodeMCU не так и много пинов для подключения периферии, часто возникает нехватка pin. Поэтому такую замечательную отладочную плату откладываем на полку и ищем другие железки для реализации проекта.

Но в некоторых случаях можно расширить количество пинов с помощью сдвигового регистра и реализовать проект на NodeMCU.

Увеличение количества пинов NodeMCU с помощью сдвигового регистра Esp8266, Arduino, Nodemcu, Своими руками, Урок, Видеоблог, Видео

Все исходные материалы к уроку можно найти на сайте>>

Надеюсь моя информация будет полезной.

Спасибо! Всем добра!


Термометр-котик

Давно тешил себя мыслью найти термометр, данные с которого будут доступны в веб-панели.

Вопрос стал еще более актуальным после удачной покупки дешевого Б/у кондиционера и желанием прикрутить к нему самопальный климат-контроль (управление любыми устройствами дома через интернет давно налажено)

Проблема заключалась в том, что цена на готовые устройства неприятно кусается, а те, что в обиходе (вроде решений от Xiaomi) не позволяют "просто так" забрать данные каким-либо открытым протоколом

Вдохновившись этой статьей понял, что пора начинать работать с Arduino.

Прошивка из статьи у меня работать почему-то не захотела, решил попробовать написать что-то своё.

Купил всё что надо на одном известном красненьком китайском сайте и достал с полки паяльник.

Спаял, работает! Однако, остро встал вопрос того, куда бы всё это дело спрятать. Распаечная коробка - громоздко и некрасиво, засунуть в спичечный коробок или пачку из под сигарет можно, но тоже как-то неэстетично. И вот, прогуливаясь по магазину фиксированных цен я увидел его. Котик-ночник из ПВХ, за 150 рублей. Не так компактно, зато красиво.

Вот так выглядит криво пропаенная плата

Термометр-котик Термометр, Кот, Своими руками, Arduino, Esp8266, Nodemcu, DHT11, Длиннопост

Термометр-котик Термометр, Кот, Своими руками, Arduino, Esp8266, Nodemcu, DHT11, Длиннопост

Да, можно было купить NodeMCU с уже готовыми "рогами" и припаяться к ним, но они торчат и мешают, а мне всё это дел надо уложить в корпус котика

Отрезаем котику ненужные детали в виде светодиодного модуля ночника с батарейками и днища

Аккуратно впихиваем плату и датчик внутрь

Термометр-котик Термометр, Кот, Своими руками, Arduino, Esp8266, Nodemcu, DHT11, Длиннопост

Выводим коту на голову антенну для связи с пришельцами (на самом деле это корпус датчика)

Термометр-котик Термометр, Кот, Своими руками, Arduino, Esp8266, Nodemcu, DHT11, Длиннопост

Делаем отверстие для ввода кабеля питания, соединяем всё между собой, приделываем днище на место, заливаем щели клеем и вуаля! Термометр-котик весьма сомнительного вида готов!

Термометр-котик Термометр, Кот, Своими руками, Arduino, Esp8266, Nodemcu, DHT11, Длиннопост

Теперь данные о температуре можно легко посмотреть через импровизированную веб-страничку

Термометр-котик Термометр, Кот, Своими руками, Arduino, Esp8266, Nodemcu, DHT11, Длиннопост

В моем случае - еще и сбор данных в Zabbix (система мониторинга) с отрисовкой графиков

Термометр-котик Термометр, Кот, Своими руками, Arduino, Esp8266, Nodemcu, DHT11, Длиннопост

На всё про всё потрачено часов 10 (из них 8 на разработку и 2 на сборку-отладку)

Добавлю ссылку на github - там есть исходные коды для платы (есть еще вариация с датчиком DHT11/22, который менее точен, но поддерживает еще и влажность), шаблоны для заббикса и еще немного полезной фигни.

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля

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

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

Первый этап.

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

hostname:ESP00903A69;bmet:-13.0;bmeh:48.8;bmep:773.62;dsw1:-14.43;bh:1260;

где нумерация начинается от hostname:ESP00903A69 - первая метрика;

bmet:-13.0 – температура с датчика BME280 – вторая метрика;

bmeh:48.8 – влажность с датчика BME280 – третья метрика;

bmep:773.62 – давление с датчика BME280 – четвертая метрика;

dsw1:-14.43 – температура с датчика DS18B20 – пятая метрика;

bh:1260 – датчик освещённости – шестая метрика;

Второй этап.

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

Для удалённого доступа вне локальной сети Вам нужно будет указать статический адрес вашего маршрутизатора, на котором при необходимости переназначить и пробросить порт, который указываем здесь.
Далее указываем метрики нужных нам датчиков с "Уличного" модуля. (см. Первый этап)

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

Нажимаем "Set" и "Main" - переходим на главный экран, где через время опроса второго модуля равного 60 секунд появятся параметры "Уличного" модуля.

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

Теперь Вы их можете вывести их на дисплей ТМ1637 перейдя во вкладку "7SEGM", если собирали "Домашний" модуль по моему предыдущему посту:

Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля Esp8266, Микроконтроллеры, Arduino, Умный дом, Датчик, Температура, Давление, Влажность, Погода, Своими руками, AliExpress, Nodemcu, Для чайников, Апгрейд, Видео, Длиннопост

Или через "Конструктор строк", используя топик _VSyx_ где "у" и "х" это параметры виртуального сенсора, если вы собрали "Домашний" модуль на базе дисплея LCD1602 по моему этому посту (видео).

Для этого переходим во вкладку "Designer_lines" и указываем нужный текс и параметр виртуального сенсора. Пример:

Читайте также: