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 новую прошивку, вам нужно перевести его в режим загрузки прошивки. Для этого сделайте следующее:

  • Подключите к компьютеру 3,3-вольтовый FTDI-программатор
  • Зажмите кнопку на 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>&nbsp;<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 в режим загрузки прошивки (если еще не перевели). Затем сделайте следующее:

  1. Выберите номер порта FTDI в меню Инструменты > Порт (Tools > Port). В моем случае это «COM14».
  2. Выберите плату ESP8266 в меню Инструменты > Плата (Tools > Board). Нужный пункт – «Generic ESP8266 Module».
  3. Нажмите кнопку «Загрузка».

Подождите несколько секунд, пока загрузится код. Когда он загрузится, в 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, а значит и устройством, которое к нему подключено.

См.также

Внешние ссылки