У меня накопилось много проектов написанных в среде Arduino IDE, которые были написаны на старых версиях библиотек и ПО для поддержки ESP-шек. Все эти устройства бесперебойно работают несколько лет и переводить на новое ПО и библиотеки (в которых нередко меняются методы) мне честно говоря лениво.
Работает не трогай. С другой стороны хочется пощупать и что-то новое, а это значит придется обновлять и ПО для поддержки плат и устанавливать новые "библы". Старые разработки разумеется компилироваться перестанут - а если захочется повторить какую-нибудь свою старинную самоделку или что переписать в коде - опять ковырять папку с библиотеками и менять версии платформ!? Да и если даже просто погонять чужой код найденный в сети - возможно придется переходить на те версии ПО которые использовал автор, поделившийся своим кодом.
Сложно придумать лучшее средство для экспериментов, чем технология виртуализации. С помощью специальных программ, (гипервизоров) выделяется часть реальных ресурсов компьютера из которых можно насобирать виртуальных компьютеров и запускать на них любые ОС.
В плане применения к Ардуино-творчеству идея простая. Делаем виртуальный ПК на базе Windows, а потом размножаем его до нужных количеств.
Для старых проектов я сделаю виртуальную машину (ВМ) поставлю туда старую версию Arduino IDE и все библиотеки, которые использовал раньше. А для экспериментов можно за 10 минут из образа пустой установленной ОС сделать копию, и ставить туда что угодно.
Парочка замечаний:
Статья не предполагает подробных инструкций как ставить виндовсы и работать с гипервизором Oracle VirtualBox, а посвящена особенностям программирования из среды Arduino IDE c ВМ.
Arduino IDE это не та программа которая требует огромных вычислительных ресурсов для свой работы. Поэтому если ваш компьютер достаточно мощный, а сам гипервизор настроен правильно, гостевая ОС будет работать также шустро как и ваша ОС в которой этот самый гипервизор установлен. (тем более что запускать более одной ВМ одновременно в рамках данной задачи смысла нет ни какого, а с запуском одной ВМ справится практически любой более-менее современный ПК.
В плане использования технологии виртуализации в чисто в бытовых целях (1-2) виртуальных компа запущенных одновременно - "бутылочное горлышко" данной технологии это не мощность видеокарты, и даже не мощность процессора. Необходимо достаточно большое количество оперативной памяти и особенно важна скорость обмена данными с жестким диском.
У меня довольно старый по современным меркам процессор:
А вот с оперативкой все хорошо:
2 "планки" по 16Гб (двухканальный режим работы)
а вместо традиционных жестких дисков 2 твердотельных накопителя (Solid-State Drive, SSD) 477Гб и 224Гб. Объемы не большие, но все важные и редко используемые данные, я архивирую на обычном 2-х терабайтном жестком диске. В повседневной жизни предпочитаю, чтобы под столом ничего не шуршало и не тормозило работу.
2-й SSD "отдан на растерзание" гипервизору. В такой конфигурации установка ОС Win 10 на виртуальный комп занимает примерно 15 минут. Все кто считают, что виртуальная машина установленная на домашний ПК это обязательно "томознуто и глючно" - попробуйте поставить 10-ку за такое время на обычный компьютер или ноутбук.
В принципе 2-й физический жесткий диск не обязателен - работать будет и на том же HDD(SSD) на котором установлена ОС, но уже не так шустро, так как и винда и гипервизор и сама ВМ на которой будет запущена гостевая ОС будут обращаться к одному и тому же физическому накопителю.
В моем варианте конфигурации Windows не использует 2-й диск в своих корыстных целях совсем.
Инструкция для желающих попробовать:
Переходим на сайт:
https://www.virtualbox.org/wiki/Downloads
Скачиваем программу Oracle VirtualBox. Запускаем инсталлятор. Клацаем много раз Next. Запускаем программу.
Первым делом идем в настройки и говорим программе, что все конфиги и образы виртуальных машин необходимо сохранять на отдельном накопителе. (если у вас один физический накопитель и один раздел - тут в принципе можно ничего не трогать)
Создаем первую виртуальную машину (там будет находится чистый Windows)
Для экспериментов с Arduino я буду устанавливать образ Windows 10 22H2 который стал последним крупным обновлением, после которого Windows 10 больше не будет получать никаких новых функций, а только ежемесячные обновления безопасности. Установочный образ можно скачать на сайте Microsoft.
Настраиваем оборудование. Понятно, что чем больше ресурсов мы выделим гостевой ОС, тем быстрее она будет работать - но злоупотреблять не стоит, так может начать тормозить сама программа виртуализации. (остаемся в зеленой зоне).
Физической памяти у меня теперь 32Гб - поэтому выделю 8Гб, а вот процессор у меня старенький поэтому выделю 1ЦП.
Осталось создать виртуальный жесткий диск. Поскольку на виртуальном компьютере будут стоять только Windows и Arduino IDE с библиотеками + ПО для поддержки различных платформ - 80Гб будет достаточно. Диск будет не фиксированного размера и по факту на физическом HDD папка с файлами будет иметь размер около 30Гб.
Нажимаем кнопку "Готово"
Перед тем как ставить Win10 необходимо вытащить виртуальный патч-корд из виртуальной сетевой карточки (иначе на этапе установки будут настойчивые предложения создать учетную запись Microsoft - а нам оно зачем!?)
Запускаем виртуальную машину и устанавливаем Windows как на обычный ПК.
Установка Windows 10 PRO около 15 минут. Дистрибутив "пустой винды" занимает 18.1Гб на виртуальном жестком диске.
На реальном ПК с которого это все запущено съеденное место под эту ВМ составляет всего 10,2Гб
Ресурсов для нормальной работы ВМ более чем достаточно:
Отключаем Контроль учетных записей (UAC) чтобы не отвечать на дурацкие вопросы. (на машине для опытов правила информационной безопасности можно особо не соблюдать - восстановить её работоспособность легко)
И первым делом после установки в "виртуальную подставку для кофе" закидываем CD-ROM с дополнениями для гостевой ОС и устанавливаем их.
Перезапускаемся:
Подключаем виртуальный кабель к сети.
Почему-то не захотела Windows сразу выходить в Интернет. Пришлось передернуть Тип NAT на "Не подключен" и обратно на "NAT".
Устанавливаем все последние доступные обновления:
Пока ставятся - удаляем ненужный One Drive
Для удобства работы подключаем буфер обмена и разрешаем передачу файлов между ВМ и компьютером.
Итоговый размер после обновлений пустой ОС Windows 25.7 ГБ
ВМ занимает на диске: 18.1 ГБ
Выключаем ВМ и создаем её копию.
На создание нового виртуального компьютера с предустановленной ОС потребовалась всего 1 минута.
Запускаемся....
Установка Arduino IDE и настройка "проброса" Arduino платформ на ВМ
Данных из сети Интернет придется скачивать много, поэтому сетевой интерфейс лучше переключить на другой режим "Сетевой мост".
В этом режиме ВМ возьмет IP непосредственно с домашнего маршрутизатора и подключится как отдельный компьютер в домашней сети.
(если надумаете запустить в таком режиме несколько ВМ - не забудьте присвоить уникальные сетевые имена "Имя компьютера")
Устанавливаем Arduino IDE версии 2.Х
https://www.arduino.cc/en/software
Arduino платформы имеющиеся у меня в наличии прошиваются через USB-UART преобразователи на базе микросхем CH340 или CP210X.
ВМ в Oracle VirtualBox необходимо настроить таким образом, чтобы именно эти устройства пробрасывались в гостевую ОС при подключении к ПК. Если использовать для этих целей всегда один и тот-же USB порт - можно сделать так чтобы устройства подключенные с этого конкретного порта попадали на VM, а при подключении в другие порты попадали на ПК.
Начнем с "проброски" Nano на CH340 (Китайский клон Arduino Nano). Подключаем Nano к компьютеру и заходим в настройки ВМ.
Добавляем устройство в список:
Если теперь "передернуть" плату - то она попадет сразу в гостевую ОС
А если включить в другой USB порт - то просто на компьютер.
Аналогично пробрасываем CP210X
Устанавливаем драйвер и собственно усе.
У нас есть виртуальный компьютер с установленной Windows, средой Arduino IDE 2.X и драйверами устройств для прошивки плат. Эта папка "весит" чуть побольше - около 25Гб
Теперь можно эту ВМ клонировать и ставить определенный набор библиотек и версий ПО для поддержки различных плат.
В ближайших планах у меня протестировать несколько примеров кода из сети Интернет для платформы ESP32-WROVER, а они были написаны под версию поддержки плат 2.0.Х.
Мои старые проекты для ESP32-WROOM компилируются только под версией 1.0.Х. и используют несколько старинных библиотек несовместимых с новыми версиями.
Поэтому на своем компьютере я ничего трогать не буду (пусть остается старая версия Arduino IDE (Arduino IDE 1.8.19), а тестовую площадку разверну на ВМ.
Копи-пасте образ:
Ставим поддержку плат ESP32 (той версии на которую ссылался автор кода)
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Пробуем загрузить "мигалку" (пользовательского светодиода на этой плате нет - я использую внешний светодиод со встроенным резистором)
Оно откомпилировалось, прошилось и работает.
Теперь можно покидать библиотеки предоставленные автором кода и поэкспериментировать с другими примерами для этой платформы, не опасаясь что свои проекты "собираться" перестанут. Потребуется другая версия для платформы - можно быстренько развернуть еще одну ВМ ну а если все "заглючит" быстренько поставить все с нуля на уже предустановленную копию Windows.
В модуле ESP32-WROVER-B есть встроенная SPI-RAM память и у меня есть одна идея где бы её можно было задействовать. - Но это уже совсем другая история....
Оглавление канала тут
Всем удачи!