Продолжая цикл статей о WiFi-модулях ESP8266 расскажу как сделать очень бюджетную WiFi розетку
Для этого нам нужно:
- Любая внешняя розетка, в которой есть свободное место
- ESP8266 практически любой модификации (Я использовал ESP8212E с терминальной платой для удобства монтажа) ~ $2
- Твердотельное реле OMRON G3MB-202P ~ $1
- Малогабаритный блок питания на 3.3В (можно этот или 5В с дополнительным линейным стабилизатором до 3.3)
Итого, бюджет $5-$8 в зависимости от выбора компонентов
Подробнее про омроновские реле я писал статью здесь
Схема нашей WiFi розетки будет такой
Собираем все внутри корпуса розетки
Теперь загружаем программу через Arduino IDE. Статья про программирование ESP8266 в Arduino IDE
Скетч WiFi розетки для...Включаем розетку, а в нее лампу в 25Вт. Теперь можно подключаться с компьютера/планшета/телефона к нашей розетке по HTTP
Подключаюсь с планшета к веб-серверу ESP-шки по имени или IP-адресу
Видео работы WiFi розетки
А это мечтающий об умном доме кот )))
Спасибо огромное за скетч. Не могли бы вы сделать версию с 2мя кнопками под 2 реле, чтобы можно было разобраться как добавлять новые реле.
P.S. и еще у меня почему-то не работает адрес который выдается в мониторе порта, подключиться удается только по http://192.168.1.4
Вместо строки:
Serial.printf( «HTTP server ok! Open http://%s.local in your browser\n», 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\n», host);
Строку:
Serial.println(WiFi.localIP());
Итого в мониторе будет виден IP ESP.
И ещё два неприятных момента из моих наблюдений.
1-й.
После РЕСЕТа розетка принимает ВЫКЛЮЧЕННОЕ состояние, хотя до РЕСЕТа была включена.
2-й.
Во время РЕСЕТа светодиод мна управляющем пине мигает. Значит, если в реальной жизни к розетке подключён, к примеру, привод гаражных ворот, то ворота или приоткроются или вообще неснкционированно откроются, что не есть хорошо.
Во время загрузки и прошивки порты ESP принимают неопределенное состояние. Попробуйте подтягивающий резистор на землю поставить
не могу загрузить, выдаёт ошибку в этой строке
server.onNotFound ( HTTP_handleRoot );
Ошибку то какую? Не найдена функция?
Библиотеки?
Версия Arduino IDE?
я начинающий, и это мой первые попытки знакомства с arduino
а ошибку пишет так:
exit status 1
‘HTTP_handleRoot’ was not declared in this scope
версия 1.6.7
Читал, что на последних версиях 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* ssid = «INGR»;
const char* password = «hotswf»;
ESP8266WebServer server(80);
WiFiClient client;
IPAddress ip1(192,168,83,80);
void setup() {
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\r\n\r\n»;
client.print(out1);
// Последовательный порт для отладки
Serial.begin(115200);
Serial.printf(«\n\nFree memory %d\n»,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\n», 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;
}
String out = «»;
out =
«\
\
\
WiFi розетка\
\
body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
\
\
\
WiFi розетка. Версия 1.0\n»;
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 settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:63:0,
from C:\Documents and Settings\Admin\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.1.0-rc2\libraries\ESP8266WiFi\src/WiFiClient.h:24,
from C:\Documents and Settings\Admin\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.1.0-rc2\libraries\ESP8266WiFi\src/ESP8266WiFi.h:39,
from D:\ARDUINO\WiFi_power\WiFi_power.ino:5:
c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\allocator.h:46:75: fatal error: bits/c++allocator.h: No such file or directory
#include // Define the base class to std::allocator.
^
compilation terminated.
Что делать посоветуйте может какую другую версию 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~1\Admin\LOCALS~1\Temp\build6809773912049107277.tmp/WiFi_power.cpp.bin to flash at 0x00000000
………………………………………………………………………………………………………………………………………………………………………………………………..
Спасибо огромное перепрошил 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 — пин светодиода
сам линк забыл подвесить https://github.com/vynci/uniing-esp8266/blob/master/esp_boot_test.ino
Чтоб не ломать голову какой там локальный IP Просто добавьте такую команду » Serial.println(WiFi.localIP()); »
после того как модуль отчитается о том что подключился к вашей локалке в порт вылетит локальный IP и всё заработает.
Какие резисторы нужны (лучше ссылку на али)
Сам на али нашёл набор из 30 видов по 10 шт всё за 100 руб
Но наверное ,я больше половины из них не придумаю как использовать.
(Работу резисторов и ост буду изучать во время их пути ко мне)
На первое время набор сгодиться. Потом закажите те, которые кончатся. Хотя, если недалеко есть радиолавка, то резисторы можно и там покупать. Выходят аза в два дороже чем на Али, зато берете только те, которые нужно
Спасибо.
Помсмотрел часть схем на esp8266.ru
И там чаще всего используются на 10k ohm и при подключении esp к ttl желателен конденсатор на 100n
На али нашёл это:
http://s.aliexpress.com/uINjyeem и это http://s.aliexpress.com/QJBRrABN
Это ли мне надо ?
Где находится радио рынок пока не знаю(переехал в другой город, да и неначём пока будет их использовать)
Подойдет
Здравствуйте.
Спасибо огромное за скетч. Можно попросить добавить возможность переключать реле через кнопку (например D3 — поключается на «-«) и дополнительно показывать статус реле через светодиод (например через D4).
Зарание спасибо если это не трудно.
А не хотите самостоятельно попробовать?
Если вы уж залили скетч в ESP-шку, то разобраться в несложном коде и добавить несколько строк просто
Здраствуйте. скетч залил без проблем, непонятно почему ESP работает одновременно и сервером и клиентом, тоесть она подключилась к моей сети через указанный пароль и логин и тут же сама работает как точка доступа причём на том же канале где и роутер к которому подключилась, при этом доступ к ней незащищён подключайся кто хочеш. как так вышло ?
спасибо за скетч. именно с него и начинал, пока не пришел к majordomo.
единственный минус — модуль не сохраняет состояние пина на случай неожиданного пропадания питания. в прошивке от wi-iot.ru решили эту ситуацию. там в коде добавляется приставка &flash. это позволяет записать состояние в память модуля и при перезагрузке он неожиданно не включает реле.
такой фокус можно провернуть и с esp-01, проверял.
Главное, чтобы при перезагрузке было выключено реле. В большенстве случаев такая логика себя оправдывает (например со светом)
единственно вопрос. сейчас выпускают бутерброды по типу такого https://ru.aliexpress.com/item/ESP8266-serial-WIFI-Witty-cloud-Development-Board-ESP-12F-module-MINI-nodemcu/32577398010.html?spm=2114.10010208.1000014.27.5DY9h5&scm=1007.13338.49932.0&pvid=db157451-5b23-46e2-b675-fa8a020a6ace&tpp=1&detailNewVersion=&categoryId=400103
надо ли на них подтяжку ног делать или там уже все есть ?
Нет. Там все подтянуто.
Мне такой не понравился.
Когда обе платы вместе, нет свободных штырьков-GPIO. о есть как плата разработчика — вещь неудобная.
Такая плата на мой взгляд интереснее
https://ru.aliexpress.com/item/New-Wireless-module-CH340-NodeMcu-V3-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266-We/32565317233.html
Купил поняжающий преобразователь AC-DC Преобразователь Питания Понижающий Преобразователь Сыходзь Модуль 3.3 В 600mA
http://s.aliexpress.com/fIBZ3uYf
(from AliExpress Android)
А он выдаёт не 3.3v а 9 .может это я чтото не так делаю или что то не то прислали (1в 1 как на фото)
Попробуйте на выход посадить нагрузку 100Ом
Может преобразователь на холостом ходу не хочет работать
Вольтаж упал до 4.5 вольт (16 резисторов по 10 кОм)Это нормально ?
Мне esp напрямую подключать ?(без резисторов(не сгорит?)
Это не нормально. Можно еще немного подгрузить, но странный какой то блок питания.
Мои похожие выдавали на холостом ходу порядка 3.5 и до 3.3-3.2 садились под нагрузкой.
ESP-шка от кратковременных 5В не сгорит, но будет греться.
Но не нравится мне, как ведет ваш стабилизатор. Попробуйте нагрузить чуть побольше, сфоткать, а еще лучше видео снять и диспут открыть. И выкинуть его потом от греха подальше.
Сейчас сделал фото и заметил что у меня резисторы и конденсаторы не такие как на фото продовца
Вот ссылка https://goo.gl/photos/UtN3uhabTQRS4B6p6
нашёл у него в магазине тот блок питания что он мне прислал https://ru.aliexpress.com/store/product/AC-DC-Power-Supply-Buck-Converter-Step-Down-Module-9V-500mA-for-Arduino/1829717_32396369050.html
Теперь всё ясно
Если закажу у него эту понижайку всё будет нормально работать ? https://ru.aliexpress.com/store/product/9V-12V-19V-To-3-3V-DC-DC-Step-down-Power-Supply-Module-USB-Voltage-Converter/1829717_32704615873.html
Можно этот. Можно настраиваемый
http://ali.pub/dez4n
Выставить только требуемое напряжение
Я такие брал $3.5 за 10 шт
Кот шикарный.
Блин вроде по схеие подключил а в com порт ничего не посылает и не прошивается.
Что может быть не так ?
ESP-07 ESP8266
FT232RL FT232 FTDI TTL
rts у него сбоку распаян как я понял
Все может быть. )))
RTS то зачем?
Подскажите как мне подключить к модулю файл?
Подскажите как мне подключить к модулю файл? Пользуюсь прошивкой NodeMCU, код пишу в ESPlorer
как сделать тоже самое но с двумя каналами
Поставить второе реле к другому GPIO
можно так:
/**
* WiFi розетка. Версия 1.0
* Copyright (C) 2015 http://samopal.pro
*/
#include
#include
#include
#include
// GPIO, куда подцелено реле
uint8_t PowerPin1 = 4;
uint8_t PowerPin2 = 5;
bool PowerOn1 = false;
bool PowerOn2 = false;
// Имя хоста
const char* host = «esp8266-power»;
// Вместо звездочек свои параметры WiFi сети
const char* ssid = «666»;
const char* password = «11111111»;
ESP8266WebServer server(80);
void setup() {
// Последовательный порт для отладки
Serial.begin(115200);
Serial.printf(«\n\nFree memory %d\n»,ESP.getFreeHeap());
// Инициализация выхода реле
pinMode(PowerPin1 , OUTPUT);
pinMode(PowerPin2 , OUTPUT);
digitalWrite(PowerPin1 , PowerOn1);
digitalWrite(PowerPin2 , PowerOn2);
// Подлючение к 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\n», host);
Serial.println(WiFi.localIP());
}
else {
Serial.printf(«WiFi started is fail»);
}
}
void loop() {
server.handleClient();
delay(50);
}
/*
* Оработчик главной страницы сервера
*/
void HTTP_handleRoot(void) {
bool stat1 = false;
bool stat2 = false;
if( server.hasArg(«stat1») ){
if( strncmp(server.arg(«stat1″).c_str(),»1»,1) == 0 )stat1 = true;
}
else {
stat1 = PowerOn1;
}
if( server.hasArg(«stat2») ){
if( strncmp(server.arg(«stat2″).c_str(),»1»,1) == 0 )stat2 = true;
}
else {
stat2 = PowerOn2;
}
String out = «»;
out =
«\
\
\
WiFi выключатель\
\
body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
\
\
\
WiFi выключатель. Версия 1.0\n»;
if( stat1 ){
out+=»\
Состояние1: Включено\
Выключить\
«;
}
else {
out+=»\
Состояние1: Выключено\
Включить\
«;
}
if( stat2 ){
out+=»\
Состояние2: Включено\
Выключить\
«;
}
else {
out+=»\
Состояние2: Выключено\
Включить\
«;
}
out+= «\
\
«;
server.send ( 200, «text/html», out );
if( stat1 != PowerOn1){
PowerOn1 = stat1;
digitalWrite(PowerPin1 , PowerOn1);
if( PowerOn1 )Serial.println(«Power1 is ON»);
else Serial.println(«Power1 is OFF»);
}
if( stat2 != PowerOn2 ){
PowerOn2 = stat2;
digitalWrite(PowerPin2 , PowerOn2);
if( PowerOn2 )Serial.println(«Power2 is ON»);
else Serial.println(«Power2 is OFF»);
}
}
Прошился и всё работает до момента подпайки резистрора и реле
Вот фото подключения до подпайки https://goo.gl/photos/bbZP1T33LtaZUP4a7
Вот после https://goo.gl/photos/t28ZWx3MjehX1Awf9
После того как подпоял то модуль не подключается к wi-fi и просто горит светодиод на модуле, что нетак ?
Питание использовал как от arduino так и от 3.3v 600mA разницы никакой
Когда не подпаян модуль нормально подключается и включает выключает светодтод через браузер
В общем не дождавшись ответа сменил в скетче пин2 на пин5 и всё заработало.
Только я подключил к 4 портовому удлиеителю перед оранжевой кнопкой(переключатель) и когда нажимаю включить у меня сначала пол секунды мигает кнопка (вместе с тем что подключено в разетку) и включается .
Так и должно быть ?
А в порт отладочный что выдает?
в этом есть проблема так как плата с самого начала (с моментак покупки) ничего не пишет в монитор порта ( может програмно что-то не настроил правильно, прошивается нормально а в мониторе пустота)
// Последовательный порт для отладки
Serial.begin(115200);
Serial.printf("\n\nFree memory %d\n",ESP.getFreeHeap());
Этот код настраивает отладку в первый порт.
Скорость 115200
Отладка там выдается при старте, либо при событии включения/выключения розетки
Скетч — это простой пример для дальнейшего развития
Более серьезный можно взять в этом проекте
http://samopal.pro/sonoff-th1016/
Только GPIO у ESP правильно объявить
Всёравно в мониторе тишина
Здравствуйте Алексей!
У меня вопрос по схеме.
Скажите пожалуйста, какие резисторы должны стоять между
GPIO 15 и GND, а также CH_PD и VCC
Они не промаркированы на схеме.
Заранее Благодарю!
На платах переходниках 10КОм стоят
Подскажите с кодом кнопки для параллельного управления состоянием релехи, ну чтобы реле можно было не только по вайфаю вкл/выкл но и кнопкой
http://samopal.pro/sonoff-th1016/
Повторил идею на ESP8266 NODEMCU . Всё работает, спасибо.
А в прошивке что-то меняли, или такую же загрузили и все работает?
Здравствуйте! Сразу извините, но я чайник в этом деле. Вот смотрю на схему соединения и вроде все легко, но вот вопрос возник, что за прямоугольнички, что ими обозначается при соединении 14 и 9 ноги esp? Как помню со школы, таким значком обозначалось сопротивление вроде бы…
Добрый день, не подскажете как собрать данную схему на 8266 1-ой версии? там всего 8 ног и нет gpio15, по-моему из-за этого и не работает, плата то прошилась, но вот в спаянном виде не хочет запускаться, горят оба светодиода
Используйте GPIO02. Он в обычной жизни должен быть к минусу подтянут. То есть розетка будет всегда выключена. А при переводе GPIO2 в режим выхода и подачи туда высокого уровня реле включится
Собрал все на esp07, с платой подключения, если стартую плату без подключенного 2 пина, видит вай фай и все хорошо, втыкаю пин2, все работает, переключает 220 вольт, как надо, НО если стартовать весь процесс с УЖЕ подключенным пином 2, то плата как будто не стартует, т.е. к вай фаю не коннектит, резисторы на 10 кОм ничем не помогают, подскажите, где может быть косяк? (надеюсь, понятно обьяснил)
Попробуйте любой другой вывод кроме GPIO2 и GPIO15. Они отвечают за режим загрузки ESP
Пусть будет GPIO4 или 5ю И не забудьте ео к минусу подтянуть резистором 10к, так как при загрузке выводы ESP в высокоимпедансном состоянии, может быть включение
спасибо за совет, буду пробовать
и еще вопросик, если сборка делается на вот такой платке, резисторы все равно нужно использовать? там вроде как встроены какие то 3 резистора смд
https://ru.aliexpress.com/item/1pCS-LOT-ESP8266-serial-WIFI-module-adapter-plate-Applies-to-ESP-07-ESP-08-ESP-12E/32728234034.html?aff_platform=aaf&cpt=1496660521430&sk=eub6yrrBy&aff_trace_key=35e60f1afe7d4a958f5748b8bc68db74-1496660521430-05450-eub6yrrBy
День добрый. Сделал всё по инструкции, посмотрел на роутере ip модуля, но на сайт по нему не заходит (такое ощущение, что сервер не запущен вообще), хотя в мониторе порта никаких ошибок.
Сделал управление через blynk, всё работает (значит к wifi подключается, и сам модуль работает нормально). Что может быть не так? Пингуется по этому ип, но на веб сервер не пускает…
ESP работает в режиме точки доступа
Нужно к ней сперва подключиться (пароль по умолчанию я не ставил) и зайти по адресу 192.168.4.1
Добрый день, Алексей и все сочувствующие )
У меня почти такая же ситуация
«Собрал все на esp07, с платой подключения, если стартую плату без подключенного 2 пина, видит вай фай и все хорошо, втыкаю пин2, все работает, переключает 220 вольт, как надо, НО если стартовать весь процесс с УЖЕ подключенным пином 2, то плата как будто не стартует, т.е. к вай фаю не коннектит, резисторы на 10 кОм ничем не помогают, подскажите, где может быть косяк?»
Только я собрал на ESP01 , и хотел использовать GPIO0 и GPIO2.
Причем с подключенными светодиодами все работает абсолютно нормально, без проблем.
Как только перехожу на реле — то еспшка запускается при отключенных пинах от реле.
И, кстати — меряю сопротивление исполнительных контактов реле — в случае, если запуск еспшки идет при отключенных от реле контактов GPIO0 и GPIO2 (которые после запуска присоединяются) — то сопротивление нормальное — 0 и КЗ.
А вот если GPIO0 и GPIO2 подсоединены к релюхе — то сразу сопротивление становится примерно 100 ком. как будто реле приоткрывается наполовину.
У кого какие мысли по запуску именно реле? (напомню, что со светодиодами все работает отлично)
Попробуйте другой GPIO и подтянуть его через резистор 10к к земле
У ESP в момент перезагрузки выводы переводятся в высокоимпедантное состояние
Вроде бы нашел, от чего отталкиваться
http://forum.amperka.ru/threads/esp8266-как-не-надо-делать.4748/
Как думаете — такая схема может управлять SSR реле, а не обычным механическим?
Вообщем — победил ситуацию.
Подсоединил реле таким образом — от +V к резистору 220 ом. Дальше от режиссера — к 3 ноге реле. Дальше от 4 ноги реле — к GPIO.
ПРишлось немного переделать код, т.к. управление получилось инверсное.
Возник еще вопрос — в розетку включил обычные лампы накаливания 60 вт.
Так они периодически моргают, примерно раз в 4-8 секунд.
Кто-нить сталкивался и как это можно победить?
Если не сложно помогите с кодом: ESP должен быть связующим звеном между смартфоном, который подключаешь к точке доступа из ESP. На смартфоне программа которая шлет и получает АТ команды по wi-fi, на RX TX сидит устройство, которое делает тоже самое, получает и шлет АТ команды, все должно пересылаться в оба конца по заданному IP и порту. и скорости порта. Вроде все. Заранее спасибо.
Можно такой проект посмотреть
http://samopal.pro/arduino-esp8266/
Спасибо гляну
Доброго дня. У меня точно по той же схеме с тем же омроновским реле есп12 выдавала на ногу 3.03 и омрону этого не хватало, чтобы открыться. Поставил через пару резисторов транзистор без маркировки, который нашёл в рассыпухе, через него заводил на плюс омрона 3.3 вольта — работало, но есп очень часто зависала. Переделал — на плюс омрона завёл 5в напрямую с бп, подтянул через 10к к земле, есп запитал через ams1117 с обвязкой в виде двух электролитов на 10 и 100мф, а управлять стал нулём, прижимая его к земле — это сразу решило все мои проблемы. Неделя, полёт нормальный, всё стабильно. Кстати, очень рекомендую прошивку ESPEasy. Для подобных устройств просто то, что надо. mqtt из коробки, поддержка кучи датчиков и железа, вебморда а-ля роутер, возможность прямо из браузера написать простую логику, которой для iot часто достаточно и прочие вкусности вроде синхронизации с ntp, объединения в сети и т.п.. Может кому-то будет полезно.
А можно вместо ссылки Выключить
сделать кнопку? За ранее благодарен.
Добрый день, подскажите где искать разработчиков на arduino для удалённых заказов, какой сервис лучше использовать?
Все зависит от того, какого уровня разработчики нужны. Что-то занедорого разработать на ардуине, то на сайте arduino.ru. Нормальных разработчиков на фрилансерных сайтах. Я сейчас стараюсь браться за проекты с программной и аппаратной частью и бюджетом от 300$.
где искать ip адрес ?
где искать ip адрес после установки скетча
Если не было подключения (первый запуск), то подключиться к ESP как к точке доступа и http://192.168.4.1
Если уже соединился и адрес динамический, то у роутера, который эти адреса раздает