Порты arduino pro mini. Программирование Arduino Pro-mini.

Когда меня спрашивают: "Хочу научится программировать микроконтроллеры, с чего начать, что купить?", то с моей точки зрения ответ однозначен: "Покупаем Arduino Pro Mini и пробуем, если все получается - переходим к более сложным вещам".

Что такое Ардуино

Несмотря на название раздела не буду рассказывать, что такое Ардуино и откуда оно взялось, так как привел в свое время неплохую статью об этом - . Просто вспомним, что под понятием Ардуино обычно понимают совокупность трех вещей: платы или платформы Arduino (в данном случае Arduino Pro Mini), среды разработки Arduino IDE и языка программирования C++ с набором специальных библиотек. Любую из этих трех вещей мы можем подменить на аналог, но об этом мы поговорим позже. А пока просто скачаем Arduino IDE с официального сайта - www.arduino.cc/en/Main/Software и установим его на компьютер.

Что же мы купили?

Если мы все купили правильно, то перед собой мы увидим две платки

Верхняя плата - это собственно и есть Arduino Pro Mini, нижняя - USB-UART / USB-TTL конвертер
Последний может выглядеть не так, как на фото, а иметь вид готового кабеля.

(Лично я советовал бы выбрать первый вариант, но это как говорится на вкус и цвет …)

Теперь о плате/платформе Arduino Pro Mini: Конструктивно она представляет собой плату с распаянным на ней микроконтролером, кнопкой RESET, микросхемой питания и прочей, не существенной для нас на данном этапе, периферией.
Существует две версии Pro Mini: одна работает от 3.3В при частоте 8 МГц, другая - от 5В при 16 МГц. В основе платы лежит микроконтроллер Atmega 168 или Atmega 328 - отличие между ними заключается в объеме внутрисистемно программируемой Flash памяти - 16 или 32 кБайта. Это так называемая "память программ", т.е. память в которую будет записана программа и содержимое ее не будет изменятся в процессе работы. Напомню, что Atmega построен по так называемой Гарвардской архитектуре () в которой "память программ" и "память данных" реализованы отдельно, для большего быстродействия и надежности. "Память данных" делится на 2 части: оперативную SRAM, которая что у 168, что у 328 составляет 1 Кб, и постоянную EEPROM (Electrically Erasable Programmable Read-Only Memory) объемом 512 байт, данные из которой не "теряются" при отключении питания.
В зависимости от исполнения на плате может быть 30, 32 или 34 вывода (PIN). На картинке ниже показана"максимальный" 34 пиновый вариант


Посмотрели? Страшно? Давайте разберемся что где.
GND - это у нас выводы куда подключается "земляные" провода, т.е. приходит/выводится "-" питания
VCC - плюсовые выводы для питания платы напряжением 5В (иногда 3,3В). Таке этот вывод моно использовать для подачу "наружу" опорного напряжение для цифровых входов.
RAW - вывод используется, если у нас нет стабилизированного напряжения 5В, но есть постоянное в диапазоне от 7 до 12В. Иногда указывают максимальное значение 30В - т.е. то напряжение которое микросхема питания может выдержать непродолжительное время не перегреваясь.
Помним, что в автомобиле диапазон напряжений от 12 до 15,5В, поэтому подключать RAW к "+" авто напрямую нельзя и нужно собрать схему по питанию следующего вида:


В принципе, заменив микросхему 7812 на 7805, можно питать Pro Mini и через вывод VCC

TXD и RXD - выводы UART/USART -
RST - он же RESET - в мануале написано насчет него написано следующее "низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino". На деле это означает что когда этот вывод подключается к земле, происходит перезапуск (сброс) Arduino Pro Mini.
Выводы обозначенные на плате цифрами с 2 до 13 - цифровые выводы (Обязательно читаем - ), могут настраиваться как вход или выход. Выводы работают при напряжении 3,3 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Они могут выводить значения только высокого (3,3В или 5В в зависимости от версии) или низкого (0В) уровня. Некоторое из них обозначенные на схеме выше как PWM могут выводить ШИМ сигнал () с разрешением 8 бит (от 0 до 255)
Выводы А0-А7 - аналоговые входы с 10 битным АЦП (). В зависимости от исполнения платы их может быть от 4 до 8. Эти выводы могут также работать как цифровые.
DTR (Data Terminal Ready) - Готовность приемника данных.

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

Подключаемся

Схема подключения достаточно простая и ошибиться достаточно сложно



Единственное что посоветую использовать не идущие в комплекте провода, а купить разъем питания на 6 контактов с шагом контактов 2,54мм. Он называется NS25 - 2,54 мм и такой же на 5 контактов для подключения к USB-UART / USB-TTL конвертеру.

После подключения у меня получилось так


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

Как видно используется только по 4 провода - это связано с тем, что у меня на обоих конвертерах нет вывода DTR

Что такое DTR и что делать если его нет?

Данный вывод предназначен для того, чтобы USB-serial контроллер Arduino перезагружал МК каждый раз, когда терминальная программа (в т.ч. Serial monitor, встроенный в ПО Arduino IDE) устанавливает соединение. Реализовано это следующим образом: у USB-serial контроллера вывод DTR (Data Terminal Ready) связан с выводом RESET. Если программа, работающая с виртуальным последовательным портом, использует DTR, то при установке соединения МК перезагружается.
Само по себе это обеспечивает беспроблемную загрузку скетча из Arduino IDE - МК перезагружается перед загрузкой кода. В этом смысле автоматическая перезагрузка облегчает жизнь. Кроме того, перезагрузка при подключении терминала тоже может оказаться удобной, т.к. довольно много скетчей выводят какую-то полезную информацию через последовательный порт, при этом скетч выполняется сразу после загрузки в МК, когда терминал еще не подключен (т.к. недавно порт был занят), так что увидеть вывод скетча в первые секунды его работы было бы нельзя. Перезагрузка в момент подключения терминала позволяет получить весь вывод, начиная с момента загрузки МК.
В случае, если этот вывод отсутствует, то у нас есть 3 варианта
1) Купить другой конвертер:)
2) Распаять вывод самому. (Как это сделать написано здесь - new-tech.in.ua/tips/109-usb-uart-converter)
3) Отправлять на перезагрузку вручную при помощи кнопки RESET расположенной на плате - об этом ниже.

Подключаем плату к компьютеру

Я не буду рассказывать как устанавливать драйвера конвертера и Arduino IDE - все достаточно стандартно.
Если все сделали правильно, то при подключении конвертера в системе появится виртуальный СОМ - порт. Это легко увидеть:


На правой картинке появляется дополнительный порт СОМ10 (у вас номер может быть другим) - его нужно выбрать, клацнув по нему мышкой.
Далее проверяем правильность указания платы, программатора - все должно быть как на картинке выше.
Указываем микроконтроллер 168 или 328, 5В или 3,3В


Почувствуем себя программистами

Попробуем залить простейшую программу. Для этого воспользуемся библиотекой примеров и тем, что у нас на самой плате на 13 выводе припаян светодиод. Скорее всего программа мигания этим светодиодом будет загружена в качестве тестовой, но мы все равно загрузим свою:). Находится этот пример тут:

Листинг программы:

//Процедура инициализации
void setup() {
// инициализируем вывод 13 на вывод.
pinMode(13, OUTPUT);
}

// Основное тело программы
void loop() {
digitalWrite(13, HIGH); // включаем светодиод (Подаем сигнал высокого уровня на вывод 13)
delay(500); // ждем 500 милисекунд (в стандартном примере 1000, что означает одну секунду)
digitalWrite(13, LOW); // выключаем светодиод (Подаем сигнал низкого уровня на вывод 13)
delay(500); // ждем 500 милисекунд после чего идем опять в начало основной программы
}

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

"Заливаем" программу

Тут все просто - нажимаем на кнопочку "вгрузить"


Если вывод DTR не подключен, то нажимаем на плате кнопку RESET и не отпускаем пока внизу окна Arduino IDE не появится надпись "вгружаем" - этот момент важно не пропустить, иначе микроконтроллер не будет своевременно перезагружен и заливка программы не состоится. Если DTR подключен, то просто ждем

Однако вопросов об отличии от других плат Ардуино и о том как с ней работать было задано не мало.

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

Первое что хочется отметить, так это то, что данная плата не сопоставима с шилдами для Ардуино. Плата имеет очень маленький размер 1,8 х 3,3 см и по замыслу создателей (SparkFun Electronics) должна найти применение в компактных проектах. На данной плате присутствует стандартный для плат Arduino набор: контроллер Atmega 328, стабилизатор входного напряжения, кнопка сброса, светодиод наличия питания и светодиод подключенный к 13му пину.

Помимо разницы в установленных контроллерах существует два варианта комплектации.

1) Контроллер работает от 5 вольт и его тактовая частота 16 мГц

2) Контроллер работает от 3.3 вольт и его тактовая частота 8 мГц

В зависимости от данных факторов на плате будут установлены соответствующие стабилизаторы. Входное напряжение подается на вывод RAW. Для 3.3вольтовой версии входное напряжение лежит в диапазоне от 3.35 до 12В, для 5Вольтовой 5-12В.

На плате Arduino PRO mini установлена шестипиновая гребенка. Для связи с компьютером необходим переходник USB-UART. Переходники которые рекомендует SparkFun основаны на микросхеме FT232RL. Помимо основных выводов (TX, RX, GND, +5V) переходник имеет вывод DTR, который позволяет автоматически заливать скетчи в дуину.


Как видно из картинки, вывод DTR соединяется с выводом RESET. В момент заливки скетча на выводе DTR появляется низкий уровень и контроллер перезагружается. Хочется отметить что линии VCC могут быть раздельными. При наличии питания на контроллере, можно подключать только линии TX, RX, GND, DTR. Для работы в середе Arduino IDE в списке плат выбираем Arduino Pro mini (3.3V или 5V), а в COM портах выбираем порт которым определился USB to UART переходник. Далее приведем видео с заливкой скетча мигания (delay 50) с помощью переходника на базе который имеет линию DTR.

Теперь рассмотрим более дешевый вариант переходника на базе микросхемы . Данный переходник имеет выводы 3.3V, 5V, TX, RX, GND. Как мы видим линии DTR здесь нет, а значит и при старте заливки низкий уровень не появится на выводе RESET и контроллер не перезагрузится автоматически. В связи с этим придется вручную нажимать на кнопку сброса на плате Arduino.


Начало загрузки скетча можно отследить по TX светодиоду на переходнике. После компиляции произойдет пара морганий, далее на видео это можно просмотреть.

Справедливости ради, хочется отметить что сама микросхема PL2303 имеет вывод DTR и на некоторых переходниках он присутствует. Например на , если снять корпус, то можно увидеть много вспомогательных линий.



P.S. Надеемся что в данной статье мы дали ответы на многие вопросы.

В жизни начинающего ардуинщика рано или поздно наступает момент, когда хочется сэкономить на размере своего изделия, не жертвуя при этом функциональностью. И тогда Arduino Pro Mini - отличное для этого решение! За счёт того, что у этой платы отсутствует встроенный USB-разъём, она в полтора раза меньше Arduini Nano. Но для того, чтобы её запрограммировать, придётся приобрести дополнительный - внешний - USB-программатор. О том, как «залить» написанную программу в память микроконтроллера и заставить Arduino Pro Mini работать, и пойдёт речь в этой статье.

Инструкция по порядку программирования Arduino Pro Mini программатором

Вам понадобится

  • Arduino Pro Mini;
  • USBasp-программатор;
  • компьютер;
  • соединительные провода.

1 Программатор для Arduino

Сначала пара слов о самом программаторе. Купить такой можно за 2 доллара в любом китайском интернет-магазине.

  • Разъём типа USB-A используется, понятно, для подключения программатора к компьютеру.
  • ISP-соединитель нужен для подключения к программируемой плате.
  • Джампер JP1 контролирует напряжение на выводе VCC ISP-коннектора. Оно может быть 3,3 В или 5 В. Если целевое программируемое устройство имеет собственный источник питания, нужно убрать перемычку.
  • Джампер JP2 используется для перепрошивки самого программатора; в данной статье этот вопрос не рассматривается.
  • Перемычка JP3 нужна, если тактовая частота целевого устройства ниже 1,5 МГц.
  • Светодиоды показывают: G - питание подаётся на программатор, R - программатор соединён с целевым устройством.

2 Установка драйвера для программатора

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



В этом случае скачаем драйвер для программатора с официального сайта . Распакуем архив и установим драйвер стандартным способом. В диспетчере устройств должен появиться программатор USBasp. Теперь программатор готов к работе. Отключаем его от компьютера.



3 Схема подключения Arduino к программатору

Соединяем ISP-разъём программатора с выводами на Arduino Pro Mini согласно приведённой схеме.





Arduino Mini - вид спереди (без разъемов) Arduino Mini - вид сзади

Общие сведения

Arduino Mini - это маленькое микропроцессорное устройство, ориентированное на использование с макетными платами или в приложениях, предъявляющих высокие требования к габаритным размерам. Первоначально устройство было спроектировано на базе микроконтроллера ATmega168, который в настоящее время заменен на микроконтроллер ATmega328 (). В состав устройства входит: 14 цифровых входов/выходов (из которых 6 могут использоваться в качестве ШИМ-выходов), 8 аналоговых входов и кварцевый резонатор на 16 МГц. Arduino Mini можно прошить с помощью специального USB-Serial адаптера или любого другого преобразователя интерфейсов USB-Serial либо RS232-Serial с TTL-уровнями напряжения.

В новой версии Arduino Mini (R5) обновлена печатная плата под микроконтроллер ATmega328, благодаря чему все компоненты теперь расположены на лицевой стороне платы. Помимо этого, добавлена кнопка сброса. При этом в новой версии Ардуино Mini расположение выводов полностью аналогично предыдущей версии R4.

Внимание: напряжение питания Arduino Mini не должно превышать 9В или не должно быть отрицательным. При несоблюдении этого условия плата может выйти из строя.

Характеристики

Микроконтроллер ATmega328
Рабочее напряжение
Напряжение питания 7-9В
Цифровые входы/выходы 14 (из которых 6могут использоваться в качестве ШИМ-выходов)
Аналоговые входы 8 (4 из которых на внешних выводах)
Максимальный ток одного вывода 40 мА
Flash-память 32 КБ (из которых 2 КБ используются загрузчиком)
SRAM 2 КБ
EEPROM 1 КБ
Тактовая частота 16 МГц

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

Для прошивки Arduino Mini можно использовать специальный USB-Serial адаптер или любой другой преобразователь интерфейсов USB-Serial либо RS232-Serial с TTL-уровнями напряжения. Инструкции по прошивке см. на странице "Начало работы с Arduino Mini" .

ATmega328 в Arduino Mini выпускается с прошитым загрузчиком , позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по оригинальному протоколу STK500 ( , ).

Тем не менее, микроконтроллер ATmega328 можно прошить и через разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming), не обращая внимания на загрузчик; информацию о распиновке разъема ICSP для прошивки Mini через загрузчик см. на соответствующей странице . Инструкции по использованию внешнего программатора для прошивки контроллера см. .

Входы и выходы

Каждый из 14 цифровых выводов Arduino Mini может работать в качестве входа или выхода. Уровень напряжения на выводах ограничен 5В. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА. Все выводы сопряжены с внутренними подтягивающими резисторами (по умолчанию отключенными) номиналом 20-50 кОм. Выводы 3, 5, 6, 9, 10 и 11 могут выводить аналоговые величины в виде ШИМ-сигнала; для получения дополнительной информации об этом см. описание функции analogWrite() . Выводы 0 и 1 используются при подключении устройства к компьютеру через адаптер Mini USB (или похожий). Подключение к этим выводам каких-либо внешних цепей может приводить к нарушению USB-соединения с компьютером или препятствовать процессу загрузки в микроконтроллер новых программ.

В Arduino Mini есть 8 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 различных значения). Входы 0 - 3 выведены на внешний разъем платы; для подключения к входам 4 - 7 на плате предусмотрены отверстия и распаечные площадки. По умолчанию, измерение напряжения осуществляется относительно диапазона от 0 до 5 В. Однако, верхнюю границу этого диапазона можно изменить, используя вывод AREF и несколько низкоуровневых команд.

Расположение выводов

Примечание: распиновка выводов в Arduino Mini версий 03 и 04 отличается. Убедитесь, что вы используете схему, соответствующую вашей версии Ардуино.

Распиновка Arduino Mini 03. (совместима с более старыми версиями, за исключением отсутствующего разъема IO7 вверху платы).

Общие сведения

Arduino Pro Mini построена на микроконтроллере ATmega168 (техническое описание). Платформа содержит 14 цифровых входов и выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов, резонатор, кнопку перезагрузки и отверстия для монтажа выводов. Блок из шести выводов может подключаться к кабелю FTDI или плате-конвертеру Sparkfun для обеспечения питания и связи через USB.

Arduino Pro Mini предназначена для непостоянной установки в объекты или экспонаты. Платформа поставляется без установленных выводов, что позволяет пользователям применять собственные выводы и разъемы. Расположение выводов совместимо с платформой Arduino Mini.

Существует две версии платформы Pro Mini. Одна версия работает при напряжении 3.3 В и частоте 8 МГц, другая при напряжения 5 В и частоте 16 МГц.

Arduino Pro Mini разработана и производится SparkFun Electronics.

Схема и исходные данные

Характеристики
Питание

Arduino Pro Mini может получать питание: через кабель FTDI, или от платы-конвертора, или от регулируемого источника питания 3.3 В или 5 В (зависит от модели платформы) через вывод Vcc, или от нерегулируемого источника через вывод RAW.

Выводы питания:

  • RAW . Для подключения нерегулируемого напряжения.
  • VCC . Для подключения регулируемых 3.3 В или 5 В.
  • GND. Выводы заземления.
Память

Микроконтроллер ATmega168 имеет: 16 кБ флеш-памяти для хранения кода программы (2 кБ используется для хранения загрузчика), 1 кБ ОЗУ и 512 байт EEPROM (которая читается и записывается с помощью библиотеки EEPROM).

Входы и Выходы

Каждый из 14 цифровых выводов Pro, используя функции pinMode() , digitalWrite() , и digitalRead() , может настраиваться как вход или выход. Выводы работают при напряжении 3,3 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:

  • Последовательная шина: 0 (RX) и 1 (TX) . Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы имеют соединение с выводами TX-0 и RX-1 блока из шести выводов.
  • Внешнее прерывание: 2 и 3 . Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
  • ШИМ: 3, 5, 6, 9, 10, и 11 . Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite() .
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) . Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.
  • LED: 13 . Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.

На платформе Pro Mini установлены 6 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Четыре из них расположены на краю платформы, а другие два (входы 4 и 5) ближе к центру. Измерение происходит относительно земли до значения VCC. Некоторые выводы имеют дополнительные функции:

  • I2C: A4 (SDA) и A5 (SCL) . Посредством выводов осуществляется связь I2C (TWI), для создания которой используется библиотека Wire.

Существует дополнительный вывод на платформе:

  • Reset . Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Связь

На платформе Arduino Pro Mini установлено несколько устройств для осуществления связи с компьютером, другими устройствами Arduino или микроконтроллерами.ATmega168 поддерживает последовательный интерфейс UART TTL, осуществляемый выводами 0 (RX) и 1 (TX). Мониторинг последовательной шины (Serial Monitor) программы Arduino позволяет посылать и получать текстовые данные через подключение USB.

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

ATmega168 поддерживает интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека Wire для удобства использования шины I2C. Более подробная информация находится в документации. Для использования интерфейса SPI обратитесь к техническим данным микроконтроллера ATmega168.

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

Микроконтроллер ATmega168 поставляется с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.

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

Автоматическая (программная) перезагрузка

Arduino Pro Mini разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой, а не нажатием кнопки на платформе. Один из выводов на блоке из шести выводов подключен к линии перезагрузки микроконтроллеров ATmega168 через конденсатор 100 нФ. Данный вывод соединен с одной из линий управления потоком конвертора USB-to-serial, подключенного к блоку: к линий RTS при использовании кабеля FTDI или к линии DTR при использовании платы-конвертора Sparkfun. Активация данной линии, т.е. подача сигнала низкого уровня, перезагружает микроконтроллер. Программа Arduino, используя данную функцию, загружает код одним нажатием кнопки Upload в самой среде программирования. Подача сигнала низкого уровня по линии перезагрузки скоординирована с началом записи кода, что сокращает таймаут загрузчика.

Функция имеет еще одно применение. Перезагрузка Pro Mini происходит каждый раз при подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие полсекунды после перезагрузки работает загрузчик. Во время программирования происходит задержка нескольких первых байтов кода во избежание получения платформой некорректных данных (всех, кроме кода новой программы). Если производится разовая отладка скетча, записанного в платформу, или ввод каких-либо других данных при первом запуске, необходимо убедиться, что программа на компьютере ожидает в течение секунды перед передачей данных.

Физические характеристики

Габаритные размеры печатной платы Pro Mini составляют 1,8х3,3 см.

В продолжение темы:
Linux

Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна Всем привет! Сегодня столкнулся с такой проблемой - попробовал зайти в браузер гугл...

Новые статьи
/
Популярные