Продолжая цикл статей о WiFi-модулях ESP8266 расскажу как сделать очень бюджетную WiFi розетку

Для этого нам нужно:

  • Любая внешняя розетка, в которой есть свободное место
  • ESP8266 практически любой модификации (Я использовал ESP8212E с терминальной платой для удобства монтажа)

$1

  • Малогабаритный блок питания на 3.3В (можно этот или 5В с дополнительным линейным стабилизатором до 3.3)
  • Итого, бюджет $5-$8 в зависимости от выбора компонентов

    Схема нашей WiFi розетки будет такой

    Собираем все внутри корпуса розетки

    Включаем розетку, а в нее лампу в 25Вт. Теперь можно подключаться с компьютера/планшета/телефона к нашей розетке по HTTP

    Подключаюсь с планшета к веб-серверу ESP-шки по имени или IP-адресу

    Видео работы WiFi розетки

    А это мечтающий об умном доме кот )))

    Платформы: Windows 8
    Лицензия: Freeware
    Дата: 14.11.2015

    101 комментарий на «Делаем недорогую WiFi розетку на ESP8266»

    Спасибо огромное за скетч. Не могли бы вы сделать версию с 2мя кнопками под 2 реле, чтобы можно было разобраться как добавлять новые реле.

    P.S. и еще у меня почему-то не работает адрес который выдается в мониторе порта, подключиться удается только по http://192.168.1.4

    Вместо строки:
    Serial.printf( «HTTP server ok! Open http://%s.local in your browser
    », host);

    Пишем строку:
    Serial.println(WiFi.localIP());

    Итого в мониторе будет виден IP ESP, который используем вместо ссылки.

    П.С. Эти реле работают только с переменным током.

    Еще полезно добавить статический IP:

    После const char* password = «***»; добавляем:
    IPAddress ip(192,168,1,128); //Статический IP
    IPAddress gateway(192,168,1,1); //IP роутера
    IPAddress subnet(255,255,255,0); //маска

    После WiFi.begin(ssid, password); добавляем:
    WiFi.config(ip, gateway, subnet);

    Спасибо.
    Прошил скетч.
    В терминале: HTTP server ok! Open http://esp8266-power.local in your browser
    На мой взгляд это абсолютно сбивающее с толку сообщение.
    Лучше б оно выдавало адрес в локальной сети, а то я пол часа потратил, пока запустил веб-интерфейс.
    Использовал сторонний сканер ай-пи что б выловить адрес нашего девайса.
    Разве в термнал не может выводиться его значение?
    Спасибо.

    «В терминале: HTTP server ok! Open http://esp8266-power.local in your browser На мой взгляд это абсолютно сбивающее с толку сообщение.
    Лучше б оно выдавало адрес в локальной сети»

    Добавь вместо строки:
    Serial.printf( «HTTP server ok! Open http://%s.local in your browser
    », host);

    Итого в мониторе будет виден IP ESP.

    И ещё два неприятных момента из моих наблюдений.
    1-й.
    После РЕСЕТа розетка принимает ВЫКЛЮЧЕННОЕ состояние, хотя до РЕСЕТа была включена.

    2-й.
    Во время РЕСЕТа светодиод мна управляющем пине мигает. Значит, если в реальной жизни к розетке подключён, к примеру, привод гаражных ворот, то ворота или приоткроются или вообще неснкционированно откроются, что не есть хорошо.

    Во время загрузки и прошивки порты ESP принимают неопределенное состояние. Попробуйте подтягивающий резистор на землю поставить

    не могу загрузить, выдаёт ошибку в этой строке

    Ошибку то какую? Не найдена функция?
    Библиотеки?
    Версия Arduino IDE?

    я начинающий, и это мой первые попытки знакомства с arduino
    а ошибку пишет так:

    exit status 1
    ‘HTTP_handleRoot’ was not declared in this scope

    Читал, что на последних версиях Arduino IDE глючит Core ESP8266
    Попробуйте версию 1.6.5

    спосибо, на 1.6.5 всё работает…

    На самом деле функцию HTTP_handleRoot просто нужно разместить до того, как она будет использована.

    С прошивкой от homes-smart.ru будет эта схема работать?

    Меня мучает вопрос, каким образом реле на 5В управляется напрямую напряжением 3.3В?
    Везде пишут, что для этого надо подключать его через транзистор и дополнительный источник питания на 5В. Не хочется заморачиваться с дополнительным питанием, потому и спрашиваю.

    Это реле состоит из оптопары и симистора, к ней подключенного.
    Оптопара открывается загоранием светодиода. В цепи светодиода стоит ограничивающий резистор. При 3.3В на управляющем светодиоде ток меньше чем при 5В, но достаточный для открытия симистора.

    Прошу прощения, не заметил ссылки на статью про это реле, что оно работает и от пониженного напряжения.

    Спасибо за статью.Залил в Node MCU.Адрес пришлось через роутер узнавать.Добавить еще пару команд и можно дистанционно управлять роботом ))

    а с esp8266 esp-14 не сталкивались?

    Нет. Да и не вижу в нем особой радости. Это для любителей АТ-команд.

    я начинающий. скажите а какое реле можно использовать, чтобы не 220V наргрузку, а постоянный ток 12v.
    Спасибо

    Либо любое механическое реле. (Только они в большинстве своем питаются от 5 В и выше), либо мощный MOSFET транзистор. Причем вторым можно настроить диммирование 12В, то есть если у вас лента светодиодная, управлять яркостью

    У мены несколько блоков реле. Механические, синие. Самые распространенные, расчитанные на 5В по управлению. В общем начинают срабатывать от 3.1, и на 3.3 уверенно отрабатывают. Причем для опытов я не только управляющий сигнал подавал 3.3 Вольта на оптопары, но и саму обмотку запитывал от 3.3.

    Заметил следующее- реле срабатывает (мое, механическое) если на вход подать логический ноль (на GND т.е. замкнуть).
    Соответственно работает инверсно. Т.е . пишет состояние «выключено», когда оно включено, и наоборот. Но это подправить не проблема. Смущает, как уже выше упоминалось, что плата при отключении питания (иммитация отключения света) НЕ запоминает состояние. В моем случае (управление нулем) реле переходит в состояние ВКЛ. Т.е если, предположим, управляем поливом воды на даче, то если свет перемигнул, то реле перейдет в состояние ВКЛ (предположим было ВЫКЛ до пропадания электричества) и зальет весь огород.
    Ведь я-то не проверяю состояние регулярно в телефоне.
    Можно, конечно инвертировать управление, но тогда все равно я буду думать что включил полив огорода….засеку например часа три и буду выключать воду. А окажется что электричество пропадало сразу же и полива по факту не было.

    PS: возможно можно в вебсервере врисовать еще и его uptime, по которому ориентироваться когда был ребут платы.

    Видел такую схему. С питания диод шоттки + большой электролит. А один из входов на питание до диода.
    Вся периферия сильноточная тоже до диода. Получается следующее. При выключении питания вся периферия вырубается, а контроллеру еще есть драгоценные секунды, пока электролит держит. Вход, что к питанию подключен фиксирует что напряжение пропало и контролер валит текущее состояние в EEPROM.
    А потом при возобновлении питания восстанавливает состояние из EEPROM

    А почему нельзя писать в EEPROM при установке состояния? Там ограниченное количество перезаписи?

    Можно и так
    EEPROM имеет ограниченное количество циклов записи. Например, у той что большинстве ESP — 100000, так что «на наш век хватит», если не выключать много раз в секунду.
    На крайний случай, ставится хороший кондер по питанию и один вход через диод заводится на питание.
    При пропадании питания на этом входе производится запись в EEPROM до того как микроконтроллер выключится.

    Есть еще один вариант — использовать бистабильное реле. Валялось у меня такое с серебряными контактами, советского образца))). Там две переключающие катушки, вроде на 220в, перемотал их на 5в., собрал схему на мосфетах с таймером (реле срабатывает после полу-секундной задержки, иначе щелкало бы при включении т.к. у меня ESP-01) одинаковые для каждой катушки. Управляется реле секундными импульсами от выводов GPIO0 и GPIO2. Получилась механическая память)

    Алексей, спасибо за полезную и рабочую штуку! А как все-таки сделать, чтобы реле было 2 (или несколько, если пользовать ESP с большим количеством gpio)? Для чайников дайте, пожалуйста, понятное объяснение, как добавлять в скетч нужные строчки!
    Спасибо.
    С уважением,
    Дмитрий

    Подключите ко второму GPIO и управляйте им. Это основы программирования, тут не объяснишь в двух словах )))

    Приветствую алексей. Пробую организовать гет запрос на примере вашего проекта. Подскажите, что не так? Не идёт гет отправка на страницу. Вы как бывалый программист должны знать.
    Вот код. Я добавил всего две строчки.
    #include
    #include
    #include
    #include

    // GPIO, куда подцелено реле
    uint8_t PowerPin = 2;
    bool PowerOn = false;

    // Имя хоста
    const char* host = «esp8266-power»;
    // Вместо звездочек свои параметры WiFi сети
    const char* ss > const char* password = «hotswf»;

    WiFiClient client;
    IPAddress ip1(192,168,83,80);

    if (!client.connect(ip1, 80)) <
    Serial.println(«Connection %s failed»);
    >
    String out1 = «GET http://192.168.83.80/site1.ru/www/index.php?t=32 HTTP/1.1

    »;
    client.print(out1);

    // Последовательный порт для отладки
    Serial.begin(115200);
    Serial.printf(«

    Free memory %d
    »,ESP.getFreeHeap());

    // Инициализация выхода реле
    pinMode(PowerPin , OUTPUT);
    digitalWrite(PowerPin , PowerOn);

    // Подлючение к WiFi

    WiFi.mode(WIFI_AP_STA);
    WiFi.begin(ssid, password);
    if(WiFi.waitForConnectResult() == WL_CONNECTED) <
    // Запуск WEB-сервера
    MDNS.begin(host);
    server.on ( «/», HTTP_handleRoot );
    server.onNotFound ( HTTP_handleRoot );
    server.begin();
    Serial.printf( «HTTP server ok! Open http://%s.local in your browser
    », host);
    >
    else <
    Serial.printf(«WiFi started is fail»);
    >

    void loop() <
    server.handleClient();
    delay(50);
    >

    /*
    * Оработчик главной страницы сервера
    */
    void HTTP_handleRoot(void) <
    bool stat = false;

    if( server.hasArg(«stat») ) <
    if( strncmp(server.arg(«stat»).c_str(),»1″,1) == 0 )stat = true;
    >
    else <
    stat = PowerOn;
    >

    if( stat ) <
    out+=»
    Состояние: Включено
    Выключить
    «;
    >
    else <
    out+=»
    Состояние: Выключено
    Включить
    «;
    >
    out+= «

    «;
    server.send ( 200, «text/html», out );
    if( stat != PowerOn ) <
    PowerOn = stat;
    digitalWrite(PowerPin , PowerOn);
    if( PowerOn )Serial.println(«Power is ON»);
    else Serial.println(«Power is OFF»);
    >

    Вполне вероятно, что переменная client не проинициализирована в тот момент, когда её пытаетесь позвать.
    Попробуйте
    WiFiClient client = server.available();
    а потом уже что-то посылать, но есть ощущение, что врядли этот GET пройдёт.
    GET я так понял нужно с web клиента делать, а не с WiFiClient`а.
    Надеюсь, я ошибаюсь.

    А возможно как-нибудь сделать управление этой розеткой с приложения E-control
    http://4pda.ru/forum/index.php?showtopic=573779&st=3580

    Если HTTP запрос сможете настроить.
    А так посмотрел ссылку — китайсая проприоритарщина закрытая

    Добрый день не могу скомпелировать WiFi_power.ino версия 1.6.5 дает ошибки
    Arduino: 1.6.5 (Windows XP), Плата»Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None»

    Изменена опция сборки, пересобираем все
    WiFi_power.ino: In function ‘void setup()’:
    WiFi_power:22: error: redefinition of ‘void setup()’
    sketch_mar25a:1: error: ‘void setup()’ previously defined here
    WiFi_power.ino: In function ‘void loop()’:
    WiFi_power:50: error: redefinition of ‘void loop()’
    sketch_mar25a:6: error: ‘void loop()’ previously defined here
    redefinition of ‘void setup()’
    версия 1.6.7
    Arduino: 1.6.7 (Windows XP), Плата:»Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 1M (512K SPIFFS), ck, Disabled, None»

    Читайте также:  Броши из бисера и пайеток на фетре

    In file included from c:documents and settingsadminlocal settingsapplication dataarduino15packagesesp8266 oolsxtensa-lx106-elf-gcc1.20.0-26-gb404fb9-2xtensa-lx106-elfincludec++4.8.2memory:63:0,

    from C:Documents and SettingsAdminLocal SettingsApplication DataArduino15packagesesp8266hardwareesp82662.1.0-rc2librariesESP8266WiFisrc/WiFiClient.h:24,

    from C:Documents and SettingsAdminLocal SettingsApplication DataArduino15packagesesp8266hardwareesp82662.1.0-rc2librariesESP8266WiFisrc/ESP8266WiFi.h:39,

    c:documents and settingsadminlocal settingsapplication dataarduino15packagesesp8266 oolsxtensa-lx106-elf-gcc1.20.0-26-gb404fb9-2xtensa-lx106-elfincludec++4.8.2itsallocator.h:46:75: fatal error: bits/c++allocator.h: No such file or directory

    #include // Define the base class to std::allocator.

    Что делать посоветуйте может какую другую версию Arduino IDE предложите качал с оф сайта https://www.arduino.cc/en/Main/Software. Помогите я в программировании не силен.

    Я увидел параметр сборки «Версия 1.6.7». Нормально работает ESP Core for Arduino IDE под версию 1.6.5

    Я пробовал и 1.6.5 посмотрите в начале ошибки 1.6.5

    Arduino: 1.6.5 (Windows XP), Плата»Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None»

    Изменена опция сборки, пересобираем все
    WiFi_power.ino: In function ‘void setup()’:
    WiFi_power:22: error: redefinition of ‘void setup()’
    sketch_mar25a:1: error: ‘void setup()’ previously defined here
    WiFi_power.ino: In function ‘void loop()’:
    WiFi_power:50: error: redefinition of ‘void loop()’
    sketch_mar25a:6: error: ‘void loop()’ previously defined here
    redefinition of ‘void setup()’

    Мне кажется, в папке со скетчем лежит два файла имеющих setup() и loop()

    Спасибо Вы были правы два фйла. Прошлась но ничего в WiFi не появилось. Может сначала прошить чем нибудь стандартным ? Чем посоветуете?
    Вот что при прошивке говорит:
    Sketch uses 248 796 bytes (57%) of program storage space. Maximum is 434 160 bytes.
    Global variables use 36 652 bytes (44%) of dynamic memory, leaving 45 268 bytes for local variables. Maximum is 81 920 bytes.
    Uploading 252944 bytes from C:DOCUME

    Спасибо огромное перепрошил ECP залил прогу и все заработало!

    Спасибо! Классно работает!

    А как можно привязать к MQTT серверу с вашим скриптом (с сохранением веб странички)? Перерыл вес гитхуб, ничего не нашел.

    Поставить туда MQTT библиотеку
    Сходу нашлось это и это

    В принципе большинство ардуиновских библиотек, если они не «низкоуровневые» переносятся на ESP8266 без проблем

    Да, по этим линкам я уже тоже бывал. Проблема в том что в коде я ничего не соображаю, как связать два проекта в один для меня тёмный лес. В наличии имеется парочка таких вот бутербродов http://mysku.ru/blog/aliexpress/38586.html и парочка Sonoff HT.

    Этот проект вроде совмещает оба удовольствия но у меня не компилется, ругается на «callback»

    Возьмите прошивку HOME-SMART как в этой статье
    Возможно для ваших задач бесплатной версии хватит. В крайнем случае, заплатите 100 руб на развитие проекта и получите полную версию

    Очень богатый функционал и ничего не нужно программировать

    Там получаю ошибку

    mqtt-0 2016-04-21 17:15:03 error Cannot parse <«system»:<«hostname»:»ESP000CD343″,»uptime»:3,»rssi»:-57,»freemem»:33720>,»sensors»:>,»gpio»:<«12″:0,»13»:0>>
    mqtt-0 2016-04-21 17:15:03 info Client [ESP8266000cd343] subscribes on topic «timestamp»
    mqtt-0 2016-04-21 17:15:03 info publishOnSubscribe send all known states
    mqtt-0 2016-04-21 17:15:03 info Client [ESP8266000cd343] subscribes on «ESP000CD343.#» with regex /^mqtt.0.ESP000CD343..*/
    mqtt-0 2016-04-21 17:15:03 info Client [ESP8266000cd343] subscribes on «ESP000CD343.#» with regex /^ESP000CD343..*/
    mqtt-0 2016-04-21 17:15:03 info Client [ESP8266000cd343] connected
    mqtt-0 2016-04-21 17:11:51 info Starting MQTT server on port 1883

    12 — пин релюшки
    13 — пин светодиода

    Чтоб не ломать голову какой там локальный IP Просто добавьте такую команду » Serial.println(WiFi.localIP()); »
    после того как модуль отчитается о том что подключился к вашей локалке в порт вылетит локальный IP и всё заработает.

    Какие резисторы нужны (лучше ссылку на али)
    Сам на али нашёл набор из 30 видов по 10 шт всё за 100 руб
    Но наверное ,я больше половины из них не придумаю как использовать.
    (Работу резисторов и ост буду изучать во время их пути ко мне)

    На первое время набор сгодиться. Потом закажите те, которые кончатся. Хотя, если недалеко есть радиолавка, то резисторы можно и там покупать. Выходят аза в два дороже чем на Али, зато берете только те, которые нужно

    Да, да, да. Еще одна. Понимаю, всем надоело. Но очень уж хотелось сделать самому, свою собственную «умную» розетку, с лото и курсистками. Встраиваемую (в доме — скрытая проводка). С управлением через WiFi (локально) и Интернет (глобально). С получением текущего статуса (в перспективе — с информацией о потреблении). С подключением нескольких розеток в одном блоке (до четырех). С датчиками температуры, освещенности и присутствия. С видеокамерой, в конце концов!

    Первая часть — просто проверяем общую работоспособность схемы. По сути — некий аналог WeMo Switch, только встраиваемый в стандартный подрозетник и потому не привязанный к какому-то определенному дизайну (чтобы вписаться в любой уже существующий интерьер).

    Итак, чего хочется? Хочется управлять независимо каждой из четырех розеток (у меня дома в одной из комнат розетки объединены в блоки по два двухрозеточных модуля вплотную друг к другу, в двух стандартных пластиковых подрозетниках соответственно). К одному из таких блоков подключены все агрегаты (освещение, насос фильтра, нагреватель, компрессор) аквариума с красивым парчовым сомиком, вот ими и будем управлять. Сомик вот такой, если что (картинка для привлечения внимания):

    Итак, что нам надо?
    1. Получать команды через WiFi и выдавать соответствующие управляющие сигналы на замыкание контактов. Т.е. нужен модуль контроллера с WiFi. Поскольку у меня есть наша платка на AR9331 (рояль в кустах, да: собственно, изначально и хотелось ее в реальном деле опробовать), она и будет таким контроллером.

    2. Реле на 16A 220V. Чтобы не заморачиваться — взял готовый модуль от Амперки. Заодно там и светодиод есть для индикации режима работы розетки.

    3. Питать эти два модуля напряжением 5V. Разобрал компактный блок питания с разъемом USB.

    4. Подрозетник глубиной 60мм.

    5. Собственно розетка (пока для экспериментов взял первую попавшуюся в соседнем хозяйственном магазине):

    6. Светодиод для индикации режима работы розетки (On/Off). Нашел у себя в тумбочке зеленый и красный. Сначала хотел использовать зеленый (цвет больше нравится), но он оказался недостаточно ярким, так что в результате взял красный.

    Прикинул схему (примитивная, да):

    Нарезал проводов, запаял:

    Отрезал куски термоусадочных трубок, заизолировал модули:

    Запихал все в подрозетник, подсоединил кабель, подключил к розетке. Пока в стенку еще рано пихать, надо на столе отладиться.

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

    Испытательный стенд готов.

    Софт для первоначальной простой проверки взял из поста ув. Ariman’а.

    Ну что же… Как ни удивительно, но все работает. Реле щелкает, светодиод моргает, электричество в розетку подается. Первый шаг сделан. Времени ушло где-то часа полтора в общей сложности. Денег:
    1. Контроллер на AR9331 — не знаю даже, как оценивать. Пусть будет 750р — по такой цене мы его продавать собираемся, когда партию сделаем.
    2. Модуль реле — 290р.
    3. Блок питания — ну, пусть будет 200р (видел в переходе подземном по такой цене, мой-то у меня уже пару лет валялся).
    4. Подрозетник — 45р.
    5. Розетка — 120р.

    Теперь надо довести до ума софт (прежде всего — прошивку). Об этом — в следующей части, если народу будет интересно. А потом буду подключать датчики и еще три модуля реле, чтобы управлять четырьмя розетками, а не одной.

    P.S. Видеокамеру подключил — работает, куда она денется? Но надо ее как-то в интерьер вписывать, еще не придумал — как… И в плане софта — надо поток в Интернет научиться транслировать, а не только в локалку.

    Читают сейчас

    Похожие публикации

    • 6 сентября 2019 в 23:48

    Яндекс: умный дом по-взрослому

    Система «Умный дом» своими руками

    Управление светом на ZigBee

    Вакансии

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Комментарии 66

    Не удержался. Иначе остальное не имеет смысла.

    Чёрт, я ещё не знаю, зачем мне такой микрокомпьютер, но уже хочу его купить…
    И почему я новость пропустил…

    как вариант розетку брать не такую а накидную типа:

    мы когда свое мастерили то еще пользовались двойным местом — одно под розетку, другое под электронику с заглушкой

    Ну, именно с силовой розетки — текущее потребление, например.

    А так, розетка с контроллером внутри может собирать кучу инфы вокруг. Освещенность, температура воздуха, наличие движения/присутствия и т.п. Если под боком есть питание (розетка же!) и есть связь — то почему бы этим не пользоваться?

    Вон, даже Ноолайт после долгих лет однонаправленных протоколов начинает какие-то дуплексные устройства в линейку вводить.

    Вы сейчас меня в чем-то непонятном хотите убедить. Типа, «не стоит тратить время на ерунду», наверное? 🙂
    У меня в самом начале статьи есть ссылка на WeMo. В штатах она продается за 50 USD, у нас — за 3000р. И, что характерно, пользуется определенным спросом при всей своей примитивности.

    придется использовать Pi на которой будет крутиться вебсервер, показывающий эти данные

    Этот тезис мне совершенно непонятен. В моей розетке уже есть веб-сервер, без всякой RPi.

    Думаю, стоит удешевлять производство, чтобы конкуррировать с Китаем

    По поводу Pi — управлять тремя розетками, каждую со своим IP, через вебсервер это не очень удобно, мне кажется. Логики выключения от «я ушел бухать» по NFC — тоже не реализовать таким.
    прошу прощения, по «1. Контроллер на AR9331 — не знаю даже, как оценивать. Пусть будет 750р — по такой цене мы его продавать собираемся, когда партию сделаем.» я подумал что Вы планируете продавать всю розетку целиком, а не радиомодуль.

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

    Ну, розетка с управлением через WiFi и у китайцев стоит баксов 30-35 обычно. Так что если на нашем модуле сделать (а себестоимость у него 12 USD в Китае), то и в этом случае мы вполне конкурентны будем по цене. 🙂
    Но вот в данном конкретном посте я именно про свою личную самоделку написал.

    например включение вытяжки в ванной при повышении влажности

    Судя по вашему рассказу и описанию с сайта Амперки, в силовом шилде использовано обычное (электромагнитное) реле. Опять таки, из описания кейса я понял, что нагрузка будет подключаться не на пять минут в день, а на довольно продолжительные отрезки времени.
    В этой связи вопрос — не будет ли разумнее отказаться от электромагнитного реле в пользу твердотельного?
    Меня не столько напрягает расход энергии на удержание якоря реле, сколько его возможный нагрев.
    Если решитесь на эксперимент по замене — проделать это будет несложно: вроде бы есть твердотельные реле, по распиновке и форм-фактору идентичные тому, что стоит на «амперочной» плате. А может даже удастся выиграть в габаритах.

    Читайте также:  Колодец без бетонных колец

    Мы не зануды. Мы педанты. (с)

    Согласитесь, что проблема больших нагрузок решается правильным подбором компонентов (как в случае с э/м реле, так и для твердотельных). С десятикратным запасом по мощности, конечно, никто реле ставить не будет, но 2-3 раза ИМХО — норма.

    на крайний случай можно дополнительно предусмотреть автоматическое выключение при превышении определенного тока в управляемой цепи
    ну или по-пролетарски поставить плавкий предохранитель в цепь нагрузки

    По поводу стоимости решения — полностью согласен.

    По поводу сопротивления канала 1Ом в недорогих твердотельных реле — спасибо, открыли глаза! Честно говоря, не думал, что так много, а в даташит поленился заглянуть.

    Это характеристика простого полевого транзистора вроде IRF830, достаточно дешевого. Есть конечно и подороже но ценник от сопротивления канала на таком напряжении начинает расти в геометрической прогрессии. Можно ещё IGBT попробовать, но рассеиваемая мощность такая же как у симистора, преимущества над полевиками — только на больших токах, проблем для управления ими на переменном токе тоже достаточно.

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

    1. Контроллер на AR9331 — не знаю даже, как оценивать. Пусть будет 750р — по такой цене мы его продавать собираемся, когда партию сделаем.

    Дороговато, не проще ли купить такую штуку mysku.ru/blog/aliexpress/26886.html на RT5350, поставить туда OpenWRT, написать небольшую доделку в web-интерфейсу для дерганья GPIO и будет счастье.

    GPIO7 — USB Power

    Он что, умеет управлять программно питанием на USB гнезде? Если так, то даже разбирать не нужно — воткнуть реле в USB и все. Кто может подтвердить/опровергнуть?

    Спасибо, продолжайте. Хотя, если честно, не особо понял смысл управления розеткой. Управлять кмк все же нужнее оборудованием. В остальном, как аквафанат — с нетерпением жду продолжения автоматизации и уверен, что почерпну для себя много нового. Вот, например немного моего (и не моего):
    1) Внутренности тумбочки (
    2) Система охлаждения на контроллере температуры (его не видно, он за аквасом)
    3) Кондуктометрический датчик уровня воды в аквариуме, который является частью системы на фото 4 и 5
    4-6) Система автоматического слива/долива воды в аквариум.

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

    Да, не вопрос. Только чуть попозже 🙂 Суть была такова, что нужно было собрать ее из деталей, доступных, в случае поломки, здесь и сейчас. Основана она на компонентах из магазина фильтров «Гейзер» (блок питания, шланги, электромагнитные клапана, слив в канализацию), реле слива-долива HRH-5, датчике уровня, собранном из магнитного скребка и карбоновых стержней от р/у моделек, китайской помпе ZC-A210 (вроде так), перевернутом СО2-реакторе Ista MaxMix, и розетке-таймере. Все это подключено к внешнему фильтру, что обеспечивает
    Залив свежей воды у меня происходит почти что в трубку внешника, а точнее рядом с лилипайпом, между двумя акваэлевскиими удлиннителями флейты, приютилась незаметная аэрационная насадка той же фирмы. В которую, собственно и подается свежая вода. Так обеспечивается оптимальное перемешивание старой и новой воды, а также не дает температуре воды упасть резко и только в одной половине аквариума. Это позволило полностью исключить из аквариума обогреватель. Его роль отлично выполняют 6 ламп Т8, на таймерах, имитирующие солнце, что также придает более натуральный эффект нагрева воде.
    В общем, роясь в аквариумном оборудовании, коего у меня аж 3 пакета, я вспомнил, что у меня имеется еще один проточный реактор ISTA CO2.

    С не менее отличными угловыми фиттингами. Переворачиваем реактор, на место шланга СО2 крепим шланг для слива, шланг внешника на вход и выход. Сам реактор крепим на штатных присосках к аквариумному стеклу. И дожидаемся, пока из реактора выйдет воздух. Чуть пониже на шланге слива крепим еще один соленоидный клапан, как на доливе.

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

    Так как реактор является теперь узким местом, работающая помпа внешника еще больше нагнетает давление и напор струи слива воды становится сравним с напором долива. Если кому-то мало напора, добавить в систему внешнюю помпу — дело пары минут.
    Вода сливается примерно полчаса. Потом таймер отключает электромагнитный клапан слива.
    Как только уровень воды доходит до нижнего датчика, реле автодолива HRH-5 включает электромагнитный клапан долива и наполняет аквариум до верхнего датчика.
    При желании, с помощью обычного пластикового тройника от компрессора, можно обойтись всего одним шлангом.

    А вот как это все выглядит со стороны. Длина шлангов, проложенных под плинтусом до кухни — 15 метров. На первом фото — процесс тестирования в раковине 🙂

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

    Кто знает, какие есть законодательные требования к девайсам, которые постоянно стоят подключенными к 220 без присмотра? Интересно не только в России, но и в других странах.

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

    А что сейчас грамотно можно оставлять постоянно включенным? Скажем некоторые блоки питания от рутеров есть с термопредохранителями — на них символ такой нарисован и температура указана. Это добровольная забота производителя, или законодательное? А то окажется, что по закону все эти китайские блоки питания пригодны только для работы под постоянным присмотром пользователя.

    Продолжая цикл статей о WiFi-модулях ESP8266 расскажу как сделать очень бюджетную WiFi розетку

    Для этого нам нужно:

    • Любая внешняя розетка, в которой есть свободное место
    • ESP8266 практически любой модификации (Я использовал ESP8212E с терминальной платой для удобства монтажа)

    $1

  • Малогабаритный блок питания на 3.3В (можно этот или 5В с дополнительным линейным стабилизатором до 3.3)
  • Итого, бюджет $5-$8 в зависимости от выбора компонентов

    Схема нашей WiFi розетки будет такой

    Собираем все внутри корпуса розетки

    Включаем розетку, а в нее лампу в 25Вт. Теперь можно подключаться с компьютера/планшета/телефона к нашей розетке по HTTP

    Подключаюсь с планшета к веб-серверу ESP-шки по имени или IP-адресу

    Видео работы WiFi розетки

    А это мечтающий об умном доме кот )))

    Платформы: Windows 8
    Лицензия: Freeware
    Дата: 14.11.2015

    101 комментарий на «Делаем недорогую WiFi розетку на ESP8266»

    Спасибо огромное за скетч. Не могли бы вы сделать версию с 2мя кнопками под 2 реле, чтобы можно было разобраться как добавлять новые реле.

    P.S. и еще у меня почему-то не работает адрес который выдается в мониторе порта, подключиться удается только по http://192.168.1.4

    Вместо строки:
    Serial.printf( «HTTP server ok! Open http://%s.local in your browser
    », host);

    Пишем строку:
    Serial.println(WiFi.localIP());

    Итого в мониторе будет виден IP ESP, который используем вместо ссылки.

    П.С. Эти реле работают только с переменным током.

    Еще полезно добавить статический IP:

    После const char* password = «***»; добавляем:
    IPAddress ip(192,168,1,128); //Статический IP
    IPAddress gateway(192,168,1,1); //IP роутера
    IPAddress subnet(255,255,255,0); //маска

    После WiFi.begin(ssid, password); добавляем:
    WiFi.config(ip, gateway, subnet);

    Спасибо.
    Прошил скетч.
    В терминале: HTTP server ok! Open http://esp8266-power.local in your browser
    На мой взгляд это абсолютно сбивающее с толку сообщение.
    Лучше б оно выдавало адрес в локальной сети, а то я пол часа потратил, пока запустил веб-интерфейс.
    Использовал сторонний сканер ай-пи что б выловить адрес нашего девайса.
    Разве в термнал не может выводиться его значение?
    Спасибо.

    «В терминале: HTTP server ok! Open http://esp8266-power.local in your browser На мой взгляд это абсолютно сбивающее с толку сообщение.
    Лучше б оно выдавало адрес в локальной сети»

    Добавь вместо строки:
    Serial.printf( «HTTP server ok! Open http://%s.local in your browser
    », host);

    Итого в мониторе будет виден IP ESP.

    И ещё два неприятных момента из моих наблюдений.
    1-й.
    После РЕСЕТа розетка принимает ВЫКЛЮЧЕННОЕ состояние, хотя до РЕСЕТа была включена.

    2-й.
    Во время РЕСЕТа светодиод мна управляющем пине мигает. Значит, если в реальной жизни к розетке подключён, к примеру, привод гаражных ворот, то ворота или приоткроются или вообще неснкционированно откроются, что не есть хорошо.

    Во время загрузки и прошивки порты ESP принимают неопределенное состояние. Попробуйте подтягивающий резистор на землю поставить

    не могу загрузить, выдаёт ошибку в этой строке

    Ошибку то какую? Не найдена функция?
    Библиотеки?
    Версия Arduino IDE?

    я начинающий, и это мой первые попытки знакомства с arduino
    а ошибку пишет так:

    exit status 1
    ‘HTTP_handleRoot’ was not declared in this scope

    Читал, что на последних версиях Arduino IDE глючит Core ESP8266
    Попробуйте версию 1.6.5

    спосибо, на 1.6.5 всё работает…

    На самом деле функцию HTTP_handleRoot просто нужно разместить до того, как она будет использована.

    С прошивкой от homes-smart.ru будет эта схема работать?

    Меня мучает вопрос, каким образом реле на 5В управляется напрямую напряжением 3.3В?
    Везде пишут, что для этого надо подключать его через транзистор и дополнительный источник питания на 5В. Не хочется заморачиваться с дополнительным питанием, потому и спрашиваю.

    Это реле состоит из оптопары и симистора, к ней подключенного.
    Оптопара открывается загоранием светодиода. В цепи светодиода стоит ограничивающий резистор. При 3.3В на управляющем светодиоде ток меньше чем при 5В, но достаточный для открытия симистора.

    Прошу прощения, не заметил ссылки на статью про это реле, что оно работает и от пониженного напряжения.

    Читайте также:  Каким клеем приклеить флизелиновые обои

    Спасибо за статью.Залил в Node MCU.Адрес пришлось через роутер узнавать.Добавить еще пару команд и можно дистанционно управлять роботом ))

    а с esp8266 esp-14 не сталкивались?

    Нет. Да и не вижу в нем особой радости. Это для любителей АТ-команд.

    я начинающий. скажите а какое реле можно использовать, чтобы не 220V наргрузку, а постоянный ток 12v.
    Спасибо

    Либо любое механическое реле. (Только они в большинстве своем питаются от 5 В и выше), либо мощный MOSFET транзистор. Причем вторым можно настроить диммирование 12В, то есть если у вас лента светодиодная, управлять яркостью

    У мены несколько блоков реле. Механические, синие. Самые распространенные, расчитанные на 5В по управлению. В общем начинают срабатывать от 3.1, и на 3.3 уверенно отрабатывают. Причем для опытов я не только управляющий сигнал подавал 3.3 Вольта на оптопары, но и саму обмотку запитывал от 3.3.

    Заметил следующее- реле срабатывает (мое, механическое) если на вход подать логический ноль (на GND т.е. замкнуть).
    Соответственно работает инверсно. Т.е . пишет состояние «выключено», когда оно включено, и наоборот. Но это подправить не проблема. Смущает, как уже выше упоминалось, что плата при отключении питания (иммитация отключения света) НЕ запоминает состояние. В моем случае (управление нулем) реле переходит в состояние ВКЛ. Т.е если, предположим, управляем поливом воды на даче, то если свет перемигнул, то реле перейдет в состояние ВКЛ (предположим было ВЫКЛ до пропадания электричества) и зальет весь огород.
    Ведь я-то не проверяю состояние регулярно в телефоне.
    Можно, конечно инвертировать управление, но тогда все равно я буду думать что включил полив огорода….засеку например часа три и буду выключать воду. А окажется что электричество пропадало сразу же и полива по факту не было.

    PS: возможно можно в вебсервере врисовать еще и его uptime, по которому ориентироваться когда был ребут платы.

    Видел такую схему. С питания диод шоттки + большой электролит. А один из входов на питание до диода.
    Вся периферия сильноточная тоже до диода. Получается следующее. При выключении питания вся периферия вырубается, а контроллеру еще есть драгоценные секунды, пока электролит держит. Вход, что к питанию подключен фиксирует что напряжение пропало и контролер валит текущее состояние в EEPROM.
    А потом при возобновлении питания восстанавливает состояние из EEPROM

    А почему нельзя писать в EEPROM при установке состояния? Там ограниченное количество перезаписи?

    Можно и так
    EEPROM имеет ограниченное количество циклов записи. Например, у той что большинстве ESP — 100000, так что «на наш век хватит», если не выключать много раз в секунду.
    На крайний случай, ставится хороший кондер по питанию и один вход через диод заводится на питание.
    При пропадании питания на этом входе производится запись в EEPROM до того как микроконтроллер выключится.

    Есть еще один вариант — использовать бистабильное реле. Валялось у меня такое с серебряными контактами, советского образца))). Там две переключающие катушки, вроде на 220в, перемотал их на 5в., собрал схему на мосфетах с таймером (реле срабатывает после полу-секундной задержки, иначе щелкало бы при включении т.к. у меня ESP-01) одинаковые для каждой катушки. Управляется реле секундными импульсами от выводов GPIO0 и GPIO2. Получилась механическая память)

    Алексей, спасибо за полезную и рабочую штуку! А как все-таки сделать, чтобы реле было 2 (или несколько, если пользовать ESP с большим количеством gpio)? Для чайников дайте, пожалуйста, понятное объяснение, как добавлять в скетч нужные строчки!
    Спасибо.
    С уважением,
    Дмитрий

    Подключите ко второму GPIO и управляйте им. Это основы программирования, тут не объяснишь в двух словах )))

    Приветствую алексей. Пробую организовать гет запрос на примере вашего проекта. Подскажите, что не так? Не идёт гет отправка на страницу. Вы как бывалый программист должны знать.
    Вот код. Я добавил всего две строчки.
    #include
    #include
    #include
    #include

    // GPIO, куда подцелено реле
    uint8_t PowerPin = 2;
    bool PowerOn = false;

    // Имя хоста
    const char* host = «esp8266-power»;
    // Вместо звездочек свои параметры WiFi сети
    const char* ss > const char* password = «hotswf»;

    WiFiClient client;
    IPAddress ip1(192,168,83,80);

    if (!client.connect(ip1, 80)) <
    Serial.println(«Connection %s failed»);
    >
    String out1 = «GET http://192.168.83.80/site1.ru/www/index.php?t=32 HTTP/1.1

    »;
    client.print(out1);

    // Последовательный порт для отладки
    Serial.begin(115200);
    Serial.printf(«

    Free memory %d
    »,ESP.getFreeHeap());

    // Инициализация выхода реле
    pinMode(PowerPin , OUTPUT);
    digitalWrite(PowerPin , PowerOn);

    // Подлючение к WiFi

    WiFi.mode(WIFI_AP_STA);
    WiFi.begin(ssid, password);
    if(WiFi.waitForConnectResult() == WL_CONNECTED) <
    // Запуск WEB-сервера
    MDNS.begin(host);
    server.on ( «/», HTTP_handleRoot );
    server.onNotFound ( HTTP_handleRoot );
    server.begin();
    Serial.printf( «HTTP server ok! Open http://%s.local in your browser
    », host);
    >
    else <
    Serial.printf(«WiFi started is fail»);
    >

    void loop() <
    server.handleClient();
    delay(50);
    >

    /*
    * Оработчик главной страницы сервера
    */
    void HTTP_handleRoot(void) <
    bool stat = false;

    if( server.hasArg(«stat») ) <
    if( strncmp(server.arg(«stat»).c_str(),»1″,1) == 0 )stat = true;
    >
    else <
    stat = PowerOn;
    >

    if( stat ) <
    out+=»
    Состояние: Включено
    Выключить
    «;
    >
    else <
    out+=»
    Состояние: Выключено
    Включить
    «;
    >
    out+= «

    «;
    server.send ( 200, «text/html», out );
    if( stat != PowerOn ) <
    PowerOn = stat;
    digitalWrite(PowerPin , PowerOn);
    if( PowerOn )Serial.println(«Power is ON»);
    else Serial.println(«Power is OFF»);
    >

    Вполне вероятно, что переменная client не проинициализирована в тот момент, когда её пытаетесь позвать.
    Попробуйте
    WiFiClient client = server.available();
    а потом уже что-то посылать, но есть ощущение, что врядли этот GET пройдёт.
    GET я так понял нужно с web клиента делать, а не с WiFiClient`а.
    Надеюсь, я ошибаюсь.

    А возможно как-нибудь сделать управление этой розеткой с приложения E-control
    http://4pda.ru/forum/index.php?showtopic=573779&st=3580

    Если HTTP запрос сможете настроить.
    А так посмотрел ссылку — китайсая проприоритарщина закрытая

    Добрый день не могу скомпелировать WiFi_power.ino версия 1.6.5 дает ошибки
    Arduino: 1.6.5 (Windows XP), Плата»Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None»

    Изменена опция сборки, пересобираем все
    WiFi_power.ino: In function ‘void setup()’:
    WiFi_power:22: error: redefinition of ‘void setup()’
    sketch_mar25a:1: error: ‘void setup()’ previously defined here
    WiFi_power.ino: In function ‘void loop()’:
    WiFi_power:50: error: redefinition of ‘void loop()’
    sketch_mar25a:6: error: ‘void loop()’ previously defined here
    redefinition of ‘void setup()’
    версия 1.6.7
    Arduino: 1.6.7 (Windows XP), Плата:»Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 1M (512K SPIFFS), ck, Disabled, None»

    In file included from c:documents and settingsadminlocal settingsapplication dataarduino15packagesesp8266 oolsxtensa-lx106-elf-gcc1.20.0-26-gb404fb9-2xtensa-lx106-elfincludec++4.8.2memory:63:0,

    from C:Documents and SettingsAdminLocal SettingsApplication DataArduino15packagesesp8266hardwareesp82662.1.0-rc2librariesESP8266WiFisrc/WiFiClient.h:24,

    from C:Documents and SettingsAdminLocal SettingsApplication DataArduino15packagesesp8266hardwareesp82662.1.0-rc2librariesESP8266WiFisrc/ESP8266WiFi.h:39,

    c:documents and settingsadminlocal settingsapplication dataarduino15packagesesp8266 oolsxtensa-lx106-elf-gcc1.20.0-26-gb404fb9-2xtensa-lx106-elfincludec++4.8.2itsallocator.h:46:75: fatal error: bits/c++allocator.h: No such file or directory

    #include // Define the base class to std::allocator.

    Что делать посоветуйте может какую другую версию Arduino IDE предложите качал с оф сайта https://www.arduino.cc/en/Main/Software. Помогите я в программировании не силен.

    Я увидел параметр сборки «Версия 1.6.7». Нормально работает ESP Core for Arduino IDE под версию 1.6.5

    Я пробовал и 1.6.5 посмотрите в начале ошибки 1.6.5

    Arduino: 1.6.5 (Windows XP), Плата»Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None»

    Изменена опция сборки, пересобираем все
    WiFi_power.ino: In function ‘void setup()’:
    WiFi_power:22: error: redefinition of ‘void setup()’
    sketch_mar25a:1: error: ‘void setup()’ previously defined here
    WiFi_power.ino: In function ‘void loop()’:
    WiFi_power:50: error: redefinition of ‘void loop()’
    sketch_mar25a:6: error: ‘void loop()’ previously defined here
    redefinition of ‘void setup()’

    Мне кажется, в папке со скетчем лежит два файла имеющих setup() и loop()

    Спасибо Вы были правы два фйла. Прошлась но ничего в WiFi не появилось. Может сначала прошить чем нибудь стандартным ? Чем посоветуете?
    Вот что при прошивке говорит:
    Sketch uses 248 796 bytes (57%) of program storage space. Maximum is 434 160 bytes.
    Global variables use 36 652 bytes (44%) of dynamic memory, leaving 45 268 bytes for local variables. Maximum is 81 920 bytes.
    Uploading 252944 bytes from C:DOCUME

    Спасибо огромное перепрошил ECP залил прогу и все заработало!

    Спасибо! Классно работает!

    А как можно привязать к MQTT серверу с вашим скриптом (с сохранением веб странички)? Перерыл вес гитхуб, ничего не нашел.

    Поставить туда MQTT библиотеку
    Сходу нашлось это и это

    В принципе большинство ардуиновских библиотек, если они не «низкоуровневые» переносятся на ESP8266 без проблем

    Да, по этим линкам я уже тоже бывал. Проблема в том что в коде я ничего не соображаю, как связать два проекта в один для меня тёмный лес. В наличии имеется парочка таких вот бутербродов http://mysku.ru/blog/aliexpress/38586.html и парочка Sonoff HT.

    Этот проект вроде совмещает оба удовольствия но у меня не компилется, ругается на «callback»

    Возьмите прошивку HOME-SMART как в этой статье
    Возможно для ваших задач бесплатной версии хватит. В крайнем случае, заплатите 100 руб на развитие проекта и получите полную версию

    Очень богатый функционал и ничего не нужно программировать

    Там получаю ошибку

    mqtt-0 2016-04-21 17:15:03 error Cannot parse <«system»:<«hostname»:»ESP000CD343″,»uptime»:3,»rssi»:-57,»freemem»:33720>,»sensors»:>,»gpio»:<«12″:0,»13»:0>>
    mqtt-0 2016-04-21 17:15:03 info Client [ESP8266000cd343] subscribes on topic «timestamp»
    mqtt-0 2016-04-21 17:15:03 info publishOnSubscribe send all known states
    mqtt-0 2016-04-21 17:15:03 info Client [ESP8266000cd343] subscribes on «ESP000CD343.#» with regex /^mqtt.0.ESP000CD343..*/
    mqtt-0 2016-04-21 17:15:03 info Client [ESP8266000cd343] subscribes on «ESP000CD343.#» with regex /^ESP000CD343..*/
    mqtt-0 2016-04-21 17:15:03 info Client [ESP8266000cd343] connected
    mqtt-0 2016-04-21 17:11:51 info Starting MQTT server on port 1883

    12 — пин релюшки
    13 — пин светодиода

    Чтоб не ломать голову какой там локальный IP Просто добавьте такую команду » Serial.println(WiFi.localIP()); »
    после того как модуль отчитается о том что подключился к вашей локалке в порт вылетит локальный IP и всё заработает.

    Какие резисторы нужны (лучше ссылку на али)
    Сам на али нашёл набор из 30 видов по 10 шт всё за 100 руб
    Но наверное ,я больше половины из них не придумаю как использовать.
    (Работу резисторов и ост буду изучать во время их пути ко мне)

    На первое время набор сгодиться. Потом закажите те, которые кончатся. Хотя, если недалеко есть радиолавка, то резисторы можно и там покупать. Выходят аза в два дороже чем на Али, зато берете только те, которые нужно

    ПОДЕЛИТЬСЯ

    ОСТАВЬТЕ ОТВЕТ

    Please enter your comment!
    Please enter your name here