Доброго времени суток!
Уже довольно давно на досуге я занимаюсь всяческими электронными безделушками. Начинал с программирования тинек и мег в IARе, пока не понял что c Arduino дела обстоят намного проще. И вот совсем недавно обнаружил на просторах китайских магазинов копию Arduino DUE по цене чуть дороже небезызвестной Mega2560.

Для тех, кто не знает что это и с чем его едят

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

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

Микроконтроллер на плате программируется при помощи языка Arduino (основан на языке Wiring) и среды разработки Arduino (основана на среде Processing). Проекты устройств, основанные на Arduino, могут работать самостоятельно, либо же взаимодействовать с программным обеспечением на компьютере (напр.: Flash, Processing, MaxMSP). Платы могут быть собраны пользователем самостоятельно или куплены в сборе. Программное обеспечение доступно для бесплатного скачивания. Исходные чертежи схем (файлы CAD) являются общедоступными, пользователи могут применять их по своему усмотрению.
© arduino.ru


Начинал свое знакомство с arduino я с покупки китайского аналога Mega2560. По началу игрался, подключал дисплеи, датчики, сервомоторы, пока как то раз не понадобилось по работе сделать девайс, считывающий напряжения с токового шунта и терморезистора, преобразующий все это дело в нормальный вид и выводящий на дисплей. Вот тут то и пригодилась ардуина, за 5 минут был написан скетч, подключен дисплей и плата переехала на работу. Конечно получилось из пушки по воробьям, но на тот момент это было самое быстрое решение. Потом я заказал с десяток ProMini по 100 рублей и хотел перенести на одну из них скетч, но как известно, нет ничего более постоянного чем временное и моя лень так и не дала мне этого сделать. Дома же пришлось довольствоваться сторублевыми платами, благо кроме количества выводов, памяти, и отсутствия USB-UART преобразователя они ничем особо от меги и не отличались.

Но выводов стало нехватать и однажды бродя по просторам банггуда я наткнулся на Arduino DUE. Цена ее была чуть выше чем на Mega2560 и я незамедлительно ее купил. Основным отличием ее от других ардуин является то, что внутри у нее 32-х битный ARM микроконтроллер архитектуры Cortex-M3 работающий на частоте 84 МГц.

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

Вид спереди:


Пайка выполнена аккуратно, но если приглядеться, заметны небольшие изъяны шелкографии.
Как видно из фото данная плата обладает двумя разъемами microUSB. Один необходим для программирования, а через второй плата может общаться с внешним миром: читать флешки, эмулировать клавиатуру, мышь (сам пока этого не проверял). Также есть хитрая кнопка erase, нажатие на которую стирает флеш микроконтроллера.

Вид сзади:

Технические характеристики платы (взято с офф. сайта):
Микроконтроллер: AT91SAM3X8E
Рабочее напряжение: 3,3 В
Входное напряжение (рекомендуемое): 7-12 В
Входное напряжение (предельное): 6-20 В
Цифровые Входы/Выходы: 54 (на 12 из которых реализуется выход ШИМ)
Аналоговые входы: 12
Аналоговые выходы: 2 (ЦАП)
Общий выходной постоянный ток на всех входах/выходах: 50 мА
Постоянный ток через вывод 3,3 В: 800 мА
Постоянный ток через вывод 5 В: 800 мА
Флеш-память: 512 КБ доступно всего для пользовательских приложений
ОЗУ: 96 КБ (два банка: 64 КБ и 32 КБ)
Тактовая частота: 84 МГц

Все стандартные интерфейсы, такие как SPI, 1Wire, UART присутствуют.
Более подробно можно почитать

А вот и сам МК покрупнее:

За его программирование отвечает 16-я мега с кварцем на 16 МГц:

А тактируется он внешним кварцем:


Как подсказал комрад Angrim, 84 МГц получаются умножением на 7 исходных 12-ти.

Важной особенностью является то, что в отличие от других плат Arduino, Arduino Due работает от 3,3 В. Максимальное напряжение, которое выдерживают вход/выходы составляет 3,3 В.
В принципе большинство датчиков могут работать от 3,3 вольт, но некоторые шилды работать не будут.
В прочем всегда можно докупить вот такие штуки: благо 5V на плате имеется.

Для написания скетчей и их заливки нужно скачать Arduino 1.5.8 BETA, с поддержкой DUE. Однако стоит отметить что не все библиотеки написанные под другие версии ардуино нормально работают с DUE. У меня библиотека работы с датчиком BMP180 нормально работавшая с мегой, выдавала нереальные данные, пришлось качать библиотеку от Adafruit. Также заметил что не всегда после подачи питания МК начинает исполнение программы, иногда нужно жать reset. Чей это глюк, бета версии IDE или китайской платы я не знаю.

Тесты

Сначала для проверки я залил скетч, опрашивающий датчик BMP180 и записывающий данные с него (давление и температуру) на флешку.


Все заработало, правда, как я писал выше, пришлось использовать библиотеку Adafruit.

Результат

Ну и конечно, как же не воспользоваться встроенным ЦАПом!
Для этого заливаем пример SimpleAudioPlayer, подключаем флешку с залитым waw файлом test.waw, а вывод DAC0 вместе с землей подключаем к усилителю. В моем случае в роли усилителя был портативный динамик, полученный по акции от Pringles. Выводы просто примотал к джеку двумя резисторами по 10 кОм т.к. на прямую динамик жестко перегружался.

Радуемся музыке из колонки!


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

Ну и в качестве итога рассмотрим плюсы и минусы данной ардуины
Плюсы:
- Низкая стоимость
- 32 битный контроллер и частота 84 МГц.
- Наличие ЦАП 12 бит 1Msps
- 12 битные АЦП
- Собственный USB

Минусы:
- 3.3V рабочее напряжение (несовместимость с некоторыми шилдами/устройствами)
- Несовместимость с некоторыми библиотеками.
- Иногда после подачи питания нужно нажать reset чтобы программа запустилась

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

Всем спасибо за внимание!

Планирую купить +59 Добавить в избранное Обзор понравился +51 +107
Общие сведения

Arduino Due — плата микроконтроллера на базе процессора Atmel SAM3X8E ARM Cortex-M3 (описание). Это первая плата Arduino на основе 32-битного микроконтроллера с ARM ядром. На ней имеется 54 цифровых вход/выхода (из них 12 можно задействовать под выходы ШИМ), 12 аналоговых входов, 4 UARTа (аппаратных последовательных порта), a генератор тактовой частоты 84 МГц, связь по USB с поддержкой OTG, 2 ЦАП (цифро-аналоговых преобразователя), 2 TWI, разъем питания, разъем SPI, разъем JTAG, кнопка сброса и кнопка стирания.

Внимание! В отличие от других плат Arduino, Arduino Due работает от 3,3 В. Максимальное напряжение, которое выдерживают вход/выходы составляет 3,3 В. Подав более высокое напряжение, например, 5 В, на выводы Arduino Due, можно повредить плату.

Плата содержит все, что необходимо для поддержки микроконтроллера. Чтобы начать работу с ней, достаточно просто подключить её к компьютеру кабелем микро-USB, либо подать питание с AC/DC преобразователя или батарейки. Due совместим со всеми платами расширения Arduino, работающими от 3,3 В, и с цоколевкой Arduino 1.0.

Расположение выводов Due повторяет цоколевку Arduino 1.0:

  • TWI: Выводы SDA и SCL расположены рядом с выводом AREF.
  • Вывод IOREF, который позволяет с помощью правильной конфигурации адаптировать присоединенную плату расширения к напряжению, выдаваемому Arduino. Благодаря этому платы расширения могут быть совместимы и с 3,3-вольтовыми платами типа Due и с платами на базе AVR, работающими от 5 В.
  • Неподключенные выводы, зарезервированные для использования в будущем.

Преимущества ядра ARM

На Due установлено 32-битное ARM ядро, превосходящее по производительности обычные 8-битные микроконтроллеры. Наиболее значимые отличия:

32-битное ядро, позволяющее выполнять операции с данными шириной 4 байта за 1 такт (более подробную информацию смотри на странице int type).

  • частота процессора (CPU) 84 МГц.
  • 96 КБ ОЗУ.
  • 512 КБ флеш-памяти для хранения программ.
  • контроллер DMA, который разгружает центральный процессор от выполнения интенсивных операций с памятью.
Схема, исходные данные и расположение выводов
Характеристики

Микроконтроллер

AT91SAM3X8E

Рабочее напряжение

Входное напряжение (предельное)

Цифровые Входы/Выходы

Аналоговые входы

12
Аналоговые выходы 2 (ЦАП)
Общий выходной постоянный ток
на всех входах/выходах
Постоянный ток через вывод 3,3 В 800 мА
Постоянный ток через вывод 5 В 800 мА
Флеш-память 512 КБ доступно всего для пользовательских приложений
ОЗУ 96 КБ (два банка: 64 КБ и 32 КБ)
Тактовая частота 84 МГц
Питание

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

Внешним (не USB) источником питания может быть либо AC/DC преобразователь («wall wart» - адаптер в одном корпусе с вилкой), либо батарея. Адаптер подключается к разъему питания платы 2,1 мм штепсельной вилкой с центральным положительным контактом. Выводы батареи подключаются к контактам Gnd и Vin разъема POWER. Плата может функционировать при внешнем питании от 6 до 20 В. Но если напряжение питания опускается ниже 7 В, на выводе 5 В может оказаться меньше пяти вольт, и плата будет работать нестабильно. Если же подается напряжение более 12 В, может перегреться стабилизатор напряжения, что приведет к повреждению платы. Рекомендуемый диапазон напряжений - от 7 до 12 В.

Ниже перечислены выводы питания:

  • VIN . Это входное напряжение для платы Arduino, когда она питается от внешнего источника питания (в противоположность 5 вольтам, поступающим через USB соединение или от иного регулируемого источника питания). Напряжение питания может подаваться на этот вывод, или сниматься с этого вывода в случае питания через разъем питания.
  • 5V . Данный вывод служит выходом регулируемого напряжения 5 В со встроенного стабилизатора на плате. Сама плата может питаться через разъем питания постоянного тока (7-12 В), либо через USB соединитель (5 В), либо через вывод VIN на плате (7-12V). Питающее напряжение через выводы 5 В и 3,3 В подается в обход стабилизатора и может повредить вашу плату. Мы не советуем так делать.
  • 3.3V . Питание 3,3 В, вырабатываемое встроенным стабилизатором. Максимальный выходной ток 800 мА. Стабилизатор также обеспечивает питание микроконтроллера SAM3X.
  • GND. Земляные выводы.
  • IOREF . Данный вывод платы Arduino обеспечивает опорное напряжение, при котором работает микроконтроллер. Верно сконфигурированная плата расширения может считать напряжение на выводе IOREF и выбрать соответствующий источник питания, или разрешить использование выходных преобразователей напряжения для работы с 5 В или 3,3 В.
Память

Флеш-память SAM3X составляет 512 КБ (2 блока по 256 КБ) для хранения программ. Загрузчик (бутлодер) записывается Atmel при производстве и хранится в специально отведенном для него ПЗУ. Доступный объем ОЗУ составляет 96 КБ в двух смежных банках - 64 КБ и 32 КБ. Вся доступная память (флеш-память, ОЗУ и ПЗУ) может адресоваться напрямую как плоское адресное пространство.

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

Входы и Выходы
  • Цифровые входы/выходы: выводы с 0 по 53
    Каждый из 54 цифровых выводов Due может использоваться в качестве входа или выхода, с помощью функций pinMode() , digitalWrite() и digitalRead() . Выводы работают от 3,3 В. Каждый вывод может выдавать (как источник) ток 3 мА или 15 мА, в зависимости от вывода, или получать (как приемник) ток 6 мА или 9 мА, в засимости от вывода. На них также имеются внутренние нагрузочные резисторы (по умолчанию они отключены) номиналом 100 кОм. Кроме этого, некоторым выводам назначены специализированные функции:
  • Последовательная линия: 0 (RX) и 1 (TX)
  • Последовательная линия 1: 19 (RX) и 18 (TX)
  • Последовательная линия 2: 17 (RX) и 16 (TX)
  • Последовательная линия 3: 15 (RX) и 14 (TX)
    Эти выводы используются для приема (RX) и передачи (TX) последовательных данных TTL (с уровнем 3,3 В). Выводы 0 и 1 соединены с соответствующими выводами последовательного контроллера ATmega16U2 USB-to-TTL.
  • ШИМ : выводы с 2 по 13
    На них реализуется 8-битный выход ШИМ с помощью функции analogWrite() . Разрешение ШИМ можно менять, используя функцию analogWriteResolution() .
  • SPI : разъем SPI (разъем ICSP на других платах Arduino)
    Данные выводы служат для связи по SPI с использованием библиотеки SPI . Сигналы SPI выведены на центральный 6-контактный разъем, который физически совместим с Uno, Leonardo и Mega2560. Разъем SPI можно использовать только для связи с другими устройствами SPI, но не для программирования SAM3X по технологии внутрисхемного последовательного программирования (ICSP). SPI на Due также имеет расширенные функции, доступные при использовании Расширенных методов SPI для Due .
  • CAN : CANRX и CANTX
    На этих выводах поддерживается протокол связи CAN, но пока его не поддерживают программные интерфейсы (API) Arduino.
  • " L " LED : 13
    Встроенный светодиод, подключенный к цифровому выводу 13. При высоком уровне сигнала на данном выводе, светодиод включается, при низком - выключается. Возможно также убавить яркость светодиода, поскольку вывод 13 одновременно является выходом ШИМ.
  • TWI 1: 20 (SDA) и 21 (SCL)
  • TWI 2: SDA 1 и SCL 1
    На данных выводах с использованием библиотеки Wire поддерживается связь по TWI.
  • Аналоговые входы: выводы с A 0 по A 11
    Плата Arduino Due имеет 12 аналоговых входов, каждый из которых может обеспечить разрешение 12 бит (т.е. 4096 различных значений). По умолчанию установлено разрешение 10 бит для совместимости с другими платами Arduino. Разрешение АЦП можно менять при помощи функции analogReadResolution() . Аналоговые ходы Due производят измерения от уровня земли до максимального значения 3,3 В. Приложение к этим выводам напряжения свыше 3,3 В вызовет повреждение кристалла SAM3X. Функция analogReference() на Due игнорируется.
    Вывод AREF подключен к аналоговому выводу опорного напряжения SAM3X через резисторный мост. Для активации вывода AREF необходимо отпаять с печатной платы резистор BR1.
  • DAC 1 и DAC 2
    На выводах ЦАП DAC 1 и DAC 2 предоставляются достоверные аналоговые выходы с 12-битным разрешением (4096 уровней) при помощи функции analogWrite() . Данные выводы можно использовать для создания аудиовыхода, используя при этом библиотеку Audio .

Другие выводы:

  • AREF
    Опорное напряжение для аналоговых входов. Используется с функцией analogReference ().
  • Reset
  • По низкому уровню на этой линии происходит сброс микроконтроллера. Типичное применение вывода Reset - добавление кнопки сброса на плату расширения, которая перекрывает эту кнопку на микроконтроллере.
Связь

В Arduino Due есть ряд средств для взаимодействия с компьютером, платами Arduino и другими микроконтроллерами, а также различными устройствами, такими как телефоны, планшеты, фотокамеры и т.п. SAM3X имеет один аппаратный UART и три аппаратных USARTа для последовательной связи TTL-уровня (3,3 В).

Порт программирования соединен с ATmega16U2 , предоставляющей виртуальный COM порт для программ на подключенном компьютере. (Для определения этого устройства компьютеру с ОС Windows потребуется файл.inf, на машинах же с OSX и Linux плата автоматически будет распознана как COM порт). Чип 16U2 также соединен с аппаратным UARTом SAM3X. Последовательная шина на выводах RX0 и TX0 предоставляет преобразование Serial-to-USB для программирования платы через микроконтроллер ATmega16U2. В программное обеспечение Arduino входит монитор последовательной шины, который дает плате возможность отправлять и принимать простые текстовые сообщения. Светодиоды RX и TX на плате будут мигать, когда идет передача данных через кристалл ATmega16U2 и через USB подключение к компьютеру (но не во время последовательного обмена по выводам 0 и 1).

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

Программирование

Arduino Due можно запрограммировать с помощью программных средств Arduino (скачать). Более детальная информация содержится в .

отличается от таковой для микроконтроллеров AVR, находящихся на других платах Arduino, поскольку необходимо стереть флеш-память перед тем как перепрограммировать её. Загрузка в кристалл управляется из ПЗУ контроллера SAM3X и запускается, только когда флеш-память кристалла пуста.


Плату можно программировать через оба USB порта, хотя рекомендуется использовать порт программирования, в связи с тем, что он поддерживает стирание кристалла:

  • Порт программирования : Для использования этого порта выберите в Arduino IDE в качестве вашей платы "Arduino Due (Programming Port)". Подключите порт программирования платы Due (ближайший к разъему питания постоянного тока) к вашему компьютеру. Порт программирования использует микросхему 16U2 в качестве преобразователя USB-to-serial, соединенный с первым UARTом контроллера SAM3X (RX0 и TX0). Два вывода 16U2 подключены к выводам Reset и Erase SAM3X. Открытие и закрытие порта программирования, подключенного на скорости передачи 1200 бит в секунду, запускает процедуру «аппаратного стирания» чипа SAM3X, активирование выводов Erase и Reset на SAM3X перед установлением связи с UART. Это рекомендуемый порт для программирования Due. Аппаратное стирание более надежно, чем «программное стирание», которое происходит на собственном USB порте, и будет работать даже в случае повреждения главного микропроцессора.
  • Собственный порт : Чтобы использовать этот порт, выберите в Arduino IDE тип вашей платы "Arduino Due (Native USB Port)". Собственный USB порт подсоединен напрямую к SAM3X. Подключите собственный USB порт Arduino Due (ближний к кнопке Reset) к вашему компьютеру. Открытие и закрытие собственного порта при скорости передачи 1200 бит в секунду запускает процедуру «программного стирания»: флеш-память стирается и плата перезапускается с помощью загрузчика. Если главный микроконтроллер по какой-либо причине поврежден, то, вероятно, программное стирание не будет работать, так как эта процедура на SAM3X происходит полностью программно. Открытие и закрытие собственного порта на других скоростях передачи не вызовет сброса SAM3X.

В отличие от других плат Arduino, использующих для загрузки avrdude, Due полагается на bossac.

Токовая защита разъема USB

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

Физические характеристики и совместимость с платами расширения

Максимальная длина печатной платы Arduino Due равна 4 дюйма, а ширина - 2,1 дюйма, без учета USB соединителей и разъема питания, которые выступают за приведенные габаритные размеры. Три отверстия под винты позволяют закрепить плату на поверхности или в корпусе. Обратите внимание, что расстояние между цифровыми выводами 7 и 8 составляет 160 мил (0.16", 4,064 мм), не кратно промежуткам в 100 мил (2,54 мм) между остальными выводами.

Arduino Due сделан совместимым с большинством плат расширения, разработанных для Uno, Diecimila или Duemilanove. Цифровые выводы с 0 по 13 (и соседние выводы AREF и GND), аналоговые входы с 0 по 5, разъем питания, разъем "ICSP" (SPI) расположены одинаково на всех платах. Более того, основной UART (последовательный порт) находится на тех же выводах (0 и 1).
Пожалуйста, обратите внимание, что шина I 2 C расположена в Arduino Due на других выводах (20 и 21), не так как в Duemilanove / Diecimila (аналоговые входы 4 и 5).

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

Она взаимодействует с большинством устройств внешнего мира через:

  • датчики,
  • двигатели,
  • светодиоды,
  • динамики.

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

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

В платах Arduino используются либо микроконтроллеры Atmel AVR , либо его ближайший собрат микроконтроллер Atmel ARM, а в некоторых из версий имеется интерфейс USB. Обладают шестью или более выводами аналоговых входов и четырнадцатью или более выводами цифровых входов и выходов, использующихся для возможности подключения к микроконтроллеру датчиков, различных приводов и иных периферийных схем. Стоимость платы Arduino в зависит от набора функций - от семи до сорока пяти долларов.

Программное обеспечение, применяемое для программирования Arduino, представлено разработкой Arduino IDE. IDE - Java приложение, работающее на множестве разных платформ, включая столь известные системы как PC, Mac и Linux. Разрабатывалась для начинающих, не знакомых со всеми тонкостями программированием. Включает редактор, компилятор и загрузчик. В IDE предусмотрены библиотеки кодов для применения периферии, последовательных портов и разных типов экранов. Программы для Arduino называют «скетчами».

Большинство плат Нано Arduino подключается к компьютеру при помощи USB кабеля. Это соединение позволит загрузить скетчи на вашу плату Arduino.

Преимущества и недостатки Ардуино Нано

  • Цена. Arduino Nano возможно купить менее чем за 1000 руб.
  • Кроссплатформенность. Программное обеспечение Arduino осуществляет работу на большинстве известных программ Windows, Macintosh OS X, Linux, являясь открытым приложением работающим на Java.
  • Простая среда программирования. Программная оболочка является достаточно простой в применении для новичков, но весьма гибкой для большинства продвинутых пользователей, чтобы оптимально быстро достичь нужного вам результата. Особенно комфортно в образовательной среде, где студенты достаточно легко разберутся с платформой, а преподаватели смогут разработать учебный курс.
  • Открытый исходный код. Язык может расширяется с помощью C++ библиотек, значительно более продвинутых, там специалисты могут самостоятельно создать свой собственный эксклюзивный инструментарий для Arduino на основе инновационного компилятора AVR C.
  • Открытые спецификации и схемы оборудования. Arduino основан на микроконтроллерах Atmel ATMEGA8 и ATMEGA168. Схемы модулей публикуются под лицензией Creative Commons, из-за этого опытные схемотехники могли создавать свои собственные версии модуля. Даже весьма неопытные пользователи смогут делать макетную версию данного модуля, чтобы понимать, каким же образом он осуществляет работу и экономит деньги.

Из недостатков отмечаем:

  • довольно убогую программную оболочку;
  • достаточно низкую частоту имеющегося процессора;
  • довольно малое количество «дисковой» флэш-памяти для создания программ.

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

Ардуино Нано - это микроконтроллеры, которые могут позволить самостоятельно заниматься робототехникой, а их основное преимущество - отсутствие необходимости докупать еще что-либо.

Ещё одно готовое устройство от Arduino для конструкторов электронных игрушек, оригинальных и полезных конструкций, малых систем автоматизации. Примечательна установленным 32-битным микроконтроллером SAM3X8E ARM Cortex-M3. Оценим её возможности и возможные сферы применения.
Вид платы сверху


Разъёмы и выводы
  • 0-52. Расположены сверху и справа. Каждый из выводов может быть запрограммирован в качестве дискретного входа или выхода. Уровень напряжения выводов 3,3 В, ток в выходных цепях 3-15 мА, а во входных 6-9 мА.
  • Выводы (communication) 0, 19, 17, 15 (Rx) и 1, 18, 16, 14 (Tx) могут быть запрограммированы для обмена данными по последовательному интерфейсу с уровнем напряжения TTL (3,3 В) (RX – приём, TX – передача). На плате установлен преобразователь USB-UART, выполненный на микросхеме ATMega16U2, выводы которой подключены к выводам 0 и 1 платы. Интерфейс является USB-портом для программирования.
  • Выводы (PWM) со 2 по 13 можно сконфигурировать как аналоговые выходы с невысоким 8-битным разрешением. Вид выходного сигнала – ШИМ, а значит для подключения исполнительных устройств потребуется дополнительная согласующая схема.
  • Штыревой разъём SPI справа от микроконтроллера. Особенность этого интерфейса в том, что его нельзя использовать для внутрисхемного программирования, а исключительно для связи с другими устройствами.
  • Выводы CANRX, CANTX в самом низу, справа. Линии обмена данными по протоколу CAN. Протокол широко используется в бортовых сетях автомобилей, промышленной электронике.
  • Интерфейс связи TWI/I 2 C может быть подключен к выводам 20 (SDA), 21(SCL). Отметим, что к выводам на плате подключены подтягивающие резисторы 100 кОм, по умолчанию отключенные. Необходимо подключать резисторы при организации сетевого обмена.
  • Выводы А0–А11 внизу – аналоговые входы. Обрабатывающий сигналы с этих входов АЦП 12-битный, а значит входы могут использоваться в достаточно серьёзных приложениях. Стоит отметить, что конфигурация по умолчанию 10 бит, смена разрешения выполняется программным способом. Ещё одно замечание – для использования вывода AREF следует удалить из схемы резистор BR1.
  • На плате всего 2 полноценных 12-битных аналоговых выхода DAC1 и DAC2.
  • Вывод RESET при подаче низкого уровня инициирует перезагрузку контроллера.
  • Вверху, слева от вывода 13, расположен вывод AREF – опорное напряжение АЦП и выводы SDA1, SCL1 для интерфейса TWI1/I 2 C1.
В выводы могут устанавливаться платы расширения (шилды). Подключать можно весь спектр устройств Arduino: дисплеи, Ethernet-модули, клавиатуры и т.д. Создавая плату, компания обеспечила совместимость с устройствами расширения для других серий. Правда есть одно НО. Уровень напряжения на выводах не должен превышать 3,3 В. Информацию о рабочем уровне напряжения для плат расширения выдаёт выход IOREF, а подключаемая плата должна задействовать встроенный преобразователь уровня. Обращайте на это внимание при выборе шилда, если уровень 3,3 В не поддерживается, то подключать к Arduino Due устройство не рекомендуется.
Раз уж затронули тему уровней напряжения, то давайте разберёмся с питанием платы. Во-первых, внешнее питание на плату может быть подано либо от внешнего источника, либо от USB. Напряжение питание должно лежать в диапазоне 6-20 В, оптимальное – 7-12 В.
Выводы питающих напряжений находятся внизу, чуть левее микроконтроллера.
  • VIN – линия «+» внешнего источника питания.
  • 5V – напряжение +5 В, выдаваемое стабилизатором напряжения, максимальный ток Iмакс = 800 мА.
  • 3.3V - напряжение +3,3 В от того же стабилизатора, максимальный ток Iмакс = 800 мА.
  • GND – земля.
На плате установлены 2 USB-порта, предназначенные для обмена данными с компьютером или подключения поддерживающих интерфейс USB периферийных устройств.
Память
На плате размещены микросхемы оперативной памяти (SRAM) объёмом 96 кб, и флэш-памяти программ 512 кб. Адресное пространство единое для всей памяти. Стоит учесть, что есть возможность подключить внешнюю SD-карту, используя интерфейс TWI1/I 2 C1 и картридер.
Органы управления
На плате установлена кнопка Reset для стирания программы, записанной в ПЗУ.
Габаритные размеры
Плата имеет размеры 10,2х5,4 см, три крепёжных отверстия.

Сфера применения

Применение такого устройства будет оправдано:
  • Для обучения работе с микроконтроллерами школьников и студентов.
  • Для построения разнообразных роботов, квадрокоптеров или иных умных устройств конструкторами-любителями.
  • Для создания систем «Умного дома». Возможность создания локального пульта управления (на сенсорном дисплее или обычном и клавиатуре), достаточное количество входов-выходов для подключения датчиков и исполнительных устройств, возможность организации удалённого управления через Интернет – всё есть для реализации такого решения. В пользу его говорят и завышенные цены на готовые системы «умного дома». Можем посоветовать тем, кто решит использовать Arduino Due в этих целях, обратить внимание на бесплатную систему контроля и мониторинга Tesla Scada для ПК и мобильных устройств. Использование в качестве концентратора датчиков и интеллектуального устройства в системе интернета вещей (IoT). Готовые решения для Arduino есть у IBM. Это и библиотеки для Arduino IDE – Arduino Client for MQQT , и брокер для тестирования Mosquitto , и платформа IBM Internet of Things Foundtation .
Однако, стоит рассмотреть и ядро платы – 32-битный микроконтроллер, ведь именно он является главной «изюминкой» Arduino Due.

Как уже упоминалось выше, работа с платой возможна из-под Atmel IDE, но есть и собственная среда разработки IDE . Кроме того, необходимо разобраться как подключиться и отлаживать устройство.
Первый нюанс заключается в том, что для заливки новой прошивки требуется стереть старую во флэш-памяти.
Второй в используемом для загрузки USB-порте. На приведённом в начале статьи рисунке, слева можно увидеть 2 порта. Для программирования следует использовать нижний.
В остальном процесс создания проекта и отладки стандартен для устройств Arduino. Необходимыми предпосылками для успешной работы с устройством будет:
  • Формулировка задачи. Требуется определить какое устройство будет получено на выходе, какими функциями оно будет обладать.
  • Определение необходимых плат расширения. Для расширения функциональности и повышения удобства работы с готовым устройством могут потребоваться специальные шилды – дисплеи, внешняя память, модули связи и т.п. Помните про совместимость по уровню напряжения!
  • Состав оборудования определён, теперь необходимо всё увязать в единое устройство. Для этого, возможно, потребуется изготовить электронные платы сопряжения, подготовить шлейфы для связи, изготовить или купить конструкцию для размещения электронной начинки.
  • Подбор датчиков и исполнительных устройств, разработка подвижной конструкции. Для случаев летающих, ездящих, шагающих или плавающих устройств задача может быть очень нетривиальной.
  • Написание программы, загрузка её в плату, тестирование, отладка и удовлетворение от качественно проделанной работы.

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

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

    Основные отличия от плат на основе микроконтроллеров 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

    OSX

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

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


    Linux

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

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

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

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

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