A fatal esptool.py error occurred: Cannot configure port, something went wrong.

Однажды, рабочая плата NodeMCU esp8266 перестала прошиваться и появилось сообщение:

A fatal esptool.py error occurred: Cannot configure port, something went wrong. Original message: PermissionError(13, ‘A device attached to the system is not functioning.’, None, 31)esptool.py v3.0 Serial port COM5

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

. Variables and constants in RAM (global, static), used 41368 / 80192 bytes (50%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     1184     initialized variables
╠══ RODATA   8324     constants       
╚══ BSS      30240    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 62611 / 65526 bytes (95%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32738    reserved space for flash instruction cache
╚══ IRAM     30443    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 450128 / 1043576 bytes (43%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     452428   code in flash   
esptool.py v3.0

Serial port COM5
A fatal esptool.py error occurred: Cannot configure port, something went wrong. Original message: PermissionError(13, 'A device attached to the system is not functioning.', None, 31)

На плате китайского происхождения была затерта маркировка микросхемы USB-serial преобразователя, но на обратной стороне было указано, что это CH340G

Эта ошибка может возникнуть при загрузке на платы, использующие определенные партии USB-чипа WCH CH340. Подделка это или нет доподлинно неизвестно. Но, было замечено, что особенностью этих микросхем CH340 является отсутствие маркировки (обычно на них написано «WCH CH340G») и проблема возникает только при использовании последней версии драйвера CH340.

Таким образом, «откат» к более старой версии драйвера является эффективным обходным путем. Вы можете попробовать.

  1. Перейдите по следующей ссылке на официальный сайт производителя микросхемы, чтобы загрузить предыдущую версию драйвера с его веб-сайта:
    https://www.wch-ic.com/downloads/file/65.html?time=2023-03-16%2022:57:59
  2. Дождитесь завершения загрузки.
  3. Запустите загруженный файл CH341SER.EXE.
  4. В открывшемся диалоговом окне нажмите кнопку “INSTALL”.
WCH.CN USB-SERIAL CH340 01/18/2022, 3.7.2022.01
  1. Дождитесь завершения установки драйвера.
  2. Перезапустите Arduino IDE, если она была запущена.

Готово, на этом этапе у многих уже может все заработать, но иногда требуется “откатить” драйвер вручную, для этого:

  1. Откройте диспетчер устройств Windows.
  2. В разделе “Порты (COM и LPT)” вы должны увидеть порт, обозначенный как “USB-SERIAL CH340 (COMn)” (где “COMn” – это какой-либо последовательный порт, например, COM5). Дважды щелкните по этому пункту. Откроется диалоговое окно “Свойства USB-SERIAL CH340 (COMn)”. Выберите вкладку “Драйвер” в диалоговом окне “Свойства USB-SERIAL CH340 (COMn)”. и нажмите кнопку “Удалить устройство”. В окне “Удаление устройства выберите “Удалить программы драйверов для этого устройства” и нажмите “Удалить”

После этого повторите пункты 1-6, показанные выше. После переустановки драйвера ошибка уходит.

Модуль LX-LCBST зарядки li-ion аккумуляторов со Step-Up DC-DC преобразователем. Часть 2

OpenSource проект. Разработано в EasyEDA
Посмотреть проект на OSHW LAB

Здесь описан принцип работы основных компонентов модуля. Если Вам не знаком этот модуль и больше интересует как пользоваться платой для зарядки LX-LCBST, то лучше сначала ознакомиться с ЧАСТЬЮ 1, в которой более подробно описана схема подключения модуля LX-LCBST и представлены основные технические характеристики модуля.

Что внутри модуля LX-LCBST?

Известно, что данный модуль сочетает в себе контроллер заряда, устройство защиты и регулируемый повышающий преобразователь. Так, модуль оснащен микросхемой TP4056 (или ее аналогом – SL4056, PT4056, GX4056 и др.) для зарядки одноячеечных литий-ионных аккумуляторов Li-Ion с номинальным напряжением 3,7В, микросхемой защиты аккумулятора типа DW03 (ближайший аналог – HM5434) и микросхемой контроллера повышающего преобразователя типа MT3608 с регулируемым выходным напряжением посредством подстроечного резистора. На входе модуля имеется разъем типа USB-type-C. В качестве альтернативы для подачи питания можно использовать площадки на обратной стороне модуля. Рекомендуемое напряжение питания модуля составляет примерно 5В, на деле оно ограничено значением питания микросхемы заряда TP4056, согласно технической документации, на уровнях от 4,2В до 6,5В.

Для формирования схемы электрической принципиальной рассмотрим печатную плату модуля

Справа налево на ней расположены контроллер заряда, устройство защиты и повышающий (STEP-UP) преобразователь.

Контроллер заряда аккумулятора — микросхема TP4056

TP4056 – это недорогая микросхема контроллера зарядного устройства для литий-ионных аккумуляторов. Данный контроллер поддерживает механизм заряда постоянного тока и постоянного напряжения (CC/CV) для одноэлементной литиевой батареи. Представлена микросхема в 8-контактном корпусе SOP-8 (ESOP-8) и требует минимального количества внешних компонентов для построения схемы зарядного устройства.

Скачать datasheet TP4056 (NanJing)  TP4056 (UTD-Semi)

Функциональное назначение выводов микросхемы:

  • Контакт 1 – TEMP : входной контакт для измерения температуры. По напряжению на этом выводе можно определить температуру аккумулятора. Он может быть подключаться к выходу термистора NTC в аккумуляторном блоке. Однако, в модуле LX-LCBST не используется.
  • Контакт 2 – PROG: Ток заряда аккумулятора устанавливается путем подключения резистора Rprog между этим контактом и GND. В зависимости от номинала резистора зарядный ток может составлять от 130мА до 1А.
  • Контакт 3 – GND: контакт заземления.
  • Контакт 4 — VCC: контакт питания. TP4056 поддерживает до 6.5В, но обычно используется 5В.
  • Контакт 5 – BAT: контакт подключения аккумулятора.
  • Контакт 6 – STDBY: когда аккумулятор полностью заряжен, этот контакт подтягивается к земле. К этому выводу подключен светодиод, обозначающий режим ожидания.
  • Контакт 7 – CHRG: когда аккумулятор заряжается, этот контакт подтянут к земле. К этому контакту подключен светодиод, указывающий на процесс заряда батареи.
  • Контакт 8 – CE : это входной контакт для включения или отключения чипа. При подключении к VCC TP4056 находится в обычном режиме, т.е. контроллер заряда включен.

Расчет зарядного тока описан в ЧАСТИ 1 и сводится к выбору сопротивления резистора Rprog. Его значение рассчитывается по формуле: IBAT = (VPROG/RPROG  )*K, где VPROG = 1В, К = 1200.

Относительно коэффициента К. Было замечено, что ток заряда разных партий модулей и разных продавцов известной китайской площадки несколько отличается от расчетного и обнаружено, что “аналоги” микросхем не совсем аналоги и все таки имеют различия в пределах напряжений питания и тока заряда. В связи с этим различные производители приводят различные формулы расчета тока заряда, в которой коэффициент К варьируется от 1000 до 1200. Это следует учитывать при расчете отдельно взятого модуля.

На модуле имеется два светодиода для контроля состояния процесса заряда. Светодиод CHRG красного цвета и светодиод STDBY синего цвета.


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

Защита аккумулятора — микросхема DW03

Данный модуль имеет микросхему защиты литий-ионных и литий-полимерных аккумуляторов, со встроенным МОП-транзистором, схемой определения напряжения и тока, включает в себя все функции защиты, необходимые при использовании аккумуляторов данных типов, включая защиту от перезаряда, перегрузки по току, короткого замыкания нагрузки и т. д.

Потребление в режиме ожидания микросхемы крайне низкое, около 50мкА. Микросхема требует минимального количества компонентов обвязки, выполнена в компактном корпусе SOT23-5 и занимает очень мало места на плате. Микросхема защиты аккумулятора отключит нагрузку, когда напряжение аккумулятора упадет ниже 2,5 В.

Скачать datasheet DW03 (PJ)  HM5434 (H&M Semi)

Функциональное назначение выводов микросхемы:

  • Контакт 1 – NC : Не используется.
  • Контакт 2 – GND: контакт заземления.
  • Контакт 3 — VDD: контакт питания.
  • Контакты 4,5 – VM: контакты подключения отрицательной клеммы аккумулятора. Внутренний ключ подключает эту клемму к GND.

Для тех аккумуляторов, на которых уже установлен блок защиты на модуле LX-LCBST предусмотрена возможность отключения микросхемы защиты для передачи этой функции блоку установленному на аккумуляторе. На модуле имеются две площадки с маркировкой «Т», которые как раз и необходимы, если вы используете батарею с собственной схемой защиты.


В этом случае необходимо спаять эти контакты между собой.

Повышающий преобразователь – микросхема STEP-UP преобразователя MT3608

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

Скачать datasheet MT3608 (AeroSemi)  SDB628 (Shouding)

Функциональное назначение выводов микросхемы:

  • Контакт 1 – SW : выход внутреннего силового MOSFET-переключателя.
  • Контакт 2 – GND: контакт заземления.
  • Контакт 3 — FB: вход обратной связи.
  • Контакт 4 – EN: Вход управления включением/выключением регулятора. В модуле LX-LCBST подключён так, что преобразователь всегда включен.
  • Контакт 5 – IN: Вход питания.
  • Контакт 6 – NC: не используется.

Для регулирования выходного напряжения на схеме предусмотрен подстроечный резистор.

Выходное напряжение модуля может быть изменено в диапазоне от 4,2 до 28 В посредством изменения сопротивления данного резистора.

Принципиальная схема модуля LX-LCBST

Версия 1.0

Принципиальная схема выполнена по печатной плате готового модуля. Проводники печатной платы:

Печатная плата модуля LX-LCBST

Печатная плата выполнена размер-в-размер, с сохранением всех печатных элементов исходной китайской платы за исключением шелкографии на китайском языке – все обозначения переведены на английский язык.

Печатная плата выполнена в приложении EasyEDA.

Список элементов модуля LX-LCBST

Проект доступен на OSHWLAB. Также, там доступно обсуждение проекта, замечания и ответы на вопросы.

OpenSource проект. Разработано в EasyEDA.
Посмотреть проект на OSHW LAB

Как сделать резервную копию прошивки контроллера ESP32

Может показаться, что задача стянуть прошивку с микроконтроллера мало кому интересна, да и к тому же существует множество способов защиты и шифрования, которые блокируют этот процесс еще на этапе программирования. Но, почему бы не попробовать, решил я, когда столкнулся с простой задачей – скачать исходную прошивку с китайской платы, так сказать, на всякий случай. Встал вопрос как сделать “резервную” копию заводской прошивки отладочной платы на микроконтроллере ESP32 от Espressif Systems.

В сети нашлось несколько способов сделать это. Здесь описан один из них, он проверен, работоспособный и понятный.

Сразу скажу, что все это сработало на плате, которую в сети называют Cheap Yellow Board, а ее официальное название ESP32-2432S028. Позже, этот способ был проверен и на аналогичных платах китайского производителя, таких как ESP32-2432S024 и ESP32-2432S035.

Перед началом работы необходимо:

1. Скачать архив либо по ссылке, либо взять из проекта с github автора (@SmittyHalibut).

2. Распаковать архив, найти файл _ESP32 save flash 4MB.cmd, открыть его в блокноте и изменить COM-порт на тот, к которому подключена ESP32

После этого запустить этот файл и прошивка сохранится в формате *.bin с именем backup1.

В результате это и будет Ваша прошивка, которую потом можно загрузить в микроконтроллер.

Для того, чтобы загрузить прошивку в ESP32 необходимо открыть в блокноте файл _ESP32 write flash.cmd и изменить COM-порт на тот, к которому подключена ESP32

После этого запустить этот файл _ESP32 write flash.cmd и Ваш микроконтроллер будет прошит.

Замечания. Некоторые пользователи замечают, что файлы необходимо запускать от имени администратора.

Автор данного решения Марк Смит – энтузиаст из Калифорнии. Его проекты есть на GitHub (@SmittyHalibut).