Wifi реле своими руками esp8266

Модуль Wi-Fi реле на базе ESP8266 – обзор и подключение

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

Это модуль одноканального реле с интерфейсом WiFi выполнен на основе микросхемы ESP8266. Он контролирует работу реле посредством приложения. Идеальный инструмент, чтобы управлять всей бытовой техникой в вашем доме с помощью телефона, где бы вы ни находились.

Функции и характеристики

  • Встроенный модуль WiFi с микросхемой ESP8266, работающий в режиме точки доступа, можно подключить к 5‑и клиентам одновременно.
  • У модуля реле с WiFi два режима работы:
    • 1. Смартфон напрямую подключается к модулю WiFi;
    • 2. Смартфон и модуль WiFi подключены к одному маршрутизатору.
  • Дальность передачи: На открытом пространстве максимальная дальность передачи составляет 400 м в случае, когда смартфон напрямую подключается к модулю WiFi. Если модуль WiFi и смартфон подключены к одному маршрутизатору, дальность передачи зависит от силы сигнала маршрутизатора.
  • Встроенное реле на 1 канал с входным напряжением 5 В для выходных цепей 10, А, 250 В переменного тока и 30 В постоянного тока, выдерживает до 100 000 срабатываний в непрерывном режиме, обладает малым временем срабатывания.

Блок-схема модуля представлена на чертеже ниже:

Инструкция по настройке Wi-Fi модуля ESP8266

1. WiFi модуль ESP8266 имеет три режима работы:

  • STA (клиент)
  • AP (точка доступа)
  • STA + AP (точка доступа + клиент)

Режим WiFi модуля ESP8266 выбирается исходя из выбранного режима работы модуля реле.

2. Модуль настраивается посредством отладочной программы, предназначенной для работы через последовательный порт, команды на последовательный порт отправляются через конвертер USB в TTL. Для модулей ESP-01 существует специальный программатор – USB программатор CH340G для ESP-01. Контакты TX, RX и GND конвертера подключаются к выводам RX, TX и GND модуля реле, а выводы IN+ и IN- — к источнику питания постоянного тока 3.3В.

3. Скорость передачи данных WiFi модуля может быть 115.200 или 9600 бод. Чтобы изменить скорость, вы можете использовать АТ‑команды, например: AT+CIOBAUD=115200. В общих случаях мы рекомендуем использовать скорость 115.200, но вам будет необходимо изменить скорость на 9600, если вы используете смартфон для управления реле (так как скорость встроенного в модуль микроконтроллера STC15F104W составляет 9600 бод).

Режим работы 1 — смартфон подключается к модулю напрямую

Запустите отладочную программу USR-TCP232-Test-V1.3 на ПК и отправьте следующие AT команды, одну за другой:

  • AT+CWMODE=2 — выбираем режим точки доступа AP;
  • AT+RST — перезапускаем модуль;
  • AT+CIPMUX=1 — устанавливаем несколько соединений;
  • AT+CIPSERVER=1,8080— настраиваем сервер TCP, устанавливаем номер порта;
  • AT+CIFSR — смотрим адрес IP для режима AP, примерно такой: APIP, “192.168.4.1”;
  • AT+CIOBAUD=9600 — устанавливаем скорость передачи последовательного порта на 9600 бод.

Теперь подключаемся к точке доступа, созданной WiFi модулем, посредством смартфона с ОС Android.

Установите приложение EasyTCP_20 (ссылка на Play Market) на смартфон с ОС Android и запустите его; нажмите кнопку «CONNECT» и введите адрес устройства (IP Address) и номер порта (Port).

Нажимайте на блоки функций и вводите имена и содержимое команд, отправляемых через последовательный порт. Например, командой “A00101A2” — можно задать открытие реле, а командой “A00100A1” — закрытие реле.

Все команды должны задаваться в шестнадцатеричном виде.

Теперь, нажимая на блоки функций, вы можете отправлять команды на последовательный порт и таким образом управлять расположенным на плате реле.

Режим работы 2 — смартфон и модуль WiFi подключены к одному маршрутизатору

Запустите отладочную программу USR-TCP232-Test-V1.3 на ПК, отправьте следующие команды одну за другой:

  • AT+CWMODE=1 — выбираем режим клиента STA;
  • AT+RST — перезапускаем модуль;
  • AT+CWJAP= ,

