Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Arduino ОТА помогите решить проблему

Тема в разделе "Прошивки esp8266 - общие вопросы", создана пользователем kinologg, 6 окт 2017.

  1. kinologg

    kinologg Новичок

    Сообщения:
    1
    Симпатии:
    0
    Позавчера решил попробовать ОТА, через Arduino IDE, залил скетч BasicOTA, затем залил этот же скетч через ОТА, все прошло успешно, все работало, со вчерашнего дня не могу побороть проблему, появляется сетевой порт, но при по пытке прошить скетч ERROR NO RESPONSE DROM DEVICE, делаю все тоже самое, перепробовал 3 штуки esp8266 12e, та же история, но как не странно, на nodemcu все работает без ошибок, в чем может быть проблема?
     
  2. gerkimuyda

    gerkimuyda Авторитетный участник сообщества

    Сообщения:
    309
    Симпатии:
    62
    У меня была проблема - постоянно модуль отваливался от роутера в режиме station. Из-за этого не работала OTA в arduino ide.
    Решил проблему проще - прошивку модуль сам начал забирать при обращении к локальному серверу (он у меня работал постоянно, раз в 10 минут подключаясь к серверу и передавая данные).

    Код (C):
    1.  
    2. #include <ESP8266httpUpdate.h>
    3.  
    4. void mainUpdate(String url) {
    5.   Serial.print(" UPDATE: \""+url+"\" ");
    6.   t_httpUpdate_return ret = ESPhttpUpdate.update(url);
    7.   switch(ret) {
    8.     case HTTP_UPDATE_FAILED: Serial.printf("- Failed(%d): %s.\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());  break;
    9.     case HTTP_UPDATE_NO_UPDATES:  Serial.print("- no new updates.\n");  break;
    10.   }
    11. }
    12.  
    13.  String s="array[]=value1&array[]=value2"; //post переменные для сервера
    14.   HTTPClient http;
    15.   http.begin("server.lan/api/?board=esp8266.")+String(system_get_chip_id(),HEX));
    16.   http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    17.   int httpCode = http.POST(s); // -1=timeout_error, 200=ok, 302-update
    18.   http.end();
    19.  
    20.   if(httpCode == 302) { mainUpdate("server.lan/api/?board=esp8266."+String(system_get_chip_id(),HEX)+"&mode=update"); }
    21.  
    PHP:
    1. function sendFile($file) {
    2.   if(!file_exists($file)){ header($_SERVER["SERVER_PROTOCOL"].' 404 Not Found', true, 404); exit; }
    3.   if($_SERVER["HTTP_X_ESP8266_SKETCH_MD5"]==md5_file($file))
    4.     { header($_SERVER["SERVER_PROTOCOL"].' 304 Not Modified', true, 304); exit; }
    5.   header($_SERVER["SERVER_PROTOCOL"].' 200 OK', true, 200);
    6.   header('Content-Type: application/octet-stream', true);
    7.   header('Content-Disposition: attachment; filename='.basename($file));
    8.   header('Content-Length: '.filesize($file), true);
    9.   header('x-MD5: '.md5_file($file), true);
    10.   $len = readfile($file);
    11.   @file_put_contents('device.log', chr(10).'['.date('Y/m/d H:i:s').'] FLASH UPDATE: '.$file.' ('.$len."/".filesize($file).')',FILE_APPEND);
    12.   if( $len == filesize($file) ) { unlink($file); }
    13. }
    14.  
    15. $file = "./".$_GET['board'].".bin";
    16. if( file_exists($file) ) {
    17.   if( !empty($_GET['mode']) && $_GET['mode']=='update' ) { sendFile($file); exit; }
    18.   header("Location: ".getenv("REQUEST_SCHEME")."://".getenv("HTTP_HOST").getenv("REQUEST_URI")."&mode=update", TRUE, 302);
    19.   exit;
    20. }
    21.  
    После чего новая прошивка ложится в файл, например "esp8622.2e35b4.bin" (где 2e35b4 - номер чипа в hex,), и модуль сам ее заберет и перепрошьется, после чего файл будет удален.
     
    Последнее редактирование: 10 окт 2017
  3. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.446
    Симпатии:
    173
    Иногда помогает танец с бубном :
    Первым включаете роутер, после загрузки, включаете ЕСП и только потом компьютер.(выход из сна не годиться, только старт или рестарт.) и потом ардуиноИДЕ.
    Повесьте все "нужные" резисторы.
     
  4. Karen

    Karen Новичок

    Сообщения:
    11
    Симпатии:
    0
    а у меня пароль не принимает, причем не важно какой стоял в скетче ! как быть ???
     

Поделиться этой страницей