ESP8266:Примеры/Перепрограммирование смарт-переключателя Sonoff
Черновик |
//пока тут ¯\_(ツ)_/¯
Перепрограммирование смарт-переключателя Sonoff[1]
В этой статье я расскажу, как загружать собственную прошивку на Sonoff, чтобы им можно было управлять при помощи веб-сервера. Но перед тем, как вы приступите к этому проекту, советую почитать ознакомительную статью о Sonoff.
Итак, сначала посмотрите этот видеогайд:
[Видео]
Техника безопасности
Убедитесь, что отключили Sonoff от сетевого напряжения. Затем откройте корпус.
Распиновка Sonoff
Sonoff спроектирован с прицелом на дальнейшее модифицирование – обратите внимание на пустые контакты, находящиеся в центре. Вы можете подключиться к ним, а затем загрузить через них на Sonoff собственную прошивку. Распиновка Sonoff выглядит следующим образом:
Я припаял к этим отверстиям гребешок штырьковых контактов, чтобы свести дальнейшую возню с подключением/отключением проводов к минимуму.
Подготовка 3,3-вольтового FTDI-модуля
Для того, чтобы загрузить на Sonoff новую прошивку, вам понадобится FTDI-модуль. Подключите его к Sonoff согласно схеме, показанной ниже:
Внимание! Загрузив новую прошивку, вы уже не сможете использовать приложение eWeLink.
Если вы будете пробовать разные версии прошивок, то каждый раз при загрузке новой прошивки вам придется заново подключать FTDI-модуль. Чтобы не возиться с этим, я подключил к питающей линии переключатель. Благодаря ему вы сможете включать/выключать Sonoff, не переподключая FTDI-модуль.
Также я при помощи горячего клея скрепил вместе концы проводов – для того, чтобы в дальнейшем не путаться с подключением между FTDI-модулем и Sonoff.
Переключение Sonoff в режим загрузки прошивки
Чтобы загрузить на Sonoff новую прошивку, вам нужно перевести его в режим загрузки прошивки. Для этого сделайте следующее:
- Щелкните переключатель, чтобы подать питание на Sonoff
- Отпустите кнопку на Sonoff
Теперь Sonoff должен быть готов к загрузке новой прошивки.
Код (прошивка)
В IDE Arduino должен быть установлен аддон для ESP8266. О том, как установить его, читайте в этой статье.
На Sonoff будет загружен код, показанный ниже:
/*********
Автор – Руи Сантос (Rui Santos)
Подробнее о проекте на: http://randomnerdtutorials.com
*********/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
MDNSResponder mdns;
// впишите сюда данные о вашей сети:
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
ESP8266WebServer server(80);
String webPage = "";
int gpio13Led = 13;
int gpio12Relay = 12;
void setup(void){
webPage += "<h1>SONOFF Web Server</h1><p><a href=\"on\"><button>ON</button></a> <a href=\"off\"><button>OFF</button></a></p>";
// preparing GPIOs
pinMode(gpio13Led, OUTPUT);
digitalWrite(gpio13Led, HIGH);
pinMode(gpio12Relay, OUTPUT);
digitalWrite(gpio12Relay, HIGH);
Serial.begin(115200);
delay(5000);
WiFi.begin(ssid, password);
Serial.println("");
// ждем подключения:
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to "); // "Подключились к "
Serial.println(ssid);
Serial.print("IP address: "); // "IP-адрес: "
Serial.println(WiFi.localIP());
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
// "Запущен mDNSResponer"
}
server.on("/", [](){
server.send(200, "text/html", webPage);
});
server.on("/on", [](){
server.send(200, "text/html", webPage);
digitalWrite(gpio13Led, LOW);
digitalWrite(gpio12Relay, HIGH);
delay(1000);
});
server.on("/off", [](){
server.send(200, "text/html", webPage);
digitalWrite(gpio13Led, HIGH);
digitalWrite(gpio12Relay, LOW);
delay(1000);
});
server.begin();
Serial.println("HTTP server started");
// "Запущен HTTP-сервер"
}
void loop(void){
server.handleClient();
}
Подготовка IDE Arduino
Переведите Sonoff в режим загрузки прошивки (если еще не перевели). Затем сделайте следующее:
- Выберите номер порта FTDI в меню Инструменты > Порт (Tools > Port). В моем случае это «COM14».
- Выберите плату ESP8266 в меню Инструменты > Плата (Tools > Board). Нужный пункт – «Generic ESP8266 Module».
- Нажмите кнопку «Загрузка».
Подождите несколько секунд, пока загрузится код. Когда он загрузится, в IDE Arduino должна появиться надпись «Загрузка завершена».
Возможные проблемы
Если вы пытаетесь загрузить скетч, и он выдает следующую ошибку...
warning: espcomm_sync failed
error: espcomm_open failed
...это значит, что Sonoff не переведен в режим загрузки прошивки, и вам нужно повторить процесс, описанный выше, в разделе «Переключение Sonoff в режим загрузки прошивки».
Цепь
Загрузив код, снова подключите Sonoff. Будьте очень осторожны с сетевым напряжением. Цепь та же, что и в ознакомительной статье:
IP-адрес ESP8266
Откройте монитор порта IDE Arduino и выставьте скорость передачи данных на 115200 бод. Подключите 0-ой GPIO-контакт ESP8266 к VCC, а затем выполните сброс ESP8266.
Спустя несколько секунд в мониторе порта должен появиться IP-адрес ESP8266. В моем случае это «192.168.1.70».
Демонстрация
Наконец, чтобы увидеть, как работает проект, откройте любой браузер на устройстве, подключенном к тому же роутеру, что и Sonoff. Затем впишите в адресной строке IP-адрес Sonoff и нажмите ↵ Enter .
Если все сделано правильно, этот интерфейс позволит вам управлять смарт-переключателем Sonoff, а значит и устройством, которое к нему подключено.