Оглавление:
- Шаг 1. Прежде чем начать
- Шаг 2: Обзор
- Шаг 3: загрузка существующих плат
- Шаг 4: Поиск и копирование файлов платы
- Шаг 5: Создание варианта
- Шаг 6: Создайте определение платы
- Шаг 7: Обновите версию платы
- Шаг 8: Создайте файл пакета JSON
- Шаг 9: Последний шаг - установите свою собственную доску
- Шаг 10: Заключение
Видео: Arduino IDE: создание собственных плат: 10 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
За последние шесть месяцев я потратил много времени на портирование различных библиотек на плату Robo HAT MM1, разработанную Robotics Masters. Это привело к тому, что мы многое узнали об этих библиотеках, о том, как они работают за кулисами, и, что наиболее важно, о том, что делать, чтобы добавлять новые доски в будущем.
Это первая из серии статей, которые я сделаю, чтобы помочь другим, кто хочет портировать библиотеки для своих плат. Многие источники информации могут быть расплывчатыми или трудными для понимания посторонними. Я надеюсь «развенчать тайну» и объяснить, как добиться успешного порта для всех.
Сегодня мы рассмотрим платформу Arduino. Он имеет более 700 000 различных вариантов плат по всему миру и является одной из самых популярных платформ для электроники для образования, промышленности и производителей.
Я смог найти лишь очень ограниченные источники информации о том, как это сделать, после многих поисков в Google. Я подумал, что напишу подробно, как я это сделал.
Вот так!
Шаг 1. Прежде чем начать
Прежде чем вы начнете переносить программную библиотеку или прошивку на вашу плату, вы должны знать несколько ключевых моментов об используемой вами технологии и уметь отвечать на вопросы ниже.
- Какой процессор вы используете?
- Какую архитектуру он использует?
- Есть ли у меня доступ к таблице данных на этот микропроцессор?
- Есть ли на рынке аналогичная плата с таким же микропроцессором?
Это очень важно. Это повлияет на многие аспекты вашего подхода к процессу разработки.
Платы Arduino обычно используют ограниченное количество типов процессоров и архитектур. Наиболее распространенным из них является серия ATMEGA, использующая архитектуру AVR (Arduino Uno). Появляются все более новые поколения Arduinos, использующие процессоры SAMD (ARM) и другие более мощные процессоры. Поэтому важно проверить, какой из них вы используете.
Техническое описание микропроцессора абсолютно необходимо для обеспечения ожидаемой реакции платы при компиляции прошивки. Без него вы не сможете установить правильные функции вывода контактов или настроить последовательные порты.
Когда у вас будет вся необходимая информация об используемом процессоре, вы можете начать просматривать программное обеспечение и изменять его для работы с вашей пользовательской платой.
Шаг 2: Обзор
Самое сложное в любом проекте - найти хорошую отправную точку. Это ничем не отличается. Я изо всех сил пытался найти хорошие учебники с достаточной детализацией о том, как создавать собственные платы для Arduino. В большинстве руководств показано, как «добавить настраиваемую доску», но не показано, как «создать настраиваемую доску». Вот краткое изложение того, что происходит.
- Скачать существующие определения платы и скопировать
- Обновление файлов определений (variant.h, varient.cpp)
- Создать запись на доску (board.txt)
- Обновить версию платы (platform.txt)
- Подготовка к установке (json)
- Установка платы в 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
Чтобы установить плату в 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-…
Надеюсь, это помогло вам или вам было весело читать!
Спасибо!
Рекомендуемые:
Создание собственных карт для GPS-навигатора Garmin: 8 шагов (с изображениями)
Создание пользовательских карт для вашего GPS-навигатора Garmin: если у вас есть GPS-навигатор Garmin, предназначенный для пеших прогулок и других мероприятий на свежем воздухе (включая серии GPSMAP, eTrex, Colorado, Dakota, Oregon и Montana, среди некоторых других), вам не нужно соглашайтесь на простые карты, которые были предварительно загружены на него. Э
Создание собственных графиков для данных IOT на Raspberry PI: 3 шага
Создание собственных графиков для моих данных IOT на Raspberry PI: прочтите, если вы хотите иметь возможность создавать свои собственные графики IOT с использованием 7 строк кода. Я хотел создать диаграммы для отображения данных в графическом формате с моих датчиков IOT на веб-странице. Раньше для этого я использовал сторонние сервисы (некоторые па
Создание собственных аппаратных и программных средств Nixie Clock: 7 шагов
Создание собственных аппаратных и программных средств Nixie Clock: в этом руководстве мы будем создавать собственные часы Nixie Tube Clock. Большое спасибо JLC PCB за спонсирование этого проекта. Мы перейдем от создания специальной печатной платы к 3D-печати корпуса и написанию кода программного обеспечения для его запуска. Бесплатная доставка по пихте
Создание собственных световых полос окружающего цвета: 7 шагов (с изображениями)
Создание собственных световых полос окружающего цвета. В этом руководстве рассказывается, как создавать, монтировать и управлять светодиодными световыми полосами, чтобы обеспечить полноцветное окружающее освещение комнаты, а также «окружающее освещение»; стилизованные видео эффекты. Обратите внимание, что в реальной жизни мерцание светодиодов не так заметно, как
Создание собственных системных звуков (только для Windows Vista): 4 шага
Создание собственных системных звуков (только для Windows Vista): в этой инструкции я научу вас превращать песни iTunes в системные звуки