Platformio esp8266 ide как установить
Попробуем написать простейшее приложение для SoC ESP8266 с помощью экосистемы PlatformIO.
В качестве «железной» части удобно взять NodeMCU любой версии или любую другую плату основанную на модуле ESP12E.
Я предполагаю, что вы уже установили себе PlatformIO.
Создание проекта
Создадим каталог для нашего будущего приложения и перейдём в него:
Далее создадим шаблон проекта с помощью PlatformIO:
Здесь мы указываем команду init - создать новый проект или удалить существующий.
- -d ./ - каталог, в котором следует создать проект. В данном случае каталог текущий и ключ можно было не указывать.
- -b esp12e - для какой отладочной платы мы создаём проект. В данном случае - для абстрактного модуля ESP12E.
- --ide vscode - этот ключ указывает команды создать дополнительные файлы для работы с конкретной IDE. Я использую VS Code, но это не принципиально.
Быструю подсказку по команде всегде можно получить указав ключ -h .
Обратите внимание, что сейчас я использовал сокращённое имя pio . При работе в консоли использование сокращённого имени удобнее, поэтому далее, я буду использовать его.
Но вернёмся к новосозданному проекту. После выполнения команды pio init мы получили подробный отчёт, о результате выполнения.
- Файл platform.ini содержащий необходимую для проекта конфигурацию.
- Каталог src для исходных кодов вашего приложения.
- Каталог lib для специфичных для проекта библиотек отсутствующих в реестре библиотек PlatfromIO.
Так же видим подсказку по сборке и загрузке приложения в устройство, но пока нам собирать нечего.
Если заглянуть в файл platformio.ini , то увидим минимально необходимые настройки проекта.
Следует отметить, что система сборки позволяет работать с несколькими окружениями env , которые могут отличаться специфичными настройками для одной и той же платы, или вообще позволять произвести сборку для разных плат.
Первый код
Создадим в каталоге src/ файл Main.cpp со следующим содержимым:
Те кто уже имел дело с Arduino наверняка узнали полезнейшую вещь - мигалку светодиодом. Этакий «Hello world» в мире электроники.
И если всё было сделано правильно, то увидим много информации о процессе сборки:
Такие длинные простыни вы будете получать не каждый раз, а только при первой сборке, изменении файла platformio.ini или после выполнения команды pio run -t clean , поскольку сборщику приходится собрать объектные файлы из всех необходимых исходников.
В дальнейшем сборщик пересобирает только изменённые файлы.
Готовый к прошивке файл у нас попал в скрытую служебную директорию .pioenvs/esp12e/firmware.bin и может быть от туда без труда скопирован для дальнейшего распространения. Наличие чётко определённого места очень удобно, особенно по сравнению с Arduino IDE, где приходится играть в квест «Найди куда я собрал бинарник в этот раз».
Прошивка железа
Собранная прошивка будет лежать мёртвым грузом на винте до тех пор, пока не окажется в предназначенной ей железке.
Процесс прошивки не сложнее процесса сборки, главное не забыть подключить плату к компьютеру по USB (ну или по последовательному порту, если у вас собственная разработка без преобразователя USB->Serial).
После запуска этой команды пойдёт процесс загрузки:
На платах подобных NodeMCU как правило установлена схема сброса и перевода SoC ESP8266 в режим загрузчика и в этом случае загрузка пройдёт автоматически.
При отсутствии дополнительных схем, требуется перед тем как дать команду загрузки перевести ESP8266 в режим загрузчика.
Для этого следует подтянуть выход GPIO0 к земле через резистор 1-10 Ком, и произвести сброс контроллера кратковременной подачей низкого уровня на вход RESET .
После этого модуль готов к прошивке.
Если же у вас голый модуль ESP12E или ему подобный, то помните, что для нормальной работы модуля вывод CH_PD должен быть подтянут к питанию через резистор 1-10 Ком, вывод GPIO15 должен быть подтянут к земле через резистор 1-10 Ком.
Скорость загрузки
Поскольку прошивка для ESP8266 даже в таком минимальном варианте получается достаточно тяжелой загрузка длится долго. В моём случае почти 26 секунд.
Для явного указания скорости загрузки добавьте в platform.ini в конец секции [env:esp12e] строчку:
После этого соберите приложение заново pio run и прошейте устройство pio run -t upload .
У меня после этого время загрузки сократилось до 12.8 секунд. Это меньше чем в 2 раза, а ожидали 8!
Но следует иметь в виду, что на скорость загрузки влияет не только скорость канала обмена данными но и скорость записи во Flash-память устройства, устойчивать канала связи - на больших скоростях могут быть потери пакетов или сам микроконтроллер не будет успевать обрабатывать всё свалившееся на него счастье.
На самом деле, я получил оптимальную скорость загрузки на скорости канала в 460800 baud .
Скорость | Время |
---|---|
921600 | 12.8 |
460800 | 10.5 |
230400 | 15.8 |
115200 | 25 |
В общем сложно дать единый рецепт по выбору скорости. В некоторых случаях (длинные провода например), может потребовать ещё больше снизить скорость.
Порт загрузчика
Загрузчик как правило способен самостоятельно определить порт, на котором находится ваше устройство, но если устройств несколько, то он будет использовать первое же найденное, или вообще будет пытаться связаться с чем-то другим.
Для того, что бы помочь ему с выбором, можно указать порт явно прописав в platformio.ini какое устройство необходимо.
Или указать диапазон возможных имён последовательных портов, на которых следует искать ESP8266.
Для пользователей Windows:
Подробнее о параметрах загрузчика можно прочитать в официальной документации.
В этой статье приведены пошаговые инструкции по установке и настройке расширения PlatformIO в Visual Studio Code для дальнейшего программирования Arduino, ESP32, ESP8266, Maixduino, Raspberry Pi и не только.
Visual Studio Code
VS Code также имеет множество доступных расширений, которые улучшают его функциональные возможности. Одним из таких расширений является PlatformIO.
Установка Visual Studio Code
Загрузить VS Code можно бесплатно с официального сайта, Здесь вы можете выбрать, на какую операционную систему вы хотите установить VS Code.
Как только IDE будет загружена, дважды щелкните на exe-файл для установки. При нажатии на исполняемый файл должно отобразиться следующее лицензионное соглашение:
Выберите I accept the agreement и нажмите Next.
Здесь можно сохранить значения по умолчанию. Нажмите Next.
При первом запуске вы увидите такое окно (см. ниже):
PlatformIO
PlatformIO может использоваться с VS Code для предоставления мощного набора инструментов, которые помогут вам в разработке на Ардуино. Из этого материала вы узнаете как установить расширение PlatformIO для дальнейшей разработки под платы Arduino.
Установка PlatformIO в VS Code
Чтобы установить расширение PlatformIO, нужно Открыть средство просмотра расширений, нажав Ctrl+Shift+X и набрать PlatformIO в строке поиска, выбрать первый найденный результат и установить, нажав кнопку Install, как показано на рисунке ниже.
Установка PlatformIO может занять немного времени. Во время установки PlatformIO может запросить установку Python (появится уведомление в нижнем правом углу, см. ниже).
Нажмите Install Python, чтобы начать установку Python.
Нажмите Open, чтобы открыть ссылку с инструкциями по установке Python. Пожалуйста, выберите Add Python to Path (см. ниже), в противном случае команда python будет недоступна.
Вернитесь в окно Visual Studio Code и нажмите кнопку Try again (см. ниже).
После завершения установки появится уведомление в нижнем правом углу (см. ниже), что нужно перезагрузить IDE для завершения процесса.
После перезагрузки значок PlatformIO (см. ниже) должен появиться в левом поле Visual Studio Code.
Установка Arduino Framework
Следующим шагом является загрузка платформы Atmel AVR (Arduino), Espressif 32 (ESP32) и т.п. в Visual Studio Code. Нажмите на значок PlatformIO в левом поле, чтобы открыть меню Quick Access (или нажмите на домик в самом низу). Выберите Platforms, а затем Embedded, как показано на рисунке ниже.
При нажатии на Atmel AVR откроется страница установки (см. ниже), нажмите кнопку Install для продолжения.
Установка библиотек
Создание и загрузка примера Blink
PlatformIO может автоматически определять, на каком порту установлен ваш Arduino Uno. Чтобы всё работало, нам необходимо подключить нашу плату к USB-порту до запуска Visual Studio Code.
Вы можете получить доступ к стандартному набору примеров Arduino, выбрав PIO Home в меню быстрого доступа платформы (см. ниже), а затем выбрав Project Examples.
После чего открывается выпадающий список, в котором перечислены все примеры. Выберите arduino-blink и нажмите Import.
Visual Studio Code теперь должен открыть проект blink. Структура папок отличается от структуры стандартного проекта Arduino, где расширение файлов .ino. Основной файл исходного кода называется blink.cpp и хранится в папке src (см. ниже).
Выбрав Devices в меню быстрого доступа платформы (см. ниже), вы сможете найти список COM-портов.
Как правило, больше начинающих работать с платформой Arduino работают с ней с помощью среды Arduino IDE, которая имеет простой интерфейс пользователя, бесплатна в использовании и имеет огромное устоявшееся сообщество. С помощью Arduino IDE можно писать код программы, компилировать его, а также загружать его во все известные платы Arduino. Arduino IDE основана на Java и может работать на популярных сегодня операционных системах: Windows, OS X и Linux. Но, будучи удобной для начинающих разработчиков, она не содержит некоторых функций, которые достаточно сильно востребованы среди опытных разработчиков. Вследствие этого для работы с платформой Arduino кроме Arduino IDE разработано достаточно много интегрированных сред разработки, одной из самой популярных среди них является PlatformIO. В этой статье мы рассмотрим установку этой платформы и программирование с ее помощью плат Arduino, а также плат STM32.
Также, если вас по каким то причинам не устраивает Arduino IDE, можете попробовать Arduino Web Editor – официальный онлайн-инструмент для работы с платами Arduino, обладающий рядом преимуществ по сравнению с Arduino IDE.
Что такое PlatformIO?
Почему стоит перейти с Arduino IDE на PlatformIO
В сети выделяют следующие недостатки Arduino IDE:
- отсутствие кастомизации (темы, подсветка синтаксиса);
- нет автодополнения кода (как в современных IDE);
- не очень удобная организация проектов;
- нет поддержки каких-либо плагинов;
- неудобный менеджер библиотек;
- не очень вразумительный builder, с которым достаточно трудно искать ошибки в программе;
- другие мелкие баги, которые чаще всего встречаются при работе с Arduino IDE с операционной системе Windows.
Именно эти недостатки и вынуждают ряд пользователей переходить с Arduino IDE на PlatformIO или другие аналогичные платформы.
Преимущества PlatformIO
PlatformIO позволяет производить быструю разработку приложений и, подобно C/C++, поддерживает быстрое завершение кода и интеллектуальный код линтера, недоступные в Arduino IDE. В дополнение к этому PlatformIO предлагает полную поддержку тем с темными и светлыми цветами, умную навигацию по коду и форматирование кода. Ядро платформы включает мультиплатформенный builder, менеджер библиотек, монитор последовательного порта и многое другое.
Единый (унифицированный) отладчик поддерживает множество архитектур и платформ разработки. В отладчике есть такие функции как условные точки останова, выражения и точки наблюдения (Watchpoints), диспетчер памяти, “горячий” рестарт текущей сессии отладки. Ядро PlatformIO написано на Python 2.7 и работает на Windows, macOS, Linux, FreeBSD и даже на некоторых платформах с ARM-архитектурой: Raspberry Pi, BeagleBone, CubieBoard, Samsung ARTIK и т.п. Также в составе PlatformIO есть проводник файлов (File Explorer), который помогает в удобной организации хранения ваших проектов.
Установка PlatformIO для работы с Arduino Uno
Как уже указывалось, ядро PlatformIO написано на Python 2.7, поэтому PlatformIO не поддерживает Python 3. В связи с этим рекомендуется установить Python версии 2 и затем переходить к установке PlatformIO IDE. PlatformIO представляет собой интегрированную среду разработки (IDE) и содержит в себе еще дополнительные инструменты (плагины, расширения) для работы с другими популярными IDE.
Можно произвести установку PlatformIO с такими текстовыми редакторами как Atom и Visual Studio Code. Нужно выбрать один из них. Если вы хотите больше кастомизации, всяких крутых плагинов и экспериментов – выбирайте Atom, если же вам нужно просто красивую, удобную IDE с отличным автодополнением кода из коробки, выбирайте Visual Studio Code. В этой статье мы выбрали Visual Studio Code.
Перейдем к установке PlatformIO для последующей разработки в ней кода для Arduino Uno.
Вначале установите Visual Studio Code с ее официального сайта. Ее установка ничем не отличается от установки обычных программ для Windows, поэтому здесь процесс ее установки мы рассматривать не будем.
Когда Visual Studio Code будет установлена она будет выглядеть примерно следующим образом:
Запустите в этом окне поиск “PlatformIO”, в результате этого вы увидите иконку PlatformIO с именем и описанием. Просто кликните на ней и установите PlatformIO. При этом может потребоваться некоторое время для установки наборов инструментов и других дополнений.
Когда процесс установки будет завершен, вы увидите интерфейс, показанный на следующем рисунке. Интерфейс включает все необходимые компоненты: New Project (новый проект), Import Arduino Project (импортировать Arduino проект), Open Project (открыть проект), Project Examples (примеры проектов) и т.д. После установки PlatformIO рекомендуется перезапустить Visual Studio Code Editor.
После этого PlatformIO будет готова к использованию. В ней мы запустим простую программу мигания светодиодом и загрузим ее в плату Arduino Uno.
Программирование Arduino Uno с помощью PlatformIO
Мы рассмотрим программирование платы Arduino Uno с помощью PlatformIO на примере простой программы мигания светодиодом. Для этого выполните следующую последовательность шагов.
Выберите в PlatformIO вкладку “New Project” (новый проект) из меню быстрого доступа.
Дайте имя проекту (в нашем случае мы назвали его ‘Blink’). Выберите тип платы, с которой будете работать – в нашем случае это Arduino Uno. Поскольку мы собираемся работать во фреймворке Arduino, то в поле фреймворк (framework) необходимо выбрать Arduino. После заполнения всех полей нажмите Finish.
Подождите некоторое время пока ваш новый проект создастся и “подтянет” к себе необходимые ресурсы и расширения.
Чтобы открыть созданный проект пролистайте вниз Home Menu (главное меню) PlatformIO и вы увидите список всех созданных проектов. В правой стороне напротив интересующего вас проекта нажмите ссылку ‘Open’ чтобы перейти к редактированию проекта.
Когда проект будет открыт первоначально он будет отображаться как скрытый, но не беспокойтесь, PlatformIO имеет весьма продвинутые опции для работы с файлами, поэтому вы без труда найдете все файлы проекта. Просто идите в левый верхний угол и нажмите там ‘Untitled (Workplace)’. Когда вы нажмете эту ссылку, все файлы проекта появятся в выпадающем меню. Чтобы открыть окно редактирования кода, выберите в выпавшем списке ‘src’ и затем ‘main.cpp’. Окно редактора кода появится в главном экране (Home Screen) с открытием новой вкладки (Tab). После этого вы сможете писать/редактировать код вашей программы.
Следующим шагом будет компиляция и загрузка кода программы в плату Arduino Uno. PlatformIO изначально выбирает тот COM порт, который стоит в системе по умолчанию. Но если это не тот COM порт, который вам нужен, то его можно изменить – это будет объяснено далее в статье. PlatformIO имеет такие функции для работы с кодом программы как Build, Upload, Upload to Remote Device (загрузка в удаленное устройство), Clean, Test, Run Task, Serial Monitor, New Terminal. Все эти функции доступны в левом нижнем углу редактора как показано на следующем рисунке. Когда вы будете наводить мышкой на иконки этих функций, то будет показываться их описание.
Чтобы выбрать или изменить COM порт, перейдите на главный экран (Home Screen) PlatformIO, выберите там пункт меню Devices (устройства) как показано на следующем рисунке. После этого вы увидите все доступные (подключенные) устройства. Выберите нужный вам COM порт.
Программирование STM32 с помощью PlatformIO
Для поклонников микроконтроллеров, построенных на основе платформы STM32, мы в данной статье рассмотрим их программирование с помощью PlatformIO. Процесс программирования STM32 будет практически таким же, как и рассмотренная процедура программирования Arduino UNO с помощью PlatformIO. Различие будет состоять в том, что необходимо будет выбрать соответствующую плату STM32 когда будете создавать новый проект для STM32. Достоинством PlatformIO в данном случае является то, что при работе в ней нет необходимости отдельно скачивать какие либо внешние пакеты для работы с любой платой, PlatformIO скачивает все необходимые пакеты автоматически, поэтому нам необходимо просто выбрать плату и затем можно переходить к редактору. Мы будем использовать внешний JLink/ JTAG/ STLink/ Serial Programmer чтобы загружать скетч в STM32. Также следует отметить, что STM32 можно программировать и с помощью Arduino IDE.
Чтобы произвести программирование STM32 с помощью PlatformIO выполните следующую последовательность шагов.
Повторное создание проекта для работы с STM32 произойдет гораздо быстрее потому что все необходимые пакеты будут уже загружены при создании первого проекта. Теперь перейдите в пункт меню Untitled(Workspace) -> src -> main.cpp как мы это уже рассматривали ранее в статье при работе с платой Arduino.
Следующим шагом идет выбор программатора – он весьма важный. Для программирования плат STM32 могут быть использованы такие программаторы как JTAG, STLink, JLink, Serial и т.п. Все они рабочие, но вам необходимо соответствующим образом сконфигурировать страницу конфигурации ‘platformio.ini’
В этом проекте мы используем программатор Serial Programmer CP210x USB to UART Bridge. Подсоедините этот последовательный программатор к плате STM32 (как показано в следующей таблице) и к вашему компьютеру.
USB to Serial Programmer | STM32 Board |
5V | 5V |
Gnd | Gnd |
Rx | A9 |
Tx | A10 |
После этого перейдите в менеджер проектов (project explorer), откройте в нем страницу ‘platformio.ini’ и внесите в нее изменения как показано на следующем рисунке. Протокол загрузки кода (upload_protocol) определяет какой программатор следует использовать ((STLink, JLink, Serial и т.д.). В качестве параметра upload_port следует указать используемый вами COM порт. Вы можете изменить/выбрать используемый COM порт в пункте меню ‘Devices’ на главной странице PlatformIO.
После этого перейдите в ‘main.cpp’ и напишите/измените программу мигания светодиодом. Далее загрузите код программы в плату. В случае успешной загрузки кода будут показаны параметры его загрузки. После загрузки кода вы сможете наблюдать мигание светодиода, подключенного к контакту PC13 платы STM32.
Исходный код программы (скетча)
Простая программа для мигания светодиодом. Надеюсь, она не вызовет у вас затруднений.
Зачем переходить на PlatformIO?
Преимущества
Недостатки, куда уж без них
Установка
4. Устанавливаем плагин C++ IntelliSense. В принципе этот шаг можно пропустить, PIO сам установит его в процессе, но я предпочитаю сделать это явно. Похожим образом находим и устанавливаем плагин. Следует иметь в виду, что установка плагинов в интерфейсе VSCode происходит вроде-бы мгновенно, а не деле вся работа производится в фоне. Не стоит сразу приступать к следующему шагу, следует дождаться соответствующего уведомления. Ну или просто немного подождать.
6. Пробуем выполнить первую команду. Да, именно так, не спешите создавать проект. Так мы проверим, корректно установился PIO или нет. Именно на этом этапе я потерял два дня, информации об этом очень мало. Для этого открываем терминал и набираем команду pio:
Дополнительные параметры системы
Далее добавляем найденный путь в список доступных:
Указываем путь к папке с командами PlatformIO
Не забываем сохранить изменения. Повторно проверяем команду pio в терминале. Если ответ корректный, можно приступать к настройке.
Параметры команды pio settings
Настройки по умолчанию
В результате у меня получилось так, Вы можете изменить что-то по своему вкусу. Или не трогать ничего.
Новые значения параметров
Я выбрал для себя пока две платформы: Espressif 32 и Espressif 8266. Платформа это не есть framework! Например платформа Espressif 32 включает в себя несколько фреймворков: Arduino, Espidf, Pumbaa и Simba. Framework-и устанавливать не требуется, они подгрузятся по мере необходимости. Как видите, возможностей программирования здесь гораздо больше, чем на Arduino.
На этом установку в принципе можно считать законченной, можно создавать первый проект. Или импортировать с Arduino.
Настройка проекта
Пример файла конфигурации проекта
Весь файл разделен на секции. Секция [env] (без суффиксов) отвечает за глобальные настройки для всех плат. Секция [env:плата] отвечает за настройки для конкретной платы. И таки да, один и тот же проект можно скомпилировать для самых разных плат, просто указав дополнительные секции.
Я не буду подробно описывать все параметры, их очень много. Более подробную информацию Вы можете найти в документации. Поясню лишь те, что Вы идите на рисунке.
board_build.partitions указывает на файл с разметкой flash-памяти ESP-хи. Это отдельный большой разговор, я не буду останавливаться на нем в рамках данной статьи. По умолчанию нафиг не нужен.
board_build.embed_txtfiles указывает на дополнительные файлы, которые следует подключить к проекту. В данном случае это PEM-файлы с сертификатами для TLS-соединений. Но этого мало! Для ESP-IDF придется дополнительно прописать эти же файлы в другом файле конфигурации CMakeLists.txt:
Настройка проекта ESP-IDF для плат на базе ESP32
Оказалось всё гораздо проще. В терминале VSCode нужно набрать команду: pio run -t menuconfig и подождать. Вуаля:
Настройки ESP-IDF проекта
Что здесь можно (и нужно на мой взгляд) изменить?
Возможные проблемы
Вуаля! Проблемы самоликвидировались!
Читайте также: