18,8K подписчиков

Ударим по Ардуино МайкроСофтом

906 прочитали

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.

Вышедшая версия 2.X стала более продвинутой в плане написания кода

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-2

и стала более похожа на серьезную среду разработки, но какая-то она слишком "тормознутая" и там пропала возможность устанавливать дополнительные плагины. Для меня критичным оказался плагин для работы с SPIFFS на ESP32, про который я писал тут.

У MIcrosoft есть бесплатный кросс-платформенный редактор кода Visual Studio Code (VS Code) с возможностями:

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-3
  • подсветки синтаксиса;
  • автоматического дополнения;
  • контроля версий;
  • отладки;
  • рефакторинга.

На домашнем компьютере, на котором уже стоит куча библиотек, новое ПО мне это было тестировать лень, поэтому решил протестировать пакет на виртуальной машине.

Как программировать Arduino с виртуальной машины

Вообще, начиная с Windows 8 технология технология виртуализации серверов - Hyper-V доступна в клиентской операционной системе, однако там я столкнулся проблемой проброса виртуальных COM портов. Поэтому на компьютер поставил VirtualBox

Oracle VM VirtualBox
Oracle VM VirtualBox

Описание технологии виртуализации выходит за рамки данной статьи - но если по-простому, то это компьютер, железо которого, создается из ресурсов основного ПК. (эдакий компьютер в компьютере из компьютера). Туда устанавливается операционная система и можно проводить на ней всяческие эксперименты.

Например жёсткий диск виртуальной машины - это просто файлик в папке основной машины.

Oracle VM VirtualBox виртуальный жесткий диск
Oracle VM VirtualBox виртуальный жесткий диск

Поэтому, после установки на виртуальную машину ОС, можно её выключить, и в проводнике сделать полную копию этого виртуального HDD. Поигравшись или даже убив виртуальную ОС, можно выключить VM, переименовать эту копию, и подсунуть её при следующем включении VM получив чистый уже установленный образ ОС, без необходимости ставить ОС c нуля. (есть и штатные средства но мне лень с ними разбираться).

Также можно настроить сколько будет CPU, объем оперативной памяти и все остальные параметры виртуального "компкутера" - главное тут сильно не увлекаться, иначе ваша машина на которой все это крутится, будет сильно тормозить.

Интерфейс Oracle VM VirtualBox
Интерфейс Oracle VM VirtualBox

В игры на виртуальной машине конечно не поиграешь, но для экспериментов, тестирования ПО, изучения новых ОС лучший инструмент придумать сложно.

Шаг 1. Ставим Arduino IDE версии Arduino IDE 1.8.19

Arduino IDE 1.8.19
Arduino IDE 1.8.19

Ссылка

Новая версия Arduino IDE 2.X.X не подойдет!

Шаг 2. Прокидываем на VM плату Arduino

Если у Вас не виртуальная машина, а реальная этот шаг пропускаем. Подключаем например Arduino UNO к ПК и пробрасываем на виртуалку.

Проброс COM портов на виртуальной машине
Проброс COM портов на виртуальной машине

Вуаля

Arduino UNO в диспетчере устройств на виртуальной машине
Arduino UNO в диспетчере устройств на виртуальной машине

Шаг 3. Тестируем, заливая простенький скетч

Заливаем скетч мигалку
Заливаем скетч мигалку

Виртуальная машина готова к тестированию различных адрдуиноподобных фич. Например это может быть полезно для тестирования проекта найденного в сети Интернет, но в котором используются специфичные библиотеки, а свою папку с библиотеками трогать крайне не желательно.

Шаг 4. Устанавливаем Visual Studio Code

Ссылка

Шаг 5. Русификация Visual Studio Code

Клацаем на иконку расширений и набираем в поиске "russian". Устанавливаем пакет Russian Language Pack for Visual Studio Code.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-11
Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-12

Шаг 6. Установка пакета для работы с Arduino

Клацаем на иконку расширений и набираем в поиске "arduino". Устанавливаем пакет "Arduino for Visual Studio Code" от Microsoft.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-13

Шаг 7. Устанавливаем расширение C/C++ Extension Pack

Клацаем на иконку расширений и набираем в поиске "C/C++"

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-14

Шаг 8. Прописываем путь к дистрибутиву Arduino

Для расширения "Arduino for Visual Studio Code от Microsoft" необходимо прописать путь к дистрибутиву Arduino IDE 1.8.19

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-15
Настройка Arduino for Visual Studio Code
Настройка Arduino for Visual Studio Code

Шаг 9. Тестируем

Переключаемся на проводник и добавляем папку с проектом, который мы создали в Arduino IDE

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-17
Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-18

Выбираем плату и порт

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-19

Загружаем тестовый пример в плату Arduino UNO

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-20

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

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-21

Монитор порта

В расширение встроен монитор COM порта "последовательный монитор"

Монитор порта в расширении Arduino for Visual Studio Code
Монитор порта в расширении Arduino for Visual Studio Code

эта штука по функционалу похожа на терминал Arduino IDE - тут все понятно без дополнительных комментариев.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-23

Добавляем файл с собственными функциями

Большие проекты удобно разбивать на отдельные файлы (а еще потом эти свои заготовки удобно заталкивать в другие свои проекты).

Используя проводник VS Code создаем пустой файл с расширением .h в той же папке где лежит файл скетча .ino и подключаем его с помощью директивы #include

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-24

В файле fuction.h будет одна функция increment(); которая будет возвращать глобальную переменную i объявленную в этом же файле увеличивая её значение на 1.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-25

Оно собралось и работает как нужно.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-26

Установка плат не Arduino

Добавим поддержку ESP32. Поскольку VS Code надстройка над Arduino IDE установить платы необходимо именно в Arduino IDE. Подробная инструкция есть на моем канале по ссылке:

Решил попробовать поставит последний пакет 2.0.11

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-27

Как прошить ESP32 с помощью внешнего USB-UART преобразователя

В отличии от Arduino, виртуальная машина VirtualBox переходник на CP2102, который встроен в плату ESP32 WROOM DevKit v1 видеть отказалась наотрез. Для экспериментов решил прошить ESP32 внешним USB-UART мостом на микросхеме PL2303. (CH340 на VirtualBox тоже пробрасывается без проблем).

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-28

Схема подключения Переходник USB UART - ESP32 такая:

  • 5.0V - Vin
  • TXD - RX0
  • RXD - TX0
  • GND - GND
Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-29

Для того, чтобы прошить ESP32 WROOM DevKit v1 с помощью внешнего USB-UART преобразователя необходимо:

  1. открыть монитор порта на скорости 115200;
  2. нажать и удерживать кнопку BOOT;
  3. нажать и отпустить кнопку EN;
  4. отпустить кнопку BOOT;

В терминале появится надпись, которая говорит о том, что ESP32 готова к загрузке новой прошивки:

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-30

Выполнение программы, которая была залита в ESP32 при этом будет приостановлено. Прошиваем:

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-31

Чтобы вернуть ESP32 к привычной жизни еще раз нажимаем кнопку EN. Микроконтроллер перезагружается, программа начинает выполнятся.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-32

Зачем вся эта информация?

  • если у Вас на ESP32 отломается USB разъем, платой по-прежнему можно будет пользоваться используя внешний USB-UART мост;
  • с виртуальной машины можно вполне себе настраивать и работать с реальным оборудованием. Проброс USB устройств (правда не всех) с реальной машины на виртуальную работает на отлично.

Ускорение сборки проекта

Во время сборки проекта можно увидеть следующее предупреждение:

[Warning] Output path is not specified. Unable to reuse previously compiled files. Build will be slower. See README.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-33

Для того, чтобы убрать это предупреждение и ускорить сборку проекта, необходимо в файл arduino.json

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-34

который будет создан после первой сборки проекта добавить через запятую строчку: "output": "../ArduinoOutput"

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-35

Из документации к расширению "Visual Studio Code для Arduino"

