Урок 2. Установка среды программирования ESP-IDF совместно с Visual Studio Code.

Уроки ESP32

Установим программное обеспечение, необходимое для разработки приложений ESP32.

Предыдущий урок     Список уроков     Следующий урок

Официальной программной средой для разработки приложений ESP32 является платформа ESP-IDF (Espressif’s IoT Development Framework). Она представляет собой самодастаточный набор средств для создания программного обеспечения с использованием языков программирования C и C++. ESP-IDF ориентирована на разработку, как общих приложений, так и IoT проектов.

 

ESP-IDF поддерживает огромное количество программных компонентов, таких как RTOS, драйверы периферийных устройств, сетевой стек, различные протоколы и прочее.

Схематично компоненты ESP-IDF выглядят так.

Компоненты платформы ESP-IDF

Установка ESP-IDF.

Платформа ESP-IDF использует кросс-компиляторы, OpenOCD, CMake и инструмент сборки Ninja. Также требуется Python и Git.

Можно инсталлировать все это отдельно, но для простоты установки компания Espressif Systems разработала инсталлятор, который делает это все в автоматическом режиме. Что немаловажно, кроме собственно установки, инсталлятор задает переменные окружения Windows. Т.е. после завершения установки можно сразу пользоваться средой.

Начнем.

Загружаем файл инсталлятора по этой ссылке.

Открываем.

Инсталлятор

Разрешаем установку всего: Python, Git, ESP-IDF.

Инсталлятор

Инсталлятор

Инсталлятор

Выбираем последнюю версию, задаем рабочую папку.

Инсталлятор

Инсталлятор

Устанавливаем.

Инсталлятор

Процесс длится довольно долго.

Инсталлятор

На рабочем столе появился ярлык.

Ярлык

Уже можно работать. Проверим основные функции.

Запускаем иконку. Открывается интерпретатор командной строки, подготавливается работа с ESP-IDF.

Интерпретатор командной строки

Попробуем компилировать проект примера, например, blink.

Перейдем в папку с проектом blink.

cd examples\get-started\blink

Интерпретатор командной строки

Компилируем проект командой  idf.py build.

В первый раз сборка программы длится довольно долго.

В результате проект компилировался успешно, о чем сообщает надпись Project build complete.

Интерпретатор командной строки

Попробуем загрузить программу в FLASH микроконтроллера.

idf.py –p COM8 flash

COM8 – это номер виртуального COM-порта. Он появляется после установки драйвера конвертера USB-UART. Обычно в отладочных платах ESP32 используется преобразователь интерфейсов CP2102. Предварительно надо установить для него драйвер и посмотреть номер виртуального порта.

Панель управления -> Система -> Диспетчер устройств -> Порты (COM и LPT)

Диспетчер устройств

У меня 8. У вас может быть другой.

И, конечно,  надо подключить к компьютеру плату.

Загрузилось успешно.

Интерпретатор командной строки

Но светодиод не мигает.

Надо исправить одну строчку в исходном тексте программы.

Открываем любым текстовым редактором D:\esp\esp-idf\get-started\blink\main\blink.c.

В строке определяющей номер вывода светодиода ставим 2.

Строку

#define BLINK_GPIO CONFIG_BLINK_GPIO

заменяем на

#define BLINK_GPIO 2

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

Заново компилируем и загружаем в FLASH.

Теперь компиляция длится 3 секунды и светодиод замигал.

Проверим еще монитор. Команда

idf.py –p COM8 monitor

Монитор

Плата посылает на компьютер сообщения ”Turning off the Led” и ”Turning on the Led”

Все прекрасно работает. Но пользоваться командной строкой очень неудобно.

Добавим к нашей среде редактор.

 

Установка и настройка редактора Visual Studio Code (VS Code).

Visual Studio Code – это редактор исходного кода, разработанный Microsoft. Используется для кроссплатформенной разработки приложений.

Существует специальное расширение VS Code для ESP-IDF. По моему опыту и мнению многих других программистов оно не работает нормально. К тому же,  можно вполне обойтись без него.

Устанавливаем  Visual Studio Code по ссылке.

Установка VS Code

Загружаем стабильную версию.

Установка VS Code

Установка VS Code

Установка VS Code

Установка VS Code

Установка VS Code

Было сообщение, что PATH доступно после перезагрузки. Поэтому лучше перезагрузить компьютер.

Запускаем VS  Code.

VS Code

Копируем проект blink.

Я создал папку blink1 в моем рабочем каталоге.

Копировал в нее содержимое каталога blink без папки build.

Каталог blink

Открываем папку blink1 в VS Code.

File -> Open Folder

Открытие каталога

Основной файл blink.c.

Номер вывода светодиода уже изменен.

Откроем терминал и попытаемся компилировать проект.

Terminal -> New Terminal

Открытие терминала

Командой idf.py build.

Получаем сообщение.

Сборка проекта

Терминал не конфигурирован для ESP-IDF.

Создаем пользовательскую конфигурацию.

File -> Preference -> Settings ->User

Пользовательская конфигурация

Features -> Terminal -> Edit in settings.ison

Добавляем следующий блок.

"terminal.integrated.shell.windows" : "cmd.exe",
        "terminal.integrated.shellArgs.windows" : [
                "/k",
                "D:/esp/esp-idf/export.bat"
]

Если впереди было что-то еще, то добавляем запятую. У меня файл settings.ison выглядит так.

Файл settings.ison

Сохраняем.

File -> Save

Компилируем.

idf.py build

В первый раз долго, потому что мы удалили папку build.

Теперь компиляция проходит без ошибок.

Сборка проекта

Загружаем программу в FLASH микроконтроллера командой

idf.py –p COM8 flash

Успешно.

Загрузка FLASH

Светодиод мигает.

Проверяем работу монитора.

idf.py –p COM8 monitor

Монитор тоже работает.

Монитор

 

Набирать директивы в командной строке не очень удобно. Проблему можно решить установкой расширения VsCode Action Buttons.

Нажимаем кнопку Extensions  в левом вертикальном меню.

В поле Search Extensions начинаем набирать название расширения, пока оно не появится в списке.

Расширение VsCode Action Buttons

Устанавливаем.

Дальше Extension settings и Edit in settings.json.

Добавляем блок установки кнопок с названиями Build, FLASH, Monitor.

{
        "actionButtons": {
                "defaultColor": "white",
                "reloadButton": "Reload",
                "commands": [
                        {
                                "name": "Build",
                                "color": "white",
                                "command": "idf.py build"
                        },
                        {
                                "name": "FLASH",
                                "color": "white",
                                "command": "idf.py -p COM8 flash"
                        },
                        {
                                "name": "Monitor",
                                "color": "white",
                                "command": "idf.py -p COM8 monitor"
                        }
                ]
        }
}

Окончательно setting.json у меня выглядит так.

Файл setting.json

Слева внизу появилось новое меню.

Новое меню

Теперь нет необходимости набирать команды. Можно нажимать кнопки.

Еще одно расширение создает дополнительное меню.

Называется Shortcut menu bar.

Расширение Shortcut menu bar

После установки справа вверху появляется меню, конфигурацию которого можно изменять.

Верхнее меню

В зависимости от формата дисплея компьютера иногда панель терминала удобнее разместить не внизу, а справа.

Панель терминала справа

Делается это нажатием правой кнопки мыши по закладке Terminal.

Установка панели терминала справа

Дальше Move Panel Right.

Все. Среда программирования установлена и готова к использованию

 

В следующем уроке будем разбираться в проекте ESP-IDF.

 

Предыдущий урок     Список уроков     Следующий урок

 

1

Автор публикации

не в сети 2 недели

Эдуард

280
Комментарии: 1936Публикации: 197Регистрация: 13-12-2015

19 комментариев на «Урок 2. Установка среды программирования ESP-IDF совместно с Visual Studio Code.»

  1. Для VSC есть родной плагин от Espressif, который ТЕПЕРЬ УЖЕ ставится без проблем через сам VSC. + там можно забабахать портабельную версию всей среды… а вот для чего такие страдания, как в тексте выше — не понятно…

    0
  2. Здравствуйте, подскажите пожалуйста в чём проблема?
    Через окно терминала VSC не грузится во flash

    D:\PROGRAMS\ESP\PROJECTS\blink1>idf.py –p COM3 flash
    Adding «flash»‘s dependency «all» to list of commands with default set of options.
    Executing action: –p
    ninja: error: unknown target ‘Цp’, did you mean ‘app’?
    command «–p» is not known to idf.py and is not a Ninja target

    Хотя эта же команда через ESP-IDF проходит без проблем.

    0
    • Наберите команду заново. У вас у черточки перед p код символа 96. Может в окне комментариев переправилось.
      idf.py –p COM3 f
      69 64 66 2E 70 79 20 96 70 20 43

      0
    • Команда idf.py build выполняется, а на команды idf.py –p COM3 flash и idf.py –p COM3 monitor выдаёт ошибку:
      D:\PROGRAMS\ESP\PROJECTS\blink1>idf.py –p COM3 flash
      Adding «flash»‘s dependency «all» to list of commands with default set of options.
      Executing action: –p
      ninja: error: unknown target ‘Цp’, did you mean ‘app’?
      command «–p» is not known to idf.py and is not a Ninja target

      D:\PROGRAMS\ESP\PROJECTS\blink1>idf.py –p COM3 monitor
      Executing action: –p
      ninja: error: unknown target ‘Цp’, did you mean ‘app’?
      command «–p» is not known to idf.py and is not a Ninja target

      0
    • Да, спасибо всё заработало, ввёл заново пробел и чёрточку. Изначально я эти команды не набирал, а скопировал из урока. Ещё раз спасибо! а то уже мозг вскипел))

      0
  3. Мучения с Visual Studio Code мотивировали прикрутить ESP-IDF к Notepad++ с помощью плагина NppExec, предоставляющего возможность работы с консолью.
    Удалось, не выходя из Notepad++, запускать компиляцию и загрузку во Flash для проектов из ESP-IDF и Arduino IDE, а также открывать окно терминала в редакторе.

    Макросы выглядят так:
    // Arduino IDE Компиляция:
    cmd /c arduino_debug.exe —verify —pref custom_FlashSize=esp32_4M $(FULL_CURRENT_PATH)

    // Arduino IDE Загрузка:
    inputbox «Номер COM порта:»
    cmd /c arduino_debug.exe —upload —port COM$(INPUT) —pref esp32.name=»ESP32 Dev Module» —pref esp32.menu.FlashSize.4M.build.flash_size=4MB —pref esp32.menu.PartitionScheme.default=»Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)» $(FULL_CURRENT_PATH)

    // ESP-IDF Компиляция:
    cmd /c cd $(WORKSPACE_ITEM_PATH) && C:\Users\User\Desktop\esp-idf\export.bat && idf.py build

    // ESP-IDF Загрузка:
    inputbox «Номер COM порта:»
    cmd /c cd $(WORKSPACE_ITEM_PATH) && C:\Users\User\Desktop\esp-idf\export.bat && idf.py —port COM$(INPUT) flash

    // Монитор:
    inputbox «Номер COM порта:»
    cmd /c cd C:\Users\User\Desktop\esp-idf\examples\get-started\blink && C:\Users\User\Desktop\esp-idf\export.bat && idf.py —port COM$(INPUT) monitor

    //Для работы макроса Монитор необходимо предварительно выполнить компиляцию ESP-IDF в папке C:\Users\User\Desktop\esp-idf\examples\get-started\blink
    //Так как для выполнения команды idf.py —port необходимы какие-то из файлов появляющиеся в ее результате
    //Наличие пустой строки после inputbox «Номер COM порта:» имеет значение при копировании макроса в NppExec

    0
  4. Эдуард, спасибо большое за Ваши уроки! Все понятно и очень классно описано 🙂

    0
  5. Для его такие заморочки со средой, когда ребята из Platformio все давно уже сделали за нас?

    0
    • А PlatformIO не заморочка? Смотрел документацию у них на сайте, так даже не сразу нашел куда устанавливается platformio.exe, пришлось искать по всем директориям.

      0
  6. шел 2022-й, но все так же. Прежде чем начать писать программу, надо скачать гигабайты непонятно чего, затем изрядно поизвращаться с установками, настройками изучить бредовые команды типа «ESP-IDF:Select where to save configuration settings» и прочей чушью попутно выискивая солюшены на тупые ишуесы типа «не фетчит урл на гитхабе», потом плюнуть к чертовой матери на это и вернуться в Arduino Core

    0
    • Ставится VSCode , далее выбирается плагин PlatformIO.
      Далее ваши мучения заканчиваются так и не начавшись. PlatformIO IDE, при создании проекта, автоматически всё сам скачает с GitHub. По факту всё проще и удобнее чем в Arduino IDE. Выбор микроконтроллеров шире, можно выбирать самому под них языковую среду (framework) mbed, arduino, expressiv, cube…. Есть, конечно, нюансы , но о них потом.

      0
  7. Я извиняюсь. А почему нельзя использовать Arduino IDE ? Ну по крайней мере на первых порах. Она ведь тоже поддерживает и ESP32 и ESP8266. Такие инсталляции для того чтобы просто помигать светодиодом — это как-то не оно… Это все имхо, конечно.

    0
  8. Эдуард и хотелось бы знать ваше мнение — как вы вообще расцениваете идею программирования ESP32 в среде Arduino IDE ? Наверно с вашей точки зрения профессионала это несерьезно, да?

    0
    • Здравствуйте!
      Почему не серьезно?
      У меня есть несколько крупных проекта ESP32 в среде Arduino IDE. В одном из них, это футбольный тренажер, ESP32 используется в качестве центрального контроллера с быстродействующей сетью RS485, в которой больше 30 локальных контроллеров. Есть сложный Web-интерейс, связь с компьютером. Этот же ESP32 используется для управления светодиодной панелью с постоянной регенерацией изображения через DMA. К нему подключены кнопки, MP3-модуль. Внутренняя система диагностики фиксирует все ошибки. Система работает идеально.

      0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".