— позволяем модулю WiFi подключиться к маршрутизатору, например: AT+CWJAP=«LCTECH»,«12345678»;

  • AT+CIPMUX=1 — устанавливаем несколько соединений; Например:
    AT+CIPSERVER=1,8080 – настраиваем сервер TCP, устанавливаем номер порта;
  • AT+CIFSR — смотрим адрес IP для режима STA, примерно такой: STAIP, “192.168.1.103”;
  • AT+CIOBAUD=9600 — устанавливаем скорость передачи последовательного порта на 9600 бод.
  • Теперь подключитесь со смартфона к вашему маршрутизатору.

    Установите приложение EasyTCP_20 на смартфон с ОС Android (ссылка на Play Market) и запустите его; нажмите кнопку «CONNECT», введите в поля адрес IP (Address) модуля и номер порта (Port).

    Нажимайте на блоки функций и вводите имена и содержимое команд, отправляемых через последовательный порт . Например: A00101A2 — открытое реле, A00100A1 — закрытое реле. Команды должны быть написаны в шестнадцатеричном виде.

    Теперь, нажимая на блоки функций, вы можете отправлять команды на последовательный порт, чтобы управлять реле.

    Подсказки

    1. После перезапуска, модуль реле с WiFi необходимо настроить заново. Если ваша прошивка написана на Arduino IDE, то минимальный набор необходимых при запуске команд можно поместить в функцию setup()
    2. У модуля ESP8266 есть функция простоя; если смартфон не посылает команды на модуль WiFi в течение некоторого периода времени (по умолчанию — 180 с), то он переходит в режим ожидания и отключается от вашего смартфона. Для изменения этого периода вы можете отправить с ПК команду «AT + CIPSTO = ” («время» может быть от 0 до 7200 сек), например: AT + CIPSTO = 3600.
    3. Если модуль в ответ вместо «OK» отправляет команду, которую вы послали посредством программы USR-TCP232-Test-V1.3, то модуль необходимо настроить заново. Перед отправкой команд вы можете нажать кнопку «ВВОД» (ENTER).
    4. Если нет никакого ответа при работе через программу USR-TCP232-Test-V1.3, то посмотрите на скорость при обмене с модулем — возможно, она настроена неверно. Вы можете попробовать 115200 или 9600, однако если для управления реле вы используете смартфон, то скорость обязательно должна быть 9600 бод (скорость можно изменить, отправив команду AT+CIOBAUD=9600), поскольку скорость передачи встроенного микроконтроллера STC15F104W составляет 9600 бод.
    5. Если вы хотите использовать компьютер для управления реле напрямую (скорость передачи — 9600 бод), то можно сделать следующее: отсоедините модуль WiFi с микросхемой ESP8266; выводы TX, RX и GN от USB – TTL конвертера подключите к выводам TX, RX и GND модуля реле; выводы IN+ и IN- подключите к источнику питания постоянного тока 5В. Отправьте команды на последовательный порт (A00101A2 — открытое реле, A00100A1 — закрытое реле, команды должны быть в шестнадцатеричном виде) посредством отладочной программы, установленной на ПК, чтобы управлять реле.
    6. Ели реле не открывается или не закрывается, возможно, вам необходимо убрать резистор R4 и подключить вывод питания VCC от USB – TTL конвертера к 5V выводу модуля реле.

    Статья подготовлена по материалам www.hackster.io

    Самые популярные материалы в блоге

    За все время

    За сегодня

    8 комментариев . Оставить новый

    Добрый день.
    Правильно ли я понял, что модуль может работать только с Arduino ? Сам по себе он работать не может?

    “После перезапуска, модуль реле с WiFi необходимо настроить заново. Если ваша прошивка написана на Arduino IDE, то минимальный набор необходимых при запуске команд можно поместить в функцию setup()”

    Здравствуйте! Удобнее всего производить прошивку модуля через Arduino IDE, но можно писать в любой среде с поддержкой микроконтроллеров серии ESP8266

    Заказ парачку на AliExpress. Они не были прошиты, мигают с ESP8266 или без него и все.
    Пришлось разработать свою прошивку.
    https://github.com/Pav2711/STC15F104W.git

    Здравствуйте. Можно узнать какую прошивку использовать для релейного модуля от LC TECHNOLOGY и какую прошивку для ESP-01S? Можно где-нибудь скачать эти 2 прошивки?

    Как оказалось между ESP-01S и STM8 в последних версиях не 9600, а 115200, если заставил работать

    а кроме приложения есть вариант управлять этим реле? Если таких реле (условно) 20 штук – это к каждому нужно подключаться и управлять? это же ужасно не удобно… есть что-то, что может объединить несколько таких модулей и управлять ими с одно места?

    Это сделано для тестирования функционала. Если не хочешь подключаться к каждой – всё просто. Включаешь все ESP в режиме ‘Station’, подключаешь в одну локальную сеть. В этой же локальной сети должен быть ПК(ноут), или RasberyPi. Пишешь свою программку, которая будет работать с тем же EasyTCP по порту 8080(к примеру), и с каждой ESP по другому своему порту(любой порт выбери).

    По факту каждая ESP подет подключена к выделеному её порту вашей программы, и вы со смартфона тоже подключаетесь к этой же программе через тот же EasyTCP.

    Затем через EasyTCP отправляешь запросы, программа на ПК их парсит и определяет какой ESP нужно отправить.

    Таким образом Вы подключены к одной программе, не переподключаетесь. Всё как у людей:)

    У вас не корректные данные

    Сначала пишете:
    “Идеальный инструмент, чтобы управлять всей бытовой техникой в вашем доме с помощью телефона, где бы вы ни находились.”

    А ниже:
    “У модуля реле с WiFi два режима работы:
    1. Смартфон напрямую подключается к модулю WiFi;
    2. Смартфон и модуль WiFi подключены к одному маршрутизатору.”

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

    Источник

    Ещё один Wi-Fi выключатель


    Данная статья будет посвящена ESP8266 Wi-Fi модулю, языку программирования Lua и прошивке nodeMCU. SDK от производителя рассматриваться не будет.

    Примерно года три назад я пробовал реализовать выключатель по 1-wire шине. Как все работало мне очень не понравилось.

    • Единая точка отказа т.к. вся логика на сервере;
    • Медленная скорость;
    • К каждому выключателю придется тянуть от 2х проводов(идеально «витуху»).

    В следствии чего все это было удачно заброшено, другие беспроводные решения рассматривались, но были исключены в виду дороговизны, небезопасного протокола и сложности реализации. Хотелось чего то простого с минимумом компонентов, со своей логикой и дешёвого. Не давно заказал 2 штуки esp8266 просто для забавы, не зная, чего конкретного с ними можно сделать. После 2-х вечеров разборок с чипом вспомнил незавершённое дело с кнопкой и решил довести до логического конца.

    На данный модуль уже существует некоторое количество прошивок, так же вы можете писать прошивку под себя, используя SDK, но не стал вникать в подробности написания, т.к. после изучения API nodeMCU понял, что данного функционала мне хватает с запасом и прошил оба модуля.

    Железо

    Себестоимость важный фактор для простого выключателя, так что пытался использовать как можно меньше частей. Решил сделать из того что было дома, но пришлось купить твердотельное реле. Кстати, «релюшка» стоит дороже wifi модуля и ее можно заменить на оптопару, симистор и обвязку, схемы включения легко ищутся в интернете. Был случай, когда плохой контакт в патроне лампочки выбил симистор на коротко. Посмотрим, как покажет себя оптореле, ведь раньше с ними не работал. Стоит учесть для большой нагрузки установка радиатора обязательна.

    Тут сразу столкнулся с проблемой, если на gpio при включении он уходил на землю, плата переходила или в режим прошивки или в непонятный режим, т.к кнопка у нас нормально разомкнута, с ней переделывать нечего не стал и так и оставил замыкаться на землю, а оптореле повесил на плюс через резистор и включал подачей 0, выключал подачей 1, соответственно. В итоге получилась такая схема:

    Внимание схему стоит улучшить! Выход на реле стоит подать через транзистор, а кнопку подтянуть через резистор от плюса. Ингредиенты получились такие:

    • выключатель;
    • пружинка(для переделки выключателя в кнопку);
    • сам esp8266;
    • твердотельное реле использовал(S202T02);
    • платка для конструирования;
    • резистор 470 Ом;
    • провода;
    • разъемы по вкусу;
    • зарядка от телефона 400мА 5v;
    • стабилизатор 1117 3.3v;
    • пара конденсаторов.

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

    nodeMCU

    Прошивка использует Lua язык программирования, данный язык похож чем то на Javascript. Версия ещё сыроватая, но уже базовый функционал вполне не плохо реализован. Сразу после загрузки модуль начинает исполнять файл скрипт init.lua, в чистой прошивке этого файла нет, вам приходиться его создать руками. Все операции можно осуществлять через консоль подключенным к «com» порту, для упрощения заливки файлов в модуль есть скрипт luatool. Заливка работает следующим образом и данный код полностью показывает процесс записи в файл.

    Пример чтения конфигурационного файла. Выглядит не очень. Может есть и другой вариант сериализованных данных.

    Пример цикла с использованием API с паузой в 1000 миллисекунд представлен ниже:

    Работа с GPIO

    Если у вас модель модуля ESP-01 новой ревизии, то вам доступно всего 2 gpio, не прибегая к грязному хаку.

    Решил отказаться от такого хака и воспользоваться тем, что есть.

    Один gpio кнопка и второй выход на твердотельное реле. Есть еще Tx, но заставить работать как gpio у меня не получилось, и для индикации я просто передаю сообщения в консоль print(). Пока закостылил именно так. Чем длиннее сообщение, тем дольше и ярче вспыхивает светодиод. Владельцы данной модификации пролетают лесом и с такими функциями как (node.key, node.led), т.к. они могут использовать только GPIO16, который тоже не разведен на плате.

    Все gpio могут работать в нескольких режимах (OUTPUT, INPUT, INT), но интересно то, что функция gpio.read(), прежде чем считать, подает низкий уровень, даже если установлен режим OUTPUT. То есть, чтобы получить текущее состояние выхода, это не подходит. Пришлось использовать внешнюю переменную и писать две функции для удобства, а уже через переменную определять активность.

    В качестве событий можно использовать callback gpio.trig(pin, type, function(level)), второй параметр может принимать следующие значения «up», «down», «both», «low», «high». Тут, кажется, все ясно. Если у вас вывод находится в состоянии 1 и мы его опускаем на землю, срабатывает down, потом при поднятии срабатывает up, но, к моему сожалению, такого не происходило, в консоли я видел только down в зависимости от скорости нажатия кнопки событие срабатывало 1 или 2 раза. Решил поставить цикл с паузой и бряк по 1 на gpio.

    Но пауза не отработала, а без паузы устройство уходило в перезагрузку. Зато print(i) вносил хорошую задержку. Сделал через tmr.alarm, но в текущий момент активный цикл может быть только один, что не очень подходит.

    HTTP сервер

    Сервер запускается как 2 пальца, но никакого массива параметров запроса не получите. Пока непонятно, как оптимальнее: или писать свой велосипед, или find по подстроке. Согласитесь, выглядит ужасно. В данном примере ищется 2 параметра key и mode=off,on,party. Последний режим – это простое мигание лампочкой каждые 200мс, можно поставить и побыстрее, но побоялся за лампочку и оптореле.

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

    Для подключения в качестве клиента хватит такого кода, ip получим по DHCP:

    В третьем примере видно, как можно определить, подключилась точка или нет. Другие режимы wifi я не использовал, так что возможны подводные камни.

    В целом, с небольшими хитростями (костылями) была написана логика простого выключателя. А кнопкой можно управлять прямо из консоли. Поставив программу BetterTouchTool, можно комбинацией клавиш «curl`ить» сервер выключателя. Нашлось применение кнопке EJECT.

    Резюме

    Нисколько не жалею, что выбрал nodeMCU: не пришлось залезать в дебри официального SDK. Не надо каждый раз компилировать код, а саму программу легко разбить на модули и заливать отдельными кусочками. За это пришлось поплатиться иногда непонятным поведением. Главное, что вся логика находится на самом выключателе, и он при недоступности wifi будет выполнять свою главную функцию, ну, только если сгорит. Самому проекту nodeMCU я желаю скорейшего развития и в дальнейшем попробую сделать что-нибудь ещё, благо остался еще один модуль.

    Источник

    Читайте также:  Браслет с буквами имени своими руками
    Оцените статью