Начало работы с Arduino Due

Для подключения Arduino Due к компьютеру понадобится USB-кабель типа Micro-B. USB-кабель необходим как для питания, так и для прошивки устройства.

Один конец кабеля с разъемом micro-USB вставьте в разъем для программирования Arduino Due (находится возле разъема питания). Для прошивки скетча необходимо в среде программирования Ардуино IDE из меню Tools > Board выбрать пункт Arduino Due (Programming port), а также из меню Tools > Serial Port выбрать соответствующий последовательный порт.

Для обсуждения Arduino Due есть специальный форум.

Основные отличия от плат на основе микроконтроллеров ATMEGA

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

Печатная плата Due похожа на модель Arduino Mega 2560.

Напряжение

Микроконтроллер в составе Arduino Due работает от 3.3В, что влечет за собой некоторые ограничения. В частности, напряжение, используемое для питания подключаемых датчиков или управления исполнительными устройствами, так же не может превышать 3.3В. В случае подачи большего напряжения (например, 5В, характерных для большинства плат Ардуино) Arduino Due выйдет из строя.

Устройство может быть запитано, как от USB, так и от разъема питания. Во втором случае, напряжение питания должно лежать в диапазоне от 7В до 12В.

В Arduino Due есть импульсный стабилизатор напряжения с высоким КПД, соответствующий требованиям, предъявляемым USB-хост устройствам. Благодаря этому, Ардуино может служить источником питания для какого-либо USB-гаджета, подключаемого к штатному USB-порту, выполняющего роль хоста. Ардуино может работать в качестве USB-хоста только при питании от внешнего источника.

Последовательные порты на Arduino Due

В Arduino Due есть два USB-порта. Штатный USB-порт (обозначен на рисунке, как Native) соединен непосредственно с процессором SAM3X и поддерживает последовательную CDC-связь через объект SerialUSB. Второй USB-порт - это порт для программирования (обозначен на рисунке, как Programming port). Он подключен к контроллеру ATMEL 16U2, выступающего в роли USB-UART преобразователя. По умолчанию для загрузки программ и взаимодействия с Ардуино используется порт для программирования.

Преобразователь USB-UART порта для программирования соединен с первым UART`ом контроллера SAM3X. Поэтому программно взаимодействовать с эти портом можно через объект "Serial".

Штатный USB-порт подключен непосредственно к выводам контроллера SAM3X, отвечающим за функцию USB-хоста. Штатный USB-порт позволяет использовать Arduino Due как в качестве внешнего периферийного устройства компьютера (например, USB-мыши или клавиатуры), так и в роли USB-хоста, к которому можно подключать различные устройства (такие, как мышь, клавиатура или Android-смартфон, например). А с помощью объекта "SerialUSB", описанного в языке программирования Ардуино, этот же порт можно использовать и как виртуальный последовательный порт.

Автоматический (программный) сброс

Микроконтроллер SAM3X отличается от AVR-микроконтроллеров тем, что перед перепрошивкой его флеш-памяти, ее содержимое сперва необходимо стереть. Чтобы сделать это вручную, необходимо где-то на секунду зажать кнопку очистки памяти, нажать кнопку Upload в среде Ардуино, а затем нажать кнопку сброса.

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

Штатный порт

Процедура программной очистки (т.н. "soft-erase") автоматически активируется при закрытия порта, открытого на скорости 1200 бит/с. При это очищается флеш-память контроллера, устройство сбрасывается и стартует загрузчик. Если по какой-либо причине во время этого в процессоре произойдет сбой, то вероятнее всего soft-erase не произойдет, поскольку эта процедура выполняется программно самим контроллером. 

Открытие и закрытие штатного порта на скоростях, отличных от 1200 бод, не приведет к перезагрузке контроллера SAM3X. Для того, чтобы использовать программу Serial Monitor для наблюдения данных, отправляемых вашим скетчем, необходимо добавить несколько строк кода в программный блок setup(). Такой фрагмент заставит контроллер SAM3X дождаться открытия порта SerialUSB перед выполнением основной программы:

while (!Serial) ;

Нажатие кнопки сброса на Arduino Due приводит не только к перезагрузке SAM3X, но и к сбросу USB-соединения. В случае, если программа Serial Monitor открыта, то после разрыва соединения необходимо закрыть и заново открыть ее для восстановления сеанса связи.

Порт для программирования

USB-порт для программирования взаимодействует с USB-UART преобразователем Ардуино, который в свою очередь соединен с первым UART`ом микроконтроллера SAM3X (а именно, с выводами RX0 и TX0). Причем микросхема USB-UART преобразователя управляет также выводами Reset и Erase главного микроконтроллера. При открытии последовательного порта, USB-UART преобразователь перед тем, как обмениваться данными с UART`ом контроллера, формирует на выводах Erase и Reset активный уровень сигнала, что приводит к очистке памяти SAM3X. Этот способ более надежен, чем "программная очистка" при использовании штатного USB-порта, и работает даже в случае зависания процессора. 

Для программного взаимодействия с этим портом в среде разработки Ардуино используйте объект "Serial". Аналогично построена работа с USB-портом и на Arduino Uno, поэтому все программы, написанные для Uno, будут так же работать и на Due. Кроме того, порт для программирования Arduino Due ведет себя так же, как и последовательный порт Uno, в том плане, что USB-UART преобразователь в составе устройства сбрасывает главный контроллер при каждом открытии последовательного порта. 

Нажатие кнопки сброса во время использования порта для программирования не разрывает USB-соединение с компьютером, поскольку сбрасывается только главный контроллер SAM3X.

USB-хост

Arduino Due может работать в качестве USB-хоста для периферийных устройств, подключаемых к порту SerialUSB. Для получения дополнительной информации и примеров кода, см. справку по USB-хост.

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

Разрядность АЦП и ШИМ

В Arduino Due есть возможность изменять разрядность для считывания и формирования аналоговых величин (которые, по умолчанию, равны 10 и 8 битам, соответственно). Максимальная разрядность АЦП и ШИМ составляет 12 бит. Для получения дополнительной информации см. описание функций analogWriteResolution() и analogReadResolution().

Расширенные возможности SPI

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

Установка драйверов для Arduino Due

OSX

  • В операционной системе OSX установка драйверов не требуется. В зависимости от установленной версии ОС, при подключении устройства к компьютеру должно появится диалоговое окно, предлагающее открыть Сетевые настройки (“Network Preferences”). Кликните "Network Preferences...", дождитесь появления окна и нажмите кнопку "Apply". Arduino Due появится в системе под статусом "Not Configured", но при этом будет работать нормально. Теперь можно выйти из системных настроек.

Windows (протестировано на XP и 7)

  • Скачайте архив программного обеспечения Ардуино для Windows. После завершения закачки, распакуйте скачанных архив. Убедитесь в том, что структура папок при распаковке не нарушилась.
  • Подключите Arduino Due к компьютеру, воткнув один конец USB-кабеля в порт для программирования Ардуино.
  • Windows должна начать процесс установки драйверов, который должен завершиться неудачей, поскольку система не знает где искать драйвера. Соответственно, вам нужно указать ей место поиска.
  • Зайдите в Пуск, откройте Панель управления.
  • В Панели управления перейдите в раздел Система и безопасность. Далее щелкните по пункту Система и откройте Диспетчер устройств.
  • Найдите раздел Порты (COM & LPT). В нем вы увидите открытый порт под именем "Arduino Due Prog. Port"
  • Щелкните правой кнопкой по пункту "Arduino UNO (COMxx)" и выберите "Обновить драйвер". В открывшемся окне выберите пункт "Выполнить поиск драйверов на этом компьютере"
  • Перейдите к той папке, в которую вы распаковали скачанный архив с Ардуино. Отыщите и выберите папку “Drivers”, расположенную в главной директории Arduino (а не в под-директории “FTDI USB Drivers”). Нажмите “OK” и “Далее”.
  • Если возникнет сообщение о том, что устанавливаемое оборудование не проходило тестирование в Windows Logo, жмите на кнопку "Все равно продолжить".
  • После этого Windows завершит установку драйверов.
  • Вы установили драйвер Ардуино на свой компьютер. В Диспетчере устройств среди перечисленных портов теперь должно быть что-то вроде этого: "Arduino Due Programming Port (COM4)

Linux

  • На Linux установка драйверов не требуется вообще.

Прошивка программы в Arduino Due

С точки зрения пользователя, процесс прошивки программ в Arduino Due осуществляется точно так же, как и в других моделях Ардуино. Несмотря на то, что для прошивки скетчей можно использовать любой USB-порт Due, все же рекомендуется задействовать для этой цели порт для программирования.

Для прошивки своей программы через порт для программирования, сделайте следующее:

  • Подключите устройство к компьютеру, подсоединив USB-кабель к порту для программирования Ардуино (этот порт расположен ближе к разъему питания).
  • Откройте среду разработки Ардуино.
  • В меню "Tools" выберите пункт "Serial Port" и укажите последовательный порт, ассоциированный в системе с Arduino Due
  • Из меню "Tools > Boards" выберите пункт "Arduino Due (Programming port)"

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

Для получения дополнительной информации см. описание платы Arduino Due