ошибка: espcomm_upload_mem failed при загрузке скетча
Я новичок в мире Arduino. Я подключил свой модуль Wi-Fi (esp8266 v01) к моему arduino Uno следующим образом:
http://www.teomaragakis. com/hardware/electronics/how-to-connect-an-esp8266-to-an-arduino-uno/
И я загрузил фреймворк arduino ide, чтобы иметь возможность использовать arduino IDE, а не отправлять AT-команды через последовательный монитор.
При попытке загрузить пример скетча, который отправляет http-запрос, который я нашел на github, я получаю следующую ошибку:
Arduino: 1.8.4 (Windows 8.1), Board: "Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"
Archiving built core (caching) in: C:\Users\Yasmeen\AppData\Local\Temp\arduino_cache_354217\core\core_esp8266_esp8266_generic_CpuFrequency_80,FlashFreq_40,FlashMode_dio,UploadSpeed_115200,FlashSize_512K64,ResetMethod_ck,Debug_Disabled,DebugLevel_None_____9d1d735445f8d7bf19746e2177d24e71.a
Sketch uses 285417 bytes (65%) of program storage space. Maximum is 434160 bytes.
Global variables use 38688 bytes (47%) of dynamic memory, leaving 43232 bytes for local variables. Maximum is 81920 bytes.
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
Посмотрев в Интернете и изучив информацию, я понял, что это как-то связано с перепрошивкой прошивки или чем-то еще. Я наткнулся на этот вопрос:
Ошибка ESP8266: ошибка espcomm_upload_mem при загрузке скетча
и в ответе было сказано, что он купил конвертер.. что это значит? Означает ли это купить это?: https://www.amazon.co.uk/gp/ product/B06Y3FNGJF/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
Мне действительно нужна помощь, я застрял на этом последние несколько дней и серьезно обдумываю, стоит ли приобретать arduino wifi shield, поскольку он поставляется с уже встроенным Wi-Fi... хотя это стоит довольно дорого!
5 ответов
У ESP8266 есть два "режима". Режим «Run» и режим «Flash». В режиме «Выполнить» выполняется прошивка, установленная на ESP8266. Прошивка по умолчанию — это прошивка AT, которая позволяет управлять устройством с помощью AT-команд через последовательный порт.
Обратите внимание, что сайт, на который вы ссылаетесь, содержит ошибочную информацию о CH_PD, которая должна говорить о GPIO0.
В режиме "Flash" вы можете загрузить новую прошивку (известную также как "скетч"), чтобы заставить устройство работать по-другому.
Основная последовательность программирования:
- Переключите устройство в режим флэш-памяти (соедините GPIO0 с GND)
- Загрузить скетч с помощью интегрированной среды разработки
- Переключите устройство в режим работы (подключите GPIO0 к 3,3 В).
Из-за этих дополнительных шагов многие люди предпочитают инвестировать в небольшую интерфейсную плату USB, разработанную специально для программирования ESP8266, чтобы облегчить их жизнь. Обычно на них есть переключатель, чтобы установить, подключен ли GPIO0 к GND или 3,3 В.
Спасибо за пояснение. Действительно помогает. Я подключил CH_PD к GND, пытаюсь запустить скетч, но все равно получаю ту же ошибку: предупреждение: ошибка espcomm_sync
ошибка: espcomm_open не удалось
ошибка: ошибка espcomm_upload_mem
ошибка: espcomm_upload_mem не удалось
Не знаю, что происходит не так, @dfqupwndguerrillamailde
Получите адаптер. Это делает все намного проще. На eBay они стоят очень дешево., @Majenko
Будет ли работать этот адаптер?: https://www.amazon.co.uk/gp/product/B06Y3FNGJF/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1, @dfqupwndguerrillamailde
Это неверно. CH_PD включает или выключает чип. Я думаю, вы имеете в виду GPIO0, @tttapa
@tttapa Я тоже думал, что это GPIO0, но на сайте, на который есть ссылка в вопросе, написано CH_PD., @Majenko
@dfqupwndguerrillamailde Эээ... нет? Это не USB-адаптер ESP8266. Это переводчик логического уровня. То, что вы ищете, имеет разъем USB на одном конце и разъем для ESP8266 на другом, с переключателем посередине., @Majenko
@dfqupwndguerrillamailde Похоже на то, что показано на картинке в ответе, на который вы дали ссылку., @Majenko
@Majko Прав ли я, полагая, что переключение GPIO0 на GND и VCC эквивалентно получению этого USB-адаптера? Кроме того, я только что изменил GPIO0 на GND, загрузил пустой эскиз, и он загрузился нормально. Теперь я пытаюсь загрузить пример кода на github, но теперь получаю ту же ошибку. Я поиграюсь и попробую загрузить обратно, @dfqupwndguerrillamailde
CHPD требует жесткого подключения к VCC, а не к земле. на модулях ESP-01S он уже подключен., @dandavis
По умолчанию ESP8266 запускает программу во флэш-памяти.
Чтобы загрузить новую прошивку через UART, вы должны изменить режим загрузки, подключив GPIO0 к земле во время сброса.
GPIO15 должен быть низким, а GPIO2 должен быть высоким во время загрузки в обоих случаях. Для GPIO требуется внешний подтягивающий резистор, внутренний подтягивающий резистор для GPIO2 включается во время загрузки, поэтому вам не нужно добавлять внешний резистор.
Чтобы предотвратить короткое замыкание GPIO0, если он используется в качестве выхода в вашем скетче, рекомендуется добавить последовательный резистор для ограничения тока.
Чтобы загрузить скетч:
1. нажмите и удерживайте кнопку сброса
2. нажмите и удерживайте кнопку программы
3. отпустите кнопку сброса, ESP загрузится в программном режиме
4. отпустите кнопку программы
5. загрузить скетч
Если ваш USB-to-Serial разрывает линии RTS и/или DTR, вы можете автоматизировать процедуры сброса и режима программирования.
У меня была такая же проблема при загрузке в NodeMCU.
Проблема заключалась в том, что режим не был выбран программный режим
даже после выполнения следующих шагов:
- нажмите и удерживайте кнопку сброса
- нажмите и удерживайте кнопку программы
- отпустите кнопку сброса, ESP загрузится в программном режиме
- отпустите кнопку программы
- загрузить скетч
Чтобы решить эту проблему, сделайте следующее:
- замкните контакт GPIO 0 (D3) на землю с помощью перемычки.
- нажмите кнопку сброса
- загрузить скетч
- удалите перемычку
Готово!!!!
Это одно из простых решений, которое сработало для меня:
- Отсоедините USB-соединение от компьютера.
- Удерживайте кнопку вспышки на nodemcu/esp8266;
- Подключите USB-соединение и быстро отпустите кнопку вспышки;
- Теперь попробуйте загрузить скетч.
Спасибо.
в зависимости от используемого кабеля скорости USB иногда эта проблема часто возникает, если я использую неподходящий кабель. если ваш параметр com равен 9600, вам нужно настроить скорость загрузки в меню инструментов -> скорость загрузки выше, чем 9600 ... для exp: 57600. это должно работать!!
при скорости 9600 бод загрузка начинается, но в середине происходит сбой из-за проблем с esptool, используемым в пакете Arduino esp8266 до версии 2.4.1. начиная с версии 2.5.0 используется esptool.py, @Juraj
- Могу ли я использовать выход 3,3 В Arduino напрямую к esp8266?
- Варианты протокола для обмена данными между Arduino и ESP8266
- Сдвиг уровня 5В <-> 3,3В
- Не удается загрузить скетчи или прошить Nodemcu 1.0 12E (CP2102), но у него есть драйверы и он реагирует на RST на последовательном мониторе
- Разбор сообщений с сервера MQTT
- Программный сброс WDT HX711
- Проблемы с IP-адресом esp8266
- Использование ESP8266 с Arduino Uno - не удается заставить AT-команду работать
Вы приняли к сведению абзац в вашей первой ссылке, который гласит: «И поскольку мы говорили о выводе CH_PD, помните, что если вы хотите прошить ESP8266, вы должны подключить вывод GPIO0 к GND (синяя линия), который помещает ESP в режим вспышки.`, @Majenko
@Majenko Я могу отправлять AT-команды с помощью модуля, поэтому я не должен находиться в режиме флэш-памяти при попытке отправить http-запрос? Кроме того, перепрошивка означает обновление прошивки в esp2866?, @dfqupwndguerrillamailde
>Чтобы решить проблему, сделайте это > > Замкните контакт GPIO 0 (D3) на землю с помощью перемычки. >нажать кнопку сброса >загрузить скетч >снимите перемычку. Сделанный!!!! Спасибо за эту заметку, которая решила мою проблему, @Duvy