Почему я получаю недопустимую ошибку заголовка пакета (0xF0) при попытке загрузить код на esp8266?

Решено : В Mac я вернулся к инструментам - > Менеджер плат, затем удалил 3.0 и понизил до 2.5, и он начал работать. Я нашел решение в этой теме.


Текущее соединение между uno R3 и esp8266

UNO ----- ESP8266

RX — RX
TX — TX
GND — GND
3.3V — VCC (used bread board)
3.3V — CH_PD (used bread board)
GPIO - GND

UNO ----- UNO

Reset -- GND

Затем ESP8266 посылает "ОК", когда я отправляю сообщение с последовательного монитора. При загрузке красный и синий индикаторы мигают в esp8266, а индикатор rx и tx мигает в uno r3.

Мне пришлось выполнить sudo launchctl stop /dev/cu.usbmodemxxx перед запуском команды ниже.

Поскольку у меня есть GPIO, подключенный к GND, я думал, что это вызовет режим программирования, но по какой-то причине он выдает недопустимый заголовок пакета. Я получаю ту же ошибку при попытке загрузить код из arduino IDE.

Я тоже попробовал команду ниже из строки cmd.

$sudo python esptool.py -t --chip esp8266  --port /dev/cu.usbmodemxxx --before no_reset flash_id
esptool.py v2.8
Serial port /dev/cu.usbmodemxxx
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.000 Read 3 bytes: f8fef0
TRACE +0.000 Read invalid data: f8fef0
TRACE +0.000 Remaining data in serial buffer: 
.TRACE +0.056 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.001 Read 1 bytes: f0
TRACE +0.000 Read invalid data: f0
TRACE +0.000 Remaining data in serial buffer: f0f0
.TRACE +0.056 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

......

A fatal error occurred: Failed to connect to ESP8266: Invalid head of packet (0xF0)

Ниже приведено изображение arduino IDE с кодом и платой, выбранной как esp8266.

Я слежу за этим постом https://iot-guider.com/esp8266-nodemcu/how-to-program-esp8266-with-arduino-uno/ и у меня точно такое же оборудование.

ОБНОВЛЕНИЕ:

Когда я попробовал это подключение в Windows, оно начинает загружать код без ошибок. Итак, я предполагаю, что это как-то связано с MAC.

, 👍-1

Обсуждение

Это звучит так, как будто вы опускаете какую-то информацию... какова роль UNO? Вы используете его для прошивки ESP? Кроме того, какой GPIO вы используете для GND? В ESP их много. Также мигает ESP [требуется поднять или опустить три GPIO](https://circuits4you.com/2016/12/14/reset-programming-esp8266/). Наконец, я отмечаю, что вы подключаете RX к RX и TX к TX-обычно вам нужно подключить TX (_transmit_) к RX (_receive_) по последовательному соединению., @orithena

@orithena Я следил за этим постом https://iot-guider.com/esp8266-nodemcu/how-to-program-esp8266-with-arduino-uno/ У меня точно такое же оборудование., @solti

Из этой статьи: "Также подключите линии RX и TX обоих". - это означает, что TX на UNO подключается к RX на ESP, а RX на UNO-к TX на ESP. Я повторяю это, потому что в вашем вопросе эти соединения указаны неправильно. Я также немного обеспокоен тем, что в этих инструкциях показано, как подключить 5 В TX/RX UNO к 3,3 В TX/RX ESP..., @orithena

"Кроме того, подключите линии RX и TX обоих". эта строка не обязательно говорит, я говорю это, потому что изображение соединяет RX esp8266 с RX uno и TX esp8266 с TX uno. Кстати, я попытался подключить RX-TX и TX-RX, но получил ту же ошибку. Я также попытался подключиться к 5 В и получил ту же ошибку., @solti

Atmega328 находится в режиме сброса - по сути, в состоянии покоя. Этот метод заимствует вспомогательный чип Uno 16U2, преобразователь USB <->TTL для программирования ESP. Соединения Rx и Tx являются правильными с точки зрения связи между ПК и ESP, и в этом случае '328 не играет никакой роли в связи. Тем не менее, я разделяю вашу озабоченность по поводу управления приемником 3,3 В ESPs с передатчиком 5 В, однако., @JRobert

Я пробовал как 3,3 В, так и 5 В и снова пробовал 3,3 В в новом esp8266, всегда получал одну и ту же ошибку., @solti

выберите Порт в меню Сервис, @Juraj

@Juraj обновил изображение. Изображение, которое у меня было ранее, было сделано, когда я не был подключен (я просто хотел показать свою конфигурацию)., @solti

Независимо от того, что говорится в руководстве в Интернете, подключение Rx к Rx и Tx к Tx определенно неверно, и в худшем случае это может даже повредить вашему оборудованию. вы должны подключить передающий вывод A к принимающему выводу B и наоборот. Если это все еще не работает, ошибка где-то в другом месте., @Sim Son

@SimSon При переключении соединения RX и TX я получаю ошибку тайм-аута., @solti


1 ответ


0

Учебнику, на который вы ссылаетесь, нельзя доверять! Есть главные ошибки:

  1. Они подключают устройство 3,3 В к устройствам 5 В без каких-либо мер по преобразованию логических уровней.
  2. Подключение Rx к Rx (или Tx к Tx), как правило, не то, что вы делаете, если хотите обмениваться данными между устройствами. Для этого передающая линия должна быть подключена к приемной линии. В случае, если arduino сам что-то печатает. (), конфликт на шине может привести к короткому замыканию и повредить контакты UART.
  3. Они подключают ESP к макету, который просто не работает! Это приведет к короткому замыканию нескольких контактов и, возможно, уничтожит некоторое оборудование. По крайней мере, это не может так работать.

Я не знаю, просто ли человек, который сделал этот учебник, понятия не имеет или занимается троллингом, но вам нужно найти другой учебник (и, к сожалению, я должен сказать, возможно, получить новый ESP).

Если все, что вы хотите, это использовать arduino в качестве моста USB для UART, я предлагаю удалить чип atmega из его гнезда на arduino или убедиться, что он не запускает скетч, если он что-то печатает. Контакты UART также должны быть сконфигурированы в качестве входов.

,

Хотя в каждом другом учебнике в Интернете используется ESP с макетной платой., @solti

5 отверстий (A,B,C,D,E) ряда соединены вместе на этих макетах. Можете ли вы показать мне другой пример, где ESP01 помещается на макет? Возможно, они используют один из модулей на основе ESP, таких как nodeMCUs, который можно использовать на макете. Штыревые заголовки с двумя рядами, как правило, не очень подходят для макетных плат..., @Sim Son

Это еще один https://youtu.be/ZJnpgYlelEA?list=LL . Также мне удалось решить эту проблему, на своем Mac я вернулся к инструментам - > Менеджер плат, затем удалил 3.0 (У меня была версия 3.0) и снизилась до 2.5, и он начал работать (то есть начал загрузку кода, и код на esp8266 был выполнен, как и ожидалось). Да, это все еще использует ESP01 на макетной плате. Я отредактировал и упомянул об этом в начале своего вопроса., @solti

@solti в этом видео человек использует соединительные провода для подключения esp к макету. То, что я написал, все еще применимо..., @Sim Son

ваш пункт 2 недействителен. цель состоит в том, чтобы использовать USB Uno, а не подключаться к ATmega., @Juraj

@Juraj Я вижу, я отредактирую свой ответ. Но действительно ли это нормально? Что делать, если ATmega запускает код и что-то печатает? На мой взгляд, этого не следует делать, если в настоящее время не задействованы драйверы линий limitung... которых нет на arduino., @Sim Son

ATmega должна иметь скетч без Serial.begin (BareMinimum, мигает) или сброса, подключенного к заземлению, @Juraj