
Почему я до сих пор не умею пользоваться Ардуино?
Под моими видео с каким-либо устройством иногда спрашивают в комментариях «что за ардуино ты тут использовал?». Я отвечаю, что тут плата, которую я сам сделал и запрограммировал её без Ардуино. И почему-то не все мне верят😁
Я пробовал что-то сделать в Ардуино, но сразу же столкнулся с непониманием, как там добавить в проект библиотеки, где изменить настройки компиляции, как получить файл прошивки и листинга ассемблера, где лежат системные библиотеки и какие они есть, как создавать свои библиотеки и как их подключать к проекту. Оказалось, там многое скрыто от пользователей, а библиотеки надо загружать из интернета по ссылкам, которые непонятно где брать. Что-то делается автоматически и непонятно как. Кроме того, библиотеки могут измениться и после переустановки Ардуино твой проект из-за этого может перестать компилироваться, а ты будешь долго думать, что же произошло.
Многие библиотеки настолько избыточны, что они увеличивают размер прошивки на 20-100%, а это плохо для маленьких устройств. Всё это сделано для того, чтобы пользователю не нужно было разбираться даже с относительно простыми вещами. Нужна ли простота, которая совершенно не экономит ресурсы?:) Наверное, для новичков это нормально, но мне как-то совсем не нравится.
Сейчас я создаю прошивки для микроконтроллеров в более профессиональной STM32Cube, где можно создать проект, в одной папке с которым будут все исходные коды, файл конфигурации для компилятора и всё остальное, что необходимо для проекта. Все ошибки при компиляции явно указывают на файл, номер строчки и позицию в строчке, причём можно кликнуть и перейти. В настройках компилятора я могу указать, какие системные библиотеки задействовать и добавлять ли отладочные функции.
Я могу видеть и редактировать весь исходный код всех функций, которые есть в моей программе, даже если это чужие скаченные библиотеки. И это очень важно для оптимизации. Также можно получить прошивку в нужном формате: BIN, HEX или ELF, а также листинг в ассемблерном коде. Ну и прошивку я загружаю программатором, поэтому мне не нужен ардуиновский загрузчик, который иногда занимает место в памяти. И есть возможность нормальной отладки кода, то есть, я могу видеть, что происходит внутри микроконтроллера при выполнении программы.
Короче, после нормальной среды разработки этот Ардуино выглядит каким-то неправильным. Вроде он должен учить новичков, но учит он явно не тому, что в итоге нужно будет при профессиональной разработке. Он формирует совсем другое представление о том, как делать код: вместо выбора подходящей схемы и построения оптимизированного кода под свою задачу, он предлагает набирать стандартные программные и аппаратные «кирпичики» и делать из них свой проект. Чаще всего выходит очень избыточная схема на проводах, работающая на медленном и глючном коде.
Сейчас уже понятно, что реальная цель Ардуино вовсе не в обучении, а в том, чтобы продавать фирменные модули и зарабатывать на любителях электроники:) И тот факт, что Ардуино была куплена компанией Qualcomm, подтверждает это. Ведь Qualcomm как раз делает крутые процессоры и она явно собирается их продавать огромному сообществу Ардуино.
Всем новичкам я рекомендую не зацикливаться на Ардуино, а понемногу осваивать более профессиональный путь разработки софта через среды разработки вроде STM32Cube, Espressif IDE (для ESP32), Microchip Studio (для AVR), MounRiver Studio (для RiscV) и другие.
Все они основаны на одних и тех же механиках, при этом у разработчика есть полный контроль над тем, что он делает и получает. А самое интересное, что они все используют те же компиляторы, что и сам Ардуино, только без его дополнительных программных «обвесов». И бесплатных уроков полно для всех этих сред разработки, поэтому научиться вполне реально самостоятельно, было бы желание. Сейчас даже нейросеть Алиса вполне может многому научить:)