• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Делюсь опытом Настройка Visual Studio Code и PlatformIO под Windows

Andrey L

Member
Установка VSC и PlatformIO для ESP32
Поиск среды для работы с ESP32 привёл меня к комбинации Visual Studio Code и PlatformIO. Так же я решил использовать ESP-IDF, поскольку она была разработана в той же фирме.

Преимущества этой комбинации:
— подсветка кода,
— автодополнение,
— всплывающие подсказки,
— обещания возможности дебага.

Установка
Процес установки этой связки довольно лёгок и показан хорошо в этом видео. Возможно, до этого на компьютере надо установить Python.


Если в видео приводится пример как использовать Arduino IDE с этой связкой, то я опишу работу с ESP-IDF.

Пустой пример
Espressif выложил коды с примерами. Воспользуемся одним из них.

Скачаем и расспакуем эти примеры. Папка с «пустым проектом» находится по пути «\esp-iot-solution-master\examples\empty_project». А по умолчанию, папка с проектами от VSC находится по адресу C:\Users\{имя пользователя}\Documents\PlatformIO\Projects.

Копируем файлы примера любую папку по вашему выбору. Я для неё создал папку «Empty2» в стандартной папке с проектами PlatformIO, но вы можете выбрать и другое место.

1. Запускаем VSC. В левом столбике кликаем по иконке «PlatformIO». В нижней строчке кликаем по значку «дом». Жмём на кнопку «+ New Project».
Должна всплыть менюшка. В поле «Name» вводим название нашего проекта «Empty2», оно должно совпадать с названием папки, которое мы сделали ранее. В поле «Board» выбираем плату, что у вас. У меня «DOIT ESP32 DEVKIT V1». В качестве Framework выбираем «ESP-IDF». «Location» убираем галочку и выбираем папку, в которой находится папка, куда расспаковали пример. (Т.е. мы вибираем не папку, куда скопировали документы, а уровнем выше.) Жмём кнопку «Finish».

Ждём пока VSC создаст новые файлы, а потом подкорректируем файловую систему, которую мы получили от Espressif, для работы с VSC.

2. Файлы с кодом должны храниться в папке «src», а в примере эта папка называется «main». Переносим все файлы из второй в первую. После чего удаляем пустую папку «main». (Альтернатива: изменить файл platformio.ini, добавив в него «src_dir=main».)

3. Библиотеки должны находиться в папке «lib», а в примерах находятся в папке «components», перенесём все файлы в нужную папку, после чего пустую «components» можно будет удалить. (Альтернатива: изменить файл platformio.ini, добавив в него «lib_dir=components».)

4. Сами файлы прикреплённых библиотек должны находиться в дополнительном пути:
library/library.c и library/library.h или library/src/library.c и library/src/library.h. Так что стягиваем файлы библиотек в нужные подкатегории.
Заходим в папку example1/include и перенесём файл example1.h в папку выше, чтобы example1.h и example1.c были в одной папке lib/example1. Пустую папку «include» можно удалить.
С библиотекой example2 мы поступим по другому. Заходим в папку lib/example2, переименовываем папку «include» в «src». И в эту папку мы переносим файл «example2.c». Таким образом оба файла должны быть в папке «/lib/example2/src».

5. На последок остаётся прописать скорость работы с модулем в терминале. А может быть понадобится вручную прописать через какой COM-порт подключён модуль.

Для этого открываем файл «platformio.ini» и в его конец добавляем следующую строчку:

monitor_speed = 115200

Обычно СОМ-порт расспознаётся автоматически, но если будут проблемы, то в тот же файл «platformio.ini» добавляйте следующую строчку:

upload_port = COM11

У меня ESP32 подключается через COM11, у вас это может быть другой.

Компиляция и прошивка
Возвращаемся в VSC. В окне «Explorer», открываем папку «src», а потом файл «main.c».

Если надо скомпилировать проект, то жмите на иконку «галочка» в самом низу окна VSC.

А если надо ещё и прошить модуль, то кликайте по иконке «стрелка вправо» в самом низу окна VSC. Не забудьте во время нажать на кнопку «Boot» на модуле.

Ссылки
espressif/esp-iot-solution — репозиторий от Espressif.

https://platformio.org — сайт PlatformIO

https://code.visualstudio.com — сайт VSC
 

Alcest

Member
Я ни шиша во всем этом не понимаю, но платформио вроде как фреймворк с набором библиотек, дабы норот мог невозбранно создавать приложения одним-двумя нажатиями кнопки. А ESP-IDF, там как будто компилятор, без которого все это взлететь не должно. А VS чисто в качестве редактора используется.

Как там на самом деле с отладкой? ИМХО, любая IDE без дебагера есть бесполезная игрушка. Во всяком случае у меня с МК ни разу такого не было, чтобы что-то без отладки, просто так, взяло и правильно заработало...
 

nikolz

Well-known member
Увы, не все в этом мире довели до уровня одного - двух нажатий.
кое -где пока еще требуется чуть больше знаний.
покурите пока доведут до двух нажатий
--------------------
частое употребление халявы полностью отрубает мозги.
 

Andrey L

Member
@Alcest

Да, Вы практически правильно поняли про эту "матрёшку".

Visual Studio Code - это редактор для написания кода.
PlatformIO - это плагин, который позволяет в VSC писать коды для различных плат. И он умеет работать и с платами ESP, Atel, STM, PIC32 и другие (всего 31 платформа). При этом он сам доустанавливает нужные фреймворки, что не надо об этом заботиться и можно работать с различными системами.
ESP-IDF (Espressif IoT Development Framework) - это "фреймворк", который был разработан некой фирмой под названием Espressif Systems.

