Arduino экспорт бинарного файла: Как прошить HEX-файлы в Arduino IDE?

Содержание

Как прошить HEX-файлы в Arduino IDE?

Как загрузить Hex-файл в Arduino IDE, что это такое и как с ним работать — говорим сегодня в новой информационной статье. Тема выбрана не случайно, многие пользователи интересуются программным обеспечением на более «продвинутом2 уровне. При этом конечно же не всем хочется бегать за помощью к специалистам, листать многочисленные форумы и т.д. но выход есть – наша инструкция.

Прежде чем начать обсуждение по сути, небольшое отступление с пояснениями, что такое Hex-прошивка. Рассказываем: речь идет о скомпилированном файле, который загружается в плату Ардуино, но не является исходным кодом, как скетч. Иными словами, это простой способ распространения программ для изучаемой нами среды. Такие файлы часто имеют расширение *.hex – отсюда и название. Они просты в использовании, не требуют скачивания дополнительных библиотек, легко переносятся на другие девайсы.

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

Как же получить hex-файл для создания собственного проекта либо скетча? 

  • Для начала откройте нужный вам скетч в среде разработки IDE. 
  • Выберите в меню «Скетч» команду «Экспорт бинарного файла».

  • Дождитесь окончания компиляции — в папке со скетчами появятся 2 или больше hex-файла:
Поговорим о том, как прошить Hex-файлы в Arduino IDE. Процедура не сложная — подключаем плату (Uno, Nano, Pro Mini) к USB-порту ПК. Нам необходимо узнать номер порта. Запускаем IDE, открываем меню Инструменты – узнаем COM. В дальнейшем мы его применим.

Для прошивки используются специализированные утилиты-загрузчики – в нашем случае — AVR Downloader-Uploader. Выполняем поэтапно шаги:

  1. Создаем папку под названием avrdude. 
  2. Копируем в нее следующие файлы: avrdude.exe и libusb0.dll из C:\Program Files (x86)\Arduino\hardware\tools\avr\bin и avrdude.conf из C:\Program Files (x86)\Arduino\hardware\tools\avr\etc 
  3. Запускаем консоль cmd, переходим в папку с файлами, вводим: 
avrdude -v -patmega328p -c arduino -P com10 -b 57600 -D -U flash:w:"girlanda.hex":i
Готово!

Скорость выбираете согласно типу плат (Уно, Нано – можно 115200, для других, особенно китайских моделей – 57600, тут нужно экспериментировать). 

Среди других приложений, которые советуют использовать, можем назвать: GC-Uploader (автоматическая заливка ПО), SinaProg (более профессиональный софт) и XLoader. Выбирайте оптимальный для себя вариант!

Где находятся файлы hex, скомпилированные Arduino?



Где Arduino IDE сохраняет двоичные файлы на Mac OS X?

arduino
Поделиться Источник IAmNaN     23 июля 2012 в 07:04

7 ответов


  • Arduino: как отладить файл hex в AVR Studio

    При компиляции эскиза Arduino создается файл .hex (хранится во временной папке). Когда я открываю этот файл в AVR Studio 4.18, он пытается начать работу в том месте, где нет кода. Что я должен сделать,чтобы иметь возможность отлаживать эти файлы Arduino hex в симуляторе AVR Studio?

  • Где находятся скомпилированные файлы JSP Java (*__jsp.java)?

    Я получаю javax.servlet.jsp.JspException в одном из файлов jsp, которые мой сайт пытается визуализировать ( survey.jsp ). однако стек trace не дает мне конкретную строку в jsp, где он терпит неудачу, а скорее номер строки, где он терпит неудачу в ( survey_jsp.java:787 ), который, кажется, является…



51

В программном обеспечении Arduino: перейдите в Файл -> Настройки , а затем выберите Показать подробный вывод во время -> компиляция .

Наконец, когда вы компилируете, программа покажет вам много данных. В последних строках вы найдете путь

1 к файлу .hex .


1 Каждый раз, когда путь меняется!

Поделиться uDalillu     25 июля 2012 в 16:25



32

Arduino 1.6.5 имеет новую команду: в меню Sketch выберите Export compiled Binary , затем Show Sketch Folder . Вот оно.

Поделиться Dirk     25 сентября 2015 в 12:40



6

Arduino IDE использует команду mktemp для создания временного каталога на Mac и Linux. Однако на Mac по умолчанию $TMPDIR env var не является /tmp/, как на Linux. На Mac он находится под /var/folders и генерируется случайным образом на boot. Это немного усложняет ситуацию, но вот приемы, которые вы можете добавить в свой инструментарий (в виде псевдонимов, функций, скриптов shell и т. Д.), Чтобы помочь вам найти то, что вам нужно.

Чтобы найти файлы hex

find $TMPDIR -name \*.hex -exec ls -lrt {} \; #<-- you need that backslash before and space after the semicolon

Чтобы найти каталоги сборки

ls -ldrt $TMPDIR/build*

NOTE: Флаги ls r и t приводят к тому, что список «reverse» сортируется по «time» соответственно. Это означает, что самый новый будет на дне.

Поделиться Bruno Bronosky     20 октября 2014 в 14:33



1

Что сказал UDalillu. Трюк также работает на Windows. На XP он оказался в C:\Documents и Settings\Your_User_Name\Local Settings\Temp\buildxxxxx\ (номер xxx меняется для каждой сборки, выберите самую последнюю).

Поделиться CuriousMarc     26 декабря 2014 в 02:01



0

arduino веб-страница http://arduino.cc/en/Hacking/BuildProcess описана

Во время «Verify» файл .hex записывается в /tmp (на Mac и Linux) или \Documents и Settings\\Local Settings\Temp (на Windows)

Я использую 64-битную версию fedora19, и когда я проверяю свой /tmp, созданный каталог сборки равен /tmp/build8102….tmp/

Поделиться adesst     17 января 2014 в 03:36



-1

Я сделал простой учебник здесь с изображениями

Поделиться vivek     10 января 2017 в 17:26


Поделиться Albert     11 февраля 2018 в 19:53


Похожие вопросы:


Загрузчик Arduino Uno Rev3

Я хочу загрузить загрузчик arduino uno Rev3 boot на свой чип 328P. Я использую USB ASP и Extreme Burner. Я посмотрел на папку установки arduino, и там есть несколько файлов Hex, доступных в разделе…


RGB для Hex в Arduino эскизы

У меня есть функция, которая принимает от 24 бит до 12 бит hex и печатает значение цвета на LCD. Если пользователь вводит значения RGB, как я могу преобразовать RGB в одну 24-битную строку hex? Я…


Находятся ли динамически скомпилированные сборки для файлов .ASPX в памяти сервера?

Я читал, что динамически скомпилированные сборки и другие ресурсы для .aspx страниц хранятся в: C:\WINDOWS\Microsoft.NET\Framework64\[VERSION]\Temporary ASP.NET Files or…


Arduino: как отладить файл hex в AVR Studio

При компиляции эскиза Arduino создается файл .hex (хранится во временной папке). Когда я открываю этот файл в AVR Studio 4.18, он пытается начать работу в том месте, где нет кода. Что я должен…


Где находятся скомпилированные файлы JSP Java (*__jsp.java)?

Я получаю javax.servlet.jsp.JspException в одном из файлов jsp, которые мой сайт пытается визуализировать ( survey.jsp ). однако стек trace не дает мне конкретную строку в jsp, где он терпит…


Где находятся файлы gem?

Где находятся файлы gem ? Я новичок в rails и пытаюсь понять, как работает вся функциональность gem. Мой вопрос заключается в том, как я могу следить за установкой gem, чтобы подтвердить установку…


Как декомпилировать файл .hex в C++ для Arduino?

У меня есть файл hex, который должен быть перенесен на чип Atmel , работающий на устройстве Arduino. Есть определенные аспекты этого файла, которые я хотел бы изменить, прежде чем поместить его на…


Загрузка файла Arduino hex с помощью avrdude

Мне нужно использовать avrdude из A terminal, чтобы загрузить скомпилированный эскиз Arduino (файл .hex) в мой Arduino Pro Mini 5V. Я программирую Pro Mini board с FTDI 5V. Когда я подключаю плату к…


Где находятся скомпилированные файлы typescript в проекте Angular 2?

Я только начал изучать Angular 2. В учебниках, которым я следую, упоминается, что все скомпилированные файлы попадают в папку dist . Под скомпилированными файлами он имел в виду файлы typescript,…


Где PyCharm хранит скомпилированные файлы?

Я новичок в PyCharm/Python, и не могу понять, где IDE хранит скомпилированные файлы python *.pyc. Исходя из мира IntelliJ, странно, что я не вижу никаких вариантов меню для повторного построения…

Всем привет! На этот раз представляю Вам последнюю статью из трилогии посвященной прошивке 3Д принтеров. Как вы помните, в предыдущих статьях мы рассматривали варианты прошивки принтера с помощью Arduino IDE и исходного кода прошивки, а так же с помощью слайсера Cura и скомпилированного образа прошивки. Вполне логичным продолжением этой истории будет рассказ о том, как создать этот самый файл с образом прошивки (hex файл). Об этом и поговорим.

Прежде чем мы продолжим, предлагаю Вашему вниманию ссылки на предыдущие статьи:

Зачем же нужен скомпилированный вариант прошивки? На самом деле, в таком варианте ее удобнее хранить, передавать и прошивать. Вам не нужно ставить и настраивать не всегда стабильно работающую Arduino IDE, искать необходимые библиотеки. кроме того, в таком выде вы точно не отредактируете файл и точно будете знать что в нем содержится. Хранить такие файлы тоже удобно. Обозвал понятно и готово. С исходниками все сложнее. Да и в конце концов, прошивать из файла образа бастрее и ничего лишнего не требуется.

