Wifi термометр

Wifi термометр

Wi-Fi термометр на ESP8266 + DS18B20 всего за 4$

Особенно приглянулись:
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 кОм):

thingspeak.com

Регистрируемся на thingspeak.com, создаем канал, копируем оттуда 16-символьный ключ. Он нам пригодится для отправки данных о температуре в облако.

Прошивка 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):

1. ds18b20.lua — библиотека для взаимодействия с DS18B20;
2. httpsender.lua — наш скрипт, читающий данные температуры и отправляющий их на thingspeak.com. Не забываем заменить YOURAPIKEY на свой ключ.
gpio=6 — в случае подключения датчика к GPIO12, в случае GPIO0 — gpio=3 (таблица):

3. init.lua — скрипт инициализирующий WiFi и запускающий httpsender.lua. Не забываем прописать свои SSID и пароль для WiFi:

Планы

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

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

Как сделать дешевые WiFi датчики температуры/влажности

Тут я рассказываю как я собрал датчик температуры и влажности с WiFi. Вставляешь это устройство в розетку, оно подключается к WiFi сети и два раза в минуту отправляет данные на сервер.

Если все делать самому, то стоимость устройства получается меньше 400 рублей (без учета usb провода и блока питания).

В этом тексте я описываю как аппаратную часть устройства, так и программную.

В итоге у меня получилось работающее решение. Данные собираются и можно посмотреть на график с историей, но все можно сильно улучшить.

История

У меня есть несколько YouTube каналов которые я иногда смотрю. Один из них — это Chillichump. Человек живет недалеко от Лондона и у себя в садике в парнике выращивает острые перцы, а потом из них делает соусы. Канал отличный, автор явно фанатеет от всего этого, рассказывает он интересно, видео хорошего качества.

В основном автор рассказывает о перцах, какие бывают, как их выращивать, как собирать, как ферментировать и как готовить, но иногда он рассказывает про какие-то технические самоделки, которые он делает для того чтобы упростить или улучшить процесс создания острых соусов.

В начале 2019 года он выпустил видео о том как просто собрать датчик температуры и влажности который может отправлять данные на сервер. У него достаточно технологическая теплица: есть датчики, камеры, система автоматического полива. Всем этим он может управлять удаленно.

Вот его видео как собрать датчик температуры/влажности — https://www.youtube.com/watch?v=yqmOp7m4szA («Easy web-enabled Temperature and Humidity monitoring for your greenhouse»).

Судя по видео — все очень просто. Берется несколько деталей, все они спаиваются и получается работающая конструкция которая умеет отправлять данные на сервер по WiFi.

И у меня как раз есть задача зачем мне это нужно. На даче есть проблема — влажность. Там очень сыро. То что там есть проблема это ясно и без датчиков, но мне бы хотелось получить числа и графики влажности, чтобы понять насколько помогают различные решения.

Так что я решил повторить то что описано в видео, спаять датчики и собирать с них данные.

Покупка устройств

Автор Chillichump в своем видео использует датчик AM2302 и Arduino совместимое устройство Wemos D1 Mini.

Я заказал на AliExpress штуки которые очень похожи на то что использовал автор:

  • Датчик — https://s.click.aliexpress.com/e/_d8Cfw2F (покупал за $2.44 за штуку)
  • Компьютер на базе ESP8266 со встроенным WiFi — https://s.click.aliexpress.com/e/_dVV7rc5 (покупал за $2.35 за штуку)

Заказал и оплатил на сайте 13 августа, а 2 сентября я забрал посылку с почты (вообще пришло чуть раньше). Буду считать что пришло за 20 дней.

Я не заказывал, но вообще для сборки датчика нужны еще компоненты:

  • Резистор на 10 кОм
  • Провод Micro USB
  • USB блок питания

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

Схема подключения

У датчики AM2302 4 ноги, из которых нужно 3:

У D1 Mini куча разъемов , в это проекте используются 3:

Все подключается очень просто — питание к питанию, земля к земле, данные к GPIO5, но еще дополнительно между pin1 и pin2 датчика нужно подключить резистор на 10 кОм.

Для начала я все это быстро подключил на макетной плате:

Первая версия софта

На устройстве Wemos D1 Mini есть разъем Micro USB. Через него он получает питание.

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

Для написания кода и его заливки на устройство используется бесплатная программа. Arduino IDE.

В Arduino IDE нужно выбрать плату «LOLIN(WEMOS) D1 R2 & mini».

А чтобы эта плата там появилась нужно в настройках указать «Additional Boards Manager URLs»:

А еще нужно добавить в Arduino IDE библиотеку для работы с датчиком «DHT sensor library». Вот ссылка на гитхаб https://github.com/adafruit/DHT-sensor-library.

После того как в Arduino IDE добавлена плата и подключена библиотека — можно написать код который будет читать данные с датчика и отображать его. Тут еще нет никакого взаимодействия по WiFi, данные отправляются на компьютер по USB.

Компилируем и загружаем код на устройство, включаем Serial Monitor в Arduino IDE и видим что каждые 1.5 секунды на экране появляется числа с температурой и влажностью.

Сборка устройств

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

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

Я снимал видео как я паял, потом ускорил это видео и выложил на YouTube. Час пайки за одну минуту — https://www.youtube.com/watch?v=w4MWFH6uB1g

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

Отправка данных по WiFi на сервер

Итак, есть спаянные устройства. Есть код который умеет читать данные с датчика и выводить его на компьютере через USB.

Но идея заключается в том чтобы датчик был автономным. Чтобы не нужно было его подключать к компьютеру по USB. Нужно чтобы USB провод от датчика вставляется в USB блок питания, блок питания — в розетку. А датчик подключался к WiFi и отправлял данные на сервер.

Через некоторое время чтения разной документации и примеров с кодом я написал программу в Arduino IDE чтобы этот датчик подключался к WiFi и отправлял данные на сервер с помощью метода POST протокола HTTP.

B теле запроса отправляется json вида

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

Код работает, но в этом коде мне не нравится что я собираю json руками с помощью конкатенации строк, а не используют какую-нибудь хорошо отлаженную библиотеку.

В коде нужно заменить строки «my_wifi_name», «my_wifi_password», «http://example.com/endpoint», нужно указать реальные данные.

Я проверил работу этого кода в трех ситуациях:

  • Если устройство выключится а потом включится, (например, выключали электричество), то после включения данные опять пойдут.
  • Если сервер стал недоступен, а потом все починилось, то устройство продолжит отправлять данные
  • Если WiFi стал недоступен, а потом вернулся, то устройство само переподключится

Все эти 3 нештатные ситуации устройство отрабатывает нормально. Как только проблема пропадает, то все само начинает дальше работать. Устройство не нужно перегружать или еще что-то с ним делать.

Серверная часть

Итак, есть датчики которые умеют отправлять данные с помощью метода POST протокола HTTP.

Нужен сервер который умеет принимать такие данные, сохранять их и визуализировать.

Для этих целей я написал маленький сервер, и завернул его в docker.

Вот пример отправки данных на сервер с помощью «curl»:

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

Так же в этом репозитории есть еще и микросервис который визуализирует данные с помощью библиотеки Cubism.js.

Вот небольшое видео как меняются данные если нагревать датчик зажигалкой. Для этого видео я поправил код на датчике чтобы он отправлял данные не каждые 30 секунд, а каждые 2 секунды. https://twitter.com/bessarabov/status/1177932537601183752.

Если включить и положить все датчики рядом то видно что данные с них различаются:

Запуск в работу

Итого. У меня есть железки — датчики. На них залита программа которая читает значения и отправляет их на сервер. И есть сервер который получает данные и сохраняет их.

Осталось только установить эти датчики:

Сервер сохраняет данные в файлы. Я взял Jupyter и написал код чтобы нарисовать графики температуры влажности:

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

В качестве эксперимента я поднял у себя Home Assistant и настроил его чтобы он получал данные с этих сенсоров. Это оказалось очень несложно сделать. Вот пример настроек для файла configuration.yaml:

Резюме

Получилось отлично. Сенсор очень просто сделать. Компоненты дешевые, работает отлично. Код программы доступен. Сенсор можно заинтегрировать куда угодно.

Но мое решение больше похоже на прототип чем на настоящий продукт. Вот несколько вещей что хотелось бы сделать иначе:

Облачный термометр за 10 минут и 300 рублей

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

Для работы термометра необходим Wi-Fi. Используется прошивка wifi-iot.com.

Температуру можно смотреть на сайте, в мобильном приложении и в Телеграм-боте сервиса Народный мониторинг. Там же есть графики температуры за год и можно устанавливать пределы температуры, при выходе за которые сервис будет предупреждать push-сообщениями, СМС, сообщениями в Telegram или Viber или письмами на почту.

Для сборки термометра понадобится микроконтроллер NodeMCU-CH340 (ссылка в шапке, выбираем модель V3 Nodemcu-CH340) и цифровой датчик температуры DS18B20 у того же продавца за $1.41: https://aliexpress.ru/item/32467815969.html. При желании можно добавить ещё цифровой индикатор TM1637: https://aliexpress.ru/item/32645208283.html

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

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

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

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

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

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

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

Приложение присылает push-сообщения, если термометр перестаёт передавать показания, или начинает их передавать после большого перерыва.

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

Прошивку можно создать с помощью сервиса wifi-iot.com, а загрузить с помощью NodeMCU Flasher, но я упрощу вам задачу: вот в этом архиве два файла — флешер и готовая прошивка. Просто подключаете контроллер к компьютеру, запускаете флешер, выбираете файл led.bin (Config-шестерёнка), указываете виртуальный COM-порт, к которому подключился контроллер, и нажимаете «Flash».

Когда заливка прошивки завершится, отключите контроллер и подключите его снова (можно к компьютеру, можно к любой зарядке). Нажмите три раза кнопку 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».

4. Заходим в «Servers», ставим там галку «Enable Narodmon.ru», нажимаем «set». Записываем ID термометра. Нажимаем «Main».
5. Видим в главном меню, что появилась температура.
6. Нажимаем «Main». В поле «AP name» вводим имя домашней точки доступа Wi-Fi (поддерживается только Wi-Fi 2.4 Ghz), в поле «AP Pass» вводим пароль от Wi-Fi. Жмём третью кнопку Set, которая сразу под введённым паролем.

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

Регистрируемся на Народном мониторинге: https://narodmon.ru или https://narodmon.com с картами Google для Украины.

Термометр посылает данные каждые пять минут, поэтому если 5 минут ещё не прошло с момента настройки, надо немного подождать или вручную зайти в веб-интерфейс датчика и отправить данные в разделе «Servers».

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

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

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

Термометр wifi в Москве

Метеостанция Xiaomi MiJia Miaomiaoce E-Ink

Цифровой термометр (термощуп) с низким энергопотреблением + дисплейфото market.yandex.ru

Данный цифровой термометр отличает широкая область применения, низкое потребление энергии, высокая стабильность работы, высокая точность, компактность и простота в обращении. Прекрасно подходит для измерения температуры напитков, молока, кофе и других продуктов. Характеристики: Диапазон измеряемых температур: –50. +300 °C Размер: 220х20 мм Питание: батарейка 1,5 В (LR44) × 1 шт.

Измерение уличной температуры: -50°C . +70°C Измерение комнатной температуры: -10°C . +50°C Измерение относительной влажности в помещении: 10% — 99% Часы/календарь Будильник Память минимальных и максимальных значений Выносной датчик длина пр

Измерение уличной температуры: -50°C . +70°C Измерение комнатной температуры: -10°C . +50°C Измерение относительной влажности в помещении: 20% — 90% Автоматическая смена показаний уличная/комнатная температура Часы/календарь с автоматической см

  • Питание автономное

1087 ₽ Отзывы: 17

Электронный термометр Turbo Smart

  • Назначение: для тела
  • Способ измерения: подмышечный
  • Измеряемая температура: 32-43 °C
  • Звуковой сигнал

1290 ₽ Отзывы: 17

Уличный диапазон температуры от -50°C до + 90°C Комнатный диапазон температуры от -10°C до + 50°C Комнатный диапазон влажности от 20% до 99% Часы, календарь, будильник Память минимальных и максимальных значений температуры и влажности Настольная

Термометр и гигрометр с выносным датчиком OEM LCD Диапазон температур:-50°c

70°c Диапазон измерения влажности: 10% RH

99% RH Влажность Точность: 5% Разрешение дисплея влажности: 1% RH Точность температуры: 1 °C Рабочее напряжение: 1,5 в или LR44 батареи (в комплекте) Период выборки: 10 сек Размеры: прибл. 48×28,5×15,2 мм Размер ЖК-дисплея: прибл. 40×22,5 мм Размеры установки: прибл.

Оплата: карты и наличные. Без выходных 10:30-20:30

  • Беспроводной датчик
  • Часы
  • Питание автономное
  • Электронный термометр
  • Способ измерения: подмышечный, оральный
  • Измеряемая температура: 35-40 °C
  • Подсветка дисплея

ТЕРМОМЕТР-ГИГРОМЕТР фото market.yandex.ru

Электронный мультифункциональный термометр HTC-1 – это современный электронный термометр (градусник) с часами, будильником, календарём, гигрометром. Характеристики: — Производитель: Китай. — Материал: Пластик. — Единица измерения: °C; — Максимальный диапазон измерений: +70; — Минимальный диапазон измерений: -50; — Погрешность, +/-: 1; — Сохранение значения на дисплее: Да; — Температурное разрешение: 0,1; — Гигрометр (измеритель влажности): 10%-99%; — Часы: формат времени 12 и 24 (выборочно)

  • Инфракрасный термометр
  • Способ измерения: лобный, бесконтактный
  • Время измерения: 1 с
  • Подсветка дисплея

2470 ₽ Отзывы: 70

Контроль температуры под одеждой во время прогулки. Точное и удобное измерение температуры воды. Постоянный мониторинг температуры в детской комнате. Для чего прибор? Измеряет температуру воздуха, воды с высокой точностью и передаёт данные дистанционно на ваш смартфон. ключевые особенности: звуковая сигнализация — звуковое оповещение о выходе за границы световая сигнализация — световая индикация на приборе о выходе за границы герметичный корпус — степень защиты IP67 широковещательный режим — передача данных

Быстрая доставка. Простой возврат до 60 дней.

  • Беспроводной выносной датчик
  • Часы
  • Прогноз погоды
  • Питание автономное

Электронный термометр Miaomiaoce MMC-T201-1

  • Назначение: для тела
  • Способ измерения: нагрудный
  • Время измерения: 3 с
  • Измеряемая температура: 32-42 °C

2056 ₽ Отзывы: 15

Термометр и гигрометр OEM ТА318 с выносным датчиком Замер: внутренняя влажность , температура и наружная температура. Диапазон температур: внутри 0-50с / снаружи -50-70с /погрешность +/- 1 градус / шаг измерений 0,1 Переключение между °F и °C Диапазон влажности: 25%-95% /погрешность +/- 5% / шаг измерений 1% Память: мин/макс для температуры и влажности Крупный дисплей для удобного чтения Источник питания: 1 батарея AAA (не входит в комплект)

Читайте также  Комод в коридор

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector