ESP8266 грабли опыт и размышления

ospkant

ЗНАЕТ ЧТО ГОВОРИТ
НАШ ЧЕЛОВЕК
Регистрация
11.02.2021
Сообщения
965
Реакции
1 685
Баллы
188
Адрес
Россия
Город
Москва
Имя
Сергей
Отчество
Павлович
Станок
cnc 3018 Pro
Прошивка
1.1
  • Последнее редактирование:
Последнее редактирование:
Доброго дня форумчане. Уже четвертый день мучаюсь с ESP8266 (ESP32 еще не пришла, а у меня копия WeMos и Nod, а по факту - они одинаковые, чип один и тот же). Шо за плата такая китайская или ПО кривое? Пытаюсь установить прошивку через flash download tool 3.9.3, так там в новой версии не видно выбора флеш памяти. На официальном сайте 32Mbit вообще прошивку не могу найти. Загружал через одиночный файл прошивку и esptool.py, так там AT команды не работают. Забыл прошивку сохранить для 4Mb флеша и две платы почти кирпичами стали. Че за ужас такой? Может кто поделится рабочим бинариком прошивкой на 8266 для прошивки через esptool или ссылку на рабочую прошивку, чтобы прошить через flash download? Еще глюки наблюдал - если ставиш в Arduino IDE последнюю версию библиотек, он вообще прошиваться не хочет. Версии 2.0.0 - висит на прошивке. Версия 2.3.0. блин, кто-нибудь проходил эти грабли и пришел к единому нормальному варианту, какая прошивка для 4мб 8266 через esptool, какая версия в Ардуино IDE, какая прошивка через flash download tool, какая версия стабильная и правильная самой программы прошивальщика flash download tool? Короче :eek::confused::eek::confused::eek::confused:...


ESP8266, та что на D1 похожа А это NOD 8266 - найди три отличия:D
esp.jpg
 
Это все прописано, а то не могбы прошивки в менеджере плат найти... Ардуино версия 1.8.19, на 1.7 глюки тоже были. Сейчас в менеджерах плат выбрал библиотеки 8266 версию 2.5.0, пока загружает скетч на плату, в последней версии (3...) вообще ошибку загрузки выдавал, но опять криво все работает. Я прошивал с bootloader ом и без него, AT команды - error.
 
  • Последнее редактирование:
Последнее редактирование:
Уважаемые форумчане, кто может поделиться прошивочкой бинарной? Можете со своей 8266 скачать? Блин, уже все перепробовал. Зашел в документацию, выставил адреса по мануалу, перебрал все команды и все возможные файлы (из числа версий boot.bin и esp_init_data_default). Не пойму, что я делаю не так? Хотел контроллер собрать да на AT команды перевести (прошить), а забыл скачать с ESPэшки старую прошивку на всякий случай... Ой бяда...

Чем руководствовался

Откуда качал прошивку на ESP8266

Какой программой сначала прошивал

потом стал прошивать esptool-ом, им попроще мне в консоле.

esptool --port COM4 erase_flash //команда для стирания флеша

Это для прошивки (все перепробовал :cry:), может чего накосячил? Есть кто разбирается?

esptool -c esp8266 -p COM4 -b 115200 write_flash -ff 40m -fm qio -fs 4MB-c1 0x1FB000 blank.bin 0x1FC000 esp_init_data_default.bin 0xFE000 blank.bin 0x1FE000 blank.bin 0x00000 boot.bin 0x01000 user1.2048.new.5.bin //16 Mbit-C1 rb

esptool -c esp8266 -p COM4 -b 115200 write_flash -ff 40m -fm qio -fs 4MB-c1 0x3FB000 blank.bin 0x3FC000 esp_init_data_default.bin 0xFE000 blank.bin 0x3FE000 blank.bin 0x00000 boot.bin 0x01000 user1.2048.new.5.bin //32 Mbit-C1 rb

esptool -c esp8266 -p COM4 -b 115200 write_flash -ff 40m -fm qio -fs 4MB 0xFB000 blank.bin 0xFC000 esp_init_data_default.bin 0x7E000 blank.bin 0xFE000 blank.bin 0x00000 boot.bin 0x01000 user1.1024.new.2.bin //8 Mbit er

esptool -c esp8266 -p COM4 -b 115200 write_flash -ff 40m -fm qio -fs 4MB 0x1FB000 blank.bin 0x1FC000 esp_init_data_default.bin 0x7E000 blank.bin 0x1FE000 blank.bin 0x00000 boot.bin 0x01000 user1.1024.new.2.bin //16 Mbit rb

esptool -c esp8266 -p COM4 -b 115200 write_flash -ff 40m -fm qio -fs 4MB 0x3FB000 blank.bin 0x3FC000 esp_init_data_default.bin 0x7E000 blank.bin 0x3FE000 blank.bin 0x00000 boot.bin 0x01000 user1.1024.new.2.bin //32 Mbit rb

rb esptool -c esp8266 -p COM4 -b 115200 write_flash -ff 40m -fm qio -fs 4MB 0x78000 blank.bin 0x7C000 esp_init_data_default.bin 0x7A000 blank.bin 0x7E000 blank.bin 0x00000 eagle.flash.bin 0x10000 eagle.irom0text.bin //4 Mbit

rb - идет в ребут
er - дает ошибку размера флеша

Такое ощущение, что контроллер не полный а 3/4 (до полного не дотягивает), поэтому 32Mbit ему много, а 16Mbit ему мало.:D

Может кто подскажет, куда двигаться дальше?


Будь мужиком - выкинь, мне не предлагайте:D

оффтоп

Ваши сообщения автоматически объединены:

Еще про него нарыл информации

ESP8266EX - это высокоинтегрированный чип, предназначенный для встраиваемых приложений и имеющий встроенный модуль Wi-Fi. Существуют различные версии ESP8266EX с различным объемом флэш-памяти. Версия с 4 МБ флэш-памяти обычно называется ESP8266EX 4 МБ. 4 МБ флэш-памяти - это фактический объем хранилища, и в него не входят какие-либо дополнительные служебные данные или системные файлы. В пересчете на биты 4 МБ флэш-памяти эквивалентны 32 мегабитам (Мб). Существует также специальная версия ESP8266EX 4MB, которая упоминается как "ESP8266EX 4MB-c1". "c1" относится к конкретному чипу флэш-памяти, используемому в этой версии, которым является Winbond W25Q32FVSIG. Однако с точки зрения емкости хранилища и производительности ESP8266EX 4MB и ESP8266EX 4MB-c1 по сути одинаковы.

Но самое интересное - прошивка для ESP8266 32Mbit с памятью c1 приводит контроллер к reboot :eek:
 
Доброго дня форумчане. Уже четвертый день мучаюсь с ESP8266 (ESP32 еще не пришла, а у меня копия WeMos и Nod, а по факту - они одинаковые, чип один и тот же).
Много раз загружал проги в эту плату (ESP8266 nodeMSU, и ESP8266 WeMos тоже). Они е сейчас есть у меня на столе. Делаю часы со стрелками на светодиодах. Часы идут уже но пока нет корпуса и всех светодиодов. Если вышлите скетч на проверку могу попробовать прошить у себя.
 
  • Последнее редактирование:
Последнее редактирование:
Много раз загружал проги в эту плату (ESP8266 nodeMSU, и ESP8266 WeMos тоже). Они е сейчас есть у меня на столе. Делаю часы со стрелками на светодиодах. Часы идут уже но пока нет корпуса и всех светодиодов. Если вышлите скетч на проверку могу попробовать прошить у себя.
Мне не скетч, а сами бинарники нужны. Прошивка, а не программа. Если есть возможность с контроллера на свой компьютер записать прошивку в bin, буду благодарен. Чип указал выше - ESP8266EX 4MB. Команда для чтения и сохранения Вашей прошивки esptool.py --port COM19 read_flash 0x00000 0x100000 esp8266-backup.bin (если плата пустая), изменить только COM на Ваш и файл с платы сохраниться в файл esp8266-backup.bin туда, из какой директории Вы его запустили. Это консольная команда, должен быть установлен Python3 и esptool.py (есть на оф.сайте библиотек PyPI.org, там же инструкция по установке)
Ваши сообщения автоматически объединены:

