Arduino due проекты

Курс Arduino — Звук

Пищало

Давайте попробуем реализовать звуковую сигнализацию какого-либо явления. Для этого мы будем использовать пьезодинамик или buzzer.

Нам понадобятся

  • Пьезодинамик
  • Фоторезистор
  • Термистор
  • Резистор 10 кОм
  • Потенциометр
  • Соединительные провода «Папа-Папа»

Пищало V.1

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

Соберем схему:

Код к схеме

#define TERM A0 #define FOTO A1 #define POT A2 #define BUZZ 3 void setup() { Serial.begin(9600); Serial.println(«Privet!»); pinMode(TERM, INPUT); pinMode(FOTO, INPUT); pinMode(POT, INPUT); pinMode(BUZZ, OUTPUT); } void loop() { int temp = analogRead(TERM); int light = analogRead(FOTO); int value = analogRead(POT); if(Serial.available() > 0) //Проверяем, пришла ли команда. { char cmd = Serial.read(); //Объявим переменную, в которую будем запоминать команду. //Чтобы услышать звук — зажми термистор пальцами.Одновременно отправь команду if (cmd == ‘T’ || cmd == ‘t’) //Если пришла команда «Termistor mode» { Serial.println( temp); if(temp < 450) //Включаем режим термистора. { tone(BUZZ, 3000, 1000); delay(600); } } //Чтобы услышать звук- закрой фоторезистор рукой.Одновременно отправь команду if (cmd == ‘f’ || cmd == ‘F’) //Если пришла команда «Fotorezistor mode» { Serial.println(light); if(light > 400) //Включаем режим фоторезистора { tone(BUZZ, 4000, 1000); delay(600); } } //Чтобы услышать звук выкрути термистор до значения больше 700 и отправь команду. if( cmd == ‘p’ || cmd == ‘P’) //Если пришла команда «Potentiometr mode» { Serial.println(value); //Включаем режим потенциометра. if( value > 700) { tone(BUZZ, 5000, 1000); delay(600); } } } }

Пояснения

Tone – Функция генерирует на пьезопищалке звуковую волну. В общем виде функция записывается так. Tone(Номер пина, Частота, Длительность)

Номер пина – это номер пина, к которому подключен буззер.

Частота – частота звука, подаваемая на пищалку.

Длительность – длительность подаваемого сигнала в миллисекундах. Ее можно не задавать, но тогда звук не будет прекращаться пока вы не вызовите функцию noTone(Номер пина)

Так себе?

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

Пищало V.2

#define TERM A0 #define FOTO A1 #define POT A2 #define BUZZ 3 void setup() { Serial.begin(9600); Serial.println(«Privet!»); pinMode(TERM, INPUT); pinMode(FOTO, INPUT); pinMode(POT, INPUT); pinMode(BUZZ, OUTPUT); } void loop() { int temp = analogRead(TERM); int light = analogRead(FOTO); int value = analogRead(POT); if(temp < 450) { Serial.println(«Achtung!It’s too hot!»); Serial.println(«Temperature:»); Serial.println(temp); tone(BUZZ, 3000, 1000); delay(2000); } if(light > 400) { Serial.println(«Night is coming!»); Serial.println(«Light:»); Serial.println(light); tone(BUZZ, 4000, 1000); delay(2000); } if(value > 700) { Serial.println(«Turn it off pls»); Serial.println(«Value:»); Serial.println(value); tone(BUZZ, 3000, 1000); delay(2000); } }

Лучше?

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

Можно двигаться дальше.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Плата Arduino Arduino Uno 1 Поиск в Utsource В блокнот
Резистор 10 кОм 2 Поиск в Utsource В блокнот
Термистор B57164-K 103-J 1 Поиск в Utsource В блокнот
Фоторезистор VT90N2 1 Поиск в Utsource В блокнот
Соединительные провода «Папа-Папа» 1 Поиск в Utsource В блокнот
Макетная плата «Папа-Папа» 1 Поиск в Utsource В блокнот
Переменный резистор 10кОм 1 Поиск в Utsource В блокнот
Пьезоизлучатель Пассивный 1 Поиск в Utsource В блокнот
Макетная плата Breadboard-half 1 Поиск в Utsource В блокнот
Добавить все

Прикрепленные файлы:

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

  • громкоговоритель (динамик);
  • звукоизлучатель (зуммер).

В этом уроке мы поговорим о динамике. Разберем подробно его устройство и попробуем проиграть мелодию на Ардуино!

1. Громкоговоритель, он же динамик

Все громкоговорители можно разделить на два подтипа: электродинамический и пьезоэлектрический. Именно от названия первого подтипа пошло хорошо известное нам название динамик. Наверное каждый из нас хотя бы раз в жизни разбирал какой-нибудь старый динамик. Внутри него обязательно есть постоянный магнит, который прочно склеен с металлическим диском и цилиндрическим якорем по середине.Кроме магнита в динамике еще есть небольшая электромагнитная (или звуковая) катушка, намотанная тонким лакированным проводом. Катушка приклеена к гофрированному подвесу и к диффузору. Все эти части изображены на схеме разреза динамика.Человеку, знакомому со школьным курсом физики не составит труда догадаться как работает это устройство. Мы знаем, что если подать на звуковую катушку напряжение, то в её витках возникнет электрический ток (ну это уж совсем очевидно). Согласно закону Ампера, на проводник с током, находящийся в магнитном поле будет действовать сила Ампера. Направление этой силы можно легко вычислить с помощью правила левой руки: если вектор манитного поля направлен в ладонь, а пальцы направлены по току (вдоль витков провода), то большой палец будет указывать направление силы. Именно сила Ампера то притягивает катушку к основанию якоря, то отталкивает от него, в зависимости от направления электрического тока. То есть подавая на катушку переменный ток, мы заставим её колебаться. Звуковая катушка прочно соединена с диффузором, так что он тоже начнет колебаться. Движение же большого диффузора приведёт к колебанию большой массы воздуха, что мы и называем звуковой волной!

2. Генератор звука на транзисторах

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

В схеме есть:

  • NPN транзистор 2n2222;
  • PNP транзистор 2n2907;
  • резистор с номиналом от 10 до 100 К;
  • конденсатор 100 нФ.

Внешний вид макетаСобираем сначала схему и в самом конце подключаем к ней батарейку. В текущем варианте динамик будет издавать пронзительный писк на высокой частоте. Изменить частоту звука можно с помощью конденсатора C1. Если параллельно с C1 подключить еще один или два точно таких же конденсаторов на 100 нФ, частота звука станет ниже.

4. Программа электронного метронома

Метроном — это устройство, которое задает ритм для музыканта. То есть нам потребуется издавать краткий звук с заданным периодом, скажем в 1 секунду. Для генерации звука заданной частоты воспользуемся функцией tone, которая имеет следующий формат: tone( контакт, частота );

  • здесь контакт — номер вывода Ардуино к которому подключён динамик;
  • частота — частота генерируемого звука в герцах;
  • длительность — длительность звука в миллисекундах (параметр необязательный).

Как только мы вызовем функцию tone, Ардуино начнет генерировать импульсный сигнал и будет делать это, пока мы принудительно не выключим генерацию с помощью другой функции — noTone: noTone( контакт ); Аргумент контакт — это номер вывода Ардуино к которому подключён динамик. Примечание. Важно учитывать, что Ардуино может одновременно генерировать только один тон на одном контакте. Если вызовем функцию tone для одного контакта, и пока идет генерация попытаемся вызвать tone для другого контакта, то последний вызов будет попросту проигнорирован. Программа метронома идентична программе для мигания светодиодом, за исключением того, что мы вместо функции digitalWrite применяем tone и noTone. const byte dynPin = 2; void setup() { pinMode( dynPin, OUTPUT ); // настраиваем контакт №2 на выход } void loop() { tone( dynPin, 100 ); // генерируем звук с частотой 100 Гц delay( 100 ); // пауза 500 миллисекунд noTone( dynPin ); // выключаем звук delay( 900 ); // снова пауза 500 мс } Загружаем программу на Ардуино и внимаем ритмичному звуку метронома. Следующий пример по-сложнее — будем играть мелодию!

6. Мелодия из Звёздных войн на Ардуино

Наконец, попробуем воспроизвести полноценную мелодию из известной всем космической саги. const byte dynPin = 2; const byte COUNT_NOTES = 39; // частоты нот int tones = { 392, 392, 392, 311, 466, 392, 311, 466, 392, 587, 587, 587, 622, 466, 369, 311, 466, 392, 784, 392, 392, 784, 739, 698, 659, 622, 659, 415, 554, 523, 493, 466, 440, 466, 311, 369, 311, 466, 392 }; // длительности нот int durations = { 350, 350, 350, 250, 100, 350, 250, 100, 700, 350, 350, 350, 250, 100, 350, 250, 100, 700, 350, 250, 100, 350, 250, 100, 100, 100, 450, 150, 350, 250, 100, 100, 100, 450, 150, 350, 250, 100, 750 }; void setup() { pinMode( dynPin, OUTPUT ); // Настраиваем контакт на выход } void loop() { for (int i = 0; i <= COUNT_NOTES; i++ ) { tone( dynPin, tones, durations * 2 ); delay( durations * 2 ); noTone( dynPin ); } } Чтобы проиграть мелодию нам потребуется учитывать не только частоту звука, но и его длительность. Специально для этого мы ввели еще один массив — durations, в котором перечислены длительности нот из массива tones. Загружаем программу на Ардуино и слушаем имперский марш! На следующем уроке поговорим о зуммере, который выглядит почти также, но позволяет генерировать писк без дополнительных схем с транзисторами! Вконтакте Facebook Twitter Google+ 0

Модули Ардуино позволяют создать множество различных электронных устройств, которые будут работать по несложным программам. Одним из таких устройств является компактный плеер. Ардуино плеер, проигрывающий WAV и МР3 файлы, может быть реализован на базе любого контроллера (Uno, Nano, Mega и т.п.) с помощью адаптера micro-SD, который позволяет записывать и считывать музыкальные файлы.

Формирование звука на Arduino

Несмотря на то, что платформа Arduino, в основном, предназначена для работы с цифровыми устройствами, в архитектуру микроконтроллеров входят аналого-цифровой и цифро-аналоговый преобразователи и несколько каналов широтно-импульсной модуляции. Это позволяет осуществлять захват звуковых сигналов и их воспроизведение. Платформа Ардуино включает в себя как 8-битные AVR контроллеры, так и мощные 32 битные ARM процессоры. Принцип воспроизведения файлов Arduino MP3 не позволяет обеспечить высокое качество звука, поскольку с выхода контроллера снимаются импульсы прямоугольной формы (меандр), отличающиеся от идеального синусоидального сигнала.

Самым бюджетным модулем платформы Ардуино, является Arduino UNO с микроконтроллером ATmega 328, в котором интегрированы два 8-битных и один 16-битный счётчик, каждый из которых может быть использован для генерации ШИМ. Контроллеры получают сигналы от внешних источников и выдают свои собственные сигналы через порты ввода/вывода (GPIO). Теоретически порты микроконтроллера предназначены для работы с уровнями логического нуля и логической единицы, тем не менее, выводы GPIO позволяют оцифровывать аналоговые сигналы с ограничением по уровню и генерировать сигналы различной формы с помощью ШИМ и фильтра низких частот. Внешние данные могут поступать разными способами, но основным методом оцифровки звукового сигнала является использование АЦП.

Так же данные могут поступать на микроконтроллер через первый разряд порта ввода/вывода. Аналого-цифровой преобразователь позволяет точно оцифровывать входной сигнал с разрешением до 10 бит. Оцифровка может выполняться на более высокой скорости преобразования, но при этом уменьшается точность, так как два младших бита игнорируются. После того как входной сигнал был оцифрован и прошёл необходимые преобразования он может быть конвертирован в аналоговую форму через блок ШИМ. Амплитуда сигнала кодируется через соотношение длительностей логического нуля и логической единицы. Важным этапом обработки выходного сигнала является фильтрация, удаляющая высокочастотные компоненты модуляции. Так же фильтры ограничивают частотный диапазон звукового сигнала.

Для воспроизведения отдельных частот звукового диапазон можно использовать внутренний генератор Arduino. Для этого достаточно подключить к плате пьезоэлектрический динамик и задать простую функцию. Динамик подключается между контактами GND и «2» разъема Digital. Динамик нужно подключать через резистор 100 Ом. Далее задаётся конкретная функция. Выбирается контакт const byte dinPin = 2; Контакт настраивается как выходной pinMode (dinPin, output); //. Затем командой tone можно включить генератор с заданной частотой. Команда выглядит следующим образом: tone ( dinPin, 440 ) ; // Получился электронный камертон генерирующий ноту Ля первой октавы. Нота будет звучать до тех пор, пока генерация не прекратится командой noTone ( dinPin ); //

Плеер для Ардуино

Простейший плеер можно собрать буквально за 20 минут. Для этого потребуются следующие элементы:

  • Адаптер для карт памяти.
  • Соединительные провода.
  • Динамик 8 Ом.
  • Транзистор BC 546 B.

На транзисторе собран усилитель низкой частоты. Без него можно обойтись, подключив к плате Ардуино высокоомный пьезоэлектрический динамик, но он имеет ограниченный частотный диапазон и не обеспечит нормального качества звучания. Arduino wav-файлы воспроизводит нормально, а вот для чтения файлов в формате МР3 он не предназначен, поэтому все звуковые файлы нужно конвертировать в формат wav, используя программу Online-convert.com. Файлы записываются в формате wav pcm Mono 8 kHz 8 bit. SD-карту памяти нужно отформатировать и затем перенести на неё wav файлы с простыми идентификаторами типа “001.wav. Адаптер для чтения SD-карт имеет встроенный стабилизатор напряжения, поэтому обе платы можно питать от одного источника +5 В. Адаптер подключается к плате Ардуино следующим образом:

  • CS – 10 контакт.
  • MOSI –11 – “ – “.
  • MISO –12 – “ – “.
  • CLK – 13 – “ – “.
  • GND – земля.
  • 5 V – питание + 5 В.

Для работы устройства следует загрузить библиотеку TMRpcm-Arduino, которая предназначена для чтения файлов в формате wav непосредственно с карты памяти. Библиотека поддерживает все модули, выполненные на микроконтроллере ATmega328.

Модуль МР3 для ардуино

Более сложной модификацией плеера является вариант с использованием отдельного устройства, где датчик МР3 позволяет воспроизводить файлы именно в этом формате. Обычным носителем информации в мини плейерах является твердотельный накопитель информации или карата памяти micro-SD. На ней располагаются звуковые файлы определённого формата. Чаще всего используются карты с ёмкостью, не превышающей 32 Гб. Для подключения к Arduino удобно использовать DF Player Mini MP3. Он представляет собой компактную плату, на которой находятся следующие компоненты:

  • Слот для установки карты.
  • Усилитель звуковой частоты.
  • Дискретные элементы.

Питание модуля осуществляется от источника постоянного тока с напряжением 3,5-5,0 В. Плейер поддерживает форматы MP3, WAV, WMA и TF карты с системами FAT16 и FAT32. В устройстве имеется возможность управлять уровнями громкости от 0 до 30 и включать одну из 6 предустановленных настроек эквалайзера. Подключение плеера к ардуино выполняется следующим образом:

  • VCC – + 5 V
  • RX – RX
  • TX – TX
  • SPK 1 – динамик
  • SPK 2 – динамик
  • GND – GND

Линии RX и TX подключаются через резисторы 1 кОм. Для того чтобы устройство заработало нужно загрузить библиотеку Mini mp3 Arduino Library V2.0. Основной набор команд, выполняемых плеером:

  • Mp3_play (0002) – воспроизведение файла с указанным номером.
  • Mp3_stop – остановка воспроизведения.
  • Mp3_next – следующий файл.
  • Mp3_prev – предыдущий файл.
  • Mp3_set_volume – выбор уровня громкости.
  • Mp3_set_EQ (0-5) – выбор предустановки эквалайзера.

Если подключить к плееру USB порт через контакты USB «+» и «–», то можно воспроизводить звуковые файлы, записанные на флэш-карте.

Arduino.ru

Arduino Due, вид спереди Arduino Due, вид сзади
Общие сведения

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, который разгружает центральный процессор от выполнения интенсивных операций с памятью.
Схема, исходные данные и расположение выводов

Файлы EAGLE: arduino-Due-reference-design.zip

Схема: arduino-Due-schematic.pdf

Расположение выводов: SAM3X Pin Mapping page

Характеристики
Микроконтроллер AT91SAM3X8E
Рабочее напряжение 3,3 В
Входное напряжение (рекомендуемое) 7-12 В
Входное напряжение (предельное) 6-20 В
Цифровые Входы/Выходы 54 (на 12 из которых реализуется выход ШИМ)
Аналоговые входы 12
Аналоговые выходы 2 (ЦАП)
Общий выходной постоянный ток
на всех входах/выходах
50 мА
Постоянный ток через вывод 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: SDA1 и SCL1
    На данных выводах с использованием библиотеки Wire поддерживается связь по TWI.
  • Аналоговые входы: выводы с A0 по A11
    Плата Arduino Due имеет 12 аналоговых входов, каждый из которых может обеспечить разрешение 12 бит (т.е. 4096 различных значений). По умолчанию установлено разрешение 10 бит для совместимости с другими платами Arduino. Разрешение АЦП можно менять при помощи функции analogReadResolution(). Аналоговые ходы Due производят измерения от уровня земли до максимального значения 3,3 В. Приложение к этим выводам напряжения свыше 3,3 В вызовет повреждение кристалла SAM3X. Функция analogReference() на Due игнорируется.
    Вывод AREF подключен к аналоговому выводу опорного напряжения SAM3X через резисторный мост. Для активации вывода AREF необходимо отпаять с печатной платы резистор BR1.
  • DAC1 и DAC2
    На выводах ЦАП DAC1 и DAC2 предоставляются достоверные аналоговые выходы с 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 порт (Native USB port) подключен к SAM3X. Это позволяет осуществлять последовательную связь (CDC) посредством USB. Таким образом обеспечивается подключение к монитору последовательной шины, или другим приложениям на вашем компьютере. Также это дает Due возможность эмулировать для присоединенного компьютера USB мышь или клавиатуру. Для использования этих возможностей смотрите справочные страницы Библиотека мыши и клавиатуры.

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

Контроллер SAM3X поддерживает, кроме того, связь по интерфейсам TWI и SPI. Программное обеспечение Arduino включает в себя библиотеку Wire для облегчения работы с шиной TWI; смотрите более детальное описание в документации. Для связи через SPI воспользуйтесь библиотекой SPI.

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

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

Загрузка программ для SAM3X отличается от таковой для микроконтроллеров 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.

Исходный код программы для ATmega16U2 доступен в архиве Arduino. К разъему ISP можно подключать внешний программатор (перезаписывая загрузчик DFU). Более подробную информацию можно найти в инструкциях для помощи пользователям.

Токовая защита разъема 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).
Пожалуйста, обратите внимание, что шина I2C расположена в Arduino Due на других выводах (20 и 21), не так как в Duemilanove / Diecimila (аналоговые входы 4 и 5).

В этой статье я рассмотрю примеры работы со звуков на контроллере Arduino

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