Произошла ошибка при загрузке скетча esp32

Руководство по поиску и устранению проблем ESP32

У ESP32 есть несколько распространенных проблем, особенно когда вы пытаетесь загрузить новые скетчи или установить плату ESP32 в Arduino IDE. Это руководство посвящено неполадкам ESP32 при программировании ее в среде Arduino. Здесь мы приведём список наиболее распространенных проблем с ESP32, а также расскажем, как исправить их.

Важно: убедитесь, что у вас установлена ​​последняя версия Arduino IDE. Использование другой версии Arduino IDE может вызвать непредвиденные проблемы и ошибки.

troubleshootingguide

Как мне установить пакет ESP32 для Arduino IDE?

Существует пакет ESP32 для среды Arduino, который позволяет вам программировать плату в Arduino IDE.  Итак, по порядку:

  • В среде Arduino переходим Файл > Настройки;
  • В графе дополнительные ссылки для менеджера плат указываем эту ссылку: https://dl.espressif.com/dl/package_esp32_index.json

settings

  • Затем переходим в Инструменты > Плата “Arduino UNO” > Менеджер плат, вбиваем в поиске esp32 и устанавливаем пакет для платы.

boardsearching

Не отображается плата ESP32 в меню инструментов Arduino

Если плата не отображается в Arduino IDE, убедитесь, что вы щелкнули по маленькой стрелке (выделенной на рисунке ниже), чтобы найти свою плату:

arrowdown

Если и в этот раз вы не можете найти название своей платы ESP32,  рекомендуем повторить процесс установки с нуля.

C:/Users/User/Documents/Arduino/hardware/espressif/esp32/ tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-g ++ »: файл не существует

Если Arduino IDE не может скомпилировать код для платы ESP32 и выдает данную ошибку, рекомендуем переустановить ESP32.

Примечание. На ПК с Windows часто установлено несколько версий Arduino IDE (portable и устанавливаемая). Убедитесь, что вы используете то приложение Arduino, в которое вы установили ESP32.

Не удалось подключиться к ESP32: время ожидания истекло… Подключение…»

В данном случае при попытке загрузить скетч на плату приложение не может подключиться к ней. Это значит, что ESP32 не находится в режиме прошивки / загрузки.

Выполните следующие действия:

  • Удерживайте кнопку «BOOT » на плате ESP32.

boot

  • Нажмите кнопку «Загрузка» в Arduino IDE, чтобы загрузить новый скетч:
  • После того, как вы увидите «Connecting…. » в Arduino IDE, уберите палец с кнопки «BOOT» :

uploading

  • После этого, вы должны увидеть сообщение о завершении загрузки

Вот и все. На ESP32 должен быть загружен новый скетч. После загрузки нового скетча нажмите кнопку «ENABLE», чтобы перезапустить ESP32 и запустить загруженный скетч.

Ошибка при компиляции скетча WiFiScan

Если вы попытаетесь загрузить скетч ESP32 WiFiScan.ino, который есть в примерах

Wifiscan-

И он не может скомпилироваться с подобным сообщением об ошибке:

In function void setup():

ScanNetworks:52: error: class WiFiClass has no member named firmwareVersion

String fv = WiFi.firmwareVersion();

То вероятнее всего, среда Arduino компилирует библиотеку WiFi для платы Arduino (вместо использования библиотеки ESP32 WiFi).

Примечание: Вы, вероятно, никогда не будете использовать WiFi-экран с платой Arduino, так ведь? Если вы его не используете, вы можете удалить эту папку (ну или переместить ее на рабочий стол, например).

Библиотека WiFi находится по аналогичному пути:

C:UsersruisantosDownloadsarduino-1.8.7-windowsarduino-1.8.7librariesWiFi

И /или в:

C:UsersruisantosDocumentsArduinolibrarieslibrariesWiFi

После удаления всей папки библиотеки WiFi из одного или обоих мест перезапустите Arduino IDE и попробуйте снова скомпилировать код.

COM-порт не найден / недоступен

Если вы подключаете плату ESP32 к компьютеру, но не можете выбрать порт ESP32, доступный в вашей Arduino IDE (он неактивен):

cannotfindcomport

Это может быть одна из следующих двух проблем:

  • Отсутствуют драйверы USB;
  • Кабель USB не имеет проводов для передачи данных.

Если вы не видите доступный COM-порт вашего ESP, это может означать, что у вас не установлены драйверы USB. Присмотритесь к микросхеме рядом с регулятором напряжения на плате и проверьте ее название.

Плата ESP32 DEVKIT V1 DOIT, например, использует чип CP2102.

CP2102

Зайдите в поисковик и найдите свой чип, установите драйверы для него.

DriverDownload

Вы можете скачать драйверы CP2102 на сайте Silicon Labs.

SiliconLabs

После их установки перезапустите Arduino IDE, и вы должны увидеть COM-порт в меню «Инструменты».

Если у вас установлены драйверы, но вы не видите свое устройство, еще раз проверьте, что вы используете USB-кабель с проводами для передачи данных.

USB-кабели от внешних аккумуляторов часто не имеют проводов для передачи данных (они только заряжают). То есть, ваш компьютер не сможет установить последовательную связь с ESP32. Используйте другой USB-кабель.

Монитор порта в Arduino IDE «не работает»

Если ESP32 выводит только странный текст или бессвязные сообщения в мониторе порта среды Arduino, убедитесь, что у вас выбран правильный COM-порт, и установите правильную скорость передачи. В большинстве примеров используется скорость 115200 бод.

115200baud

Ошибка: «Brownout detector was triggered»

Когда вы открываете монитор порта и появляется повторяющееся сообщение об ошибке «Brownout detector was triggered», скорее всего это значит, что есть какая-то проблема с оборудованием.

Это часто связано с одной из следующих проблем:

USB-кабель плохого качества;

Слишком длинный USB-кабель;

Дефект в плате (плохо припаянные соединения);

Неисправный USB-порт на ПК;

Через USB-порт на ПК идет недостаточно питания.

Решение: попробуйте другой более короткий USB-кабель, попробуйте другой USB-порт компьютера или используйте USB-концентратор с внешним источником питания.

Плата ESP32 не работает с Arduino IDE

Если вы следовали всем советам по устранению неполадок, а ESP32 не работает с Arduino IDE, мы рекомендуем попробовать редакторы Atom и PlatformIO.

Заключение

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

Данный материал был переведен с сайта RandomNerdTutorials.com. Авторские права принадлежат ее автору — Rui Santos. Автор продает очень полезные и толковые курсы по ESP8266 / ESP32 (на английском языке), ознакомиться с которыми можно по ссылке.
Вопросы по прошивке и работе с кодом лучше писать напрямую автору в комментариях к статье (на англ. языке)

Вольтик — это слаженная команда амбициозных и заядлых инженеров. Мы создали этот проект с целью вовлечения вас, талантливых и начинающих профессионалов, в увлекательный мир мейкерской микроэлектроники!

Руководство по поиску и устранению проблем ESP32

У ESP32 есть несколько распространенных проблем, особенно когда вы пытаетесь загрузить новые скетчи или установить плату ESP32 в Arduino IDE. Это руководство посвящено неполадкам ESP32 при программировании ее в среде Arduino. Здесь мы приведём список наиболее распространенных проблем с ESP32, а также расскажем, как исправить их.

Важно: убедитесь, что у вас установлена ​​последняя версия Arduino IDE. Использование другой версии Arduino IDE может вызвать непредвиденные проблемы и ошибки.

troubleshootingguide

Как мне установить пакет ESP32 для Arduino IDE?

Существует пакет ESP32 для среды Arduino, который позволяет вам программировать плату в Arduino IDE.  Итак, по порядку:

  • В среде Arduino переходим Файл > Настройки;
  • В графе дополнительные ссылки для менеджера плат указываем эту ссылку: https://dl.espressif.com/dl/package_esp32_index.json

settings

  • Затем переходим в Инструменты > Плата “Arduino UNO” > Менеджер плат, вбиваем в поиске esp32 и устанавливаем пакет для платы.

boardsearching

Не отображается плата ESP32 в меню инструментов Arduino

Если плата не отображается в Arduino IDE, убедитесь, что вы щелкнули по маленькой стрелке (выделенной на рисунке ниже), чтобы найти свою плату:

arrowdown

Если и в этот раз вы не можете найти название своей платы ESP32,  рекомендуем повторить процесс установки с нуля.

C:/Users/User/Documents/Arduino/hardware/espressif/esp32/ tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-g ++ »: файл не существует

Если Arduino IDE не может скомпилировать код для платы ESP32 и выдает данную ошибку, рекомендуем переустановить ESP32.

Примечание. На ПК с Windows часто установлено несколько версий Arduino IDE (portable и устанавливаемая). Убедитесь, что вы используете то приложение Arduino, в которое вы установили ESP32.

Не удалось подключиться к ESP32: время ожидания истекло… Подключение…»

В данном случае при попытке загрузить скетч на плату приложение не может подключиться к ней. Это значит, что ESP32 не находится в режиме прошивки / загрузки.

Выполните следующие действия:

  • Удерживайте кнопку «BOOT » на плате ESP32.

boot

  • Нажмите кнопку «Загрузка» в Arduino IDE, чтобы загрузить новый скетч:
  • После того, как вы увидите «Connecting…. » в Arduino IDE, уберите палец с кнопки «BOOT» :

uploading

  • После этого, вы должны увидеть сообщение о завершении загрузки

Вот и все. На ESP32 должен быть загружен новый скетч. После загрузки нового скетча нажмите кнопку «ENABLE», чтобы перезапустить ESP32 и запустить загруженный скетч.

Ошибка при компиляции скетча WiFiScan

Если вы попытаетесь загрузить скетч ESP32 WiFiScan.ino, который есть в примерах

Wifiscan-

И он не может скомпилироваться с подобным сообщением об ошибке:

In function void setup():

ScanNetworks:52: error: class WiFiClass has no member named firmwareVersion

String fv = WiFi.firmwareVersion();

То вероятнее всего, среда Arduino компилирует библиотеку WiFi для платы Arduino (вместо использования библиотеки ESP32 WiFi).

Примечание: Вы, вероятно, никогда не будете использовать WiFi-экран с платой Arduino, так ведь? Если вы его не используете, вы можете удалить эту папку (ну или переместить ее на рабочий стол, например).

Библиотека WiFi находится по аналогичному пути:

C:UsersruisantosDownloadsarduino-1.8.7-windowsarduino-1.8.7librariesWiFi

И /или в:

C:UsersruisantosDocumentsArduinolibrarieslibrariesWiFi

После удаления всей папки библиотеки WiFi из одного или обоих мест перезапустите Arduino IDE и попробуйте снова скомпилировать код.

COM-порт не найден / недоступен

Если вы подключаете плату ESP32 к компьютеру, но не можете выбрать порт ESP32, доступный в вашей Arduino IDE (он неактивен):

cannotfindcomport

Это может быть одна из следующих двух проблем:

  • Отсутствуют драйверы USB;
  • Кабель USB не имеет проводов для передачи данных.

Если вы не видите доступный COM-порт вашего ESP, это может означать, что у вас не установлены драйверы USB. Присмотритесь к микросхеме рядом с регулятором напряжения на плате и проверьте ее название.

Плата ESP32 DEVKIT V1 DOIT, например, использует чип CP2102.

CP2102

Зайдите в поисковик и найдите свой чип, установите драйверы для него.

DriverDownload

Вы можете скачать драйверы CP2102 на сайте Silicon Labs.

SiliconLabs

После их установки перезапустите Arduino IDE, и вы должны увидеть COM-порт в меню «Инструменты».

Если у вас установлены драйверы, но вы не видите свое устройство, еще раз проверьте, что вы используете USB-кабель с проводами для передачи данных.

USB-кабели от внешних аккумуляторов часто не имеют проводов для передачи данных (они только заряжают). То есть, ваш компьютер не сможет установить последовательную связь с ESP32. Используйте другой USB-кабель.

Монитор порта в Arduino IDE «не работает»

Если ESP32 выводит только странный текст или бессвязные сообщения в мониторе порта среды Arduino, убедитесь, что у вас выбран правильный COM-порт, и установите правильную скорость передачи. В большинстве примеров используется скорость 115200 бод.

115200baud

Ошибка: «Brownout detector was triggered»

Когда вы открываете монитор порта и появляется повторяющееся сообщение об ошибке «Brownout detector was triggered», скорее всего это значит, что есть какая-то проблема с оборудованием.

Это часто связано с одной из следующих проблем:

USB-кабель плохого качества;

Слишком длинный USB-кабель;

Дефект в плате (плохо припаянные соединения);

Неисправный USB-порт на ПК;

Через USB-порт на ПК идет недостаточно питания.

Решение: попробуйте другой более короткий USB-кабель, попробуйте другой USB-порт компьютера или используйте USB-концентратор с внешним источником питания.

Плата ESP32 не работает с Arduino IDE

Если вы следовали всем советам по устранению неполадок, а ESP32 не работает с Arduino IDE, мы рекомендуем попробовать редакторы Atom и PlatformIO.

Заключение

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

Данный материал был переведен с сайта RandomNerdTutorials.com. Авторские права принадлежат ее автору — Rui Santos. Автор продает очень полезные и толковые курсы по ESP8266 / ESP32 (на английском языке), ознакомиться с которыми можно по ссылке.
Вопросы по прошивке и работе с кодом лучше писать напрямую автору в комментариях к статье (на англ. языке)

Справочник языка Arduino
Конструкции языка
  • setup()‎ • loop()
Управляющие операторы
  • if • if…else • for • switch case • while • do… while • break • continue • return • goto
Синтаксис
  • ; (точка с запятой) • () (фигурные скобки) • // (однострочный комментарий) • /* */ (многострочный комментарий) • #define • #include
Арифметические операторы
  • = (оператор присваивания) • + (оператор сложения) • — (оператор вычитания) • * (оператор умножения) • / (оператор деления) • % (оператор деления по модулю)
Операторы сравнения
  • == (оператор равенства) • != (оператор неравенства) • < (оператор меньше) • > (оператор больше) • <= (оператор меньше или равно) • >= (оператор больше или равно)
Логические операторы
  • && (И) • ИЛИ • ! (Отрицание)
Указатели
  • * (оператор разыменования) • & (оператор ссылки)
Побитовые операторы
  • Побитовый оператор AND (&) • Побитовый оператор OR • Побитовый оператор XOR (^) • Побитовый оператор NOT (~) • Побитовый оператор сдвига влево (<<) • Побитовый оператор сдвига вправо (>>)
Унарные операторы
  • ++ (инкремент) • — (декремент) • += (сложение с присваиванием) • -= (вычитание с присваиванием) • *= (умножение с присваиванием) • /= (деление с присваиванием) • &= (побитовый оператор AND, совмещенный с присваиванием) • |= (побитовый оператор OR, совмещенный с присваиванием)
Данные
Константы
  • Константы • HIGH • LOW • INPUT • OUTPUT • INPUT_PULLUP • LED_BUILTIN • true • false • Целочисленные константы • Константы с плавающей запятой