Отладка должна быть, у меня просто нет модуля для отладки, поэтому я и не пишу.

@All
Я не профессиональный переводчик или составитель книг-справочников или учебников. Я новичок, который пытается в этом разобраться, вот и делаю для себя заметки, чтобы быстро вспомнить некоторые вещи, когда я к ним вернусь через месяц-другой (чтобы мне не пришлось вновь начинать всё сначала).
А то постоянно сталкиваюсь с тем, что делаю всё по инструкции, но из-за какой-то мелочи ничего не работает. (В последний раз это было открытое окно PUTTY и тут я потерял день на поиски проблем.)
А если это кому-то поможет, то хорошо.
 

enjoynering

Well-known member
Ок. Спасибо за ответ. Но теперь возник другой. Если PlatformIO умеет 31 платформу, зачем ставить ESP-IDF? Что PlatformIO не умеет esp8266 и коробки?


Ну и офтоп. Теперь когда вы попробовали eclipse и VS Code под винду, что вам больше нравится и почему?

Дебагер под Arduino существовать не может из-за особенности платформы. У arduino esp8266 есть что похожее виде вывода serial сообщений.
 
Дебагер под Arduino существовать не может из-за особенности платформы. У arduino esp8266 есть что похожее виде вывода serial сообщений.
Visual Micro позволяет делать что-то похожее на отладку c точками останова и даже выводом значений переменных. Вроде бы и ESP32 поддерживает (сам пока с ESP32 не пробовал).
 

enjoynering

Well-known member
Visual Micro позволяет делать что-то похожее на отладку c точками останова и даже выводом значений переменных.
на сколько я знаю для этого нужна обратная связь от gebgger который обычно подключается по jtag к камню или еще как-то.
 
на сколько я знаю для этого нужна обратная связь от gebgger который обычно подключается по jtag к камню или еще как-то.
Нее, платка подключается как обычно, по USB (если говорим про отладочные платы с USB-COM преобразователем. Visual Micro подставляет в программу свои кусочки кода при компиляции.
 

enjoynering

Well-known member
У ESP32 с этим какие-то проблемы?
проблема в том что нужна еще одно устрой - jtag

Нее, платка подключается как обычно, по USB (если говорим про отладочные платы с USB-COM преобразователем. Visual Micro подставляет в программу свои кусочки кода при компиляции.
теперь понятно.
 

Alcest

Member
проблема в том что нужна еще одно устрой - jtag
Этого добра у всех здесь присутствующих валом, наверное.
Нее, платка подключается как обычно, по USB (если говорим про отладочные платы с USB-COM преобразователем. Visual Micro подставляет в программу свои кусочки кода при компиляции.
Получается, что возможна отладка через COM-порт? Через интегрированный в мать RS-232 или через PCI адаптер с COM-портами? Разумеется, через преобразователи RS232-TTL.
 

Alcest

Member
ЗЫ. Надо признаться, я вообще ни с какими МК кроме микроконтроллеров компании Microchip серий 16 и 18 доселе дела не имел. Задачи усложнились и я решил освоить STM32 и ESP32. Но, смотрю на всю эту суету с IDE, компиляторами, документацией, аппноутами, экскамплами, даташитами, и прочим, и чет меня червячок грызет - а не вернуться ли к Микрочипу? dspPIC уже не такими дорогими кажутся, как раньше, когда я еще не знал про этот цЫрк с конями у espressif и stm electronix... Я то думал будет все как у Атмела или Микрочипа: ИДЕ скачал, установил, взял даташит, микроконтроллер и отладчик, и через пару часов уже понимаешь чего делаешь и зачем... А тут производители чипов зачастую сами не знают что творят...
 

Andrey L

Member
@K_Shamil Точный ответ сказать не могу.
По распиновке очень похоже на "ESP32 DevKitC", но компоненты на плате находятся иначе.
Продавец в качестве производителя указал "TENSTAR ROBOT", а вот последней нету в выборе.

Но все эти платы должны быть очень схожими, поскольку первые проекты ("Привет мир" и "Блинк") я делал для "Espressif ESP32 Dev Module", и они работали.

Но пока мне не удалось запустить более продвинутый пример с WIFI-связью. Не могу указать VSC, что такая вещь как "WIFI_EVENT" является частью "ESP-IDF".
 

Andrey L

Member
Сегодня установил эту связку под Ubuntu.


0. Устанавливаем Python: sudo apt install python
1. С сайта Visual Studio Code - Code Editing. Redefined качаем установщик и ставим себе VSC. После чего запускаем его.
2. Кликаем на Extensions (Ctrl+Shift+X). Там ищем PlatformIO и устанавливаем его. В процессе установки мне сообщили, что не хватает Python 2.7. Но ждём окончания установки самой PlatformIO.
3. Если не нравится цветная расскраска VSC, то нажмите на значёк шестерёнки в левом нижнем углу и выберите там «Color Theme».
 

enjoynering

Well-known member
вы так и неответили
...Но теперь возник другой. Если PlatformIO умеет 31 платформу, зачем ставить ESP-IDF? Что PlatformIO не умеет esp8266 и коробки?


Ну и офтоп. Теперь когда вы попробовали eclipse и VS Code под винду, что вам больше нравится и почему?
 
Сверху Снизу