ESP8266:Примеры/Перепрограммирование смарт-переключателя Sonoff

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1898 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


//пока тут ¯\_(ツ)_/¯

Перепрограммирование смарт-переключателя Sonoff[1]

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

Итак, сначала посмотрите этот видеогайд:

[Видео]

Техника безопасности

Убедитесь, что отключили Sonoff от сетевого напряжения. Затем откройте корпус.

Safety warning.jpg

Распиновка Sonoff

Sonoff спроектирован с прицелом на дальнейшее модифицирование – обратите внимание на пустые контакты, находящиеся в центре. Вы можете подключиться к ним, а затем загрузить через них на Sonoff собственную прошивку. Распиновка Sonoff выглядит следующим образом:

Sonoff gpio-r 1.jpg

Я припаял к этим отверстиям гребешок штырьковых контактов, чтобы свести дальнейшую возню с подключением/отключением проводов к минимуму.

Pins-soldered 2.jpg

Подготовка 3,3-вольтового FTDI-модуля

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

Schematics-Copy 3.png

Внимание! Загрузив новую прошивку, вы уже не сможете использовать приложение eWeLink.

Если вы будете пробовать разные версии прошивок, то каждый раз при загрузке новой прошивки вам придется заново подключать FTDI-модуль. Чтобы не возиться с этим, я подключил к питающей линии переключатель. Благодаря ему вы сможете включать/выключать Sonoff, не переподключая FTDI-модуль.

Также я при помощи горячего клея скрепил вместе концы проводов – для того, чтобы в дальнейшем не путаться с подключением между FTDI-модулем и Sonoff.

Hot-glue-ftdi 4.jpg

Переключение Sonoff в режим загрузки прошивки

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

  • Подключите к компьютеру 3,3-вольтовый FTDI-программатор
  • Зажмите кнопку на Sonoff
Hold-down-sonoff-button 5.jpg
  • Щелкните переключатель, чтобы подать питание на Sonoff
Apply-power-to-sonoff 6.png
  • Отпустите кнопку на Sonoff

Теперь Sonoff должен быть готов к загрузке новой прошивки.

Код (прошивка)

В IDE Arduino должен быть установлен аддон для ESP8266. О том, как установить его, читайте в этой статье.

На Sonoff будет загружен код, показанный ниже:

  1. /*********
  2.   Автор – Руи Сантос (Rui Santos)
  3.   Подробнее о проекте на: http://randomnerdtutorials.com  
  4. *********/
  5.  
  6. #include <ESP8266WiFi.h>
  7. #include <WiFiClient.h>
  8. #include <ESP8266WebServer.h>
  9. #include <ESP8266mDNS.h>
  10.  
  11. MDNSResponder mdns;
  12.  
  13. // впишите сюда данные о вашей сети:
  14. const char* ssid = "YOUR_SSID";
  15. const char* password = "YOUR_PASSWORD";
  16.  
  17. ESP8266WebServer server(80);
  18.  
  19. String webPage = "";
  20.  
  21. int gpio13Led = 13;
  22. int gpio12Relay = 12;
  23.  
  24. void setup(void){
  25.   webPage += "<h1>SONOFF Web Server</h1><p><a href=\"on\"><button>ON</button></a>&nbsp;<a href=\"off\"><button>OFF</button></a></p>";  
  26.   // preparing GPIOs
  27.   pinMode(gpio13Led, OUTPUT);
  28.   digitalWrite(gpio13Led, HIGH);
  29.  
  30.   pinMode(gpio12Relay, OUTPUT);
  31.   digitalWrite(gpio12Relay, HIGH);
  32.  
  33.   Serial.begin(115200);
  34.   delay(5000);
  35.   WiFi.begin(ssid, password);
  36.   Serial.println("");
  37.  
  38.   // ждем подключения:
  39.   while (WiFi.status() != WL_CONNECTED) {
  40.     delay(500);
  41.     Serial.print(".");
  42.   }
  43.   Serial.println("");
  44.   Serial.print("Connected to ");  //  "Подключились к "
  45.   Serial.println(ssid);
  46.   Serial.print("IP address: ");  //  "IP-адрес: "  
  47.   Serial.println(WiFi.localIP());
  48.  
  49.   if (mdns.begin("esp8266", WiFi.localIP())) {
  50.     Serial.println("MDNS responder started");
  51.                //  "Запущен mDNSResponer"  
  52.   }
  53.  
  54.   server.on("/", [](){
  55.     server.send(200, "text/html", webPage);
  56.   });
  57.   server.on("/on", [](){
  58.     server.send(200, "text/html", webPage);
  59.     digitalWrite(gpio13Led, LOW);
  60.     digitalWrite(gpio12Relay, HIGH);
  61.     delay(1000);
  62.   });
  63.   server.on("/off", [](){
  64.     server.send(200, "text/html", webPage);
  65.     digitalWrite(gpio13Led, HIGH);
  66.     digitalWrite(gpio12Relay, LOW);
  67.     delay(1000);
  68.   });
  69.   server.begin();
  70.   Serial.println("HTTP server started");  
  71.              //  "Запущен HTTP-сервер"  
  72. }
  73.  
  74. void loop(void){
  75.   server.handleClient();
  76. }

Подготовка IDE Arduino

Переведите Sonoff в режим загрузки прошивки (если еще не перевели). Затем сделайте следующее:

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

Подождите несколько секунд, пока загрузится код. Когда он загрузится, в IDE Arduino должна появиться надпись «Загрузка завершена».

Возможные проблемы

Если вы пытаетесь загрузить скетч, и он выдает следующую ошибку...

warning: espcomm_sync failed
error: espcomm_open failed

...это значит, что Sonoff не переведен в режим загрузки прошивки, и вам нужно повторить процесс, описанный выше, в разделе «Переключение Sonoff в режим загрузки прошивки».

Цепь

Загрузив код, снова подключите Sonoff. Будьте очень осторожны с сетевым напряжением. Цепь та же, что и в ознакомительной статье:

SONOFF circuit.jpg

IP-адрес ESP8266

Откройте монитор порта IDE Arduino и выставьте скорость передачи данных на 115200 бод. Подключите 0-ой GPIO-контакт ESP8266 к VCC, а затем выполните сброс ESP8266.

Спустя несколько секунд в мониторе порта должен появиться IP-адрес ESP8266. В моем случае это «192.168.1.70».

Esp-ip-address 8.png

Демонстрация

Наконец, чтобы увидеть, как работает проект, откройте любой браузер на устройстве, подключенном к тому же роутеру, что и Sonoff. Затем впишите в адресной строке IP-адрес Sonoff и нажмите  ↵ Enter .

Web-server sonoff 9.jpg

Если все сделано правильно, этот интерфейс позволит вам управлять смарт-переключателем Sonoff, а значит и устройством, которое к нему подключено.

См.также

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

  1. randomnerdtutorials.com - Reprogram Sonoff Smart Switch with Web Server