Типы данных
  • boolean • char • byte • int • unsigned int • word • long • unsigned long • float • double • string • String • array • void
Преобразование типов данных
  • char() • byte() • int() • word() • long() • float()
Область видимости переменных и квалификаторы
  • Область видимости • static • volatile • const
Utilities
  • sizeof() • PROGMEM
Функции
Цифровой ввод/вывод
  • pinMode() • digitalWrite() • digitalRead()
Аналоговый ввод/вывод
  • analogRead() • analogReference() • analogWrite()
Due & Zero
  • analogReadResolution() • analogWriteResolution()
Дополнительные функции ввода/вывода
  • tone() • noTone() • shiftOut() • shiftIn() • pulseIn()
Работа со временем
  • millis() • micros() • delay() • delayMicroseconds()
Математические функции
  • min() • max() • abs() • constrain() • map() • pow() • sq() • sqrt()
Тригонометрические функции
  • sin() • cos() • tan()
Функции для символьного анализа
  • isAlphaNumeric() • isAlpha() • isAscii() • isWhitespace() • isControl() • isDigit() • isGraph() • isLowerCase() • isPrintable() • isPunct() • isSpace() • isUpperCase() • isHexadecimalDigit()
Генераторы случайных значений
  • randomSeed() • random()
Работа с битами и байтами
  • lowByte() • highByte() • bitRead() • bitWrite() • bitSet() • bitClear() • bit()
Внешние прерывания
  • attachInterrupt() • detachInterrupt()
Прерывания
  • interrupts() • noInterrupts()
Функции передачи данных
  • Serial: if (Serial) • available() • availableForWrite() • begin() • end() • find() • findUntil() • flush() • parseFloat() • parseInt() • peek() • print() • println() • read() • readBytes() • readBytesUntil() • readString() • readStringUntil() • setTimeout() • write() • serialEvent()
  • Stream: available() • read() • flush() • find() • findUntil() • peek() • readBytes() • readBytesUntil() • readString() • readStringUntil() • parseInt() • parsefloat() • setTimeout()
USB (Leonardo based boards and Due only)
  • Keyboard • Mouse
Библиотеки Arduino
Стандартные библиотеки
EEPROM
  • read() • write() • update() • get() • put() • EEPROM[]
Ethernet
  • Класс Ethernet: begin() • localIP() • maintain()
  • Класс IPAddress: IPAddress()
  • Класс Server: Класс Server • EthernetServer() • begin() • available() • write() • print() • println()
  • Класс Client: Класс Client • EthernetClient() • if (EthernetClient) • connected() • connect() • write() • print() • println() • available() • read() • flush() • stop()
  • Класс EthernetUDP: begin() • read() • write() • beginPacket() • endPacket() • parsePacket() • available() • stop() • remoteIP() • remotePort()
Firmata
GSM
  • Класс GSM: Класс GSM • begin() • shutdown()
  • Класс GSMVoiceCall: Класс GSMVoiceCall • getVoiceCallStatus() • ready() • voiceCall() • answerCall() • hangCall() • retrieveCallingNumber()
  • Класс GSM SMS: Класс GSM_SMS • beginSMS() • ready() • endSMS() • available() • remoteNumber() • read() • write() • print() • peek() • flush()
  • Класс GPRS: Класс GPRS • attachGPRS()
  • Класс GSMClient:Класс GSMClient • ready() • connect() • beginWrite() • write() • endWrite() • connected() • read() • available() • peek() • flush() • stop()
  • Класс GSMServer: Класс GSMServer • ready() • beginWrite() • write() • endWrite() • read() • available() • stop()
  • Класс GSMModem: Класс GSMModem • begin() • getIMEI()
  • Класс GSMScanner: Класс GSMScanner • begin() • getCurrentCarrier() • getSignalStrength() • readNetworks()
  • Класс GSMPIN: Класс GSMPIN • begin() • isPIN() • checkPIN() • checkPUK() • changePIN() • switchPIN() • checkReg() • getPINUsed() • setPINUsed()
  • Класс GSMBand: Класс GSMBand • begin() • getBand() • setBand()
LiquidCrystal
  • LiquidCrystal() • begin() • clear() • home() • setCursor() • write() • print() • cursor() • noCursor() • blink() • noBlink() • display() • noDisplay() • scrollDisplayLeft() • scrollDisplayRight() • autoscroll() • noAutoscroll() • leftToRight() • rightToLeft() • createChar()
SD
  • Класс SD: begin() • exists() • mkdir() • open() • remove() • rmdir()
  • Класс File: available() • close() • flush() • peek() • position() • print() • println() • seek() • size() • read() • write() • isDirectory() • openNextFile() • rewindDirectory()
Servo
  • attach() • write() • writeMicroseconds() • read() • attached() • detach()
SPI
  • Класс SPISettings • begin() • end() • beginTransaction() • endTransaction() • setBitOrder() • setClockDivider() • setDataMode() • transfer() • usingInterrupt() • Расширенное использование шины SPI на Due
SoftwareSerial
  • Класс SoftwareSerial • available() • begin() • isListening() • overflow() • peek() • read() • print() • println() • listen() • write()
Stepper
  • Stepper(steps, pin1, pin2) • Stepper(steps, pin1, pin2, pin3, pin4) • setSpeed(rpm) • step(steps)
TFT
  • Класс TFT • Класс EsploraTFT • begin() • background() • stroke() • noStroke() • fill() • noFill() • text() • setTextSize() • point() • line() • rect() • width() • height() • circle() • image() • loadImage() • Класс PImage • PImage.height() • PImage.width() • PImage.isValid()
WiFi
  • Класс WiFi: • begin() • disconnect() • config() • setDNS() • SSID() • BSSID() • RSSI() • encryptionType() • scanNetworks() • status() • getSocket() • macAddress()
  • Класс IPAddress: • localIP() • subnetMask() • gatewayIP()
  • Класс WiFiServer: • Класс WiFiServer • WiFiServer() • begin() • available() • write() • print() • println()
  • Класс WiFiClient: • Класс WiFiClient • WiFiClient() • connected() • connect() • write() • print() • println() • available() • read() • flush() • stop()
  • Класс UDP: • Класс WiFiUDP • begin() • available() • beginPacket() • endPacket() • write() • parsePacket() • peek() • read() • flush() • stop() • remoteIP() • remotePort()
Wire
  • begin() • requestFrom() • beginTransmission() • endTransmission() • write() • available() • read() • onReceive() • onRequest()
Только для Arduino 101
CurieBLE
  • BLEPeripheral: • Класс BLEPeripheral • begin() • poll() • end() • setAdvertisedServiceUuid() • setLocalName() • setDeviceName() • setAppearance() • setEventHandler() • addAttribute() • disconnect() • central() • connected()
  • BLEDescriptor: • Класс BLEDescriptor
  • BLECentral: • Класс BLECentral • connected() • address() • disconnect() • poll()
  • BLECharacteristic: • Класс BLECharacteristic
  • BLEService: • Класс BLEService
CurieIMU
  • begin() • getGyroRate() • setGyroRate() • getAccelerometerRate() • setAccelerometerRate() • getGyroRange() • setGyroRange() • getAccelerometerRange() • setAccelerometerRange() • autoCalibrateGyroOffset() • autoCalibrateAccelerometerOffset() • noGyroOffset() • noAccelerometerOffset() • gyroOffsetEnabled() • accelerometerOffsetEnabled() • getGyroOffset() • getAccelerometerOffset() • setGyroOffset() • setAccelerometerOffset() • getDetectionThreshold() • setDetectionThreshold() • getDetectionDuration() • setDetectionDuration() • interrupts() • noInterrupts() • interruptEnabled() • getInterruptStatus() • getStepDetectionMode() • setStepDetectionMode() • readMotionSensor() • readAccelerometer() • readGyro() • readTemperature() • shockDetected() • motionDetected() • tapDetected() • stepsDetected() • attachInterrupt() • detachInterrupt()
CurieTimerOne
  • start() • restart() • kill() • attachInterrupt() • detachInterrupt() • readTickCount() • rdRstTickCount() • pause() • resume() • pwmStart() • pwmStop()
Только для Arduino Due
Audio
  • begin() • prepare() • write()
Scheduler
  • startLoop() • yield()
Только для Arduino Due, Zero и MKR1000
USBHost
  • Класс MouseController:Класс MouseController • mouseMoved() • mouseDragged() • mousePressed() • mouseReleased() • getXChange() • getYChange() • getButton()
  • Класс KeyboardController:Класс KeyboardController • keyPressed() • keyReleased() • getModifiers() • getKey() • getOemKey()
Только для Arduino Zero и MKR1000
Audio Frequency Meter Library
  • begin() • end() • setClippingPin() • checkClipping() • setAmplitudeThreshold() • setTimerTolerance() • setSlopeTolerance() • setBandwidth() • getFrequency()
AudioZero
  • begin() • play() • end()
RTC
  • begin() • setHours() • setMinutes() • setSeconds() • setTime() • setYear() • setMonth() • setDay() • setDate() • getHours() • getMinutes() • getSeconds() • getYear() • getMonth() • getDay() • setAlarmHours() • setAlarmMinutes() • setAlarmSeconds() • setAlarmTime() • setAlarmYear() • setAlarmMonth() • setAlarmDay() • setAlarmDate() • enableAlarm() • disableAlarm() • attachInterrupt() • detachInterrupt() • standbyMode()
Только для WiFi 101 и MKR1000
WiFi101
  • Класс WiFi: • begin() • disconnect() • config() • setDNS() • SSID() • BSSID() • RSSI() • encryptionType() • scanNetworks() • status() • macAddress()
  • Класс IPAddress: • localIP() • subnetMask() • gatewayIP()
  • Класс WiFiServer: • Класс WiFiServer • WiFiServer() • begin() • available() • write() • print() • println()
  • Класс WiFiClient: • Класс WiFiClient • WiFiClient() • Класс WiFiSSLClient • connected() • connect() • connectSSL() • write() • print() • println() • available() • read() • flush() • stop()
  • Класс WiFiUDP: • Класс WiFiUDP • begin() • available() • beginPacket() • endPacket() • write() • parsePacket() • peek() • read() • flush() • stop() • remoteIP() • remotePort()
Только для Arduino Robot
Robot
  • RobotControl: • Класс Robot • begin() • setMode() • pauseMode() • isActionDone() • lineFollowConfig() • digitalRead() • digitalWrite() • analogRead() • analogWrite() • updateIR() • knobRead() • compassRead() • keyboardRead() • waitContinue() • motorsWrite() • motorsStop() • turn() • pointTo() • beginSpeaker() • playMelody() • beep() • playFile() • tuneWrite() • tempoWrite() • beginTFT() • text() • drawBMP() • debugPrint() • clearScreen() • displayLogos() • drawCompass() • beginSD() • userNameRead() • userNameWrite() • robotNameRead() • robotNameWrite() • cityNameRead() • cityNameWrite() • countryNameRead() • countryNameWrite()
  • RobotMotor: • Класс RobotMotor • begin() • process() • parseCommand() • motorsWrite() • IRread()
Только для Arduino Yun
Bridge
  • Класс Bridge: begin() • put() • get() • transfer()
  • Класс Process: begin() • addParameter() • run() • runAsynchronously() • running() • exitValue() • close() • runShellCommand() • runShellCommandAsynchronously() • available() • read() • write() • peek() • flush()
  • Класс Console: begin() • end() • buffer() • noBuffer() • connected() • available() • read() • write() • peek() • flush()
  • Класс FileIO:
    • Класс FileSystem: begin() • open() • exists() • mkdir() • rmdir() • remove() • Класс File • close() • rewindDirectory() • openNextFile() • seek() • position() • size() • available() • read() • write() • peek() • flush()
  • Класс Mailbox: begin() • end() • readMessage() • writeMessage() • writeJSON() • messageAvailable()
  • Класс HttpClient: get() • getAsynchronously() • ready() • getResult()
  • Класс BridgeClient: stop() • connect() • connected() • available() • read() • write() • peek() • flush()
  • Класс BridgeSSLClient: stop() • connect() • connected() • available() • read() • write() • peek() • flush()
  • Класс BridgeServer: begin() • listenOnLocalhost() • noListenOnLocalhost() • write()
  • Deprecated classes:
    • Класс YunClient: stop() • connect() • connected() • available() • read() • write() • peek() • flush()
    • Класс YunServer: begin() • listenOnLocalhost() • noListenOnLocoalhost() • write()
USB-библиотеки (Leonardo, Micro, Due, Zero и Esplora)
Keyboard
  • begin() • end() • press() • print() • println() • release() • releaseAll() • write()
Mouse
  • begin() • click() • end() • move() • press() • release() • isPressed()
Коммуникация (сети и протоколы)
CmdMessenger
NewSoftSerial
OneWire
PS2Keyboard
SimpleMessageSystem
SSerial2Mobile
Webduino
X10
XBee
SerialControl
Датчики
CapacitiveSensing
Bounce
Дисплеи и светодиоды
Adafruit GFX
GLCD
LedControl
LedDisplay
Matrix
PCD8544
Sprite
ST7735
Примеры Arduino
Стандартные функции
Основы
  • BareMinimum — Допустимый минимум кода для начала работы.
  • Blink — Включаем и отключаем светодиод.
  • DigitalReadSerial — Считывание последовательной передачи данных через цифровой контакт.
  • AnalogReadSerial — Считывание последовательной передачи данных через аналоговый контакт.
  • Fade — Затухание-загорание светодиода с помощью Arduino.
  • ReadAnalogVoltage — Считывание напряжения, проходящего через аналоговый контакт.
Цифровой сигнал
  • BlinkWithoutDelay — Мигание без команды Delay
  • Button — Управление светодиодом при помощи кнопки
  • Debounce — Антидребезг
  • Debounce2 — Антидребезг2
  • ButtonStateChange — Определение изменения состояния кнопки
  • InputPullupSerial — Отслеживание состояния кнопки с помощью встроенного подтягивающего резистора
  • Tone — Проигрывание мелодии с помощью функции Tone
  • Pitch follower — Звук, реагирующий на изменяющуюся информацию
  • Simple keyboard — Простая клавиатура при помощи функции Tone
  • Tone4 — Проигрывание нот на разных динамиках с помощью функции Tone
Аналоговый сигнал
  • AnalogInPotSerial — Чтение данных от потенциометра и вывод через последовательный порт
  • AnalogInOutSerial — «Сырые» данные на входе, преобразованные на выходе, вывод результата на Serial Monitor
  • AnalogInput — Управление миганием светодиода при помощи потенциометра.
  • AnalogWriteMega — Затухание/загорание (один за одним) 12 светодиодов. Используется плата Arduino Mega.
  • Calibration — Определение максимума и минимума для данных от аналогового датчика.
  • Fading — Использование выходного аналогового контакта (ШИМ) для затухания/загорания светодиода.
  • Smoothing — Сглаживание серии данных, считанных с входного аналогового контакта.
