Що робити, якщо ESPlorer раптом перестав завантажувати файли з ESP8266 на ПК?

Щоб зручно розповсюджувати компільоване програмне забезпчечення, для мікроконтролера ESP8266-12 з прошивкою NodeMCU та мовою Lua, зазвичай:

  • в контролер завантажують вихідні lua-файли,
  • компілюють їх в оточенні NodeMCU командою node.compile(),
  • а потім отримані двійкові файли типу *.lc, вивантажуть назад у ПК.

І вже потім надсилають готовий набір двійкових файлів колегам чи клієнтам електронними каналами комунікації. Отримавши такі файли, можливо завантажити їх у інший контролер та працювати з ними.

Однією з поширених, спеціалізованих термінальних утиліт є ESPlorer, який у доволі зручний спосіб дозволяє отримати двійкові файли з контролера.

Особливість ESPlorer також полягає у тому, що він дозволяє вивантажувати на ПК файли будь-якого розміру. В той час як, наприклад, Lua Loader, вміє вивантажувати у бік ПК, лише файли розміром до 1024 байт – розмір буфера методу file.read(), який використовує вбудований в Lua Loader скрипт. 

Саме тому, ми у своїй діяльності використовуємо ESPlorer – як один з повсякденних інструментів розробки та дистрибуції коду.

Опис проблеми

Проблема з’явилася неочікувано для нас і полягає у тому, що ESPlorer перестав завершувати процес вивантаження будь-яких файлів у бік ПК, lc-файлів у тому числі.

Проявляється це у вигляді повідомлення та у відсутності діалогу для збереження вивантаженого вмісту з контролера у файл на ПК.

Рис. Помилка завершення вивантаження на ПК, таймаут відповіді від ESP8266

Як можна бачити, ESPlorer успішно читає файл з внутрушньої пам’яті мікроконтролера по частинах і успішно завершує читання, але потім, перед самим зберіганням файлу, не може отримати відповіді від ESP8266. І відтак, припиняє всю процедуру вивантаження за крок до її завершення.  

Вирішення

Для того, щоб вирішити проблему, ми спробували пошукати хоча б якісь налаштування у ESPlorer і знайшли. Для цього потрібно:

– перейти у закладку Settings панелі Editor, що розташовано ліворуч у ESPlorer

– поставити прапорець “Dumb mode”,  never check answers, та встановити час затримки між відповідями, наприклад 500 мілісекунд. 

Рис. Налаштування ESPlorer, Група Send, прапорець “Dumb mode” і таймаут

Відразу після цих маніпуляцій, вивантаження файлів запрацювало:

Рис. Успішне завершення процедури вивантаження файлу у бік ПК

Причина

Причин може бути багато і різних. Наприклад, з тих пір, як все працювало, встиг вийти новий реліз прошивки NodeMCU. Чи може ця зміна бути причиною багу – перевірити майже неможливо.

Також ми помітили, що якщо до запуску ESPlorer працювали з Lua Loader (а потім коректно вивільнили порт), то цей баг теж себе проявляє. І знову ж, яка причина – складно вгадати. Головне, що ми тепер знаємо, як цей баг обійти.

Бажаємо успіхів!