Wifi датчик температуры своими руками

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

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

Для работы термометра необходим Wi-Fi. Используется прошивка wifi-iot.com .
Температуру можно смотреть на сайте и в мобильном приложении сервиса Народный мониторинг narodmon.ru . Там же есть графики температуры за год и можно устанавливать пределы температуры, при выходе за которые сервис будет предупреждать push-сообщениями, СМС и письмами на почту.

Для сборки термометра понадобится микроконтроллер NodeMCU-CH340 за $2.65 и цифровой датчик температуры DS18B20 за $1.41 . При желании можно добавить ещё цифровой индикатор TM1637 за $0.77 . Ещё понадобится резистор 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-сообщения, если термометр перестаёт передавать показания, или начинает их передавать после большого перерыва.

Читайте также:  Usb plug and play wifi

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

Прошивку можно создать с помощью сервиса 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.

Читайте также:  My computer connected to wifi but no internet

Регистрируемся на Народном мониторинге: https://narodmon.ru/?invite=ammo1 (ссылка реферальная, но даёт мне не деньги, а возможность подключить больше датчиков и дольше хранить данные).

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

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

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

Если моё объяснение показалось вам сложным, вот тут есть очень подробная пошаговая инструкция.

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

Десять лет я каждый день пишу о технике, скидках, интересных местах и событиях. Читайте мой блог на сайте ammo1.ru , в ЖЖ , Дзен , МирТесен .
Мои проекты:
Lamptest.ru . Тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.
Elerus.ru . Собираю информацию об отечественных электронных устройствах для личного использования и делюсь ей.
Вы можете связаться со мной в Телеграм @ammo1 и по почте ammo1@mail.ru .

Источник

Wi-Fi датчик температуры DS18B20 + ESP8266

Всегда мечтал иметь свою метеостанцию, но выходить и мерзнуть на балконе не нравится ни кому. Решил начать с простого — сделать датчик температуры с передачей данных по wifi в теплую квартиру. Для этого использовал небезызвестный ESP8266 и цифровой датчик температуры DS18B20.

Железо

DS18B20 — это цифровой датчик температуры т.е. у него две ноги питания и третья — цифровой сигнал. Это очень удобно т.к. параллельно можно подключить до 127 датчиков.

Wi-Fi датчик температуры DS18B20 + ESP8266

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

Подойдет любая esp 01 — 11.

Wi-Fi датчик температуры DS18B20 + ESP8266

Была горстка ESP-03 по тому сделал все на них.

Wi-Fi датчик температуры DS18B20 + ESP8266

Питается все хозяйство от 3.3В и потребляет как минимум 200мА.

Для прошивки нам понадобится USB-UART переходник. Им мы будем прошивать микроконтроллер. Мой вариант был на основе микросхемы CP2102.

Подключение

Wi-Fi датчик температуры DS18B20 + ESP8266

К пинам CH_PD и VVC контроллера ESP8266 подаем плюс 3.3в. RX и TX к USB-UART для замены прошивки.

Читайте также:  Принтер l355 настройки вай фай

При подключении датчика температуры DS18B20 с ESP8266 желательно с помощью резистора 4.7-10 кОм подтянуть сигнальную ногу к плюсу. Саму сигнальную ногу подключить к GPIO0 микроконтроллера.

Wi-Fi датчик температуры DS18B20 + ESP8266

Облако thingspeak

На сайте thingspeak.com регистрируем аккаунт, создаем канал, копируем 16-символьный ключ доступа. Этот ключ нужно будет зашить, без него облако не будет принимать данные.

Прошивка NodeMCU

Wi-Fi датчик температуры DS18B20 + ESP8266

Это прошивка запускает Lua скрипты. Последнюю версию можно скачать с гитхаба https://github.com/nodemcu/nodemcu-flasher Для перевода контроллера в режим программирования соединяем GPIO0 с землей, подаем питание. Теперь до следующей перезагрузки контроллер будет в этом режиме. Выставляем скорость программирования 115200 и зашиваем. Отрубаем/подрубаем питание и контроллер должен запуститься на новой прошивке. В консоль по UART будет выводиться сообщение ets Jan 8 2013,rst cause:1, boot mode:(1,0).

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

Скачиваем и запускаем загрузчик Lua скриптов http://benlo.com/esp8266/index.html#LuaLoader. Выставляем скорость 9600, если не соединяется, то пробуем передернуть питание у модуля. Проверяем соединение, нажав на кнопку ChipID. В консоль должен вывестись идентификатор чипа.

Выбираем наши скрипты и кнопкой UploadFile загружаем их на плату:

Библиотека для работы с датчиком DS18B20 https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_modules/ds18b20/ds18b20.lua

httpsender.lua это саписанный нами скрипт, который читает показания с датчика и отправляет их в облако thingspeak.com.

gpio = 3 require('ds18b20') ds18b20.setup(gpio) function sendData() t=ds18b20.read() print("Temp:"..t.." C\n") -- conection to thingspeak.com print("Sending data to thingspeak.com") conn=net.createConnection(net.TCP, 0) conn:on("receive", function(conn, payload) print(payload) end) -- api.thingspeak.com 184.106.153.149 conn:connect(80,'184.106.153.149') conn:send("GET /update?key=YOURAPIKEY&field1="..t.." HTTP/1.1\r\n") conn:send("Host: api.thingspeak.com\r\n") conn:send("Accept: */*\r\n") conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n") conn:send("\r\n") conn:on("sent",function(conn) print("Closing connection") conn:close() end) conn:on("disconnection", function(conn) print("Got disconnection. ") end) end -- send data every 60000 ms to thing speak tmr.alarm(0, 60000, 1, function() sendData() end )

init.lua — скрипт инициализирующий WiFi и запускающий httpsender.lua. В нем нужно указать ваш логин и пароль от точки доступа.

print("Setting up WIFI. ") wifi.setmode(wifi.STATION) --modify according your wireless router settings wifi.sta.config("SSID","SSIDPASSWD") wifi.sta.connect() tmr.alarm(1, 1000, 1, function() if wifi.sta.getip()== nil then print("IP unavaiable, Waiting. ") else tmr.stop(1) print("Config done, IP is "..wifi.sta.getip()) dofile("httpsender.lua") end

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

Источник

Оцените статью
Adblock
detector