Связь
  • ReadASCIIString — Анализ строки, состоящей из разделенных запятыми int-значений, и их последующее использование для управления RGB-светодиодом.
  • ASCII Table — Демонстрирует продвинутые способы вывода данных на Serial Monitor.
  • Dimmer — Изменение яркости светодиода при помощи движения мышкой.
  • Graph — Отправка данных на компьютер и их графическое отображение в скетче Processing.
  • Physical Pixel — Включение/выключение светодиода путем отправки данных со скетча Processing (или Max/MSP) на Arduino.
  • Virtual Color Mixer — Отправка с Arduino на компьютер сразу нескольких значений, а затем их считывание при помощи скетча для Processing или Max/MSP.
  • Serial Call Response — Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»).
  • Serial Call Response ASCII — Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»). До передачи данные зашифровываются в ASCII.
  • SerialEvent — Демонстрирует использование SerialEvent().
  • Serial input (Switch (case) Statement) — Как совершать различные действия, беря за основу символы, присланные через последовательный порт.
  • MIDI — Передача через последовательный порт сообщений с MIDI-нотами.
  • MultiSerialMega — Использование двух последовательных портов на Arduino Mega.
Управляющие структуры
  • If Statement — Как использовать оператор «if» для создания условий, опирающихся на входные аналоговые данные, при которых светодиод будет либо включаться, либо оставаться выключенным.
  • For Loop — Управление несколькими светодиодами, чтобы они мигали, как LED-полоска у автомобиля Китт из сериала «Рыцарь дорог».
  • Array — Вариация примера «For Loop», но с использованием массива.
  • While Loop — Использование цикла while() для калибровки датчика. Калибровка включается при нажатии на кнопку.
  • Switch Case — Как совершать какие-либо действия в зависимости от значений, полученных от датчика. Эквивалент примера «If Statement», но если бы условий было не два, а четыре. Этот пример демонстрирует, как дробить диапазон данных от датчика на четыре «суб-диапазона», а затем в зависимости от полученных результатов совершать одно из четырех действий.
  • Switch Case 2 — Второй пример, демонстрирующий использование оператора switch. Показывает, как совершать различные действия в зависимости от определенных символов, полученных через последовательный порт.
Датчики
  • ADXL3xx — Считывание данных с акселерометра ADXL3xx.
  • Knock — Определение стука при помощи пьезоэлемента.
  • Memsic2125 — Считывание данных с 2-осевого акселерометра Memsic2125.
  • Ping — Определение объектов при помощи ультразвукового дальномера.
Дисплей

Примеры, объясняющие основы управления дисплеем:

  • LED Bar Graph — Как сделать светодиодную шкалу.
  • Row Column Scanning — Как управлять матрицей светодиодов 8×8.
Строки
  • StringAdditionOperator — Добавление строк друг к другу различными способами
  • StringAppendOperator — Прибавление данных к строкам.
  • StringCaseChanges — Смена регистра в строках.
  • StringCharacters — Как задать/сосчитать значение определенного символа в строке.
  • StringComparisonOperators — Алфавитное сравнение строк.
  • StringConstructors — Как инициализировать строковые объекты.
  • StringIndexOf — Поиск символов в строке по принципу «столько-то позиций от начала» или «столько-то позиций от конца»
  • StringLength & StringLengthTrim — Как определить длину строки и обрезать ее.
  • StringReplace — Замена отдельных символов в строке.
  • StringStartsWithEndsWith — Как проверить, какими символами/подстроками начинается или заканчивается строка.
  • StringSubstring — Поиск в строке определенных «фраз».
USB (для Leonardo, Micro и Due плат)

В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.

  • KeyboardAndMouseControl — Демонстрирует использование библиотек Mouse и Keyboard в одной программе.
Клавиатура
  • KeyboardMessage — Отправка текстовой строки при нажатии на кнопку.
  • KeyboardLogout — Выход из текущей пользовательской сессии при помощи клавиатурных комманд.
  • KeyboardSerial — Считывает байт, присланный через последовательный порт, а в ответ отсылает другой байт.
  • KeyboardReprogram — Открывает новое окно в среде разработки Arduino, а затем перешивает Leonardo скетчем «Моргание».
Мышь
  • ButtonMouseControl — Управление экранным курсором при помощи пяти кнопок.
  • JoystickMouseControl — Управление экранным курсором при помощи джойстика (условие – нажатая кнопка).
Разное
Arduino продукты
Начальный уровень Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino
Продвинутые функции Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter
Интернет вещей Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle
Носимые устройства Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap
3D-печать Arduino Materia 101
Устаревшие устройства

NB: I introduced same issue report at espressif/esptool, because I don’t know actually where the problem could be: espressif/esptool#198

Hello ESP32 lovers,
I am facing a problem with a WEMS ESP32 dev board which I bough on Aliexpress very recently:
https://fr.aliexpress.com/item/ESP32-Development-Board-WiFi-Bluetooth-Ultra-Low-Power-Consumption-Dual-Cores-ESP-32-ESP-32S-Board/32801337284.html

I am able to flash it using Eclipse/esp-idf/xtensa-esp32-elf triplet. The /dev/tty.SLAB_USBtoUART device configured by «make menuconfig» makes the flashing process a success. Further on, my user application (one of the examples of esp-idf) starts and does what expected.

But, with Arduino IDE, this is not the same story. I have installed the toolchain as written at ESP32-Arduino github page, then selected «ESP32 dev module» as the board in Arduino IDE, and also selected /dev/tty.SLAB_USBtoUART as the flashing device.
Like I did for the Eclipse case, I reset dev board with RST and BOOT buttons. I verified to get the «DOWNLOAD» invite on the terminal, then closed the terminal pushed on flash button of Arduino IDE. All I get in Arduino logs is the following:

Sketch uses 118,890 bytes (11%) of program storage space. Maximum is 1,044,464 bytes.
Global variables use 9,492 bytes (3%) of dynamic memory, leaving 285,420 bytes for local variables. Maximum is 294,912 bytes.
/Users/lmc/Dropbox/arduino/hardware/espressif/esp32/tools/esptool --chip esp32 --port /dev/cu.SLAB_USBtoUART --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_freq 80m --flash_mode dio --flash_size 4MB 0x1000 /Users/lmc/Dropbox/arduino/hardware/espressif/esp32/tools/sdk/bin/bootloader.bin 0x8000 /var/folders/zx/4rs36y2j0315wny99n1j7fj80000gn/T/arduino_build_538507/Blink.ino.partitions.bin 0xe000 /Users/lmc/Dropbox/arduino/hardware/espressif/esp32/tools/partitions/boot_app0.bin 0x10000 /var/folders/zx/4rs36y2j0315wny99n1j7fj80000gn/T/arduino_build_538507/Blink.ino.bin 

esptool.py v2.0-beta
Connecting........_____....._____....._____....._____....._____....._____....._____....._____....._____....._____
 
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

The programming does not detect the dev board in download mode, and the flashing does not start.
As a workaround, I hooked up an external FTDI adapter cable directly to the ESP32, and then Arduino IDE is able to start the flashing. But after, the Arduino sketch does not seems to run. My simple Blink sketch is not running (it toggles a GPIO and prints some text on Serial console).

Issue 1: I saw a post about the problem of the FreeRTOS scheduler not started on Core1, or not enabled Core1, which could resolve the Arduino sketch not running (but I don’t know how to configure it within ESP32-Arduino libraries/board from inside Arduino IDE. Could it be a efuse which should be reset to enable Core1 to start?

Issue 2: Concerning my flashing issue, I don’t understand why my dev module can be successfully programmed by using the Makefile from within Eclipse/esp-idf, while it ends-up with a timeout from within ArduinoIDE/ESP32-Arduino toolchain.

Anyone could help me about my two issues?
Thank you so much.

Проблемы с прошивкой flash-памяти обычно непросто устранить. Ниже приедены несколько советов по решению распространенных проблем.

[Загрузчик не отвечает]

Если в serial-консоли появляются ошибки наподобие «Failed to connect», то возможно чип не может правильно запустить загрузчик:

• Проверьте, что в командной строке утилиты монитора (обычно это скрипт idf.py) правильно указано имя последовательного порта.
• Проверьте, что у Вас есть разрешения на доступ к последовательному порту, и что какое-то другое программное обеспечение (такое как modem-manager на Linux) не пытается взаимодействовать с нужным последовательным портом. Часто бывает, что в другом окне уже открыто забытое соединение с используемым портом, и второе подключение создать не удается.
• Проверьте, что на чипе присутствует питание 3.3V от стабилизированного источника (см. далее «Плохое питание»).
• Проверьте, что все выводы чипа подключены так, как описано в документации по выбору режима загрузки [2]. Проверьте напряжения на каждом выводе мультиметром или осциллографом, ножки с лог. 1 должны иметь напряжение, близкое к 3.3V, и ножки с лог. 0 близкое к 0V.
• Если к выводам GPIO чипа подключены другие устройства, попробуйте их отключить, и проверьте, заработает ли соединение с загрузчиком.
• Попробуйте уменьшить скорость соединения. Скорость 9600 самая маленькая допустимая скорость для соединения с загрузчиком, обычно используемая для отладки проблем скорости serial-соединения (настройте baud rate опцией -b 9600 скрипта idf.py).

[Случайные ошибки в процессе записи flash]

Если при записи происходят сбои, попробуйте уменьшить скорость подключения к последовательному порту. Также причиной случайных сбоев могут быть проблемы с питанием (см. «Плохое питание»).

[Запись произошла успешно, но приложение не запускается]

Если esptool может прошить Ваш модуль командой write_flash, но программа не запускается, то проверьте следующее:

Неправильно выбранный режим SPI flash. Некоторые устройства поддерживают только режим прошивки dio. Запись во flash в режиме qio происходит успешно, но чип не может обратно прочитать flash, чтобы запустить программу — так что загрузка приложения не происходит. Попробуйте передать опцию -fm dio в команду write_flash.

См. документацию [3] для получения полного описания режимов flash, и как определить, какие из них поддерживает Ваше устройство.

Плохое питание. Чип ESP может потреблять от 3.3V достаточно большой ток (до 70 мА непрерывно, 200 .. 300 мА в пике, или даже больше). На шине питания должен присутствовать конденсатор достаточной емкости, чтобы сгладить спады по питанию в пиках потребления тока.

Если Вы используете предварительно собранную отладочную плату или модуль, то установленный на плате регулятор напряжения может предоставлять недостаточную мощность, чтобы обеспечить стабильную работу системы. На модулях от Espressif и других известных поставщиков обычно такой проблемы нет. Однако в некоторых случаях модули, наподобие ESP-WROOM02 и ESP-WROOM32, могут потребовать подключения снаружи дополнительного блокирующего конденсатора.

Выход 3.3V адаптеров USB-UART (например FTDI FT232R), или плат Arduino часто не предоставляет достаточной мощности по питанию.

[Отсутствует загрузчик]

ESP-IDF использует загрузчик второй стадии, работающий после заводского аппаратного, который находится в постоянной памяти чипа (boot ROM). На ESP32 образ загрузчика должен быть прошит со смещением 0x1000 относительно начала памяти flash. Среда разработки ESP-IDF делает это автоматически после выполнения соответствующих команд компиляции и прошивки (idf.py build flash). См. документацию ESP-IDF для получения информации, какие двоичные файлы нужно прошить, и по какому смещению (также см. [4]).

[Проблемы с сигналами SPI]

В сравнении с ROM bootloader, утилита esptool и работающий код загрузчика второй стадии использует намного больше внешних выводов, чтобы обмениваться данными с SPI flash.

Если используется режим «Quad I/O» (-fm qio, что esptool использует по умолчанию), то для доступа к SPI flash используются выводы GPIO7, GPIO8, GPIO9 и GPIO10, и они не должны использоваться для других целей. Если установлен режим «Dual I/O» (-fm dio), то используются GPIO7 и GPIO8, и они не должны использоваться для других целей.

Попробуйте отключить все постороннее от этих выводов. Попробуйте поменять режим «Dual I/O», если использовался «Quad I/O», или наоборот. Проверьте целостность сигналов подключений к памяти SPI flash, отсутствие замыканий между ними и на другие цепи. Имейте в виду, что если GPIO9 и GPIO10 также подключены к входным выводам чипа SPI flash, их все еще нельзя использовать как порты ввода/вывода общего назначения.

В дополнение к этим выводам, ножки GPIO6 и GPIO11 также используются для доступа к SPI flash (во всех режимах). Если эти выводы подключены неправильно, то прошивка обычно не работает.

[Сбой на ранней стадии загрузки]

Используйте программу последовательного терминала, чтобы просмотреть сообщения лога загрузчика (ESP32 использует скорость 115200 bps). Это позволит увидеть сообщения об ошибке и понять причину сбоя загрузки или запуска программы.

Существует множество программ терминала, которые можно использовать для отладки и взаимодействия с приложением через последовательный порт UART. Модуль pyserial (который требуется для утилиты esptool) включает в себя одну из таких программ терминала, запускаемых в командной строке — miniterm.py. Для дополнительной информации см. документацию pyserial [5], или запустите подсказку командой miniterm -h.

ROM serial bootloader в чипах Espressif использует соединение UART с уровнями 3.3V. На большинстве отладочных плат разработчика такое соединение организовано через схему преобразователя USB-UART.

Однако если Вы используете чип ESP32 на своей плате, и сами подключили отдельный адаптер USB/Serial для соединения с хостом отладки, то необходимо выполнить следующие соединения:

Ножка чипа ESP Сигнал адаптера USB-UART
TX (передача) RX (прием)
RX (прием) TX (передача)
GND GND

Обратите внимание, что TX (передача) чипа ESP соединяется с RX (прием) адаптера последовательного порта, и наоборот. Внимание: не подключайте чип последовательным адаптерами с уровнями 5V TTL, особенно к «стандартным» адаптером RS-232! Используйте только уровни сигналов 3.3V!

[Настройки последовательного порта]

При соединении с ESP32 ROM serial bootloader, рекомендуются следующие настройки последовательного порта:

Baud rate 115200
Data bits 8
Stop bits GND
Parity None
Flow control None

[Трассировка взаимодействий esptool]

Запуск esptool.py —trace будет выводить дамп всех последовательных интерактивных взаимодействий в стандартный вывод (данных будет выводиться довольно много). Это полезно для отладки проблем с последовательным соединением, или когда предоставляете информацию для техподдержки в виде bug-репорта.

Для дополнительной информации см. секцию «Tracing Esptool Serial Communications» документации по последовательному протоколу [7].

[Часто встречающиеся ошибки]

Ниже приведен не исчерпывающий список самых частых ошибок esptool с объяснением возможных причин и способов устранения. Перед тем, как предпринять какие-либо действия по исправлению, выполните все ранее перечисленные указания.

No serial data received. Утилита esptool не принимает никакие байты данных, или не может успешно принять пакет SLIP [7]. Эта ошибка обычно означает какую-то аппаратную проблему (перепутаны ножки RX/TX, или не подключены). Проверьте уровни сигналов и их наличие осциллографом, а также нет ли проблем со сбросом и выбором режима загрузки после сброса [2].

Wrong boot mode detected (0xXX)! The chip needs to be in download mode. В этом случае обмен с чипом работает (виден лог ROM boot), но чип автоматически не сбрасывается в режим загрузки.

Для решения проблемы проверьте схему автосброса (если на Вашей плате она есть), или попробуйте вручную выполнить сброс в режим загрузки. Как это делать, см. секцию «Manual Bootloader» документации [2].

Download mode successfully detected, but getting no sync reply: The serial TX path seems to be down. Чип успешно сбрасывается в режим загрузки и посылает данные компьютеру хоста, но не получает ничего в ответ от утилиты esptool. Это означает наличие проблемы с сигналом передачи от хоста к устройству ESP (RX ESP32 и TX адаптера USB-UART). Еще раз проверьте вашу плату и сигналы последовательного порта.

Invalid head of packet (0xXX): Possible serial noise or corruption. Причины этой ошибки могут быть следующие:

• Некачественный кабель USB.
• Иногда на плате макетирования могут замыкать ножки SPI flash, создавая подобную проблему. Попробуйте извлечь плату разработки из платы макетирования.
• На чипе во время прошивки может сработать аппаратный детектор пониженного напряжения (brown out). Часто это бывает при подаче питания от 3.3V регулятора чипов FTDI, или наличие других проблем питания (см. выше секцию «Плохое питание»).

Что можно сделать:

• Попробуйте выполнить синхронизацию и обмен на пониженной скорости, например esptool.py —baud 9600 …
• Попробуйте вывести дамп трассировки запуском esptool.py —trace …, и посмотрите, принимается ли что-нибудь обратно.
• Попробуйте пропустить стадию автодетекта чипа путем явного указания используемого кристалла. Например, запустите esptool.py —chip ESP32 …

Если ничего не помогает, то откройте тикет в службе техподдержки (open a new issue на GitHub).

[Ссылки]

1. ESP32 Troubleshooting site:docs.espressif.com.
2. Boot Mode Selection site:docs.espressif.com.
3. SPI Flash Modes site:docs.espressif.com.
4. ESP32: процесс запуска приложения.
5. serial.tools.miniterm site:pyserial.readthedocs.io.
6. Serial Connection site:docs.espressif.com.
7. Serial Protocol site:docs.espressif.com.
8. ESP32: как реализовать автозагрузку прошивки.

Common Issues¶

Here are some of the most common issues around the ESP32 development using Arduino.

Note

Please consider contributing if you have found any issues with the solution here.

Installing¶

Here are the common issues during the installation.

Building¶

Missing Python: “python”: executable file not found in $PATH¶

You are trying to build your sketch using Ubuntu and this message appears:

"exec: "python": executable file not found in $PATH
Error compiling for board ESP32 Dev Module"
Solution¶

To avoid this error, you can install the python-is-python3 package to create the symbolic links.

sudo apt install python-is-python3

If you are not using Ubuntu, you can check if you have the Python correctly installed or the presence of the symbolic links/environment variables.

Flashing¶

Why is my board not flashing/uploading when I try to upload my sketch?¶

To be able to upload the sketch via serial interface, the ESP32 must be in the download mode. The download mode allows you to upload the sketch over the serial port and to get into it, you need to keep the GPIO0 in LOW while a resetting (EN pin) cycle.
If you are trying to upload a new sketch and your board is not responding, there are some possible reasons.

Possible fatal error message from the Arduino IDE:

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

Solution¶

Here are some steps that you can try to:

  • Check your USB cable and try a new one.

  • Change the USB port.

  • Check your power supply.

  • In some instances, you must keep GPIO0 LOW during the uploading process via the serial interface.

  • Hold down the “BOOT” button in your ESP32 board while uploading/flashing.

In some development boards, you can try adding the reset delay circuit, as described in the Power-on Sequence section on the ESP32 Hardware Design Guidelines in order to get into the download mode automatically.

Hardware¶

Why is my computer not detecting my board?¶

If your board is not being detected after connecting to the USB, you can try to:

Solution¶
  • Check if the USB driver is missing. — USB Driver Download Link

  • Check your USB cable and try a new one.

  • Change the USB port.

  • Check your power supply.

  • Check if the board is damaged or defective.

Wi-Fi¶

Why does the board not connect to WEP/WPA-“encrypted” Wi-Fi?¶

Please note that WEP/WPA has significant security vulnerabilities and its use is strongly discouraged.
The support may therefore be removed in the future. Please migrate to WPA2 or newer.

Solution¶

Nevertheless, it may be necessary to connect to insecure networks. To do this, the security requirement of the ESP32 must be lowered to an insecure level by using:

WiFi.setMinSecurity(WIFI_AUTH_WEP); // Lower min security to WEP.
// or
WiFi.setMinSecurity(WIFI_AUTH_WPA_PSK); // Lower min security to WPA.

Why does the board not connect to WPA3-encrypted Wi-Fi?¶

WPA3 support is resource intensive and may not be compiled into the used SDK.

Solution¶
  • Check WPA3 support by your SDK.

  • Compile your custom SDK with WPA3 support.

Sample code to check SDK WPA3 support at compile time:

#ifndef CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE
#warning "No WPA3 support."
#endif

  • #81

Ни как не избавиться от подобной ошибки, менял частоты, DIO и даже скорость загрузки.

Всё-равно появляется эта ошибка.

  • #82

Здравствуйте!

Была та же ошибка, возникшая неожиданно при очередной перепрошивке.
Мне помогла банальная переустановка Arduino IDE. При установке галочка «установить драйвер» стояла.

  • #83

То же самое как и автора в первом сообщении. NodeMCU шьется а Ардуино нет. Монитор порта в ардуино видит информацию при загрузке. Ардуино не установлена, а работает с папки. Не могу залить новых прошивок сделаных на сайте nodemcu-bild, может я чего делаю не правильно? старые работают а новые только мусор без конца отправляют

  • #84

Переустановка драйвера pl2303, перенос программы прошивки flash_download_tools_v3.6.6 в корневой каталог, и пару попыток зашить blank_1MB.bin дали результат, теперь esp 12e прошивается и ардуино. Но новые прошивки сделаные на сайте nodemcu-build по прежнему шлют постоянно мусор :( Скиньте кто может вашу прошивку сделаную для в nodemcu-build esp 12e сюда, я попробую прошить ею

  • #85

Еще такая проблема может быть потому что вы используете выход BOOT. Я так один раз из за китайского модуля ESP WROOM 32, на котором было не верно напечатаны выходы, джойстик ткнул на, как потом оказалось, G0. Проблема была еще в том что на моей плате, уже было запаяно куча датчиков, дисплей 2004, кнопки и RTC. Когда я отпаял джойстик, понял что проблема была в нем, т.к. прошивка залилась и ошибки больше не было. После я начал обзванивать выходы из 8266, по даташиту понял что мой выход идет на бут=)))) Как то так.
Может кому будет полезно!

———————————————
Выполню ваш проект по ТЗ — greben.evgeniy@gmail.com.

  • #86

такая же проблема на ЕСП32
2020-12-07_153504.png

пишет

Код:

Arduino: 1.8.13 (Windows 10), Плата:"ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

Скетч использует 623662 байт (31%) памяти устройства. Всего доступно 1966080 байт.

Глобальные переменные используют 38744 байт (11%) динамической памяти, оставляя 288936 байт для локальных переменных. Максимум: 327680 байт.

esptool.py v2.6

Serial port COM5

Connecting........_____....._____....._____....._____....._____....._____.....____Произошла ошибка при загрузке скетча

_



A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

пробовал разные версии ИДЕ

пробовал зажимать во время загрузки кнопку бут тоже ничего

думал загрузочная микруха померла и поменял её но ничего не изменилось

  • #87

пробовал зажимать во время загрузки кнопку бут тоже ничего

Что выдает есп при подаче питания?
Бут нажать недостаточно.
Есть два варианта бут зажать и подать питание или бут зажать и нажать и отпустить ресет.

  • #88

всё просто
есть версии таких плат где ничего не надо нажимать и всё заливается
есть версии где нужно при слове конект нажимать бут иначе не загружается , там просто идут точки и тире и потом ошибка вскакивает тогда

втыкаю кабель и раздаётся звук мол подключено устройство по усб в общем то как и всегда в таких случаях

ваши два метода тоже не работают

  • #89

есть версии таких плат где ничего не надо нажимать и всё заливается

Если это не голый есп, а готовый модуль, то в принципе нигде не надо нажимать, надо только выбрать сом порт и установить максимальную скорость с которой модуль еще работает.
Вы не ответили на вопрос

Что выдает есп при подаче питания?

pvvx

pvvx

Активный участник сообщества


  • #90

Что выдает есп при подаче питания?

А что может выдать отключенное от USB устройство?
И вам ответили:
втыкаю кабель и раздаётся звук мол подключено устройство по усб в общем то как и всегда в таких случаях
А по соединению шнура USB между платой и компом устанавливается драйвер USB-СDC, потом драйвер COM порта, потом программа откроет COM порт, установит DTR/RTS (без вашего ведома), а в плате к примеру Flash стерта… Что покажет терминал, когда уже всё сообщения от ESP при подаче питания от USB давно проскочили?
По этому ваш вопрос некорректен.

pvvx

pvvx

Активный участник сообщества


  • #91

При подключенном терминале и пустой flash от модуля ESP32 можно получить только два типа сообщения на 115200 baud, примерно такого содержания:
1

Код:

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371 
ets Jun  8 2016 00:22:57

2

Код:

rst:0x10 (RTCWDT_RTC_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download

1 -ый тип будет повторяться, а 2-ой модуль выдаст только один раз.
Можно проверить сигналы DTR/RTS в программе:

В ней есть две кнопки DTR и RTS:
1607363281645.png
которые управляют режимом загрузки и сбросом ESP32.

  • #92

А что может выдать отключенное от USB устройство?

Логично.
Тс покажите вывод в сом порт, после нажатия и отпускании ресет.

pvvx

pvvx

Активный участник сообщества


  • #93

Логично.
Тс покажите вывод в сом порт, после нажатия и отпускании ресет.

Но дело в том, что Arduno для записи запускает esptool.py. Она дергает DTR/RTS сигналы в надежде запустить модуль в режиме программирования (тип сообщения 2 из прошлого соо).
Но кривая схема в некоторых модулях не позволяет этого сделать. Их только на помойку*, т.к. кнопочками вы ей не всегда поможете — она снова сбросит в обычный режим :)
Танцы с бубном и тыканием кнопочек иногда всё-же могут помочь больному… Но зачем покупать такое?

* переделывать.

  • #94

Танцы с бубном и тыканием кнопочек иногда всё-же могут помочь больному… Но зачем покупать такое?

У меня есть Esp12 и esp32 на cp2102, обе нормально работают.
Правда есп12 входит в режим программирования если установлена скорость не выше 921000, выше не срабатывает.

pvvx

pvvx

Активный участник сообщества


  • #95

Для тех у кого на плате есть кнопочки, но не работает esptool.py, у самой esptool.py есть опция

—before no_reset

Но оно не переключается в Arduino. И вам придется лезть в

UsersИмяAppDataLocalArduino15packagesesp32hardwareesp321.x.xplatform.txt

И править в нем строку c :

tools.esptool_py.upload.pattern=…… —before default_reset …..

на no_reset

Тогда с помощь кнопочек вы сможете перевести своё чадо в режим программирования и прошить в Arduino.

pvvx

pvvx

Активный участник сообщества


  • #96

У меня есть Esp12 и esp32 на cp2102, обе нормально работают.
Правда есп12 входит в режим программирования если установлена скорость не выше 921000, выше не срабатывает.

А это относится к микрухе USB-COM, а не к ESP. Техническое описание причины будет слишком длинным и я его упущу. Проще — не покупайте всякое китайское дерьмо.

pvvx

pvvx

Активный участник сообщества


  • #97

Правда и этот баг (большая скорость на некоторых чипах USB-COM) можно обойти программно в той-же esptool, но кто-же будет учить ардуино-писателей? Нам до них далеко :)

  • #98

2020-12-08_105830.png

ничего не пишет

  • #99

Не хорошо.
Померьте тестером напряжения на есп.

Learn how to fix the Fatal Error Occurred: “Failed to connect to ESP32: Timed out waiting for packet header” error when trying to upload new code to your ESP32 board once for all.

[SOLVED] Failed to connect to ESP32: Timed out waiting for packet header

Why are you getting this error?

Some ESP32 development boards (read Best ESP32 boards) don’t go into flashing/uploading mode automatically when uploading a new code.

This means that when you try to upload a new sketch to your ESP32, the Arduino IDE fails to connect to your board, and you get the following error message:

Holding the BOOT/FLASH button

One of the ways to solve this is holding-down the “BOOT/FLASH” button in your ESP32 board while uploading a new sketch at the same time. But having to worry about this every time you want to upload new code can be tedious, specially when you’re testing and debugging your code. There is a way to fix this once for all – no need to hold down the “BOOT/FLASH” button anymore.

How to fix the Error?

To make your ESP32 board go into flashing/uploading mode automatically, you can connect a 10 uF electrolytic capacitor between the EN pin and GND.

You may want to test this setup first on a breadboard to make sure it works for your ESP32 development board.

Note: electrolytic capacitors have polarity. The white/grey stripe indicates the negative lead.

If it works, then you can solder the 10 uF electrolytic capacitor to the board. Since the EN and GND pins are far apart from each other, you can simply connect the capacitor between the EN and the GND of the ESP32 chip as shown in the schematic diagram below:

Recommended: ESP32 Pinout Reference: Which GPIO pins should you use?

The following figure shows how my ESP32 looks like after soldering the capacitor. It doesn’t occupy much space, and fortunately you won’t get more trouble connecting to the ESP32 when uploading new code.

Before trying to upload a new code, you should check the connections with a multimeter in continuity mode – check that you haven’t inadvertently solder anything to the next pin.

fix timed out waiting for packet header with capacitor testing

If everything is soldered properly, you won’t need to press the BOOT button when uploading new code. You also won’t get the Fatal Error Occurred: “Failed to connect to ESP32: Timed out waiting for packet header”.

Wrapping Up

We hope you’ve found this trick useful and it solved your problem. Thanks to Ben Hall for the suggestion.

  • For more ESP32 troubleshooting tips, consult the ESP32 troubleshooting guide.
  • To learn more about ESP32 enroll in the Learn ESP32 with Arduino IDE course.
  • More projects about ESP32: 20+ ESP32 Projects and Tutorials

  • Произошла ошибка при запуске скетча
  • Произошла ошибка при загрузке скетча avrdude stk500 recv programmer is not responding
  • Произошла ошибка при запуске сканера dr web
  • Произошла ошибка при загрузке скетча arduino uno
  • Произошла ошибка при запуске программы сканер dr web