output— Выходной путь сборки Arduino. Если значение не установлено, Arduino каждый раз будет создавать новую временную папку вывода, что означает, что он не может повторно использовать промежуточный результат предыдущей сборки, что приводит к длительному времени проверки/загрузки, поэтому рекомендуется установить это поле. Arduino требует, чтобы выходной путь не находился в самой рабочей области или в ее подпапке, иначе она может работать неправильно. По умолчанию эта опция не установлена. Стоит отметить, что содержимое этого файла может быть удалено в процессе сборки, поэтому выберите (или создайте) каталог, в котором не будут храниться файлы, которые вы хотите сохранить.

Теперь проект будет собираться также быстро как это происходило бы в Arduino IDE. Папку ArduinoOutput - VS Code создаст самостоятельно.

Установка библиотек

В Интернет есть много подробных инструкций, как подружить VC Code с ардуиновскими библиотеками, но я видимо что-то делаю не правильно и у меня все заработало прямо из "коробки".

Попробуем собрать в VS Code проект с сайта: https://randomnerdtutorials.com/esp32-web-server-spiffs-spi-flash-file-system/

В среде Arduino IDE устанавливаем 2 необходимые для проекта библиотеки:

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-36

После первой компиляции проекта все собирается без каких-либо ошибок.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-37

WEB страницы этого проекта хранятся в файловой системе SPIFFS, поэтому в самой Arduino необходимо установить плагин для загрузки файлов в файловую систему.

Скачиваем файл:

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-38

Находим папку со скетчами:

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-39

Создаем папку с названием tools

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-40

Распаковываем скачанный файл, соблюдая структуру каталогов

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-41

Перезапускаем Arduino IDE и проверяем, что инструмент загрузки файлов в SPIFFS появился.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-42

В папке проекта через проводник VS Code создаем папку data и в ней 2 пустых файла index.html и style.css

Копипастим туда содержимое со страницы:
https://randomnerdtutorials.com/esp32-web-server-spiffs-spi-flash-file-system/

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-43

MS Visual Studio Code понимает практические любые языки программирования, так что писать WEB страницы в таком инструменте одно удовольствие.

Редактируем файл .ino и проверяем сборку:

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-44

Осталось отредактировать параметры для подключения к домашней сети Wi-Fi.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-45

Перед работой с Wi-Fi не забываем подавать на плату ESP32 внешнее питание (можно просто подключить зарядку от смартфона). Питание от USB здесь не катит - плата будет уходить в бесконечную перезагрузку при попытке подключиться к сети Wi-Fi.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-46

Сначала с помощью Arduino IDE загружаем в SPIFFS содержимое папки data. (открываем файл .ino)

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-47
Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-48

Потом загружаем сам скетч:

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-49

Открываем ПОСЛЕДОВАТЕЛЬНЫЙ МОНИТОР

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-50

И оно работает.

Для маленьких проектов и быстрого старта среда разработки Arduino IDE версии 1.8.X удобна, однако сложные проекты в ней делать не очень просто. Вышедшая версия 2.-51

Выводы:

Отзывы у расширения "Visual Studio Code extension for Arduino" весьма противоречивые:

https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.vscode-arduino&ssr=false#review-details
https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.vscode-arduino&ssr=false#review-details

Документацию можно посмотреть тут

При использовании ESP32\ESP8266 в качестве WEB сервера, код приходиться писать не только на С++ и Arduino Wiring, но и использовать HTML, CSS и JavaScript для создания WEB страниц которые, этот самый WEB сервер должен отдавать. Если на С++ еще худо-бедно, как то можно можно писать и в среде Arduino IDE (в версии 2.X уже даже не совсем худо-бедно), то про HTML и JavaScript среда Arduino совсем ничего не знает. При использовании Visual Studio Code ни какие дополнительные инструменты не нужны - все можно писать в одном окне (в том числе и код под Arduino), что на мой взгляд удобно.

У расширения 2 млн. установок, но в RUнете на эту тему почему-то молчок, поэтому я и написал эту коротенькую заметку.

p.s: данная статья не копипаста с какого-либо иностранного ресурса, возможно в ней есть ошибки. Попробую в этой среде сделать какой-нибудь проект с нуля, тогда уже дополню, если обнаружатся какие-либо подводные камни.

Оглавление канала ТУТ

Всем удачи!