Кстати, данная статья будет полезна не только владельцам 3Д принтеров, но и разработчикам различных программ для различных микроконтроллеров. Это же очень удобно. Разработал схему, разработал прошивку. Все отладил и проверил. Платы заказал, прошивку собрал и ты уже уверен, что не ошибешься при изготовлении устройства. Да и при желании таким образом можно защитить код от кривых ручек чайника 🙂

Но что-то мы удалились от темы. Давайте разберемся, как же создать этот самый hex файл.

Для этого нам понадобится любой скетч (хоть простенький Blynk, хоть сам Marlin) и среда Arduino IDE со всеми необходимыми библиотеками.

Если в общих чартах рассмотреть процесс прошивки с помощью Arduino IDE, то можно выделить следующие этапы:

  1. Мы нажимаем кнопку Загрузка
  2. Arduino IDE проверяет скетч
  3. Arduino IDE Компилирует скетч в соответствии с заданными параметрами (с использованием указанных библиотек и с учетом конфигурации платы, которую вы выбрали)
  4. Arduino IDE Указанным способом загружает скомпилированный скетч в микроконтроллер
  5. Arduino IDE при наличии возможности перезагружает микроконтроллер

Укрупненно процесс работает именно так. Как видно, на одном из этапов Arduino IDE осуществляет компиляцию скетча. При этом среда размещает файл во временном каталоге, а потом записывает в микроконтроллер.

При желании, можно отловит этот файлик и забрать себе, однако это не наш метод, т.к. есть пункт по проще.

Рассмотрим это на примере прошивки для 3Д принтера Anycubic 4max.

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

Среда Arduino IDE с необходимыми библиотеками (подробнее об этом можно прочесть в статье “Устанавливаем прошивку Marlin на 3D принтер с помощью Arduino IDE”

Пускай, корневая папка с исходниками прошивки marlin расположена по пути C:\TEMP\TEST\MARLIN_1.1.9_4MAX_RU\anycubic-4max

Заходим в указанный каталог и двойным кликом открываем файл anycubic-4max.ino

В процессе открытия файла автоматически запустится среда и отобразится содержимое файла anycubic-4max.ino

Теперь необходимо выбрать плату, для которой будет компилироваться прошивка, в моем случае это “Arduino / Genuino Mega or Mega 2560

Необходимо выбрать микроконтроллер (процессор) нашей платы, в моем случае это “ATmega 2560 (Mega 2560)

Все готово. Теперь начнется магия компиляции. Для получения hex файла необходимо выбрать пункт меню “Скетч” -> “Экспорт бинарного файла Ctrl + Alt + S

После этого начнется магия компиляции. Среда осуществит проверку и сборку прошивки в бинарный (hex) файл.

Ждем окончания компиляции.

После завершения процесса, в каталоге со скетчем (в нашем случае это C:\TEMP\TEST\MARLIN_1.1.9_4MAX_RU\anycubic-4max ) появится 2 файла:

  1. anycubic-4max.ino.mega.hex
  2. anycubic-4max.ino.with_bootloader.mega.hex

anycubic-4max.ino.mega.hex – содержит непосредственно саму скомпилированную прошивку

anycubic-4max.ino.with_bootloader.mega.hex – содержит прошивку + загрузчик

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

Ну вот и все. Как видите, ничего сложного.

А что дальше? Ну а дальше действовать по инструкции, описанной в статье “Устанавливаем прошивку Marlin на 3D принтер с помощью слайсера Cura или что делать с hex файлом?”

Надеюсь, что материал оказался для Вас полезен.

Если вы еще не обзавелись 3Д принтером и думаете какую модель выбрать, могу порекомендовать следующие модели:

3д принтер Anycubic i3 Mega

3д принтер Anycubic Mega-S (Anycubic S)

3Д принтер Anycubic 4MAX Pro

Если вам понравилась статья и вы хотите поддержать сайт, получать уведомления о новых материалах, вступите в нашу группу Вконтакте: https://vk.com/ionline_by

Если вы хотите оперативно получать уведомления о выходе новых статей, подключите себе PUSH уведомления по ссылке: https://ionlineby.pushassist.com/

Настройка IDE Arduino для генерации листинга на ассемблере

Порой возникает необходимость в изучении кода, генерируемого компилятором. Это помогает понять, что получается «на выходе» при использовании тех или иных функций, приемов, алгоритмов. Существуют специализированные инструменты — дизассемблеры, преобразующие машинный код в текст на языке ассемблера, но это в основном платные программы. Мне же в большинстве случаев вполне хватает результатов программы avr-objdump, которой и посвящена эта публикация. avr-objdump — это программа, отображающая различную информацию из объектных файлов. Параметры, с которыми она вызывается, определяют, какая именно информация должна быть отображена. Например, для дизассемблирования объектного файла может быть использована следующая команда:

avr-objdump -d file_name.elf

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

avr-objdump -S file_name.elf

Полный список возможных параметров вы можете найти по ссылке: http://ccrma.stanford.edu/planetccrma/man/man1/avr-objdump.1.html

Хорошо, где взять avr-objdump и объектный файл? Первый входит в состав IDE Arduino и расположен в каталоге

Arduino_dir\hardware\tools\avr\bin\, где Arduino_dir — это путь установки IDE Arduino.

Что касается объектных (elf) файлов, то они создаются средой разработки при компиляции проекта и находятся во временной папке скетча. Найти их можно следующим образом:

1. Если у вас еще не включен вывод сообщений при компиляции скетчей, то перейдите в окно настроек IDE Arduino и установите соответствующую опцию:

2. После компиляции скетча в последних строках, выводимых средой разработки, вы увидите примерно следующее:


Выделенный фрагмент — это временный каталог для текущего скетча, в него помещаются все файлы, генерируемые в ходе компиляции, в том числе объектный файл.

Остается перейти в этот каталог и скопировать elf файл в Arduino_dir\hardware\tools\avr\bin\. Теперь, когда у нас avr-objdump и объектный файл находятся в одном каталоге (конечно, это необязательно, если в командах указывать полный путь к файлам), запускаем командную строку и вводим одну из приведенных ранее команд для дизассемблирования с поправкой на имя файла. В моем случае команда выглядит так:

avr-objdump.exe -S sketch_jun18a.ino.elf

В интерпретаторе командной строки необязательно вводить имя файла целиком: достаточно ввести несколько первых символов, затем нажимать TAB, пока интерпретатор не подставит нужное имя.

Итак, выполняем введенную команду и видим весьма объемный результат ее работы:


Для вывода результата работы avr-objdump в файл воспользуемся перенаправлением вывода:

avr-objdump.exe -S sketch_jun18a.ino.elf > my_file.asm

При выполнении данной команды в каталоге с avr-objdump.exe будет создан файл my_file.asm, в который будет сохранен результат работы команды:


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

Я для генерации ассемблерного листинга использую команду меню Скетч->Экспорт бинарного файла среды разработки Ардуино. При таком способе результат дизассемблирования сохраняется в каталог скетча (вместе с hex файлом), не приходится лазить по временным папкам. Для настройки IDE Arduino на генерацию ассемблерного листинга выполним следующие действия:

1. Переходим в каталог Arduino_dir\hardware\arduino\avr\ и открываем файл platform.txt в текстовом редакторе.

2. Находим команды для сохранения hex файла и добавляем после них следующую строку:

recipe.hooks.savehex.postsavehex.1.pattern=»{compiler.path}/elf2asm.bat» «{compiler.path}avr-objdump» «{build.path}/{build.project_name}.elf» «{sketch_path}/{build.project_name}.asm»

Здесь мы используем так называемый хук, который выполняется после сохранения hex файла. Описание всех доступных хуков и самого файла platform.txt доступны по ссылке https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification. Ниже скриншот моего файла platform.txt после внесения указанных изменений:
3. Переходим в каталог Arduino_dir\hardware\tools\avr\bin\, создаем файл с именем elf2asm.bat и вставляем в него следующий текст:

%1 -S %2 > %3

Параметр -S определяет генерацию смешанного листинга. Использование bat файла обусловлено тем, что мы не можем использовать перенаправление вывода непосредственно в файле platform.txt.

На этом настройка IDE Arduino завершена. Можно переключиться в нее и проверить корректность работы, выбрав команду «Экспорт бинарного файла» в меню «Скетч». В каталоге со скетчем должен появиться файл с расширением asm. Приведенный способ дизассемблирования скетча пригодится нам в следующей публикации для анализа кода и продолжения темы обработки прерываний.

Arduino IDE: разбираемся с меню Tools и некоторыми другими функциями.

Итальянцы молодцы. Запустили в мир DIY настоящего монстра. С появлением экосистемы Arduino весь рынок цифрового DIY получил мощнейший толчок. Тысячи, сотни тысяч, миллионы пользователей принялись покупать оригинальные и совместимые платы для их последующего программирования и использования в своих поделках. Причина такой популярности в первую очередь связывают с низким порогом для входа в эту среду. Вам не нужно тратить много денег на приобретение плат: открытый стандарт дал дорогу на рынок множеству последователей и копировщиков. Вам так же не стоит сильно заморачиваться над программированием: поставляемая «в комплекте» Arduino IDE упрощена настолько, насколько это возможно. Пользователь просто пишет код и не задумывается о настройках компилятора, о том, что программировать при помощи Arduino IDE можно разными программаторами, а иногда и вообще голые микросхемы.

И вот, наступает момент, когда стандартная Arduino IDE становится тесновата, а ее неудобство начинает просто выбешивать, особенно, если пользователь знаком с более продвинутыми средами разработки по другим платформам и языкам программирования. Кто-то начинает мигрировать на что-то более интересное, например, на Atom или VS.Code в смеси с PlatformIO, а кто-то старается выжать из Arduino IDE все, что только можно.

Сегодня я выступлю как раз в роли подобного «особо интересующегося персонажа» и попробую вместе с читателем разобраться чуть-чуть побольше в тонкостях Arduino IDE. Все ниженаписанное более-менее соответствует версии 1.8.9 Arduino IDE.

Темная тема для Arduino IDE

Очень многих раздражает простенькое оформление Arduino IDE в корпоративных цветах Arduino. Все такое белое и «слепое». Долго работать в таком цветовом решении не всегда комфортно, особенно если это ночь, вокруг темно и все спят.

Вариант темной темы под Mac. Скриншот с GitHub.

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

Меню Sketch

Я, как и большинство других пользователей Arduino IDE, загружаю свои скетчи в платы при помощи панели инструментов. Щелкнул на кнопку загрузки и скетч начал заливать в плату. Удобно. Но, как оказывается, меню Sketch (здесь и далее я буду использовать английский вариант интерфейса Arduino) содержит не мало интересных и полезных новшеств. Итак, кратенько пробежимся по ним.

Меню Sketch Arduino IDE

Пункты меню Very/Compile и Upload стандартны и знакомы всем. Именно они используются для проверки правильности кода и последующей нормальной загрузки. А вот пункт Upload using programmer для меня до недавнего времени оставался Terra incognita. Как оказалась, данный пункт необходимо применять при загрузки скетча без использования загрузчика (bootloader), но с использованием полноценного программатора. О загрузчиках и программаторах поговорим немного позже, пока же просто запомним этот пункт.

В этом же меню присутствует весьма полезный пункт Export compiled Binary. Применяется он в том же направлении, что и Upload using programmer. По умолчанию Arduino IDE компилирует исходный код в файл, который сохраняется во временную директорию и после завершения загрузки она должна очищаться. Временная директория находится в каких-то дебрях файловой системы, а искать там скомпилированный файл с непонятным наименованием — то еще удовольствие. Так вот функция Export compiled Binary как раз и применяется для того, чтобы сохранить уже откомпилированный скетч в виде бинарных-файлов в папке самого скетча. В дальнейшем скомпилированные скетчи могут быть прошиты при помощи внешнего программатора или же USB-TTL преобразователя.

Кстати, просмотреть папку скетча можно все через тоже самое меню Sketch при помощи пункта Show Sketch Folder. Кстати, при вызове Export compiled Binary компилируется сразу два файла: с и без загрузчика. Для чего это нужно, опять же немного ниже. При компилировании при помощи Export compiled Binary следует учитывать, что примеры из поставки Arduino так откомпилировать не выйдет. Папки, в которых хранятся эти скетчи имеют режим только для чтения, а IDE необходимо куда-то записать скомпилированные файлы (обычно в таком случае возникает ошибка «Export canceled, changes must first be saved.»). Поэтому тренируемся на своих собственных скетчах или же пересохраняем скетч в новую папку.

Меню Tools

Меню Tools в Arduino IDE дает куда больше интересного и полезного, нежели Sketch. Более того, сам вид меню зависит от того, какую платформу вы выбрали в качестве целевой.

Меню Tools Arduino IDE с выбранным микроконтроллером семейства AVR.

Начнем с общего и тех пунктов, которые есть в оригинальных платах, построенных на микроконтроллерах Atmel (ее все же купила Microchip).

Пункт Auto Format позволяет отформатировать ваш исходный текст по общепринятому в Arduino IDE стандарту. Отформатированный текст позволяет легче находить ошибки, да и сама программа выглядит опрятно. Так же, зачастую, при форматировании при помощи автоформата получается найти такие ошибки, как отсутствующие скобки, что при большом количестве вложений несколько затруднительно. Оная же функция вызывается и в самом редакторе в контекстном меню доступном по правой кнопке мышки.

Archive Sketch позволяет упростить навигацию по папке в которой хранятся все ваши скетчи. Напомню, что каждый скетч хранится в отдельной папке, куда складывается все, что к нему относится. Если скетчей у вас много, особенно если плодить версии в новых папках, то разобраться во всем этом нагромождении становится очень сложно. Для этого и можно применить функцию архивирования. Папка со скетчем будет сжата в архив ZIP, а затем стерта из каталога. Останется только архив.

Serial Plotter противовес Serial Monitor предназначен для вывода графика из данных выдаваемых в последовательный порт. Все, что от вас требуется для построения графика — выплевывать в порт цифры при помощи Serial.println(). Неплохой пример использования плоттера приведен на страницах проекта wikihandbk.

Приведенные выше пункты стандартны. Их использование, вкупе с Library Manager должны быть известны даже неопытным пользователям. А дальше попробуем погрузиться в чащобы Arduino IDE и мир программирования микроконтроллеров.

WiFi101 / WiFiNINA Firmware Updater

Сетевое взаимодействие для оригинальных плат Arduino всегда было ахиллесовой пятой. Их просто нет в стандартной поставке, а все решения в виде внешних плат настолько ди́ки, что просто пропадает всякое желание их использовать. По этой причине многие используют платы на основе ESP8266, которые дешевле, мощнее и сразу с WiFi на борту. Но итальянцы, да и ардуинщики вообще, ребята упорные, поэтому вместо того, чтобы переходить на нормальные платы, продолжают изобретать очередные ужасы, к которым и относятся WiFi101 и WiFiNINA.

WiFi 101 Shield. Взято откуда-то с просторов сети.

Собственно этот пункт меню предназначен для обновления прошивки и сертификатов соответствующих плат.

Arduino Uno с платой WiFi под библиотеку WiFiNINO

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

ESP Exception Decoder

Плагин для Arduino IDE под непонятным названием ESP Exception Decoder предназначен для более легкой отладки программ под платформу ESP8266. Exception или «исключение» обозначает возникновение ошибочной ситуации которая не была корректно обработана кодом. Например, деление на 0 однозначно вызовет исключение, и работа программы будет прервана. В языке, на котором программируют в Arduino IDE нет возможности использовать блоки try {} catch {}, соответственно работа с исключениями невозможна (точнее по синтаксису он есть, но компилятор его отвергнет, по крайней мере для плат на основе AVR). Программист обязан предусматривать и проверять данные и предупреждать возникновение подобных ситуаций. Иначе результат может быть непредсказуемым.

На первоначальной экосистеме Arduino, построенной на Atmel AVR (об этом опять же дальше) нет места исключениям. И даже несмотря на то, что язык, применяемый для программирования в Arduino IDE есть ни что иное как диалект C++, в нем так же нет исключений и они не поддерживаются компилятором, ибо в AVR нет исключений, слишком там мало места для еще и исключений. Сильно жизнь это не осложняет, просто программы пишутся куда более аккуратно. А вот в экосистеме ESP, в том числе и под Arduino, исключения присутствуют.

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

Вот такую вот информацию сохраняет esp8266 после перезагрузки. В этом случае произошла перезагрузка по питанию.

Система в чипах ESP более замороченная, чем в AVR и при возникновении нештатной ситуации выплевывает в последовательный порт некий стек адресов, по которым можно добраться до истинной причины возникновения ошибки. Но выдаются адреса в совсем нечитаемом человеком виде. Чтобы сопоставить строчку в исходном коде с конкретным адресом, выданным в стеке, и был придумал ESP Exception Decoder.

Намеренный вызов исключения на WeMos Mini

После возникновения ошибки необходимо перенести стек в декодировщик и он выдаст «путь» по которому можно дойти до строки в годе где и возникла исключительная ситуация. В некоторых случаях функция исключительно удобная. Ознакомиться с подробной инструкцией по применению декодировщика можно на страничке проекта ESP Arduino Core.

Get Board Info

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

Burn Bootloader

Наконец-то мы начинаем подбираться к действительно интересным пунктам меню. Начнем с пункта загрузки загрузчика (Burn Bootloader). Но для начала попытаемся понять, что такое bootloader и для чего он нужен. В старые далекие ламповые времена тоже существовали программируемые микросхемы. Но программировались они весьма жестким способом. Использовался специальный программатор, в который вставлялась микросхема, происходило таинство, и микросхему можно было использовать в оборудовании.

Сей способ с одной стороны достаточно прост, но с другой он очень неудобен. Ведь чтобы сменить прошивку на уже прошитой микросхеме, если это вообще возможно, ее необходимо вытащить из устройства, установить в программатор и повторить процедуру. Что далеко не всегда возможно, так как микросхема может быть впаянной в плату и без специализированного оборудования достать ее оттуда нельзя или же само устройство летает на спутнике. Именно для этих целей была придумана методика ISP (In-System Programming), что в переводе означает ни что иное как «внутрисхемное программирование». ISP не стоит путать с SPI (Serial Peripheral Interface). ISP это именно внутрисхемная прошивка, а SPI это стандарт взаимодействия между устройствами. И пусть даже вас не вводят в заблуждения сильно похожие разъемы и наименования контактов. ISP и SPI это разные вещи.

В общем случае ISP позволяет программировать микроконтроллер через любой его интерфейс и даже программироваться самостоятельно с изменением своего кода посредством своего собственного же кода. Но для осуществления подобных фокусов требуется некая программа, которая будет сидеть в микроконтроллере и управлять этим программированием. Именно она и называется загрузчиком (bootloader). И именно благодаря ей есть возможность прошивать микроконтроллеры просто подключив их к USB-порту, или же применив простейший программатор на параллельном порту компьютера (у кого они еще остались), а в некоторых случаях обновление прошивки можно загружать вообще по воздуху применяя прием OTA (Over The Air).

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

Для Arduino существует несколько вариантов загрузчиков. Стандартный, который прошивается еще при изготовлении платы Arduino, многие не любят. Дескать он притормаживает при загрузке устройства в ожидании передачи данных для прошивки и только спустя десять секунд запускает ваш прошитый скетч. Дело в том, что некоторые платы Arduino, в которых не реализован механизм DTR (Data Terminal Ready) / RTS (Ready To Send) действительно нужно прошивать очень быстро иначе bootloader просто передаст управление той микропрограмме, что уже находится в микропроцессоре. Вот и начали все, кому не лень, модифицировать штатный загрузчик или же писать свой собственный.

Стандартные загрузчики для плат Arduino

Где брать загрузчики? Вообще стандартный загрузчик можно загрузить прямо из Arduino. Для этих целей и предназначен пункт меню Burn Bootloader. А сами загрузчики из стандартной поставки можно найти в папке с установленным Arduino в поддиректории hardware. Если же вы используете платы отличные от Arduino AVR, например, ESP3288, то все дополнительные загрузчики и прочие инструменты можно найти в личном профиле пользователя (AppData\Local).

Загрузчик для плат семейства ESP

Но если вы скачиваете дополнительные загрузчики и хотите установить их в Arduino IDE, то можно использовать папку hardware в вашем каталоге для скетчей. После перезагрузки IDE загрузчики из этой папки так же будут доступны, однако не следует забывать про файл boards.txt который должен присутствовать в подпапках папки hardware. Если у вас вдруг нет текстового редактора или же вы испытываете трудности с редактированием boards.txt то есть решение. Один энтузиаст создал специальную программу Arduino BOARDS.TXT Editor, которая позволяет с легкостью вносить изменения в указанный файл.

Так, где же брать эти самые альтернативные загрузчики? Искать в сети. Поисковики выдают просто немыслимое количество разнообразных вариантов. Для начала можно остановиться на OptiBoot, попробовать калькулятор «формирующий» загрузчик под конкретную плату или начать просматривать ссылки с официальной страницы загрузчиков Arduino.

И подводя промежуточный итог, если нам нужно загрузить прошивку без загрузчика (так для нее останется больше места) в микроконтроллер, то подключаем его к программатору и загружаем прошивку через Sketch – Upload Using Programmer. Если же хотим вернуться к обычной и удобной загрузке скетчей через среду Arduino по USB и без прочих танцев африканских народов, то прошиваем загрузчик обратно (или же мы купили микроконтроллер без загрузчика) уже посредством Tools – Burn Bootloader. В обоих случаях незабываем про корректный выбор платы, программатора и прочих настроек.

И еще раз, если в плате установлен загрузчик, то после перезагрузки платы он первым получит управление, послушает немного выделенные порты в надежде если вдруг там кто-то хочет залить прошивку. Если признаков заливания прошивки нет, то он со спокойной душой передает управление основной программе. А если в плате нет загрузчика, то тогда управление после перезагрузки сразу передается основной программе. Все просто, по крайней мере на пальцах.

AVR и прочие

Для лучшего понимания дальнейшей информации я хочу привести некоторые сведения о самих микроконтроллерах с которых пошло-поехало Arduino. Мы уже знаем, что оригинальные Arduino построены на микроконтроллерах (больших интегральных схемах, которые можно программировать и которые могут работать и сами по себе без внешней обвязки, подавай только напряжение) от компании Atmel (нынче Microchip).

У компании Atmel наработано несколько линеек микроконтроллеров, но нас в первую очередь интересует линейка AVR (кстати, аббревиатура AVR официально никак не расшифровывается), так как именно на ней и построены оригинальные Arduino. Линейка появилась аж в 1996 году и, пожалуй, была одна из первых на рынке предложившей решение, где микроконтроллер и память (ОЗУ и ПЗУ) расположены в рамках одного единственного кристалла. Повторюсь, чтобы система работала достаточно только одной микросхемы AVR на которую подается питание. Все остальное у нее уже есть внутри.

AVR линейка делится на несколько основных групп:

  • tinyAVR – с уменьшенным количеством линий ввода-вывода, уменьшенным количеством памяти всех типов, обозначается как ATtinyxxx.
  • megaAVR – увеличенное количество памяти всех типов, увеличенное количество линий ввода-вывода, расширенный набор для периферии и тому подобное. Обозначается как ATmegaxxx.
  • XMEGA – ко всему увеличенному у megaAVR тут еще увеличили памяти и добавили встроенный контроллер для быстрой работы с памятью. Обозначается как ATxmegaxxx.

Именно микросхемы AVR обеспечивают поддержку таких функций как АЦП, ШИМ, SPI, I2C и прочих. Arduino же просто их использует (хотя с появлением более мощных микроконтроллеров, тех же esp8266, появилась возможность эмуляции вышеназванных функций программным способом).

И вопреки возможности прошивки AVR методом ISP посредством стандарта SPI через установленный загрузчик, для программирования микроконтроллеров применяется великое множество программаторов. Как простых и собираемых на коленке, так и сложных с внешним питанием и обилием всевозможных функций. Но прежде, чем мы перейдем к рассмотрению программаторов следует пояснить еще один момент. При программировании микроконтроллера с использованием внешнего программатора (без использования загрузчика) необходимо четко понимать, что такое fuses или не трогать настройки, связанные с ними, если такого понимания нет. Fuse/фьюзы/предохранительные биты — это настройки внутри микроконтроллера, в частности AVR. Они прошиваются точно так же, при помощи внешнего программатора (без применения ISP). И обычно применяются для настройки самого микроконтроллера, например, можно включить или отключить возможность самопрошивки контроллера, включение или отключение внешнего сброса устройства (и соответственно возможности его прошивки через bootloader), включение и отключение очистки памяти при перепрограммировании чипа и тому подобное. Подробнее ознакомиться с фьюзами можно (и нужно) в документации к конкретному контроллеру. К чипу ATmega328, одному из самых популярных чипов на Arduino, документация доступна на официальном сайте производителя.

Programmer:

Пожалуй, что пункт меню Tools под кодовым названием Programmer является самым таинственным местом всего Arduino IDE. Информации по данному пункту очень мало, и она настолько скудна что может привести к разочарованию даже самого стойкого прагматика. Очевидно, что данный пункт содержит выбор программаторов для программирования плат. И кажется, что одну и ту же плату можно запрограммировать кучей разных способов и программаторов. Но, а что же нам на этот счет говорит документация к Arduino IDE? А она нам вещает о том, что данный пункт меню Tools имеет смысл только при прошивке загрузчика. Во всех остальных случаях используемый «прошивальщик» зашит в тот самый boards.txt, что обсуждался немного ранее. Причем для микроконтроллеров AVR это всегда avrdude, а для ESP это всегда esptool. Кроме того, для плат AVR может применяться, в штатной поставке, целых два различных протокола «закачки» прошивки в микроконтроллер: avr109 и arduino. Разные протоколы, как не сложно догадаться, применяются для разных загрузчиков, установленных в конкретные микроконтроллеры.

В штатной поставке Arduino IDE с подключенной инфраструктурой ESP для прошивки загрузчика можно применить несколько типов программаторов. Кратко пройдемся по ним всем. По факту все AVR в Arduino IDE прошиваются посредством приблуды AVRDUDE (бывший AVRProg) и различия между «программаторами» только в используемом протоколе и настройках AVRDUDE. На текущий момент AVRDUDE поддерживает 39 программаторов, но в Arduino IDE используется только 14. Ознакомиться с настройками каждого из них можно в файле programmers.txt в той самой директории hardware, где складируется файлик boards.txt. Информация по настройкам для каждого из программатора доступна в файле avrdude.conf (располагается обычно в Arduino\hardware\tools\avr\etc) и в куцей документации к самому AVRDUDE.

AVR ISP

AVRISP есть ни что иное как фирменный программатор от Atmel. Он позволят программировать AVR. И похоже, что на этом все. Мне ну далось найти хоть сколько-нибудь достоверной информации про данный программатор, кажется, что он сошел со сцены и осел где-то в дебрях плат у аксакалов еще до появления Интернет.

Отладочная плата Atmel STK500. Фото производителя.

Единственное, что хоть как-то проливает свет на данный программатор, так это то, что он по факту является частью STK500 (такая отладочная плата для AVR от Atmel) версии 1, которая подкачается к компьютеру посредством последовательно порта.

AVRISP mkII

А вот AVRISP mkii является актуальным программатором, подключаемым к USB. По крайней мере о нем есть информация на сайте производителя и большинство безродных программаторов, которые продаются бесчисленными компаниями как раз и являются клонами именно этого программатора.

Фирменный программатор AVRISP mkII. Фото производителя.

Тем не менее, он так же является частью отладочной платы STK500, но уже версии 2, которая подключается к компьютеру уже по интерфейсу USB. Хотя, по отзывам очевидцев и версия 1 может использовать с USB посредством конвертера COM-USB.

USBtinyISP

Это один из программаторов, который можно собрать своими руками, он прост и дешев, а в качестве «сердца» у него используется чип tinyAVR. Вот только возникает вопрос – как же его прошивать, если он сам и предназначен для прошивки AVR?

Тем не менее, программатор поддерживается Arduino IDE и весьма популярен. Программатор был разработан в Нидерландах, но в настоящее время поддерживается AdaFruit.

ArduinoISP и ArduinoISP.org

Что подразумевали под этими двумя программаторами разработчики Arduino IDE остается только гадать, да угадывать. Сайт ArudinoISP.org дает перенаправление на туториал на сайте Arduino.cc по использованию Arduino as ISP. Единственное отличие этих двух от Arduino as ISP только лишь используемый протокол. Вероятно, что они были когда-то собраны в качестве поддержки особого загрузчика, а с течением времени исчезли с лица истории. По крайней мере в документации AVRDUDE никакого упоминания ни про arduinoisp ни про arduinoisporg просто нет.

USBasp

Еще один простой программатор, который можно собрать дома на коленке. И он тоже построен на чипе от Atmel. Проект был развернут немецкий программистом, а затем подхвачен всем миром. Как и с USBtinyISP чип от Atmel для программатора необходимо запрограммировать.

Parallel Programmer

Данный тип программатора считается одним из самый простых, если не самым простым. По сути «параллельный программатор» — распиновка параллельного порта компьютера и соответствующее программное обеспечение.

Для сборки данного программатора требуется компьютер с параллельным интерфейсом (раньше по нему было модно подключать принтеры) и всего три резистора двух номиналов. Подробная схема (от руки) и описание по сборке (с фотографиями) доступна на официальном сайте Arduino.

Arduino as ISP

Поскольку платы Arduino сами по себе являются микроконтроллерами, да еще и с навороченными входами/выходами, то их вполне можно использовать в качестве программаторов.

Для этого в плату Arduino закачивается скетч из примеров под именем ArduinoISP, соединяются проводки (между платой, в которую залит скетч и платой, которую нужно прошить), и прошивается загрузчик (не забываем выбрать программатор Arduino as ISP). Подробная инструкция доступна опять же на странице официального сайта Arduino.

Arduino Gemma

Если подходить формально, то Gemma это не программатор. Это микроскопическая плата от AdaFruit предназначенная для вшивания/встраивания в одежду/обувь. Она лишь частично совместима с Arduino, так как содержит очень мало вводов/выводов. Чтобы подключить ее к USB разработчику пришлось выдумать отдельный загрузчик, и отдельный PID для USB устройства. По этой причине прошивается Gemma как отдельный программатор (в реальности там встроенный USBtiny), имеет отдельный конфиг для AVRDUDE с жестко прописанным bootloader. Другими словами, прошить этой платой ничего нельзя, но зато ее можно прошить саму загрузчиком.

BusPirate as ISP

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

Atmel STK500 development board

Та самая отладочная плата, что упоминается в AVR ISP и AVR ISP mkII. В Arduino IDE не делается различия между версиями и предполагается, что AVRDUDE самостоятельно определит версию протокола обмена и осуществит самонастройку. Если же этого не происходит, то в programmers.txt нужно четко прописать stk500v1 или stk500v2 в качестве применяемого протокола.

Atmel JTAGICE3 (ISP mode) и Atmel JTAGICE3 (JTAG mode)

JTAGICE3 — современное решение для отладки чипов семейств AVR, SAM и Cortex. Разумеется, только тех чипов, что поддерживают внутричиповую отладку. Попутно эта коробочка еще и программирует их всех.

Atmel JTAGICE3 отладчик/программатор.

Продукт актуальный, у производителя имеется документация. Разница между программаторами только в применяемых протоколах. В ISP режиме применяется протокол JTAG3ISP, а в JTAG просто JTAG3.

Atmel-ICE (AVR)

Так же активный продукт Atmel и его можно купить. Как и JTAGICE3 он позволяет не только производить отладку у чипов, поддерживающих такую функцию, так и программировать их. Для прошивки используется протокол atmelice_isp. В общем использовать программаторы на подобие JTAGICE3 или Atmel-ICE только для прошивки 8-битных микроконтроллеров это как стрелять из пушки по клопам. Слишком уж мощные и дорогие решения для задачи, которая решается куда проще.

Обширное семейство ESP

Выше мы рассмотрели специфику прошивки контроллеров семейства AVR. Но при этом обойти не менее многочисленное и популярное семейство контроллеров ESP было бы просто некрасиво. Тем более, что при выборе одного из семейства, меню Tools значительно увеличивается в объеме. Пройдемся по меню и попробуем понять, что каждый из пунктов увеличенного меню означает. Здесь и далее я рассматриваю SDK ESP версии 2.5.0.

Меню Tools в Arduino IDE при выборе одной из плат семейства ESP.

Часть меню все же остается тем же самым, что и прежде, поэтому излишне повторяться не будем.

Upload speed

Позволяет выбрать скорость, с которой будет происходить загрузка прошивки и других частей в микроконтроллер. Платы семейства ESP могут комплектоваться мегабайтами памяти (в то время как AVR речь идет в лучшем случае о сотнях килобайт) и загрузка на скорости 9600 может занять непростительно долгий отрезок времени.

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

CPU Frequency

Многие платы семейства ESP могут из коробки работать сразу на нескольких частотах. В Arduino регулировать частоту процессора можно при прошивке микроконтроллера. Опять же, доступные варианты указываются для каждой из плат отдельно.

Flash Size

Здесь указывается каким образом разделять всю доступную ПЗУ для хранения кода программы и для файлов. Микроконтроллеры ESP поддерживают память SPIFFS (Serial Peripheral Interface Flash File System). По сути, SPIFFS это файловая система для последовательного доступа. И у программиста есть возможность определить, сколько памяти отводить для файловой системы (туда можно записать, например, HTML-файлы или картинки) и сколько для своего скетча. Но тут есть некоторая тонкость. На текущий момент, насколько мне известно, как минимум платы EPS8266 не могут закачать скетч размерностью более 1 мегабайта. Есть обходные пути, но ведь еще нужно умудриться написать скетч, который в компилированном виде будет занимать более 1 мегабайта. Поэтому рекомендуется использовать как можно больший SPIFF, дабы уменьшить время загрузки скетча.

В тоже самое время есть сведения от потерпевших, что платы ESP32 могут испытывать проблемы связанные с «не хватает места для скетча». Но проблемы эти всего лишь из-за еще сырой поддержки плат EPS32 в инфраструктуре ESP для Arduino.

Debug port

Пункт может принимать значения Disabled, Serial и Serial1. Данная настройка предназначена для вывода отладочной информации в последовательный порт (хотя включить ее можно и программно, например, через Serial.setDebugOutput(true)). Если в скетче инициализируется соответствующий порт (Serial или Serial1), то в него могут выводиться отладочные сообщения, которые не мешают выводу в этот же порт другой информации.

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

У ESP обычно присутствует два последовательных порта. Первый, Serial использует UART0 и GPIO1 (TX) с GPIO3(RX). Второй, Serial1 использует UART1 и только GPIO2 (TX). Соответственно Serial1 не может быть использован на прием. Тем не менее, в обоих случаях есть возможность программного переназначения пинов, как и скорости, четности и прочих характеристик.

Debug Level

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

lwIP Variant

Настройка предназначена для выбора варианта реализации сетевого стека IP. Прошу обратить внимание, тут именно lwIP (lightweight IP), первая буква L, а не i.

Вариант выбора IwIP

По умолчанию используется самый верхний вариант, уменьшающий использование памяти. Но если ваш микроконтроллер активно работает с сетью, то можно пожертвовать памятью и получить наивысшую скорость. Аналогично можно включить поддержку IPv6 или вернуться на стек версии 1.4, где такой поддержки не было вообще. Под features тут понимается всякого рода ICMP, IGMP и прочие навороты, без которых можно обойтись. Основная документация по версии ветки 2.х доступна на сайте разработчика. Постоянно растущий Wiki по теме lwIP доступен на страницах проекта FanDom.

VTables

Под VTables в IDE подразумевается механизм виртуальной таблицы для позднего связывания объектов. Не буду вдаваться в подробности, о них можно задумчиво почитать в Википедии. Остановлюсь лишь на самих доступных опциях, а их всего три:

  • Flash – постоянное запоминающее устройство, таблицы хранятся в файловой системе. Метод по умолчанию в репозитарии GitHub.
  • Heap – куча, оперативная память предназначенная для динамического выделения памяти.
  • IRAM – внутренняя память микроконтроллера.

Понятно, что самый быстрый способ хранения и обработки виртуальных таблиц это IRAM, а самый медленный Flash. Но тут следует так же смотреть на то, как активно работает программа с объектами, есть ли множественное наследование и как часто объекты создаются и уничтожаются. В обычных применениях такая таблица и вовсе может быть статической и отлично проживать на Flash, с другой стороны, она может быть весьма крупной и просто не влезать в IRAM (область ОЗУ для хранения кода программы).

Exceptions

Пункт меню позволяет включить или отключить использование исключительных ситуаций. О них мы уже рассуждали выше, в том числе и в разделе об ESP Exception Decoder. При включении исключений программист в коде уже может использовать структуры try {} catch {}, что увеличивает потребление памяти, но позволяет легче программировать сложные алгоритмы. Напомню, что try-catch будет работать только для плат семейства ESP. Отрадно замечать, что программисты работающие над библиотеками для семейства ESP для Arduino уже начали использовать механизм try {} catch {} в своем коде на GitHub.

Erase Flash

Пункт предлагает стирать внутреннюю память микроконтроллера в следующих пропорциях:

  • Only Sketch – стирает только пространство отведенное под скетч. Остальное остается нетронутым.
  • Sketch + WiFi Settings – пространство для скетча и настройки WiFi. Дело в том, что при подключении к точке доступа микроконтроллер запоминает параметры подключения и в следующий раз подключается к той же точке быстрее.
  • All Flash Contents – стирается все, включая файловую систему.

Прочее по ESP

В заключение статьи хотелось бы добавить, что при прошивке загрузчика в ESP всегда используется прошивальщик esptool. И всегда применяется один и тот же загрузчик eboot. Чтобы пользователь там не выставил в Programmer.

Итог

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

Однако, хочу надеться, что авторы Arduino IDE все же смогут удержать свое творение в приличных рамках и оставить его все таким же легким в освоении инструментом. Заодно хочу им напомнить, что документировать свое творение стоит постоянно иначе получается «не только лишь все, сегодня могут в завтра».

Update: разбираясь глубже с тем как настраивать свои собственные платы или же добавлять новые платы к Arduino IDE, наткнулся на исчерпывающую документацию по этому поводу.


Опубликовано автором kvv в следующих категориях:
DIY Soft не только лишь все статья

Поделиться ссылкой:

Программное обеспечение | Arduino-технология

Интегрированная среда разработки Arduino — или Arduino Software (IDE) — содержит текстовый редактор для написания кода, область сообщений, текстовую консоль, панель инструментов с кнопками для общих функций и ряд меню. С помощью IDE можно подключиться к платам Arduino и Genuino для загрузки программ.

Пишем скетчи

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

Обращаем внимание, что версии программного обеспечения Arduino (IDE) до 1.0 сохраняли эскизы в файле с расширением .pde. Можно открыть эти файлы с помощью версии 1.0, при этом вам будет предложено сохранить скетч с расширением .ino при сохранении.

Дополнительные команды находятся в пяти меню: «Файл (File)», «Правка (Edit)», «Скетч (Sketch)», «Инструменты (Tools)», «Помощь (Help)». Меню являются чувствительными к контексту, что означает, что доступны только те элементы, которые относятся к выполняемой в настоящее время работе.

ФАЙЛ

  • Новый (New)
    Создает новый экземпляр редактора. При этом сразу создается минимально необходимая структура скетча.
  • Открыть (Open)
    Позволяет загружать файл скетча, просматривая компьютерные диски и папки.
  • Недавно открытые (Open Recent)
    Показывает небольшой список недавно открытых скетчей.
  • Журнал скетчей (Sketchbook)
    Показывает текущие скетчи в ввиде структуры папок; нажатие на любое имя открывает соответствующий скетч в новом экземпляре редактора.
  • Примеры (Examples)
    В этом пункте меню отображается примеры, предоставленные программой Arduino (IDE) или библиотекой. Все примеры структурированы в дереве, что позволяет легко найти подходящий пример по темам или библиотекам.
  • Закрыть (Close)
    Закрывает экземпляр программы, в котором выбран данный пункт меню.
  • Сохранить (Save)
    Сохраняет эскиз с текущим именем. Если файл не был назван ранее, имя будет указано в окне «Сохранить как ..».
  • Сохранить как (Save as…)
    Позволяет сохранить текущий эскиз с другим именем.
  • Настройка страницы (Page Setup)
    Отображает настройки страницы для печати.
  • Печать (Print)
    Отправляет текущий эскиз на принтер в соответствии с настройками, заданными в разделе «Настройка страницы».
  • Настройки (Preferences)
    Открывает окно настроек, в котором можно установить некоторые параметры окна программы. Также позволяет установить параметры сетевого интерфейса.
  • Выход (Quit)
    Закрывает все окна IDE. Те эскизы, которые были открыты при нажатии «Выход», будут автоматически открыты при следующем запуске IDE.

ПРАВКА

  • Отменить/вернуть (Undo / Redo)
    Возвращает на один или несколько шагов назад или вперед, которые вы делали во время редактирования. Кнопка вернуть становиться активной, если вы возвращались до этого назад.
  • Вырезать (Cut)
    Удаляет выделенный текст из редактора и помещает его в буфер обмена.
  • Копировать (Copy)
    Копирует выделенный текст в редакторе и помещает его в буфер обмена.
  • Копировать для форума (Copy for Forum)
    Копирует код вашего эскиза в буфер обмена в форме, подходящей для публикации на форуме. Синтаксис будет соответственно подсвечен.
  • Копировать как HTML (Copy as HTML)
    Копирует код вашего эскиза в буфер обмена в формате HTML, подходящем для встраивания в веб-страницы.
  • Вставить (Paste)
    Вставляет содержимое буфера обмена в позицию курсора в редакторе.
  • Выделить все (Select All)
    Позволяет выделить все содержимое редактора.
  • Добавить/удалить комментарий (Comment/Uncomment)
    Помещает или удаляет маркер комментария «//» в начале строки, где находиться курсор.
  • Увеличить/Уменьшить отступ (Increase/Decrease Indent) 
    Добавляет или убирает пробел в начале каждой выбранной строки, перемещая текст на одну позицию табуляции вправо или влево.
  • Поиск  (Find)
    Открывает окно «Найти и заменить», где вы можете указать текст для поиска внутри текущего эскиза в соответствии с несколькими параметрами.
  • Найти далее (Find Next)
    Поиск элемента из окна «Найти и заменить» после места установки курсора.
  • Найти предыдущее (Find Previous)
    Поиск элемента из окна «Найти и заменить» до места установки курсора.

СКЕТЧ

  • Проверить/Компилировать (Verify/Compile)
    Проверяет ваш эскиз на ошибки компиляции. В области консоли при этом выводится размер используемой памяти для программы и переменных.
  • Загрузка (Upload)
    Произведет компиляцию скетча и загрузку двоичного кода в указанную плату через указанный порт.
  • Загрузить через программатор (Upload Using Programmer)
    Также произведет компиляцию скетча и запись программы на плату через программатор. Для этого необходимо выбрать тип программатора.
  • Экспорт бинарного файла (Export Compiled Binary)
    Сохраняет файл .hex, который может храниться в архиве на компьютере. В дальнейшем он может использоваться для программирования плат с использованием других инструментов.
  • Показать папку скетча (Show Sketch Folder)
    Открывает текущую папку скетча, в которой храниться скетч и/или двоичный файл прошивки.
  • Подключить библиотеку (Include Library)
    Добавляет библиотеку в ваш эскиз, вставляя инструкции #include в начале вашего кода. Для получения дополнительной информации см. Ниже библиотеки . Кроме того, из этого пункта меню вы можете получить доступ к менеджеру библиотек и импортировать новые библиотеки из ZIP-архивов.
  • Добавить файл … (Add File…)
    Добавляет исходный файл в эскиз (он будет скопирован из текущего местоположения). Новый файл появится на новой вкладке в окне эскиза. Файлы можно удалить из эскиза, используя меню вкладки, доступное нажатием на значок маленького треугольника в строке над полем программы

ИНСТРУМЕНТЫ

  • АвтоФорматирование (Auto Format)
    Производится автоматическое форматирование текста скетча. Текст программы становится удобочитаемым.
  • Архивировать скетч (Archive Sketch)
    Создается копия текущего эскиза в формате .zip. Архив размещается в том же каталоге, что и эскиз.
  • Исправить кодировку и перезагрузить (Fix Encoding & Reload)
    Исправляет возможные расхождения между кодировкой символов редактора и кодировкой операционной системы.
  • Монитор порта (Serial Monitor)
    Открывает окно последовательного порта и инициирует обмен данными с любой подключенной к выбранному порту платой. Обычно это сбрасывает плату, если плата поддерживает сброс через последовательный порт.
  • Плата (Board)
    Выберите плату, которую вы используете. Ниже приведены описания различных плат .
  • Порт (Port)
    Это меню содержит все последовательные устройства (реальные или виртуальные) на вашем компьютере. Список должен автоматически обновляться каждый раз при открытии меню инструментов.
  • Программатор (Programmer)
    Этим пунктом выбирается программатор для программирования платы или чипа. При обычной работе программатор не нужен, но если необходимо записать Загрузчик в новый микроконтроллер, то программатор необходим.
  • Записать Загрузчик (Burn Bootloader)
    Элементы в этом меню позволяют записывать загрузчик в память микроконтроллера на плате Arduino. Это не требуется при обычном использовании плат Arduino или Genuino. Это нужно, если вы приобретете новый микроконтроллер ATmega (который обычно поставляется без загрузчика). Убедитесь, что вы выбрали правильную плату в меню « Плата», прежде чем записывать загрузчик на новый МК.

ПОМОЩЬ
Здесь вы найдете легкий доступ к ряду документов, поставляемых с программным обеспечением Arduino (IDE). Документы представляют собой локальную копию онлайн-ссылок.

  • Найти в справочнике (Find in Reference)
    Это единственная интерактивная функция меню «Помощь»: она непосредственно выбирает соответствующую страницу в локальной копии справочника.

Альбом программ

Программное обеспечение Arduino (IDE) использует принцип альбом программ (Sketchbook). Он представляет собой обычную папку в памяти вашего компьютера, в которой хранятся все ваши программы и эскизы программ. Эскизы в вашем альбоме можно открыть из меню «Файл» > «Папка со скетчами» или c помощью кнопки «Открыть» на панели инструментов. При первом запуске программного обеспечения Arduino каталог для вашего альбома создается автоматически. Вы можете посмотреть или изменить его местоположение с помощью диалогового окна «Настройки».

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

Вкладки, присоединение файлов, компиляция

Программное обеспечение позволяет управлять эскизами, которые содержат в себе несколько файлов.  Каждый из файлов отображается на своей вкладке. Это могут быть обычные файлы кода Arduino (без видимых расширений), файлы C (расширение .c), файлы C ++ (.cpp) или файлы заголовков (.h).

Загрузка скетча

Перед загрузкой эскиза вам нужно выбрать правильные элементы в меню «Инструменты» > «Плата»  и «Инструменты» > «Порт». Применяемые   платы описаны ниже.

На MacOS последовательный порт будет, вероятно, что-то вроде /dev/tty.usbmodem241 (для Uno, Mega2560 или Leonardo) или /dev/tty.usbserial-1B1 (для Duemilanove или более ранних плат USB) или /dev/tty .USA19QW1b1P1.1 (для платы с последовательным интерфейсом, подключенной с помощью адаптера USB-to-Serial). В Windows обычно используют COM1 или COM2 (для платы с последовательным интерфейсом) или COM4COM5COM7 или выше (для платы с USB). Чтобы узнать, к какому порту подключено ваше устройство, нужно искать в Диспетчере Устройств Windows последовательное USB-устройство в разделе портов. В Linux это должно быть /dev/ttyACMx/dev/ttyUSBx или подобное. После выбора правильного порта и платы нажмите кнопку «Загрузка» на панели инструментов или выберите пункт «Загрузка» в меню «Скетч». Платы Arduino при загрузке скетча автоматически сбрасываются. При использовании старых плат (pre-Diecimila), которые не имеют автоматического сброса, вам нужно нажать кнопку сброса на плате непосредственно перед загрузкой. На большинстве плат вы можете наблюдать процесс загрузки программы в виде мигающих светодиодов RX и TX. После завершения загрузки программа Arduino Software (IDE) отобразит сообщение, что загрузка прошла успешно или покажет сообщение об ошибке.

Когда вы загружаете эскиз, вы используете загрузчик (bootloader) Arduino. Это небольшая программа, которая была загружена в память микроконтроллера на вашей плате. Он позволяет загружать код без использования какого-либо дополнительного оборудования. Загрузчик активен в течение нескольких секунд, пока плата сбрасывается. Затем вступает в работу скетч, последний записанный в память контроллера. При работе загрузчика начинает мигать светодиодный индикатор (pin13).

Библиотеки

Библиотеки предоставляют дополнительную функциональность, которую можно использовать в своих программах. Например, работа со специфическим оборудованием или обработка данных. Чтобы использовать библиотеку в эскизе, выберите ее в меню «Скетч» > «Подключить библиотеку». Эта команда вставляет один или несколько операторов #include в верхней части эскиза и компилирует библиотеку с вашим эскизом. Поскольку библиотеки загружаются на плату вместе с эскизом, они увеличивают объем занимаемого программой пространства. Если эскизу больше не нужна библиотека, нужно удалить инструкции #include из верхней части кода.

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

Чтобы написать свою собственную библиотеку, смотрите этот учебник.

Оборудование сторонних производителей

В ваши альбомы можно добавлять библиотеки для работы не только с платами Ардуино, но и плат сторонних производителей. Платформы, установленные там, могут включать определения плат (которые отображаются в меню «Инструменты» > «Плата»), основные библиотеки, загрузчики и определения программистов. Для установки создайте каталог оборудования, затем распакуйте стороннюю платформу в свой собственный подкаталог. (Не используйте термин «arduino» в качестве имени подкаталога, иначе вы переопределите встроенную платформу Arduino.) Для удаления платформы просто удалите ее каталог.

Подробнее о создании пакетов для сторонних аппаратных средств см. Спецификацию оборудования сторонних производителей Arduino IDE 1.5.

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

Он отображает последовательность данных, отправленных с платы Arduino или Genuino через USB или последовательный порт. Чтобы отправить данные на плату, введите текст и нажмите кнопку «Отправить» или нажмите «Ввод». В раскрывающемся меню выберите скорость передачи, которая соответствует скорости, прописанной в Serial.begin в программе. Обратите внимание, что в Windows, Mac или Linux плата будет перезагружена (она запустит вашу программу заново) при подключении к монитору порта. Также необходимо обратить внимание, что монитор порта не обрабатывает управляющие символы; если для вашего эскиза требуется полное управление последовательной связью с управляющими символами, вы можете использовать внешнюю программу-терминал и подключить ее к COM-порту, назначенному вашей плате Arduino.

Также вы можете обмениваться данными с платой с помощью Processing, Flash, MaxMSP и т. д. (Более подробно можно посмотреть на странице).

Настройки

Некоторые настройки могут быть выставлены в диалоговом окне настроек «Файл» > «Настройки». Остальные можно найти в файле настроек, местоположение которого показано в диалоговом окне «Настройки».

Поддержка языков

Начиная с версии 1.0.1, программное обеспечение Arduino (IDE) было переведено на многие языки мира. По умолчанию IDE использует язык, установленный вашей операционной системой. Если вы хотите вручную изменить язык, запустите программу Arduino (IDE) и выберите пункт «Файл» > «Настройки». Найдите пункт «Язык редактора» и раскрывающееся меню со списком поддерживаемых языков. Выберите нужный язык в меню и перезапустите программное обеспечение. Если выбранный вами язык не поддерживается операционной системой, то программа после рестарта автоматически будет использовать английский язык.

Вы можете вернуть языковые настройки, используемые по умолчанию операционной системой. Для этого выберите в списке языков пункт «System Default». Этот параметр вступает в силу при рестарте программного обеспечения Arduino (IDE). Таким же образом, после изменения настроек операционной системы, вы должны перезапустить программное обеспечение Arduino (IDE), чтобы обновить его до нового языка по умолчанию.

Платы

При выборе платы в программе IDE Arduino мы обеспечиваем следующее: 1. Устанавливаем параметры, такие как скорость процессора и скорость передачи данных, используемые при компиляции и загрузке эскизов; 2. Устанавливаем fuse-биты, используемые командой burn bootloader. Многие предустановленные настройки плат различаются только fuse-битами, поэтому, вы можете успешно загрузить программу в свою плату, выбрав другой тип платы в настройках, но при записи загрузчика нужно проверять выбранный тип платы. Таблицу сравнения между различными платами можно найти здесь .

Программное обеспечение Arduino (IDE) включает встроенную поддержку следующих плат, все на основе микроконтроллера AVR Core. Менеджер плат включен в стандартную установку и позволяет добавлять поддержку для новых плат, число которых постоянно растет.

  • Arduino Yùn 
    Основа: ATmega32u4. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 12 аналоговых входов, 20 цифровых входов/выходов, 7 ШИМ.
  • Arduino/Genuino Uno 
    Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ.
  • Arduino Diecimila или Duemilanove w/ ATmega168 
    Основа: ATmega168. Работает на частоте 16 MHz с автоматическим сбросом.
  • Arduino Nano w/ ATmega328P 
    Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 8 аналоговых входов.
  • Arduino/Genuino Mega 2560 
    Основа: ATmega2560. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 16 аналоговых входов, 54 цифровых входа/выхода и 15 ШИМ.
  • Arduino Mega 
    Основа: ATmega1280. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 16 аналоговых входов, 54 цифровых входа/выхода и 15 ШИМ.
  • Arduino Mega ADK 
    Основа: ATmega2560. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 16 аналоговых входов, 54 цифровых входа/выхода и 15 ШИМ.
  • Arduino Leonardo 
    Основа: ATmega32u4. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 12 аналоговых входов, 20 цифровых входов/выходов и 7 ШИМ.
  • Arduino/Genuino Micro 
    Основа: ATmega32u4. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 12 аналоговых входов, 20 цифровых входов/выходов и 7 ШИМ.
  • Arduino Esplora 
    Основа: ATmega32u4. Работает на частоте 16 MHz с автоматическим сбросом.
  • Arduino Mini w/ ATmega328P
    An ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 8 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ.
  • Arduino Ethernet 
    Аналог Arduino UNO с Ethernet shield: Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ.
  • Arduino Fio 
    Основа: ATmega328P. Работает на частоте 8 MHz с автоматическим сбросом. Аналог Arduino Pro или Pro Mini (3.3V, 8 MHz) w/ ATmega328P. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ.
  • Arduino BT w/ ATmega328P 
    Основа: ATmega328P. Работает на частоте 16 MHz. Встроеный загрузчик (4 КБ) содержит код для инициализации встроенного модуля bluetooth. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ.
  • LilyPad Arduino USB 
    Основа: ATmega32u4. Работает на частоте 8 MHz с автоматическим сбросом. Имеет 4 аналоговых входа, 9 цифровых входов/выходов и 4 ШИМ.
  • LilyPad Arduino 
    Основа: ATmega168 или ATmega132. Работает на частоте 8 MHz с автоматическим сбросом. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ.
  • Arduino Pro или Pro Mini (5V, 16 MHz) w/ ATmega328P 
    Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Аналог Arduino Duemilanove или Nano w/ ATmega328P. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ.
  • Arduino NG или позднеее w/ ATmega168 
    Основа: ATmega168. Работает на частоте 16 MHz без автоматического сброса. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ.
  • Arduino Robot Control 
    Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом.
  • Arduino Robot Motor 
    Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом.
  • Arduino Gemma 
    Основа: ATtiny85. Работает на частоте 8 MHz с автоматическим сбросом. Имеет 1 аналоговый вход, 3 цифровых входа/выхода и 2 ШИМ.

Инструкции по установке поддержки плат других производителей смотрите в разделе «Оборудование сторонних производителей» выше.

Технологический режим — Hi-Lab.ru

Под технологическим режимом понимается режим обслуживания (заливки скетчей и файлов сервера) работающего модуля. После первоначальной заливки файлов и скетча AMS в модуль ESP8266 по последовательному интерфейсу, больше не требуется физический доступ к модулю, все операции по его обслуживанию можно производить «по воздуху».

По умолчанию Arduino Mega Server работает на стандартном 80-м порту. Технологический режим работает на том же IP адресе, что и сервер AMS, только на 8080 порту, например:

Сервер AMS:
http://192.168.1.40/

Технологический режим:
http://192.168.1.40:8080/setup.htm — загрузка скетчей «по воздуху»
http://192.168.1.40:8080/edit — загрузка и редактирование файлов

В интерфейсе Arduino Mega Server есть страница, посвящённая технологическому режиму и имеющая ссылки на страницы загрузки скетчей и файлов. В практической работе удобно сделать закладки в браузере и сразу переходить на нужную страницу.

http://192.168.1.40/tech.htm

Примечание. IP адрес здесь указан для настроек по умолчанию, у вас этот адрес может быть другим.

Загрузка скетча

Для того, чтобы загрузить «по воздуху» ваш скетч в модуль ESP8266, вам нужно сначала скомпилировать файл прошивки с расширением *.bin. Типовое название (генерируется автоматически) выглядит так:

arduino_mega_server_esp8266.cpp.generic.bin

Для создания прошивки нужно воспользоваться пунктом меню Эскиз/Export compiled Binary. Происходит компиляция проекта, но вместо загрузки скетча в память модуля по последовательному интерфейсу, создаётся файл прошивки.

Далее, нужно зайти на страницу загрузки скетчей

http://192.168.1.40:8080/setup.htm

выбрать созданный файл и нажать на кнопку «Upload» — через несколько секунд модуль перезагрузится и начнёт работать новая прошивка.

Загрузка файлов

На странице загрузки и редактирования файлов

http://192.168.1.40:8080/edit

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

Подсказка. Редактирование и заливку файлов на сервер можно совмещать с работой интерфейса самого Arduino Mega Server, но лучше на время работы технологического режима закрывать вкладку браузера с работающим AMS, это ускорит работу и сделает её более надёжной.

Ещё одно замечание. На данный момент для работы редактора необходима подгрузка библиотеки с сервера в Интернет, поэтому без доступа к Интернет редактор не работает. В будущем планируется перенести эту библиотеку на модуль ESP8266 и сделать редактор полностью автономным.

Обратите внимание. Система Arduino Mega Server непрерывно развивается и в код проекта постоянно вносятся изменения и улучшения, поэтому, описание и документация может не соответствовать вашей конкретной версии системы. Последняя правка этой страницы относится к 0.15 версии системы.

Интерфейс командной строки

— есть ли способ использовать Arduino CLI для компиляции sketch.ino в файл .bin?

Я использую безголовый raspberry pi в качестве программатора, поскольку мой ноутбук довольно заблокирован. Я не знаком с espota.py , но приведенный ниже процесс полностью работает из командной строки для компиляции и загрузки кода .ino. arduino-cli довольно полнофункциональный, и я добился успеха с ним с помощью Adafruit Huzzah (с использованием кабеля FTDI) и Wemos D1 Mini (прямой USB)

.

Первое, что нужно сделать, это добавить платы esp8266.Я не совсем уверен, как я это сделал, но вы можете увидеть, какие дополнительные платы доступны с помощью команды config dump :

  pi @ кизил: дамп конфигурации ~ / sketchbook $ arduino-cli
proxy_type: авто
Sketchbook_path: / home / pi / Arduino
arduino_data: /home/pi/.arduino15
  

Итак, я открываю каталог /home/pi/.arduino15/ и там находится файл arduino-cli.yaml . Там я добавляю пакет ESP8266, в результате чего arduino-cli.yaml выглядит так:

  pi @ кизил: ~ / альбом для рисования $ cat / home / pi /.arduino15 / arduino-cli.yaml
proxy_type: авто
Sketchbook_path: / home / pi / Arduino
arduino_data: /home/pi/.arduino15
board_manager:
  additional_urls:
  - http://arduino.esp8266.com/stable/package_esp8266com_index.json
  

(я боролся с этим пару раз, так что это может быть не 100%, но дамп конфигурации должен отражать, какой каталог данных он использует, и в нем должен быть файл .yaml с дополнительными_urls)

Без подключенного D1 запустите это, чтобы увидеть список портов:

  список плат arduino-cli
  

Затем подключите D1, и на выходе должно получиться что-то вроде:

  Тип порта Название платы FQBN Core
/ dev / ttyAMA0 Последовательный порт неизвестен
/ dev / ttyUSB0 Последовательный порт (USB) Неизвестно
  

Как для Huzzah, так и для D1 я получил неизвестное название платы, но это обе платы ESP8266.Команда board listall покажет все платы и их FQBN, которые вам понадобятся для компиляции и загрузки:

 

пи @ кизил: ~ / альбом для рисования $ arduino-cli список плат
Название платы FQBN
4D Systems gen4 Диапазон IoD esp8266: esp8266: gen4iod
Игровая площадка Adafruit Circuit Arduino: avr: circuitplay32u4cat
Adafruit Feather HUZZAH ESP8266 esp8266: esp8266: ура

.... отрезать .....

LOLIN (WEMOS) D1 R2 и mini esp8266: esp8266: d1_mini
LOLIN (WEMOS) D1 mini Lite esp8266: esp8266: d1_mini_lite
LOLIN (WEMOS) D1 mini Pro esp8266: esp8266: d1_mini_pro
WeMos D1 R1 esp8266: esp8266: d1
  

Оттуда я копирую FQBN.Затем (или, может быть, раньше) я создаю новый эскиз:

.
  pi @ dogwood: ~ / sketchbook $ arduino-cli sketch новый MyFirstSketch
Эскиз создан в: / home / pi / sketchbook / MyFirstSketch
  

Затем отредактируйте файл .ino и скомпилируйте:

  pi @ кизил: ~ / sketchbook $ vim ./MyFirstSketch/MyFirstSketch.ino
пи @ кизил: ~ / альбом $
pi @ кизил: ~ / альбом $ SKETCH = MyFirstSketch
pi @ кизил: ~ / sketchbook $ arduino-cli compile --fqbn esp8266: esp8266: d1_mini $ SKETCH
Sketch использует 257680 байт (24%) места для хранения программ.Максимум 1044464 байта.
Глобальные переменные используют 26572 байта (32%) динамической памяти, оставляя 55348 байтов для локальных переменных. Максимум 81920 байт.
пи @ кизил: ~ / альбом $

  

Затем загрузите:

  pi @ кизил: ~ / sketchbook $ arduino-cli upload -p / dev / ttyUSB0 --fqbn esp8266: esp8266: d1_mini $ SKETCH
Новый последовательный порт не обнаружен.
esptool.py v2.6
2,6
esptool.py v2.6
Последовательный порт / dev / ttyUSB0
Подключение ....
Чип ESP8266EX
Особенности: WiFi
MAC: ec: fa: bc: 61: 0e: 31
Загрузка заглушки...
Выполняется заглушка ...
Заглушка работает ...
Изменение скорости передачи на 460800
Измененный.
Настройка размера флэш-памяти ...
Размер автоматически определяемой вспышки: 4 МБ
Сжато 261840 байт до 191242 ...
Написал 261840 байт (191242 сжатых) при 0x00000000 за 7,4 секунды (эффективные 282,8 кбит / с) ...
Хеш данных подтвержден.

Уход...
Аппаратный сброс через пин RTS ...
  

Мне пришлось сбросить Huzzah после загрузки, но D1 mini справился нормально после загрузки и правильно выполнил мой код.

Чтобы получить серийный монитор, используйте что-то вроде экрана вот так:

  экран / dev / ttyUSB0 115200
  

выгрузка — Можно ли выгрузить скомпилированный ранее бинарный файл?

выгрузка — можно ли выгрузить скомпилированный ранее бинарный файл? — Обмен стеков Arduino
Сеть обмена стеками

Сеть Stack Exchange состоит из 178 сообществ вопросов и ответов, включая Stack Overflow, крупнейшее и пользующееся наибольшим доверием онлайн-сообщество, где разработчики могут учиться, делиться своими знаниями и строить свою карьеру.

Посетить Stack Exchange
  1. 0
  2. +0
  3. Авторизоваться Подписаться

Arduino Stack Exchange — это сайт вопросов и ответов для разработчиков оборудования и программного обеспечения с открытым исходным кодом, совместимого с Arduino.Регистрация займет всего минуту.

Зарегистрируйтесь, чтобы присоединиться к этому сообществу

Кто угодно может задать вопрос

Кто угодно может ответить

Лучшие ответы голосуются и поднимаются наверх

Спросил

Просмотрено 8к раз

У меня есть несколько набросков, которые я все время хочу загрузить в Arduino, но мне не обязательно их перекомпилировать, потому что я ничего не менял с момента последней компиляции.Поскольку компиляция каждый раз занимает минуту или две, это избавит меня от ожидания.

Я вижу, что в среде IDE есть опция «Экспортировать скомпилированный двоичный файл», но, похоже, нет обратной опции загрузки ранее скомпилированного двоичного файла. Есть какой-либо способ сделать это?

Создан 14 фев.

Левша

29744 серебряных знака1111 бронзовых знаков

2

Да! Возможно, вы можете загрузить ранее созданный двоичный файл, используя

AVRDUDE — утилита командной строки, которая фактически используется для загрузки двоичных файлов за IDE arduino.

Вы можете найти AVRDUDE в Папка Arduino> оборудование> инструменты> avr> bin

Это некоторая документация для AVRDUDE http://www.nongnu.org/avrdude/user-manual/avrdude.html

, еще самое простое, что вы можете сделать, — это включить подробный вывод во время загрузки и следить за командой в конце с AVRDUDE в ней вместе с путем к шестнадцатеричному файлу, просто скопируйте, вставьте и запустите ту же команду в CommandLine; ваша задача выполнена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *