Здравствуйте
Лазил по интернету искал программирование ESP8266 в среде ардуино ИДЕ и случайно увидел ваш пост, с подписью ФЕДОРИЩЕВ.
Очень заинтересовался, не имеете ли вы отношения к фамилии ФЕДОРИЩЕВ происходящей от моего деда Федорищева Ивана Митрофановича, проживал в поселке Базарный Сызган. Дело в том что я тоже федорищев Сергей. А Иван Митрофанович это мой дед.
Если мы с вами родственники, то прошу написать мне на электронную почту — кто вы, откуда, чем занимаетесь. Я вам тоже подробно напишу, может быть найдутся интересные общие темы.
Мой электронный адрес — [email protected]
С уважением Сергей
-
Столкнулся со странной проблемой: попытался добавить esp через менеджер, он выдает ошибку загрузки архива с гита. Странность в том, что архив на месте и спокойно качается. На зарубежных форумах нашел несколько решений: проверить прокси, положить архив в папку ручками, переустановить другую версию IDE. Как можно догадаться, ничего из этого не помогло. сообщение об ошибке:
Возникла ошибка при загрузке https://github.com/esp8266/Arduino/releases/download/2.4.1/esp8266-2.4.1.zip
java.lang.RuntimeException: java.lang.Exception: Возникла ошибка при загрузке https://github.com/esp8266/Arduino/releases/download/2.4.1/esp8266-2.4.1.zip
at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$1(ContributionManagerUI.java:176)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Exception: Возникла ошибка при загрузке https://github.com/esp8266/Arduino/releases/download/2.4.1/esp8266-2.4.1.zip
at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:131)
at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:69)
at cc.arduino.contributions.packages.ContributionInstaller.install(ContributionInstaller.java:102)
at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$1(ContributionManagerUI.java:173)
… 1 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1514)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:961)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at cc.arduino.utils.network.FileDownloader.downloadFile(FileDownloader.java:170)
at cc.arduino.utils.network.FileDownloader.download(FileDownloader.java:128)
at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:129)
… 4 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496)
… 17 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
… 23 more
-
Что я пробовал:
положить архив в каталог вручную, переустановить ide, использовать ссылки на другие версии, добавить ссылку в hosts, включить vpn, устанавливать python скриптом.Что заметил:
Другие платы ставятся нормально; при отключении инета ошибка не меняется; на маке данная ссылка работает -
Версия и разрядность ОС, версия Arduino IDE? Интернет не через мобильного оператора? У меня МТС возвращает битый файл по адресу http://arduino.esp8266.com/stable/package_esp8266com_index.json, поэтому в менеждере плат использую ссылку https://github.com/esp8266/Arduino/releases/download/2.4.1/package_esp8266com_index.json.
-
Инет МГТС оптика, win 10 система х64. Ссылку эту пробовал, перестает видеть даже json. ИДЕ пробовал 1.6.5, 1.8.1, 1.8.5
-
Руками помещали файлы в %LocalAppData%Arduino15stagingpackages?
-
Да, писал выше. Ноль реакции
-
Хотя вру, я вроде сувал в папку /roaming!!!/arduino15/… Сейчас перепроверю
-
ПРОДВИЖЕНИЕ!!!! теперь не может загрузить другой файл, «mkspiffs-0.2.0-no_magic_length-windows.zip») Буду класть их в папку по очереди…
-
Нужны
win32-xtensa-lx106-elf-gb404fb9-2.tar.gz
mkspiffs-0.2.0-no_magic_length-windows.zip
esptool-0.4.13-win32.zip
esp8266-2.4.1.zip
их из json можно с путями надергать. -
Установилось! Спасибо огромное, бился весь день. Почему IDE потеряла гитхаб — отдельный вопрос. Мало ли, что ркн с маленькими и мягкими начудили
-
Тоже столкнулся с такой проблемой. Оказалось, что некоторых сертификатов ssl нет в jre, которая идёт с Arduino ide. Не знаю почему так, на одном компе всё нормально скачалось, а на другом ошибку выдаёт как в топике. В общем, недостающий сертификат нужно установить, тогда всё заработает.
1. Заходим сюда: https://github.com/esp8266/Arduino/releases/
2. В браузере, где зелёный замочек возле адресной строки нажимаем на него, далее в зависимости от браузера находим что-то вроде посмотреть сертификат, а затем экспортировать. В фаерфоксе: клик на замочек, стрелочка, подробнее, посмотреть сертификат, подробности, экспортировать. В итоге имеем файл сертификата на жёстком диске.
3. Запускаем командную строку (cmd) от имени администратора.
4. Переходим в папку с установленной jre, которая используется ArduinoIDE:
cd “c:Program Files (x86)Arduinojavabin”
5. Выполняем следующую команду: keytool -import -alias github -keystore ..libsecuritycacerts -file c:githubcom.crt
Где вместо c:githubcom.crt путь к сохранённому сертификату.
6. Спросит пароль. Нужно будет ввести «changeit» (без кавычек). Пароль отображаться не будет, внимательно.
7. Потом спросит «Trust this certificate? [no]». Нужно ввести «yes» (без кавычек).
В итоге должно быть сообщение: «Certificate was added to keystore».
Ну вот и всё, можно пробовать добавлять плату ESP.
ИгорьК и ZAZ-965 нравится это.
-
Ребят, помогите с аналогичной проблемой для ESP32
прописываю путь https://dl.espressif.com/dl/package_esp32_index.json ,но при заходе в менеджер платВозникла ошибка при загрузке https://downloads.arduino.cc/packages/package_index.json
java.lang.RuntimeException: java.lang.Exception: Возникла ошибка при загрузке https://downloads.arduino.cc/packages/package_index.json
at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onUpdatePressed$1(ContributionManagerUI.java:150)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Exception: Возникла ошибка при загрузке https://downloads.arduino.cc/packages/package_index.json
at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:139)
at cc.arduino.contributions.packages.ContributionInstaller.download(ContributionInstaller.java:333)
at cc.arduino.contributions.packages.ContributionInstaller.downloadIndexAndSignature(ContributionInstaller.java:307)
at cc.arduino.contributions.packages.ContributionInstaller.updateIndex(ContributionInstaller.java:285)
at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onUpdatePressed$1(ContributionManagerUI.java:146)
… 1 more
Caused by: java.nio.file.FileSystemException: C:Users79062AppDataLocalArduino15package_index.json.tmp: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1126)
at cc.arduino.utils.network.FileDownloader.downloadFile(FileDownloader.java:156)
at cc.arduino.utils.network.FileDownloader.download(FileDownloader.java:132)
at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:137)
… 5 moreпричем не пойму почему пишет » Возникла ошибка при загрузке https://downloads.arduino.cc/packages/package_index.json» хотя я другой путь ведь прописал, в файле «preferences» прописан путь, как поменяный в Arduino. Сертификат, как писал Themen установился без проблем. Что я не так делаю? вручную платы ставить не умею =(
Пытаюсь прошить Wemod D1 mini.
В приложении «GyverMatrixOS_v1.15» нажимаю на кнопку «Загрузка» ( Прошивку уже настроил ) и выдаёт ошибку
Arduino: 1.8.10 (Windows 7), Плата:»LOLIN(WEMOS) D1 mini Pro, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 16MB (FS:14MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 921600″
In file included from D:DocumentsDesktopGyverMatrixWiFi-masterfirmwareGyverMatrixOS_v1.15GyverMatrixOS_v1.15.ino:132:0:
D:DocumentsArduinolibrariesFastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.002
# pragma message «FastLED version 3.003.002»
^
In file included from D:DocumentsArduinolibrariesFastLED/FastLED.h:65:0,
from D:DocumentsDesktopGyverMatrixWiFi-masterfirmwareGyverMatrixOS_v1.15GyverMatrixOS_v1.15.ino:132:
D:DocumentsArduinolibrariesFastLED/fastspi.h:130:23: note: #pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output
# pragma message «No hardware SPI pins defined. All SPI access will default to bitbanged output»
^
Executable segment sizes:
IROM : 311104 — code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 27564 / 32768 — code in IRAM (ICACHE_RAM_ATTR, ISRs…)
DATA : 1416 ) — initialized variables (global, static) in RAM/HEAP
RODATA : 2056 ) / 81920 — constants (global, static) in RAM/HEAP
BSS : 31176 ) — zeroed variables (global, static) in RAM/HEAP
Скетч использует 342140 байт (35%) памяти устройства. Всего доступно 958448 байт.
Глобальные переменные используют 34648 байт (42%) динамической памяти, оставляя 47272 байт для локальных переменных. Максимум: 81920 байт.
esptool.py v2.8
Serial port COM3
Traceback (most recent call last):
File «C:Users����AppDataLocalArduino15packagesesp8266hardwareesp82662.6.3/tools/upload.py», line 65, in <module>
esptool.main(cmdline)
File «C:/Users/����/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/esptoolesptool.py», line 2889, in main
esp = chip_class(each_port, initial_baud, args.trace)
File «C:/Users/����/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/esptoolesptool.py», line 237, in __init__
self._port = serial.serial_for_url(port)
File «C:/Users/����/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/pyserialserial__init__.py», line 88, in serial_for_url
instance.open()
File «C:/Users/����/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/pyserialserialserialwin32.py», line 62, in open
raise SerialException(«could not open port {!r}: {!r}».format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port ‘COM3’: FileNotFoundError(2, ‘�� ������� ����� ��������� ����.’, None, 2)
serial.serialutil.SerialException: could not open port ‘COM3’: FileNotFoundError(2, ‘�� ������� ����� ��������� ����.’, None, 2)
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
Что делать? Помогите пожалуйста.
Форум Вопросы и темы по программированию Arduino, ESP8266, STM32, Digispark и пр.
4 сентября, 2019 — 19:58 | |
---|---|
мененжер плат .. нет esp8266 Будущее за микроконтроллерами |
uels Зарегистрирован: 4.09.2019 |
4 сентября, 2019 — 19:58 | #1 |
---|---|
в ютубе предложили на ваш форум |
uels Зарегистрирован: 4.09.2019 |
4 сентября, 2019 — 20:02 | #2 |
---|---|
прошу посмотреть на прямую через программу — TEAM VIEWER |
uels Зарегистрирован: 4.09.2019 |
5 сентября, 2019 — 08:18 | #3 |
---|---|
Сделали все правильно? Будущее за микроконтроллерами |
Admin Зарегистрирован: 3.07.2018 |
5 сентября, 2019 — 08:18 | #4 |
---|---|
Приложите скриншот проще и у меня нет времени чтобы ставить и подключаться к вам по TEAM VIEWER. Да и смысл в этом. Будущее за микроконтроллерами |
Admin Зарегистрирован: 3.07.2018 |
5 сентября, 2019 — 08:21 | #5 |
---|---|
У вас ошибка даже в названии темы. Будущее за микроконтроллерами |
Admin Зарегистрирован: 3.07.2018 |
5 сентября, 2019 — 08:39 | #6 |
---|---|
спасибо — нашел буква не та была — z— написал вместо s — json |
uels Зарегистрирован: 4.09.2019 |
5 сентября, 2019 — 08:44 | #7 |
---|---|
Я знаю правду! Но вам не скажу! =))) |
Степка-3003 Зарегистрирован: 5.09.2019 |
5 сентября, 2019 — 09:12 | #9 |
---|---|
КОПИРОВАТЬ СООБЩЕНИЯ ОБ ОШИБКИ .— В ПРОГРАММЕ .ТАКОЙ ОГРОМНЫЙ ТЕКСТ ПОЛУЧАЕТСЯ |
uels Зарегистрирован: 4.09.2019 |
5 сентября, 2019 — 09:14 | #10 |
---|---|
ЛИШНЕЕ УДАЛИЛ Плата generic (платформа esp8266, пакет esp8266) неизвестнаОшибка компиляции для платы Generic ESP8266 Module. |
uels Зарегистрирован: 4.09.2019 |
5 сентября, 2019 — 09:16 | #11 |
---|---|
У вас какая плата? Будущее за микроконтроллерами |
Admin Зарегистрирован: 3.07.2018 |
Проверка/Оформление/Редактирование: Мякишев Е.А.
Черновик |
При попытке загрузить ESP8266 получаю ошибку «espcomm_sync failed». Как решить эту проблему?[1]
Это сообщение информирует о проблеме с загрузкой прошивки на ESP8266 через последовательное соединение. Причина может варьироваться в зависимости от типа модуля, от параметров, выбранных при загрузке, от того, используете ли вы отдельный USB-Serial конвертер, и т.д. То есть одного простого ответа на то, что является основной причиной проблемы, нет. Чтобы найти ее, придется выполнить диагностику.
Примечание: Если вы новичок в теме ESP8266 и хотели бы избежать потенциальных проблем с загрузкой прошивки, купите модуль ESP8266 со встроенным конвертером USB-Serial. Это существенно сократит количество факторов (в частности, уменьшит возню с настройками), из-за которых вы можете случайно помешать процессу загрузки.
На картинке ниже показаны платы со встроенным конвертером USB-Serial. Их использование, повторюсь, значительно упростит разработку ваших первых проектов на ESP8266.
Если вы используете «голый» (стандартный) модуль ESP8266 (например, ESP-01 или ESP-12), самостоятельно подключенный к отдельному USB-Serial конвертеру, обязательно проделайте следующее:
- Обеспечьте модуль достаточным питанием
- Подключите контакты GPIO0, GPIO15 и CH_PD при помощи подтягивающих/стягивающих резисторов
- Переведите модуль в режим загрузчика
Более подробно читайте в разделе «Стандартные модули ESP8266» статьи «Платы для аддона ESP8266 для IDE Arduino». На картинке ниже показаны платы без встроенного конвертера USB-Serial:
Платы ESP8266 без встроенного конвертера USB-Serial
Предварительные проверки
Чтобы исправить ошибку «espcomm_sync failed», пройдите шаг за шагом инструкцию ниже. Это список решений, ранжированных от самого простого до самого сложного.
1. Прочтите сообщение, показанное в отладочном окне IDE Arduino. Во многих случаях оно предоставляет точную информацию о том, где именно возникла проблема.
Ошибка «Failed to open COM3»
К примеру, сообщение на картинке выше, говорит, что IDE Arduino не может открыть последовательный порт COM3. Следовательно, нужно проверить, выбран ли в IDE Arduino порт, к которому подключен ваш модуль.
Выбор последовательного порта
2. Если модуль подключен к последовательному порту, но не отвечает как модуль ESP8266, сообщение в отладочном окне будет слегка другим (см. ниже). Если к вашему ПК подключены другие модули, проверьте, что загрузили код на ESP8266, а не на, к примеру, Arduino UNO.
Ошибка «espcomm_sync failed»
3. Чтобы ваш ПК мог общаться с ESP8266, выберите в IDE Arduino правильный модуль ESP8266. Если выбрать неправильный модуль, загрузка прошивки может завершиться неудачей.
Выбор платы
Выбрать правильную плату нужно для того, чтобы IDE Arduino мог применить правильный «метод сброса» при переключении платы в режим загрузчика. Разные платы используют разные методы сброса. У некоторых плат нет аппаратных компонентов, чтобы выполнить сброс через IDE Arduino. В таком случае плату нужно перевести в режим загрузчика вручную.
4. Кроме того, загрузка прошивки может не удаться из-за слишком высокой скорости передачи данных. Если у вас длинный или некачественный USB-кабель, попробуйте снизить скорость загрузки в меню «Upload Speed».
Выбор скорости для передачи данных через последовательное соединение
Дополнительные проверки
1. Если проблема не исчезла, проверьте, точно ли модуль вошел в режим загрузчика. Для этого нужно подключить к ESP8266 добавочный конвертер USB-Serial, а затем посмотреть на показываемые сообщения.
Итак, для начала подключите контакты RX и GND конвертера к контактам TX и GND на ESP8266, как показано ниже:
Подключение добавочного USB-Serial конвертера
Затем откройте терминал на скорости 74880 бод и посмотрите, какие сообщения присылает ESP8266 при сбросе, выполняемом для загрузки прошивки. Правильное сообщение должно выглядеть примерно так:
ets Jan 8 2013,rst cause:2, boot mode:(1,7)
Если у вас появилось такое же сообщение, но с другими значениями, то расшифровать его можно при помощи таблицы из этой статьи (см. третью таблицу в разделе «Сообщения о режимах запуска и причине сброса/перезагрузки»). Ключевая информация содержится в первой цифре, находящейся в скобочках рядом с надписью «boot mode», как показано на картинке ниже:
Расшифровка сообщения о режиме запуска
К примеру, сообщение «boot mode (3, 3)» информирует, что контакты GPIO2 и GPIO0 выставлены на HIGH, а GPIO15 – на LOW. Это настройка для нормальной работы модуля (т.е. выполнения программы, записанной на flash-память), но не для режима загрузчика (т.е. программирования flash-памяти).
Примечание: Если выполнить этот шаг неправильно, вы не сможете загрузить прошивку на модуль через последовательный порт.
2. Вы убедились, что модуль находится в режиме загрузчика, но загрузить прошивку по-прежнему не удается. Если вы используете внешний конвертер USB-Serial, проверьте, правильно ли он работает, закольцевав выход на вход. Этой очень простая проверка. Просто подключите друг к другу контакты RX и TX на конвертере как показано на картинке ниже. Затем откройте монитор порта и впишите там несколько символов. Если все в порядке, то все написанные вами символы должны сразу же появится в мониторе порта. Чтобы выполнить такую проверку на модуле со встроенным USB-Serial конвертером, может понадобиться разрушить некоторые дорожки на печатной плате. Я бы сделал это лишь в полном отчаянии. Лучше попробуйте способы, описываемые еще ниже.
3. Еще один способ – это просмотр более детальных отладочных сообщений. Кликните в IDE Arduino на Файл > Настройки (File > Preferences) и поставьте галочку рядом с пунктом «Показать подробный вывод: Загрузка» («Show verbose output during: upload»). Чтобы загрузка прошивки была успешной, эти логи должны выглядеть примерно так:
C:UsersKrzysztofAppDataLocalArduino15packagesesp8266toolsesptool0.4.8/esptool.exe -vv -cd ck -cb 115200 -cp COM3 -ca 0x00000 -cf C:UsersKRZYSZ~1AppDataLocalTempbuild7e44b372385012e74d64fb272d24b802.tmp/Blink.ino.bin esptool v0.4.8 - (c) 2014 Ch. Klippel <ck@atelier-klippel.de> setting board to ck setting baudrate from 115200 to 115200 setting port from COM1 to COM3 setting address from 0x00000000 to 0x00000000 espcomm_upload_file espcomm_upload_mem setting serial port timeouts to 1000 ms opening bootloader resetting board trying to connect flush start setting serial port timeouts to 1 ms setting serial port timeouts to 1000 ms flush complete espcomm_send_command: sending command header espcomm_send_command: sending command payload read 0, requested 1 trying to connect flush start setting serial port timeouts to 1 ms setting serial port timeouts to 1000 ms flush complete espcomm_send_command: sending command header espcomm_send_command: sending command payload espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data Uploading 226368 bytes from to flash at 0x00000000 erasing flash size: 037440 address: 000000 first_sector_index: 0 total_sector_count: 56 head_sector_count: 16 adjusted_sector_count: 40 erase_size: 028000 espcomm_send_command: sending command header espcomm_send_command: sending command payload setting serial port timeouts to 15000 ms setting serial port timeouts to 1000 ms espcomm_send_command: receiving 2 bytes of data writing flash .............................................................................................................................................................................................................................. starting app without reboot espcomm_send_command: sending command header espcomm_send_command: sending command payload espcomm_send_command: receiving 2 bytes of data closing bootloader flush start setting serial port timeouts to 1 ms setting serial port timeouts to 1000 ms flush complete
Логов может быть больше, и это зависит от количества попыток подключения, выполненных «esptool». Проанализируйте эти логи на предмет аномалий в настройках, выбранных в IDE Arduino – вроде другого последовательного порта, метода сброса, скорости передачи данных и т.д. Исправьте найденные ошибки.
Методы сброса
Если вы дошли досюда, а ошибка «espcomm_sync failed» никуда не делась, значит, пришло время расчехлить пушки покрупнее.
Чтобы понять, что происходит, подключите к контактам GPIO0, RST и RXD на ESP8266 осциллограф или логический анализатор. Затем сравните свои измерения с формой сигнала на графиках ниже. В них задокументированы два стандартных метода сброса ESP8266 для загрузки кода, которые можно выбрать в IDE Arduino – «ck» и «nodemcu».
Ck
На картинке ниже изображена цепь, специально подготовленная для определения формы сигнала при использовании метода «ck». Он проще сброса методом «nodemcu» и поэтому часто используется для подключения стандартных модулей ESP к макетной плате. Сверьте это подключение со своим.
Простая цепь для проверки метода «ck»
Графики ниже показывают сигналы напряжения на контактах GPIO0 и RST при загрузке прошивки.
Первый график показывает форму сигнала в начале загрузки кода.
Метод сброса «ck», начало загрузки кода
Второй график показывает полную загрузку скетча «Blink.io» на скорости 921600 бод. Это довольно высокая скорость, поэтому на загрузку уходит всего 8 секунд.
Метод сброса «ck», загрузка скетча «Blink.io»
Когда у «esptool» не получается выполнить загрузку, он инициализирует сброс. Подобная ситуация показана, к примеру, на графике ниже.
Метод сброса «ck», конец загрузки
Каждая новая попытка отображается в логах загрузки:
resetting board trying to connect flush start setting serial port timeouts to 1 ms setting serial port timeouts to 1000 ms flush complete espcomm_send_command: sending command header espcomm_send_command: sending command payload read 0, requested 1
Цепь, показанная выше, имеет одно важное ограничение при работе с IDE Arduino. После открытия монитора порта ( Ctrl + ⇧ Shift + M ) линии RTS и DTR переключаются в состояние LOW. Поскольку линия RTS подключена к входной линии REST на ESP8266, то ESP8266 просто зависнет в состоянии сброса и запустить его будет нельзя. Следовательно, после загрузки прошивки вам нужно отключить обе линии или воспользоваться другой консолью (не монитором порта IDE Arduino), которая не переключает RTS и DTR в состояние LOW. В противном случае модуль зависнет в ожидании переключения REST в состояние HIGH и в мониторе порта ничего показывать не будет.
Что касается другой консоли, можно воспользоваться монитором порта IDE Arduino для ESP8266, разработанной пользователем mytrain и обсуждаемой в отчете 1360.
Если предпочитаете программы, то для Windows я бы порекомендовал бесплатную и удобную Termite.
Nodemcu
Метод сброса «nodemcu» получил название от платы NodeMCU, где он был реализован в самый первый раз. Этот метод позволяет обойти ограничения с управлением линиями RTS и DTR, о которых говорилось в главе о методе «ck».
Ниже показана простая цепь для измерения формы сигнала при помощи метода «nodemcu»:
Простая цепь для проверки метода «nodemcu»
Первый график показывает напряжение на контактах GPIO0 и RST в начале загрузки прошивки:
Метод сброса: «nodemcu», начало загрузки
Обратите внимание, что последовательность сигналов длится в 10 раз короче, чем при использовании метода «ck» – примерно 25 мс против 250 мс.
Второй график показывает загрузку скетча «Blink.ino» на скорости 921600 бод. Не считая разницы в длине последовательности сигналов, он выглядит как аналогичный график для метода «ck».
Метод сброса: «nodemcu», загрузка полностью
Третий график тоже демонстрирует загрузку скетча «Blink.ino» на скорости 921600 бод, но с двумя попытками сброса.
Метод сброса: «nodemcu», с двумя новыми попытками сброса
Если вам интересно, как реализуется этот метод сброса, обратите внимание на схемы ниже. Он не притягивает линии RTS и DTR к «земле», когда вы открываете в IDE Arduino монитор порта.
Реализация сброса методом «nodemcu»
Такая цепь состоит из двух транзисторов и резисторов, расположенных на плате NodeMCU. Слева изображены полная схема и таблица истинности – она показывает, как сигналы RTS и DTR на последовательном порту преобразуются в контакты RST и GPIO0 на ESP8266. Более подробно смотрите в репозитории NodeMCU на GitHub.
Эм… похоже, я застрял
Надеемся, советы выше помогли вам справиться с ошибкой «espcomm_sync failed», а загрузка прошивки на ESP8266 стала быстрой и беспроблемной.
Если опять нет, пробегитесь по вопросам ниже (они представляют короткую версию того, о чем писалось в главах выше):
Предварительные проверки
- Подключен ли ваш модуль к последовательному порту? Видит ли его IDE Arduino?
- Отвечает ли подключенный девайс на IDE Arduino? Какое именно сообщение появляется в отладочном окне?
- Правильный ли модуль ESP8266 выбран в меню «Плата»? Что именно у вас выбрано?
- Пробовали ли вы снизить скорость загрузки? Какую скорость вы уже попробовали?
Дополнительные проверки
- Какое сообщение присылает ESP8266 на скорости 74880 бод, когда вы входите в режим загрузчика?
- Проверяли ли вы конвертер USB-Serial, зациклив его? Каков был результат?
- Соответствует ли информация, показанная в логах, настройкам IDE Arduino? Если да, что в них?
Метод сброса
- Какой метод сброса вы используете?
- Какая у вас схема подключения? Она соответствует той, что показана в FAQ?
- Какую форму имеет сигнал во время сброса? Она соответствует форме сигнала в FAQ?
- Какую форму имеет сигнал при полной загрузке скетча? Она соответствует форме сигнала в FAQ?
ПО
- Вы используете стабильную версию аддона ESP8266 для IDE Arduino? Что это за версия?
- Как называется и какая версия у ваших IDE и ОС?
Если застопорились на каком-то шаге, опишите его как можно подробней и обратитесь за помощью на форум сообщества ESP8266.
Итого
С таким разнообразием модулей и плат на базе ESP8266, а также возможных методов сброса, решение проблем с загрузкой может потребовать очень много проб и попыток.
Если вы новичок, лучше использовать платы со встроенными USB-Serial конвертером и цепью для питания. Осторожно проверяйте сообщения в отладочном окне, а затем действуйте согласно этим сообщениям. Выберите правильный тип модуля в IDE Arduino и правильно настройте скорость загрузки прошивки. Проверьте, действительно ли плата переключена в режим загрузчика. Проверьте работоспособность USB-Serial конвертера, зациклив его. Проанализируйте детальные логи на предмет несоответствий с настройками IDE Arduino.
Проверьте схему подключения и форму сигнала на соответствие используемому методу сброса.
Если застряли, спросите совета у сообщества, предоставив данные обо всех выполненных вами шагах.
Тестовая площадка, которой я пользовался для проверки метода «ck»
На картинке выше показана тестовая площадка для метода «ck».
Во время подготовки этой статьи не пострадало ни одного ESP8266.
См.также
Внешние ссылки
- ↑ arduino-esp8266.readthedocs.io — I am getting “espcomm_sync failed” error when trying to upload my ESP. How to resolve this issue?