Я с дури бэкап не сделал, а поставил кастомную прошивку и в итоге скетч вообще не заливается. А все прошивки с оф. сайта дают нестабильную заливку, либо вообще в реебут контроллер уходит.:(
 
Я с дури бэкап не сделал, а поставил кастомную прошивку и в итоге скетч вообще не заливается. А все прошивки с оф. сайта дают нестабильную заливку, либо вообще в реебут контроллер уходит.:(
Честно говоря ничего не понял. Почему скетч не заливается? Скетч залить можно какой угодно (если конечно войдет) и сколько угодно. Что за скетч (не люблю это слово), для меня это программа. Что она делает (функционал программы)?
Ваши сообщения автоматически объединены:

Что значит перепрошивка? Что вы там хотите перепрошить? Из ESP8266 ESP32 сделать?
Ваши сообщения автоматически объединены:

Бинарик это та же программа только в двоичном коде. У всех ESP8266 4МБ флэш пямять. По крайней мере я других не встречал. То же и в WeMos
 
Там прошивка по адресам из 4 файлов... Я выше писал.
esp_init_data_default.bin
blank.bin
boot.bin
и в зависимости от типа user1.2048.new.5.bin
 
Напишу полный мануал для таких как я, как победил эту ESP8266 и залил родную прошивку (хотя многие говорят, что 99% - это невозможно). Надо знать версию своей прошивки, а китайцы, как правило ее указывают, например WeMos mini V2, это значит, что версия для прошивки вторая (как у меня)

1. Сначала подключить ESP8266 к компьютеру через UART или если у Вас как у меня с 340 чипом, через USB

2. Скачайте с официального сайта программу для прошивки по адресам контроллера flash download tool(у меня вер.3.9.3)

3. Скачайте официальную прошивку для ESP8266 на Git-е согласно Вашей версии платы. Крутите вниз и найдете, то что ищете. Распаковывайте архив.

ESP8266_Ver.jpg
4. Запускаете программу для прошивки flash_download_tool_3.9.3 и видите там много разного, но нам все и не нужно.

ESP8266_FDT.jpg

4.1 Сначала выберете порт, на котором висит контроллер, скорость я не трогал, кликните по ERASE и все данные с контроллера будут удалены

4.2 Запишите в эти колонки необходимые адреса для Вашего контроллера. Необходимые адреса можно найти в документации по ссылке. Перелистывайте до своей конфигурации и вписываете.

8266_XxXX.jpg
Там все 68 страниц читать не нужно (если только не спится ночью), нам нужны страницы с 9 по 11 согласно Вашей конфигурации.

4.3 Нажимаете на иконку многоточие, ищите папку, куда разархивировали и ищите нужный файл (например для первой строчки 0x3FB000 файл нужен blank.bin и так все файлы согласно документации. У меня получилось четыре файла, а один файл три раза дублируется. После этого напротив выбранных файлов слева ставим галочки.
4.4 Нажимаете START и ждете завершения загрузки.

!!! При стирании или записи не отключайте контроллер. Как я почитал, это может привести с непоправимой ошибке флеш памяти.

5. Открываем Arduino IDE, выбираем PORT и свой контроллер. Нажимаем на монитор порта. После этого перезагружаем контроллер и в мониторе порта должна появится информация о контроллере такого вида - это значит, что контроллер прошился удачно.

8266_OK_arduino.jpg
Если где-нибудь есть слово error, значит скорее всего Вы выбрали не правильную версию прошивки. Возвращаемся к 3 пункту и все заново повторяем до результата.

А что он здесь выдает - скрин ниже:)

8266_OK_rus.jpg
 
Сегодня писал уже самый простой код на библиотеке ESP8266WebServer.h, только для примера, но не пойму, почему когда подключаюсь к сети WiFi, в адресной строке ввожу свой IP адрес, потом, после выбора файлы нажимаю на Upload и мне в void handleFileUpload() приходит upload.status "2" , а должен прийти "UPLOAD_FILE_WRITE". Может кто поможет? Сил уже нет, хочу опять выкинуть все это дело...:mad:

#include <Arduino.h>
#include <ESP8266WebServer.h>

ESP8266WebServer server(80);

void handleFileUpload() {
HTTPUpload& upload = server.upload();
Serial.println(upload.status);
}
void handleRoot() {
String html = "<html><body>";
html += "<form method=\"POST\" action=\"/upload\" enctype=\"multipart/form-data\">";
html += "<input type=\"file\" name=\"file\">";
html += "<input type=\"submit\" value=\"Upload\">";
html += "</form></body></html>";
server.send(200, "text/html", html);
}
void setup() {
Serial.begin(115200);
WiFi.begin("SERGOV-PC_Network", "80sj-7v9b-sj6n");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println(WiFi.localIP() );
server.on("/", HTTP_GET, handleRoot);
server.on("/upload",HTTP_POST, handleFileUpload);
server.begin();
}
void loop() {
server.handleClient();
}

Блок кода handleFileUpload пока ничего не делает, только при нажатии на Upload выводит status в serial monitor.
 
  • Последнее редактирование:
Последнее редактирование:
Может файл большой, ведь он записывает в оперативную память, а ее размер в 8266 только 80кб. У меня полный код есть, который что-то делает, но тоже перескакивает на UPLOAD_FILE_END. Он должен по идее записывать на SD, но сразу перескакивает на END...

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <SD.h>
#include <SPI.h>
const int SD_CS_PIN = SS;
ESP8266WebServer server(80);
File uploadFile;

void handleRoot() {
String html = "<html><body>";
html += "<form method=\"POST\" action=\"/upload\" enctype=\"multipart/form-data\">";
html += "<input type=\"file\" name=\"file\">";
html += "<input type=\"submit\" value=\"Upload\">";
html += "</form></body></html>";
delay(1000);
server.send(200, "text/html", html);
}

void handleFileUpload() {
HTTPUpload& uploadHTML = server.upload();
Serial.println(uploadHTML.status);
Serial.println(uploadHTML.filename);
Serial.println(uploadHTML.totalSize);
if (uploadHTML.status == UPLOAD_FILE_START || uploadHTML.status == UPLOAD_FILE_WRITE) {
Serial.println(uploadHTML.filename);
if (uploadHTML.status == UPLOAD_FILE_START) {
// Начало загрузки файла - открываем файл для записи
String filename = uploadHTML.filename;
uploadFile = SD.open("/" + filename, "a");
Serial.println ("create!");
}
else if (uploadHTML.status == UPLOAD_FILE_WRITE && uploadHTML.totalSize > 0) {
// Запись части файла
size_t bytesWritten = uploadFile.write(uploadHTML.buf, uploadHTML.currentSize);
Serial.println ("write!");
// Если размер буфера не превышен, продолжаем загрузку
if (bytesWritten != uploadHTML.currentSize) {
server.send(500, "text/plain", "Error upload file");
Serial.println ("error!");
}
}
}
else if (uploadHTML.status == UPLOAD_FILE_END) {
// Конец загрузки файла - закрываем файл и отсылаем ответ клиенту
Serial.println ("upload!");
Serial.println (uploadFile);
uploadFile.close();
Serial.println ("close!");
server.send(200, "text/plain", "File upload");
}
}

void setup() {
Serial.begin(115200);
SPI.begin(); // запускаем SPI
if (!SD.begin(SD_CS_PIN:) {
Serial.println("SD card initialization failed!");
return;}
Serial.println("SD card connected!");

WiFi.begin("SERGOV-PC_Network", "80sj-7v9b-sj6n");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
Serial.print("IP address: ");
Serial.println(WiFi.localIP:));
server.on("/", HTTP_GET, handleRoot);
server.on("/upload",HTTP_POST, handleFileUpload);
server.begin();

}
void loop() {
server.handleClient();
server.upload();

}
 
А файл, меньший, чем размер буфера нормально записывается?
 
Буфер по умолчачию 2048, вот если файл меньше чем 2048, когда сразу перескакивает на UPLOAD_FILE_END, буфера хватает для записи. А если больше буфера - тогда только конец файла записывает. Т.е. записанные данные на SD = размер файла - (2048*n) и остаток записывает.
 
Serial.println(uploadHTML.filename);
А вот это в серипл что выдаёт? Там спервым слэшем всё нормально?
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать