• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

8266 не прошивается по ОТА

Andrejsasha

New member
Не кидайте тапками: не могу найти на форумах то, что нужно, пишу с нуля.
Что надо: возможность прошивать ESP по ОТА (WiFi).
Что есть, сделано.
- опыт (чутка :) прошивалось, но гораздо более простой код и другая плата ESP);
- плата ESP8266MOD;
- используем Arduino IDE. Все настроено, компилируется, прошивается через USB;
- плата прошита целевым кодом и ОТА по USB;
- код довольно большой (все работает - управляет матрицей ледов 2812). Это к тому, что, возможно, БОЛЬШОЙ и сложный код мешает ОТА. Но, код был модифицирован так, что основная функция кода - управление матрицей - останавливается при активации заливки через ОТА.
- Arduino IDE работает - видит порт WiFi, созданный платой ESP, позволяет его выбрать;
- IP ping-уется;

что НЕ работает:
при попытке прошить через ОТА - No response from device.

Кто-нить в курсе и с желанием/возможностью потратить время на "разобраться"?
 

Andrejsasha

New member
Очень длинный лог (950 страниц в WORDe), шлю начало и конец.

esptool.py v2.6
2.6
esptool.py v2.6
Serial port COM9
Connecting...TRACE +0.000 command op=0x08 data len=36 wait_response=1 timeout=0.100 data=
0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
55555555 | UUUU
TRACE +0.000 Write 46 bytes:
c000082400000000 0007071220555555 | ...$........ UUU
5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
5555555555555555 5555555555c0 | UUUUUUUUUUUUU.
TRACE +0.112 Timed out waiting for packet header
.TRACE +0.151 command op=0x08 data len=36 wait_response=1 timeout=0.100 data=
0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
55555555 | UUUU
TRACE +0.000 Write 46 bytes:
c000082400000000 0007071220555555 | ...$........ UUU
5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
5555555555555555 5555555555c0 | UUUUUUUUUUUUU.
TRACE +0.005 Read 1 bytes: c0
TRACE +0.001 Read 1 bytes: 01
TRACE +0.000 Read 5 bytes: 0802000707
TRACE +0.001 Read 1 bytes: 12
TRACE +0.000 Read 10 bytes: 200000c0c00108020007
TRACE +0.000 Received full packet: 01080200070712200000
TRACE +0.044 Read 78 bytes:
0712200000c0c001 0802000707122000 | .. ........... .
00c0c00108020007 0712200000c0c001 | .......... .....
0802000707122000 00c0c00108020007 | ...... .........
0712200000c0c001 0802000707122000 | .. ........... .
00c0c00108020007 0712200000c0 | .......... ...
TRACE +0.000 Received full packet: 01080200070712200000
TRACE +0.038 Received full packet: 01080200070712200000
TRACE +0.037 Received full packet: 01080200070712200000
TRACE +0.045 Received full packet: 01080200070712200000
TRACE +0.036 Received full packet: 01080200070712200000
TRACE +0.039 Received full packet: 01080200070712200000
TRACE +0.039 Received full packet: 01080200070712200000

TRACE +0.045 command op=0x0a data len=4 wait_response=1 timeout=3.000 data=5c00f03f
TRACE +0.000 Write 14 bytes: c0000a0400000000005c00f03fc0
TRACE +0.002 Read 1 bytes: c0
TRACE +0.000 Read 1 bytes: 01
TRACE +0.000 Read 4 bytes: 0a0200fb
TRACE +0.001 Read 1 bytes: 0b
TRACE +0.000 Read 5 bytes: ac000000c0
TRACE +0.000 Received full packet: 010a0200fb0bac000000
TRACE +0.039 command op=0x0a data len=4 wait_response=1 timeout=3.000 data=5800f03f
TRACE +0.000 Write 14 bytes: c0000a0400000000005800f03fc0


85c78574677fc99a 2951b4f4b1602348 | ...tg...)Q...`#H
63963b9711bbe160 eecf33dbdccf2d3f | c.;....`..3...-?
c75371495c492198 bba268d98a65e56b | .SqI\I!...h..e.k
dbdccf9d3f07b381 fd174fcfcd07317a | ....?.....O...1z
c3e30c282ec9024b 8a96da32e680b855 | ...(...K...2...U
20ae9838f26b19fe 4b1cfeb566c94ae0 | ..8.k..K...f.J.
144c7b82f2c5a5c4 3dbfb87809eed095 | .L{.....=..x....
2b8b9f5f555af292 b31014bc8493002e | +.._UZ..........
68c6f3f99fff22dd 366f762e079c18cf | h.....".6ov.....
46d31063f3cb16e3 d20a57acd4af2c04 | F..c......W...,.
ab0a4b3196e809ea e20a4a9d602669c3 | ..K1......J.`&i.
d970c69c3589319b 9319b3ea278cf91a | .p..5.1.....'...
7611731973e72f18 f3b6121cb69c31e7 | v.s.s./.......1.
e3f87c1c6fdbdc71 2938ee0a8edbdd8d | ..|.o..q)8......
e37438cebe21302b f3da7fec0de87f00 | .t8..!0+........
62842eb3c0 | b....
TRACE +0.844 Read 1 bytes: c0
TRACE +0.001 Read 1 bytes: 01
TRACE +0.000 Read 7 bytes: 11020000000000
TRACE +0.001 Read 1 bytes: 00
TRACE +0.000 Read 1 bytes: 00
TRACE +0.000 Read 1 bytes: c0
TRACE +0.000 Received full packet: 01110200000000000000
Wrote 310624 bytes (221593 compressed) at 0x00000000 in 22.9 seconds (effective 108.7 kbit/s)...
TRACE +0.060 command op=0x13 data len=16 wait_response=1 timeout=3.000 data=0000000060bd04000000000000000000
TRACE +0.000 Write 26 bytes:
c000131000000000 000000000060bd04 | .............`..
0000000000000000 00c0 | ..........
TRACE +0.002 Read 1 bytes: c0
TRACE +0.000 Read 1 bytes: 01
TRACE +0.000 Read 2 bytes: 1312
TRACE +0.002 Read 1 bytes: 00
TRACE +0.000 Read 4 bytes: 00000000
TRACE +0.364 Read 1 bytes: 97
TRACE +0.001 Read 1 bytes: 87
TRACE +0.000 Read 7 bytes: a7de3c1ecae3b9
TRACE +0.001 Read 1 bytes: 8b
TRACE +0.000 Read 9 bytes: f3ce325928900000c0
TRACE +0.000 Received full packet:
0113120000000000 9787a7de3c1ecae3 | ............<...
b98bf3ce32592890 0000 | ....2Y(...
Hash of data verified.

Leaving...
TRACE +0.038 command op=0x02 data len=16 wait_response=1 timeout=3.000 data=00000000000000000040000000000000
TRACE +0.000 Write 26 bytes:
c000021000000000 0000000000000000 | ................
0000400000000000 00c0 | ..@.......
TRACE +0.003 Read 1 bytes: c0
TRACE +0.000 Read 1 bytes: 01
TRACE +0.000 Read 1 bytes: 02
TRACE +0.000 Read 2 bytes: 0200
TRACE +0.001 Read 1 bytes: 00
TRACE +0.000 Read 6 bytes: 0000000000c0
TRACE +0.000 Received full packet: 01020200000000000000
TRACE +0.039 command op=0x12 data len=4 wait_response=1 timeout=3.000 data=01000000
TRACE +0.000 Write 14 bytes: c0001204000000000001000000c0
TRACE +0.002 Read 1 bytes: c0
TRACE +0.000 Read 1 bytes: 01
TRACE +0.000 Read 2 bytes: 1202
TRACE +0.001 Read 1 bytes: 00
TRACE +0.000 Read 7 bytes: 000000000000c0
TRACE +0.000 Received full packet: 01120200000000000000
Hard resetting via RTS pin...
 

CodeNameHawk

Moderator
Команда форума
У вас неизвестно откуда включается Track, такого не должно быть.
Деинсталируйте ардуиноиде, вручную удалите папки, где стояла ардуина.
Поставьте версию 1.8.19, установите по новой поддержку плат есп, поставьте версию 2.7.4.
Покажите заливку после этого.
 

Andrejsasha

New member
Сделаю. Но сейчас пока могу только ответить, поэтому прокомментирую, что платы специально ставил 2.5.2, по рекомендации разработчика. Не помню, было ли 2.7.4, но при каки-то версиях не шла компиляция: аж предлагалось С++17, заменить на С++11. Но помогла установка именно 2.5.2. Ардуиноиду тоже откатывал, но она не влияла.
 

CodeNameHawk

Moderator
Команда форума
В таких случаях я использую "виртуальные машины"на vmware.
На одной последние версии, на другой более старые и они не пересекаются.
 

Andrejsasha

New member
Для чего включали?
Я не включал. Даже понятия не имел, что это такое (потом почитал). Просто взял ОТА и впихнул ее в код для матрицы. Ничего не испортил, матрица работала. А ОТА так и не воспользовался тогда. Поэтому и не знаю, работал ли он. Сейчас вот приспичило. Но взял другую плату (старую не запустить: менялся рутер и загрузчик, похоже, я там снес). Но код матрицы не виновен: сейчас вот вожусь только с ОТА и не идет.
 

CodeNameHawk

Moderator
Команда форума
В общем логика такая, ОТА пример работает, значит в него добавляете, небольшими порциями, нужный вам код из вашего скетча.
Ота работает - добавляете дальше, не работает выбрасываете часть последнего добавления кода и так до победного конца.
 

CodeNameHawk

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

Andrejsasha

New member
Покажите код.
[/QUOTE]
Код - просто код из ардуиноиде -
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

#ifndef STASSID
#define STASSID "your-ssid"
#define STAPSK "your-password"
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

void setup() {
Serial.begin(115200);
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}

// Port defaults to 8266
// ArduinoOTA.setPort(8266);

// Hostname defaults to esp8266-[ChipID]
// ArduinoOTA.setHostname("myesp8266");

// No authentication by default
// ArduinoOTA.setPassword("admin");

// Password can be set with it's md5 value as well
// MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
// ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");

ArduinoOTA.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
} else { // U_FS
type = "filesystem";
}

// NOTE: if updating FS this would be the place to unmount FS using FS.end()
Serial.println("Start updating " + type);
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin Failed");
} else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
});
ArduinoOTA.begin();
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}

void loop() {
ArduinoOTA.handle();
}
 

Andrejsasha

New member
Да, суть-то в том, что не прошивается по ОТА. Там, сверху, скрины скидывал. Информация там не урезана. Те точки в скрине "zagruzka po OTA" показаны все, на этом всё и остановилось и дальше не шло, т.е., не прошилось.
Но когда пробовал большой скетч загрузить по ОТА, он переставал работать, делаю вывод, что что-то по ОТА все же передается.
 

CodeNameHawk

Moderator
Команда форума
Те точки в скрине "zagruzka po OTA" показаны все, на этом всё и остановилось и дальше не шло, т.е., не прошилось.
Так оно так и должно быть.
Done uploading видите?
А по размеру файла, есть ограничение - меньше половины доступной памяти скетча.
Информация там не урезана.
Урезана, не видно выбранной платы.
 

Andrejsasha

New member
Таки все ж работает, тупой я: думал, что эти точки - знак того, что зависло все. "Done uploading" в упор не видел.
Спасибо, вам, помогло 2.7.4 и 1.8.19. Уж не знаю, оба или достаточно было бы только платы поменять (2.7.4.). Как-нить поэкспериментирую для спортивного интереса.
Могу Вас как-то отблагодарить?
 
Сверху Снизу