Оглавление:

Arduino IDE: создание собственных плат: 10 шагов
Arduino IDE: создание собственных плат: 10 шагов

Видео: Arduino IDE: создание собственных плат: 10 шагов

Видео: Arduino IDE: создание собственных плат: 10 шагов
Видео: 10 полезных фишек Arduino IDE 2024, Июль
Anonim
Arduino IDE: создание собственных плат
Arduino IDE: создание собственных плат
Arduino IDE: создание собственных плат
Arduino IDE: создание собственных плат
Arduino IDE: создание собственных плат
Arduino IDE: создание собственных плат

За последние шесть месяцев я потратил много времени на портирование различных библиотек на плату Robo HAT MM1, разработанную Robotics Masters. Это привело к тому, что мы многое узнали об этих библиотеках, о том, как они работают за кулисами, и, что наиболее важно, о том, что делать, чтобы добавлять новые доски в будущем.

Это первая из серии статей, которые я сделаю, чтобы помочь другим, кто хочет портировать библиотеки для своих плат. Многие источники информации могут быть расплывчатыми или трудными для понимания посторонними. Я надеюсь «развенчать тайну» и объяснить, как добиться успешного порта для всех.

Сегодня мы рассмотрим платформу Arduino. Он имеет более 700 000 различных вариантов плат по всему миру и является одной из самых популярных платформ для электроники для образования, промышленности и производителей.

Я смог найти лишь очень ограниченные источники информации о том, как это сделать, после многих поисков в Google. Я подумал, что напишу подробно, как я это сделал.

Вот так!

Шаг 1. Прежде чем начать

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

  1. Какой процессор вы используете?
  2. Какую архитектуру он использует?
  3. Есть ли у меня доступ к таблице данных на этот микропроцессор?
  4. Есть ли на рынке аналогичная плата с таким же микропроцессором?

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

Платы Arduino обычно используют ограниченное количество типов процессоров и архитектур. Наиболее распространенным из них является серия ATMEGA, использующая архитектуру AVR (Arduino Uno). Появляются все более новые поколения Arduinos, использующие процессоры SAMD (ARM) и другие более мощные процессоры. Поэтому важно проверить, какой из них вы используете.

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

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

Шаг 2: Обзор

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

  1. Скачать существующие определения платы и скопировать
  2. Обновление файлов определений (variant.h, varient.cpp)
  3. Создать запись на доску (board.txt)
  4. Обновить версию платы (platform.txt)
  5. Подготовка к установке (json)
  6. Установка платы в Arduino IDE

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

В этом руководстве я покажу вам, как создать собственную плату для процессоров SAMD. В частности, SAMD21G18A - это микропроцессор, используемый на плате Robo HAT MM1, которую я портировал.

Я также предполагаю, что у вас уже загружена Arduino IDE 1.8 или более поздняя версия. На момент написания я использовал Arduino 1.8.9.

Шаг 3: загрузка существующих плат

Загрузка существующих плат
Загрузка существующих плат
Загрузка существующих плат
Загрузка существующих плат
Загрузка существующих плат
Загрузка существующих плат

Первый шаг - загрузить ближайший вариант платы Arduino, который соответствует вашей плате. Для плат SAMD это Arduino Zero.

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

К счастью для нас, плата, которую мы хотим загрузить, не нуждается в файле JSON, потому что файл JSON предварительно связан с Arduino IDE, поэтому нам просто нужно установить плату из «Boards Manager».

Для этого перейдите в «Инструменты», затем разверните меню «Доска». В верхней части меню «Доска» находится «Менеджер досок». Щелкните этот пункт меню, чтобы открыть диспетчер плат.

(См. Изображения)

Когда Boards Manager открывается, он просматривает все файлы JSON, которые он хранит в IDE Arduino, а затем загружает настройки из файла. Вы должны увидеть длинный список доступных плат Arduino, которые вы можете установить.

(См. Изображения)

Нас интересует только плата «Arduino SAMD Boards (32-bit ARM Cortex-M0 +)» для этого руководства, но вы можете отклониться и установить плату, которая вам нужна на данном этапе. Найдите и установите плату «Arduino SAMD Boards (32-bit ARM Cortex-M0 +)». Это можно сделать, щелкнув текст из списка, а затем кнопку «Установить» с правой стороны, которая появится после того, как вы нажмете на текст. Установка займет пару минут.

Для получения более подробной информации об установке новых плат: У Adafruit есть отличное руководство, в котором объясняется, как установить их платы Feature M0.

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

Шаг 4: Поиск и копирование файлов платы

Поиск и копирование файлов доски
Поиск и копирование файлов доски
Поиск и копирование файлов доски
Поиск и копирование файлов доски
Поиск и копирование файлов доски
Поиск и копирование файлов доски

Для Windows файлы Board находятся в (не забудьте изменить имя пользователя на свое имя пользователя):

C: / Users / имя пользователя / AppData / Local / Arduino15 / packages

В этой папке вам нужно пойти немного глубже, чтобы добраться до файлов, которые вам нужно скопировать для изменения. Для этого урока мы пойдем и получим файлы платы Arduino Zero, которые будут установлены в (не забудьте изменить имя пользователя на свое имя пользователя):

C: / Users / имя пользователя / AppData / Local / Arduino15 / packages / arduino / hardware / samd

Скопируйте папку с номером версии, расположенную в этом каталоге, в новую папку в папке «Документы» или в папке по вашему выбору. Для целей этого руководства я помещу их в новую папку с именем «custom board» внутри Documents.

Папка содержит несколько папок и каталогов. Те, которые мы будем использовать, указаны в таблице на скриншоте.

Шаг 5: Создание варианта

Создание варианта
Создание варианта
Создание варианта
Создание варианта
Создание варианта
Создание варианта
Создание варианта
Создание варианта

Теперь мы готовы приступить к созданию пользовательской записи на доске. В этом уроке я буду использовать Robo HAT MM1 в качестве примера. Как упоминалось ранее, это плата на базе SAMD, которая наиболее близка к сборке Arduino Zero.

Мы начнем с того, что зайдем в папку вариантов и скопируем папку arduino_zero, расположенную там. Мы переименуем новый вариант платы в robohatmm1. Вы можете называть свое как хотите.

(См. Изображение)

Внутри папки robohatmm1 будут две булавки, которые нам понадобятся для начала редактирования: variant.cpp и variant.h. Откройте их обоих.

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

(См. Снимок экрана с двумя файлами)

Таким образом, большинство ваших изменений будет происходить в обоих этих файлах, но вы должны убедиться, что если вы измените порядок контактов в вариантах options.cpp - вы должны будете изменить ссылки в файле заголовка (options.h). Для Robo HAT MM1 мне нужно было изменить только некоторые контакты и функции. Это было сделано в вариантах.h. Я добавил несколько новых контактов PWM, поскольку SAMD21 может обрабатывать 12 каналов PWM. Я также добавил несколько имен для сервоприводов, сигналов (вместо ADC / Digital) и настраиваемое сопоставление с нужными функциями, такими как SPI, UART и I2C.

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

Variants.cpp - очень мощный и важный файл. Он выполняет всю тяжелую работу по настройке контактов в соответствии с настройками оборудования. Самый простой способ объяснить это - привести пример и объяснение каждой части.

(См. Таблицу на снимке экрана)

Пример (выдержка из options.cpp)

{PORTA, 22, PIO_SERCOM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE}, // SDA

Это первый вывод в массиве sizes.cpp для Robo HAT MM1. Таблица из технического описания представлена в виде изображения (серая таблица).

(См. Изображения)

Этот конкретный вывод используется для функции вывода данных I2C. Взглянув на таблицу, мы видим, что этот вывод можно использовать как вывод I2C SDA (хорошее начало!). Контакт называется «PA22», что является сокращением от PORTA на контакте 22. Сразу мы можем установить ПОРТ и номер контакта для этого контакта.

Следующее, что нам нужно сделать, это установить контакт как порт последовательной связи. Вывод имеет последовательную связь, доступную через функцию C (PIO_SERCOM) с использованием SERCOM 3 и D с использованием SERCOM5 (PIO_SERCOM_ALT). В Robo HAT MM1 мы используем SERCOM3 для связи I2C. Это функция C; ака. PIO_SERCOM для вариантов.cpp.

Поскольку мы планируем использовать этот вывод только как I2C SDA, нет необходимости устанавливать какие-либо другие функции. Все они могут быть установлены как варианты «Нет» или «Нет» из предыдущей таблицы. Однако, если бы мы действительно хотели использовать другие функции, мы могли бы просмотреть таблицу и поместить их все в нужные места. Все это есть в даташите.

Изменение файлов вариантов может занять некоторое время. Будьте осторожны и всегда тройной чек.

Шаг 6: Создайте определение платы

Создать определение платы
Создать определение платы

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

Начиная сboards.txt.

(См. Изображение)

Вы захотите скопировать и вставить уже существующее определение платы. Я бы снова порекомендовал Arduino Zero.

Для простоты измените только имя платы (первая строка), usb_product, usb_manufacturer и вариант (robohat). Позже вы можете настроить другие аргументы в соответствии с вашими потребностями - например, пользовательский загрузчик или различные USB-идентификаторы / идентификаторы для идентификации вашей платы.

Вариант платы должен совпадать с именем, присвоенным папке, созданной в начале. В этом уроке я назвал его «robohatmm1».

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

Это все для файлаboards.txt, если вы не хотите вносить дополнительные изменения, упомянутые выше, позже.

Шаг 7: Обновите версию платы

Обновить версию платы
Обновить версию платы

В platform.txt измените имя на имя вашей настраиваемой доски. Также измените номер версии. Помните, что вы это установили, нам это понадобится позже.

Шаг 8: Создайте файл пакета JSON

Создать файл пакета JSON
Создать файл пакета JSON
Создать файл пакета JSON
Создать файл пакета JSON

Чтобы установить плату в Arduino IDE, вам необходимо создать файл JSON, который вы будете импортировать. Файл JSON сообщает Arduino IDE, где взять файлы для установки платы, какие дополнительные пакеты необходимы и несколько других битов метаданных.

Очень важно сохранить этот файл вне папки, с которой мы только что работали.

Большую часть файла можно скопировать и вставить в свой. Вам нужно будет только изменить раздел «доски» и другие метаданные в верхней части файла. См. Снимок экрана, чтобы узнать, что нужно обновить.

(См. Изображение)

  • Красный раздел: это метаданные, которые пользователи могут использовать для поиска помощи. Это не имеет большого технического значения.
  • Синий раздел: все это важно. Они отображаются в среде Arduino IDE. Имя, архитектура и версия будут показаны всем, кто пытается установить пакет. Сюда нужно поместить номер версии из platform.txt. Вторая синяя секция - это список плат, входящих в комплект. У вас может быть несколько досок.
  • Зеленый раздел: этот раздел требует дальнейшего пояснения.

(См. Таблицу в изображениях)

После того, как вы создали zip-файл, получили контрольную сумму и размер zip-файла, теперь вы можете загрузить zip-файл в определенное место. Вам нужно будет ввести этот URL в поле «url». Если имя или какие-либо из приведенных выше данных неверны, ваша пользовательская плата не будет установлена.

Не забудьте также загрузить файл package_boardname_index.json в общедоступное место в Интернете. GitHub - хороший вариант.

Файл пользовательской платы Robo HAT MM1 можно найти здесь.

Шаг 9: Последний шаг - установите свою собственную доску

Последний шаг - установите собственную доску!
Последний шаг - установите собственную доску!
Последний шаг - установите собственную доску!
Последний шаг - установите собственную доску!

Все идет хорошо, теперь вы можете включить свой JSON-файл в Arduino IDE и установить свою собственную плату.

Включить файл JSON очень просто! В Arduino IDE - просто перейдите в «Файл»> «Настройки», скопируйте и вставьте местоположение (URL-адрес) вашего package_boardname_index.json в раздел «URL-адреса диспетчера дополнительных плат» в нижней части меню «Настройки».

(См. Изображение)

Затем нажмите ОК.

Если вы забыли, выполните приведенные выше инструкции по установке новых плат. Не забудьте на этот раз поискать свою индивидуальную доску!

(См. Изображение)

Для получения более подробной информации об установке новых плат: У Adafruit есть отличное руководство, в котором объясняется, как установить их платы Feature M0.

Шаг 10: Заключение

Заключение
Заключение
Заключение
Заключение

Было весело создавать собственные платы Arduino. Мне еще есть над чем поэкспериментировать в будущем (добавление дополнительных последовательных портов), но это был отличный опыт обучения!

Обязательно ознакомьтесь с кампанией Crowd Supply. Он заканчивается 11 июня 2019 года.

www.crowdsupply.com/robotics-masters/robo-…

Надеюсь, это помогло вам или вам было весело читать!

Спасибо!

Рекомендуемые: