Какой процессор в ардуино
Торжественно открываю новый блог на Хабре, посвящённый Arduino! Блог об универсальном opensource-микроконтроллере Arduino, который будет интересен всем любителям микроэлектроники, самодельных гаджетов и всем, кто не боится взять в руки паяльник.
Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB, а в качестве периферии — любые устройства от светодиодов до механизмов радиуоправляемых моделей и роботов. Программы для него пишутся на простом и интуитивно понятном си-подобном языке Wiring (c возможностью подключения сторонних библиотек на C/C++, например, для управления LCD-дисплеями или двигателями), компилируются и загружаются в устройство одной кнопкой, после чего вы тут же получаете работающий автономный гаджет. Никакого ассемблера, никаких лишних проводов и дорогущих деталей и программаторов — чистое творчество, включай и работай!
Постскриптум
В дальнейшем я постараюсь публиковать и другие заметки, расскажу, как собрать простые устройства при помощи Arduino и радиодеталей, купленных в магазине, а также опубликую демо-ролики готовых устройств. Ещё мне очень хотелось бы услышать мнение хабралюдей о данном явлении, узнать, о чём вы хотели бы почитать в следующих постах, перевести для данного блога ряд статей и быть может собрать небольшое русскоязычное сообщество фанатов Arduino. Да, и в связи с отсутствием нормального интернета дома не смогу ответить всем желающим сразу… приношу извинения.
В тематическом блоге «Программинг микроконтроллеров» уже было несколько статей по поводу выбора первого микроконтроллера и начала работы с ним. Не менее интересны были и комментарии к таким статьям. Одна из мыслей, которая несколько раз поднималась там — это что не все, кто имеют интерес к МК, приходят к ним от транзисторов. Некоторые (дай бог, чтобы побольше), приходят к ним со стороны (прикладного) программирования. Рекомендовать таким людям брать в руки паяльник — не разумно, у них и так есть стереотип — Arduino это платка на AVR для ленивых. Так ли это? Эта статья — попытка наглядно показать, что Arduino — это не про AVR и не про лень, Arduino — это архитектурно-независимая электронно-механическая платформа совместимых компонентов, по (относительной) значимости не менее важная, чем (в свое время) IBM S/360, IBM PC или USB.
AVR живее всех живых
Arduino Duemilanove
Это предпоследняя версия официальной Arduino, и большинство совместимых плат, которые сейчас присутствуют на рынке, основано именно на схемотехнике Duemilanove. Она включает микроконтроллер ATmega 328 (в прошлом десятилетии (читай: до 2010г) ставили и ATmega 168) и USB-Serial преобразователь FTDI FT232RL. $25
Arduino Uno
Текущая версия официальной Arduino. Пока на рынке мало альтернативных реализаций, но они начинают появляться, одна включена в этот обзор. Основное отличие от Duemilanove — замена популярного, а значит, не по начинке дорого, чипа FT232RL на… ATmega8U2. Да-да, в Uno фактически два микроконтроллера AVR, причем один — с аппаратным USB. Почему два, почему не поставить один? Вопрос совместимости, дружественности для новичков и для собственных разработок. Микроконтроллеры с аппаратным USB судя по всему есть только в SMD корпусах, поэтому использовать такой в своих разработках или заменить вышедший из строя на плате будет нелегко. Поэтому лучше использовать старый-добрый ATmega328 в DIP-панельке, а ATmega8U2 оставить на будущее. Судя по тому, как уверенно Uno завоевывает позиции — на ближайшее будущее. $30
Iteaduino
Существует множество клонов Arduino Duemilanove, которые копируют ее фактически один в один. Но мы ждем от конкуренции прогресса и улучшения, а не простого «передирания», дозволенного открытой лицензией. Iteaduino — хороший пример, когда разработчики «сделали свое домашнее задание». Многие электронные компоненты требуют питания 3.3в, что требует дополнительного сопряжения уровней при работе с классическим Arduino. Iteaduino же позволяет запитать плату 3.3в или 5в на выбор (переключателем на плате). «Соль» применения Arduino конечно же в подключении внешних устройств ввода-вывода, и для простых устройств сложился де-факто стандарт интерфейса GVS (Ground-Voltage-Signal). Для приятного (без паутины проводов) подключения таких устройств к классическому Arduino придется докупать шилд, а в Iteaduino соответствующие разъемы есть прямо на плате. Кроме того, улучшена эргономика — в оригинальном Arduino при надетом шилде нельзя добраться до кнопки Reset (поэтому многие шилды дублируют ее) и плохо виден светодиод, а в Iteaduino они размещены на краю платы с возможностью доступа. $25
Seeeduino Stalker v2
Благодаря стандарту Arduino можно создавать не только платы общего назначения, но и специализированные платы, которые все также будут легко расширяться существующими компонентами. Одна из идеальных применений для Arduino — разработка автономных беспроводных узлов-агентов распределенной системы контроля и управления. Платы Seeeduino Stalker разработаны именно для такого применения. В версии 2 на плате установлен контроллер зарядки литиевого аккумулятора с возможностью подключения солнечной панели, часы реального времени (RTC) с питанием от супер-конденсатора, microSD-слот, сокет *Bee (в оригинале XBee для протокола ZigBee, но уже есть BTBee в том же формфакторе) и разъемы I2C. $39
Ruggeduino
Вы начинающий, любите переплюсовывать питание и хвататься за оголенные GPIO наэлектризованными руками? Или подключаете датчики проводами по 20 метров, а иногда вокруг бьют молнии? Или используете Arduino в производственных целях, где требования по защите и надежности повыше? Ruggeduino поможет вам, одного взгляда на него будет достаточно, чтобы проникнуться уважением и понять, что это настоящий индустриальный Arduino. $40
RoMeo All-in-one
Плата для роботостроения, содержит на плате множество интерфейсных разъемов, драйвер двигателя, кнопки. $36
CraftDuino
Российский вариант Arduino с улучшенной эргономикой (доступ к светодиодам и Reset) и возможностями: на плате присутствует разъем для всех выводов чипа FT232, что позволяет использовать его для bitbang-приложений (программатор различных МК, JTAG и т.п.), и возможность допаять дополнительные выводы для установки CraftDuino на беспаечную макетную плату (breadboard). $30
Быстрее, выше, сильнее
Итак, мы выросли из AVR, но все наши шилды, сенсоры, сервы с нами. И мы не заставим их пропадать, ведь они для Arduino, а не для AVR. Мы также и дальше не будем поддаваться стереотипам, что есть только какой-то ARM, и какой-то Cortex. Все много интереснее!
ChipKIT Uno32
Каждый студент знает, что AVR — это хорошо, а PIC — это плохо. Однако, не стоит это распространять на все семейства МК. PIC32 — вполне нормальный процессор с архитектурой MIPS. А MIPS — одна из лидирующих RISC-архитектур. По сравнению с ARM у нее есть одно достоинство — она не столь медиа-популяризирована, поэтому лицензионные отчисления за MIPS меньше, а процессоры в среднем — дешевле, и лидируют в отельных рыночных сегментах, таких как раутеры. Например, Arduino-несовместимая плата в корпусе, с Ethernet, WiFi и USB-хостом стоит менее $50 даже в этой стране, ARM'у такое и не снилось. Но сейчас мы рассматриваем Arduino совместимые, и ChipKIT не заставит скучать при частоте 80МГц. 20EUR
Netduino
FEZ Panda II
Olimexino-STM32
Ну вот добрались и до героя нашего времени — фирмы STMicroelectronics, которая люто-бешено демпингует свои Cortex-M чипы. Новая 16-битная система команд Thumb2 вместо классической 32-битной — это ли тот ARM, каким мы его знаем? Впрочем, не важно, главное, чтобы GCC компилил в него оптимально. А ассемблерный код бывалые допилят ручками. 20EUR
IFLAT-32 v2.0
Arduino-совместимость может быть и ограничением — ведь 32-битные многолапые процессоры имеют куда больше, чем классические 14 GPIO и 6 ADC от Arduino. Собственно, на фотографиях выше видно, что почти все 32-битные платы имеют дополнительные разъемы, но часто они будут недоступны при использовании Arduino шилдов. И снова китайская фирма Iteadstudio впечатляет не только ценами, но и функциональностью. IFLAT-32 имеет площадь больше, чем Arduino, и оставляет легко доступными разъемы XBee и LCD. $27
Chumby Hacker Board
Надоело баловаться в хардварной песочнице с микроконтроллерами с микропамятью и микрогигагерцами? Хочется ощутить настоящий процессор, способный работать с настоящей операционной системой, хочется теплых и мягких ха-тэ-эм-элов и джаваскриптов? Chumby Hacker Board все так же примет ваши шилды, если не на грудь, то на обратную сторону платы. $89
Ретрокомпьютерщики бывают различной степени привередливости. Одни довольствуются эмуляцией. Другие предпочитают ПЛИС, потому что тогда получается не эмуляция, а воссоздание. Наконец, третьим подавай настоящий процессор.
Но процессору для работы нужно столько всего! Снова дилемма: взять настоящие микросхемы тех же лет, или поместить всё в ПЛИС, оставив снаружи процессор? Впрочем, почему обязательно ПЛИС? Да здравствует союз Arduino и классического процессора!
Подарите своему Arduino «второй мозг» и сделайте его «умнее».
Настоящий восьмибитный микропроцессор выполняет программы, а Arduino эмулирует ПЗУ, ОЗУ и простейшую периферию.
Проектируйте виртуальную периферию в Arduino IDE, а на микропроцессоре запускайте код на ассемблере. Не нужно собирать сложные схемы и прошивать параллельные ПЗУ.
Поддерживаемые микропроцессоры: 6502, 6809 и Z80 (КР1858ВМ1), на подходе — другие.
Шилд с микропроцессором не мешает подключать другие шилды: с ЖКИ, картами памяти, и др.
Помимо самостоятельного программирования на ассемблере, можно попробовать запустить на микропроцессоре какой-нибудь классический код.
Правда, микропроцессор будет работать на очень небольшой частоте — порядка 95 кГц, точное её значение зависит от оптимизации кода эмуляции периферии.
Распределение адресного пространства задаётся программно в скетче. Микропроцессору можно выделить от 4 до 6 кБ ОЗУ из 8 кБ, имеющихся на Arduino Mega. ПЗУ можно выделить более 200 кБ из имеющихся 256.
При помощи последовательного порта Arduino Mega можно эмулировать UART.
Схемы, чертежи плат, Gerber-файлы доступны под CC-BY-SA 4.0 здесь. При этом имеется требование обязательно прикладывать файл README.md, потому что в нём содержится следующее предупреждение:
Не подключайте шилд, пока не залит скетч эмуляции периферии! Иначе возможно закорачивание выходных линий микропроцессора.
Да и в самом скетче что-нибудь переделывать нужно осторожно по той же причине.
Схема устройства на 6502:
Схема устройства на 6809:
Схема устройства на Z80:
Уже можно запустить:
На устройстве с Z80 — пока только эхо-тест последовательного порта, позволяющий проверить работоспособность виртуального 8251 (КР580ВВ51А).
Прошивки для эмуляции периферии — под лицензией MIT.
Краткие описания принципа действия:
К устройству на Z80 — в процессе подготовки.
Разработчик пытается продавать устройства, но с доставкой только по США. Особого смысла покупать нет, поскольку схема очень простая, повторить её на куске макетки можно за час.
Запланирована разработка аналогичных плат на RCA1802, 68008, 8085 (КР1821ВМ85А), 8088 (КР1810ВМ88). Про К1801ВМ1 не сказано, но можно подкинуть автору такую идею.
Рассмотрим взаимодействие Arduino и устройства на 6502. Arduino периодически меняет уровень на входе микропроцессора, предназначенном для подачи тактовых импульсов, с нуля на единицу и обратно. На каждом такте оно проверяет, что происходит на линиях управления и шине адреса, и, в зависимости от ситуации, считывает информацию с шины данных или отправляет её туда. Arduino может также управлять линиями IRQ и NMI, вызывая прерывания. На рисунке показаны виды данных и направления их передачи:
Соответствие портов Arduino и выводов микропроцессора сконфигурировано в скетче:
Разобьём каждый такт на следующие события:
CLK меняет состояние с единицы на нуль (спад)
CLK находится в состоянии нуля
CLK меняет состояние с единицы на нуль (нарастание)
CLK находится в состоянии единицы
CLK снова меняет состояние с единицы на нуль…
Что происходит в моменты смены состояний?
6502 получает тактовые импульсы по входу CLK0, буферизует их и отправляет на два выхода: CLK1 и CLK2. Хотя в микропроцессоре все события привязаны к CLK1, будем считать, что задержка невелика, и они привязаны к CLK0 — той линии, по которой здесь микропроцессор получает тактовые импульсы из Arduino. И называть сигнал просто CLK.
1. CLK меняет состояние с единицы на нуль.
2. Микропроцессор выводит на шину адреса новый адрес, а на выход R/W — сигнал переключения между чтением и записью. Но он ещё не готов к обмену данными.
3. CLK переходит в состояние единицы, и это означает, что обмен данными начался. Если это операция чтения, микропроцессор переводит выводы шины данных в состояние входов и принимает по рим данные, а если операция записи — переводит их в состояние выходов и отправляет данные. А сигнал R/W переключает внешнее устройство в режим записи или чтения, противоположный соответствующему состоянию микропроцессора.
4. CLK переходит в состояние нуля. Теперь на шину даннных ничего не выводят ни микропроцессор, ни устройства ввода-вывода. Микропроцессор может установить в новое состояние линии шины данных и вывод R/W.
Простое объяснение, понятное и ребёнку. Который никогда и не задумается об этих «закулисных интригах», если будет программировать только микроконтроллеры. Даже на ассемблере.
Если нужно подключить своё периферийное устройство, оно должно успевать подготавливать данные до того, как на линии CLK появится единица (время подготовки), а пока там единица — не менять их. Если периферийное устройство не успеет подготовить данные, пока на CLK нуль, или поменяет их, когда там единица, вы будете долго недоумевать, почему ваш код не работает. Поскольку тактовая частота микропроцессора здесь в десять-пятнадцать раз ниже номинальной, соблюсти это требование просто. Но нужно обязательно.
Итак, нужно «научить» Arduino генерировать тактовые импульсы, непрерывно проверяя, что при этом происходит на шине адреса и линии R/W, и соответствующим образом взаимодействуя с шиной данных. Для этого в скетче задействовано прерывание по таймеру timer1, вырабатывающему импульсы с частотой в 95 кГц. Arduino работает значительно быстрее микропроцессора, и потому между его тактами успевает всё и считывать, и подготавливать. Важно проследить, чтобы после модификации скетча это условие продолжало соблюдаться.
Вот выдержка из скетча, по которой понятно, как CLK переходит из нуля в единицу, и что происходит далее:
Распределение адресного пространства можно сделать каким угодно, в немодифицированном скетче оно такое же, как в Apple 1 с 256 байтами ПЗУ, 8 килобайтами ПЗУ для Бейсика, 4 килобайтами ОЗУ и устройством ввода-вывода 6821.
ОЗУ эмулируется массивом byte RAM[RAM_END-RAM_START+1]. Два ключевых слова PROGMEM нужны, чтобы содержимое эмулируемых ПЗУ хранилось во флеш-памяти микроконтроллера.
6821 эмулирован в достаточной мере, чтобы через «терминалку» работали виртуальные клавиатура и дисплей. Woz Monitor и Бейсик работают, чего и добивался автор.
Чтобы эмулировать любое периферийное устройство, нужно внимательно ознакомиться с его даташитом и выяснить, какие у него есть регистры, и для чего они предназначены. Удобство эмуляции — в гибкости, с которой можно делать программные аналоги периферии.
Устройства ввода-вывода находятся в адресном пространестве микропроцессора, обращение к ним происходит так же, как к ячейкам памяти. Чтобы использовать «железную» периферию, такую, как ЖК-дисплей, карту памяти, выход звука, нужно выделить им в адресном пространстве место.
Переходим к 6809, в нём имеются:
Два восьмибитных аккумулятора A и B, которые могут быть объединены в один шестрадцатиразрядный аккумулятор
Два 16-битных индексных указателя стека
Адресация относительно счётчика команд
Автоматическое прибавление или вычитание числа 1 или 2
Перемножение двух восьмиразрядных чисел без знака
16-битная арифметика
Перенос и обмен данными между всеми регистрами
Запись и чтение всех регистров и любого их сочетания
Микропроцессору 6809E (external) нужен внешний тактовый генератор, у 6809 он внутренний. У Hitachi они называются, соответственно, 6309E и 6309, от обычных они отличаются тем, что внутри операции у них выполняются в 32-разрядном виде, но возможно переключение в режим совместимости с классическим вариантом.
Собственно, весь проект RetroShield потому и начался, что автор хотел модернизировать свой же самодельный компьютер Simon6809 и назвать результат Simon6809 Turbo. Но оказалось, что микросхем стандартной логики для всего, что он хотел там реализовать, потребовалось бы очень много. Поэтому идею RetroShield автор впервые сформулировал именно применительно к 6809, и лишь затем подумал: «а что если и с другими процессорами то же проделать?».
В устройстве, разумеется, применён 6809E, требующий внешнего тактового генератора, чтобы можно было синхронизировать его работу извне. Линии E и Q у обоих процессоров называются одинаково, только у 6809 это выходы, а у 6809E — входы.
С 6809 Arduino взаимодействует так же, как с 6502, но входов тактовой частоты у него два: E и Q, а входов для прерываний — три: IRQ, FIRQ и NMI.
В этот раз соответствие портов Arduino и выводов микропроцессора сконфигурировано так:
Как видно из графиков, сигнал Q сдвинут относительно E на четверть периода:
Обращать внимание на Q мы почти не будем, так как все события привязаны к E. А происходит всё так:
- E переключается в нуль. Процессор выставляет на шину адреса новый адрес и меняет состояние линии R/W.
- E переключается в единицу, процессор становится готов к обмену данными.
- Неважно, что происходит с шиной данных, пока на E единица, главное, чтобы требуемые данные там присутствовали в момент перехода E обратно в нуль.
- При чтении данных устройство ввода-вывод должно подать на шину данных требуемые данные до перехода линии E из единицы в нуль (минимальная задержка показана числом 17 в кружке).
- При записи устройство ввода-вывода должно зафиксировать данные у себя в каком-нибудь регистре в том виде, в каком они были в момент перехода E из единицы в нуль. Процессор же подаст эти данные на шине даже раньше — в момент перехода Q в единицу (число 20 в кружке).
- После перехода E в нуль всё повторяется.
Генерация сигналов E и Q, как и в случае с 6502, с той лишь разницей, что сигналов два, и переключать их надо в соответствии с графиками. И точно так же подпрограмма, вызываемая по прерыванию, выполняет в требуемые моменты ввод или вывод данных.
Адресное пространство в немодифицированном скетче распределено так же, как в самодельном компьютере Simon6809:
ОЗУ и ПЗУ хранятся в массивах так же как в варианте на 6502, с той лишь разницей, что здесь массив с данными ПЗУ — один.
Устройствам ввода-вывода здесь также выделены участки адресного пространства, и они могут быть как виртуальными, так и реальными. Так как Simon6809 — современная машина на винтажной элементной базе, с ПК, на котором запущена «терминалка», она обменивается данными через FTDI. Здесь эмулировано и это.
Аппаратная платформа «Arduino» открывает широкие возможности по автоматизации чего-либо для всех тех, кто увлечен робототехникой и электроникой. При этом не обязательно быть программистом и обладать специальными знаниями, достаточно иметь желание и творческую идею. С помощью «Arduino» можно автоматизировать как элементарные, так и более сложные системы управления.
В 2005 году было создано первое устройство, которое отдаленно напоминало современный контроллер. Итальянец Массимо Банци назвал его в честь короля Ардуина. Развиваясь и совершенствуясь, «Ардуино» стало брендом аппаратно-программных средств, с помощью которых можно автоматизировать несложные системы. В основе аппаратной платформы «Ардуино» лежит программируемый контроллер ввода и вывода. Его достоинства – универсальность и модульность.
Другими словами, «Ардуино» - это миникомпьютер, который можно запрограммировать для выполнения определенных действий.
Плата «Arduino» - это самостоятельный процессор, который обладает памятью и снабжен множеством стандартных вводов и выводов. К нему легко подключаются самые разные устройства и механизмы, сенсоры, датчики, моторы и прочее.
Платы «Arduino» не просто совместимы, а могут соединяться друг с другом посредством штырьевых разъемов. Фактически они насаживаются друг на друга как элементы «бутерброда». Такая доступная модульность – одно из основных преимуществ плат «Arduino».
Преимущества «Arduino»
→ Невысокая цена и возможность самостоятельной сборки;
→ Широкие возможности, модульность и универсальность;
→ Доступность для непрофессионального пользователя;
→ Большое количество информации в сети: обучающие ролики, обзоры, пошаговые инструкции; сообщества, где можно получить ответы на интересующие вопросы;
→ Наличие дополнительного оснащения: кнопки, датчики, индикаторы, а также другие устройства и аксессуары, обеспечивающие взаимодействие контроллера с окружающим миром;
→ Простой процесс разработки системы и ее отладки.
Рассмотрим более подробно возможности и порядок работы платформы «Arduino» на примере нескольких программируемых контроллеров.
Программируемый контроллер Arduino UNO R3 (ATMEGA16U2 + MEGA328P) – это представитель контроллеров компании «Arduino», созданных на микроконтроллере ATmega328.
Плата имеет 14 цифровых входов/выходов, 6 из которых могут использоваться как выходы ШИМ, а также есть 6 аналоговых выходов.
В данной плате применяется чип Atmega16U2, который позволяет превратить плату в любое USB-устройство: от мышки до внешнего диска.
По сравнению с предыдущими версиями Arduino UNO R3 характеризуется более удобной маркировкой входов и выходов. Функциональность платы может быть увеличена за счет использования многочисленных расширений.
Питание Arduino UNO R3 подается по USB или от внешнего источника питания, в качестве которого может использоваться аккумуляторная батарея или сетевой АС/DC-адаптер. Рекомендуется источник питания с напряжением в диапазоне 7-12 В. Объем флеш-памяти составляет 32 КБ.
Контроллер Arduino UNO R3 может быть присоединен к компьютеру, другой плате Arduino или к другому микроконтроллеру. Для этого он оснащен всем необходимым.
Следует обратить внимание, что запрещается превышать допустимые величины силы тока! Для одного любого вывода ток не должен составлять более 40 мА. Ток для одной группы выводов не может быть более 100 мА.
Программируемый контроллер Arduino MEGA2560 R3 (CH340G + ATMEGA2560-16AU) разработан на микроконтроллере Arduino Mega2560.
Данный микроконтроллер включает в себя загрузчик, который облегчает установку новых программ без использования дополнительных программаторов.
В отличие от Arduino Uno R3 платформа имеет большое количество входов/выходов: 54 цифровых входов/выходов, 16 аналоговых. Ее габариты соответственно тоже больше.
Данная плата совместима с расширениями и модулями для платформ Duemilanove и Uno. Ее флеш-память составляет 256 КБ. В отношении этой платы действуют те же принципы работы, как и в отношении платы Arduino UNO R3.
Также имеется кнопка перезагрузки, которая позволяет перезагрузить систему в случае непредвиденного сбоя. Работа с платой начинается с ее подключения к компьютеру посредством USB-кабеля.
Есть мнение, что Arduino является «оберткой» для микроконтроллера ATMEGA, так как большинство выводов микроконтроллера напрямую соединены с выводами Arduino. Возможности вводов/выводов разнообразны. Например, аналоговые входы/выходы позволяют измерять параметры сигнала и фактически создать осциллограф, частота измерений которого будет ограничена лишь скоростью процессора. Большинство датчиков Arduino также подключаются через аналоговые выходы.
Программируемый контроллер Arduino Nano V3.0 (CH340G + ATMEGA328P-AU) – компактная плата на микроконтроллере ATMEGA328P-AU.
Она имеет функциональность, схожую с платформами Arduino UNO, но отличается меньшими габаритами. Обладает 14 цифровыми входами/выходами, 6 из которых могут использоваться как выходы ШИМ, 8 аналоговыми выходами. Флеш-память составляет 32 КБ.
Ф актически знакомство с ней лучше начать, открыв ее страничку на сайте производителя. Там находится вся необходимая информация по устройству.
На плате расположен стабилизатор 5 В. Также имеется загрузчик, который позволяет платформе перепрошивать саму себя. Как и в рассмотренных выше платах Arduino есть возможность не использовать загрузчик, а запрограммировать микроконтроллер через ICSP-выводы. С помощью кнопка RESET производится перезагрузка в случае непредвиденного сбоя. Плата подключается к компьютеру через miniUSB-кабель.
Программируемый контроллер Arduino Pro mini (ATMEGA328P) разработан на микроконтроллере ATMEGA328P, имеет 14 цифровых входов/выходов и 6 аналоговых.
Arduino Pro mini питается через кабель FTDI или от источников питания через имеющиеся выходы (Vcc/RAW).
Прежде всего, данная плата отличается от всех предыдущих своей миниатюрностью. Поэтому ее использование особенно популярно при работе с небольшими устройствами. Соответственно из-за компактных размеров данной платы к ней не подключить «по принципу бутерброда» расширения более крупных плат, однако их можно подключить с помощью дополнительных коннекторов.
В целом технические характеристики программируемого контролера Arduino Pro mini очень схожи с характеристиками других плат Arduino. Основное отличие – это отсутствие USB-интерфейса. Благодаря этому достигается миниатюрность в размерах, но возникает необходимость в использовании дополнительного модуля, типо мини-USB-коннектора, чтобы подключить плату к компьютеру для загрузки программы.
Программируемый контроллер Arduino DUE 2012 R3 (ARM 32 + AT91SAM3X8EA) – плата на микроконтроллере AT91SAM3X8EA.
Она имеет 54 цифровых входов/выходов и 12 аналоговых. Ее основное отличие от других плат Arduino – это работа при напряжении не выше 3,3 В.
В плате есть все необходимое для того, чтобы сразу начать работу. Достаточно подключить ее к компьютеру через микро-USB-кабель или подать питание, подключив плату к батарейке. Можно также использовать AC/DC-преобразователь.
Arduino DUE отличается тем, что на ней установлено 32-битное ARM-ядро, обеспечивающее более высокую производительность платформы по сравнению с другими контроллерами Arduino. Кроме того, Arduino DUE имеет огромную память для записи программ – 512 КБ. Есть возможность стереть информацию из памяти с помощью соответствующей кнопки.
Arduino DUE – это новая плата, которая значительно отличается от других плат Arduino своей функциональностью и производительностью.
Программируемый контроллер Arduino Leonardo R3 (ATMEGA32U4) выполнен на базе микроконтроллера ATMEGA32U4.
Имеет 20 цифровых входов/выходов, 7 из которых могут использоваться как выходы ШИМ и 12 как аналоговые выходы. Данная плата является обновленной версией платы Arduino Uno. Отличие платы Arduino Leonardo заключается в том, что она имеет встроенную поддержку для USB-подключения.
Плата «Arduino» подключается к компьютеру с помощью USB-кабеля. При этом загораются светодиодные индикаторы.
Рекомендуется скачать последнюю версию драйверов, на данный момент это Arduino 1.0.5. После того как скаченный файл будет распакован, в нем можно обнаружить папку с драйверами. Файл arduino.inf нужно поместить на диск С, чтобы в дальнейшем произвести его установку. В скаченной папке также есть файл arduino.exe. Чтобы начать работать с платой «Arduino», следует запустить этот файл. Далее выбрать программируемый контролер, с которым производится на данный момент работа. Например, Arduino UNO R3. После этого можно начать проект. Во вкладке «Примеры» уже предложены возможные варианты проектов с подробным описанием. Если выбрать один из них, то откроется программный код, который в случае необходимости можно проверить на ошибки. После этого программный код загружается на контроллер, на котором загораются светодиодные индикаторы, свидетельствующие об исправной работе платы.
Несмотря на то, что это одна из самых дешевых плат Arduino, она достаточно функциональна. Плата Arduino Uno входит во многие наборы, которые позволяют приступить к изучению принципов электроники и конструирования. Это абсолютно стандартная плата, можно сказать, «лицо» компании «Arduino».
• на базе какого микроконтроллера создана плата. Именно от этого будет зависеть скорость ее работы;
• входное и выходное напряжение на плату;
• количество и вид входов/выходов. Эта характеристика определяет то количество устройств, которое можно будет подключить к плате;
• объем флеш-памяти, от которой зависит длина рабочей программы;
• размер платы.
Микроконтроллер – чрезвычайно универсальное устройство, на его основе можно сделать бесконечно много разных электронных устройств, как полезных, так и бесполезных. Под управлением микроконтроллеров работает любая техника, в которой есть какие-то настройки, режимы или автоматизация (стиральная машина, микроволновка, мультиварка…), некоторые узлы автомобилей, станки с ЧПУ, простенькие гаджеты и так далее.
Что же делает МК настолько мощным и универсальным инструментом? Ведь фактически он умеет делать всего три вещи*:
- Измерять напряжение на пине
- Выдавать напряжение с пина
- Программироваться
(*) – ещё у МК может быть собственный беспроводной интерфейс, но это уже частный случай.
В том то и дело, что этого достаточно для решения всех мыслимых и немыслимых задач! Микроконтроллер может управлять любой внешней нагрузкой, опрашивать кнопки/крутилки/энкодеры/клавиатуры/джойстики, может работать практически с любыми датчиками, общаться с любыми сторонними микросхемами, выводить информацию на дисплей, в том числе сенсорный, управляться через Интернет из любой из точки планеты и многое другое. Самое важное, что всё это может работать абсолютно в любых сочетаниях и быть запрограммировано огромным количеством способов, то есть одна маленькая микросхема может стать сердцем бесконечного количества электронных устройств и проектов!
Что такое МК?
Микроконтроллер – это сильно навороченная программируемая микросхема, самый простой аналог – компьютер, точнее системный блок (без блока питания). Да, вы не ослышались! Микроконтроллер работает сам по себе, на нём может быть запущена простенькая операционная система, может даже быть выход в Интернет, а мы можем подключать к нему устройства ввода, датчики, дисплеи и прочие железки. Чем не компьютер?
Внутри любого микроконтроллера находится несколько аппаратных блоков, все они соединены между собой:
- Ядро (процессор) – отвечает за работу всех остальных блоков, связывает их между собой. Сам состоит из десятка элементов (кэш, набор вычислительных блоков, и т.д.). Аналог – процессор компьютера.
- Flash память – постоянное запоминающее устройство (ПЗУ). Хранит исполняемый код программы, также может хранить статические данные (изображения, веб-страницы, текст, таблицы с числами, и т.д.). Не очищается после сброса питания. Аналог – жёсткий диск компьютера.
- SRAM память – оперативное запоминающее устройство (ОЗУ). Хранит данные, изменяющиеся в процессе работы программы (промежуточные результаты вычислений, значения переменных, принятые от внешних устройств данные и т.д.). Очищается после сброса питания. Аналог – оперативная память компьютера.
Также в МК могут быть и другие блоки:
- GPIO (General Purpose Input-Output) – вход-выход общего назначения. Измеряет поданный на пин цифровой сигнал, либо выдаёт его с пина. Подробнее в этом уроке. Пины GPIO мы будем называть цифровые пины.
- АЦП (ADC, аналогово-цифровой преобразователь) – измеряет поданное на пин напряжение, аналоговый сигнал, и передаёт в программу. Подробнее в этом уроке. Такие пины мы будем называть аналоговые пины.
- ЦАП (DAC, цифро-аналоговый преобразователь) – выдаёт указанное напряжение с пина (аналоговый сигнал).
- Таймер (счётчик) – считает такты работы процессора
- Позволяет с очень высокой точностью (до наносекунд) измерять время.
- Часто таймер используется для генерирования ШИМ сигнала на своих выводах, они помечаются как PWM. Подробнее в этом уроке. Такие пины мы будем называть ШИМ-пины.
- UART – связь с одним внешним устройством. По одному проводу передаёт, по второму – принимает. Может работать только на передачу или только на приём, используя один провод. Названия пинов:
- RX (Receive) – приём.
- TX (Transmit) – передача.
- SDA (Serial DAta) – линия данных.
- SCL (Serial CLock) – линия синхронизации.
- MOSI (Master Output Slave Input) – линия данных от МК к внешней микросхеме.
- MISO (Master Input Slave Output) – линия данных от внешней микросхемы к МК.
- SCLK (Serial CLocK) – линия синхронизации.
Технические характеристики
Arduino Diecimila представляет собой небольшую электронную плату (далее просто плата) ядром которой является микроконтроллер ATmega168. На плате есть: 14 цифровых входов/выходов, 6 из которых могут работать в режиме ШИМ (PWM) (а следовательно управлять аналоговыми устройствами вроде двигателей и передавать двоичные данные), 6 аналоговых входов (исходной информацией служат не логические 0/1, а значение напряжения), тактовый генератор на 16 МГц, разъёмы питания и USB, ICSP-порт (что-то вроде последовательного интерфейса для цифровых устройств), несколько контрольных светодиодов и кнопка сброса.
Этого вполне достаточно, чтобы подключить плату к USB-порту компьютера, установить нужный софт и начать программировать.Питание
Питание платы осуществляется двумя способами: по кабелю USB (при этом никаких других ухищрений делать не нужно, используется в процессе отладки), либо по специальному разъёму вроде того, что у ноутбуков. В радиомагазине можно купить такой разъём и присоединить к нему аккумулятор или 9-тивольтовую батарейку типа «Крона». Источники питания можно менять перемычкой на плате.Преимущества и недостатки
- Цена. В Москве Arduino Diecimila можно купить меньше чем за 1000 руб. При этом вы покупаете законченное (ну почти) устройство, не требующее дополнительного оборудования, такого, как дорогостоящие программаторы и отладочные стенды, и не требует платного софта.
- Кроссплатформенность. Программное обеспечение Arduino работает на Windows, Macintosh OS X, Linux и других операционных системах, поскольку является открытым и работает на Java. Большинство микроконтроллерных систем ограничиваются Windows.
- Простая среда программирования. Программная оболочка является простой в использовании для новичков, но достаточно гибкой для продвинутых пользователей, чтобы быстро достичь нужного результата. Особенно это удобно в образовательной среде, где студенты могут с лёгкостью разобраться с платформой, а преподаватели — разработать учебный курс и задания.
- Открытый исходный код. Язык может быть расширен с помощью C++ библиотек, более продвинутые специалисты могут создать свой собственный инструментарий для Arduino на основе компилятора AVR C.
- Открытые спецификации и схемы оборудования. Arduino основан на микроконтроллерах Atmel ATMEGA8 и ATMEGA168. Схемы модулей опубликованы под лицензией Creative Commons, поэтому опытные схемотехники могут создать свою собственную версию модуля для своих нужд. Даже сравнительно неопытные пользователи могут сделать макетную версию модуля, чтобы понять, каким образом он работает и сэкономить деньги.
Ссылки:
Применение
После короткого рассказа друзьям и знакомым про Arduino («это типа электронного конструктора, микро-ЭВМ, в который можно загрузить любую программу и получить любое другое устройство») самый часто задаваемый вопрос «А зачем это всё?» или «Какая мне от этого выгода?» Скучные люди, не правда ли? Неужели среди ваших знакомых нет ни одного радиолюбителя, а может вы и сами радиолюбитель?
Применение Arduino очень простое — не забавы ради, а развития мозга для. Интересно же линуксоидам ковыряться в коде ядра? Какая от этого польза? Почему бы вам не заняться «железным» (в противовес «софтовому») творчеством? Вот прямо сейчас рядом со мной сидит коллега-дизайнер и разбирается… с нейронными сетями. В общем что говорить, забыт дух технического творчества, забыты радиокружки и авиамодельные клубы. Все только сидят у своих компьютеров и сделать ничего путного в железе, кроме как воткнуть вилку в розетку, не могут :) Соберите свой веб-сервер, цветомузыкальную установку или прикольного робота!
Сообщество любителей Arduino уже знает об успешных примерах: GPS-трекер с записью на SD-карту, простой аудиоплеер, Twitter-дисплей, электронные игры с дисплеем и тачскрином… Попробуйте купить радиодеталей и сделать что-то своё! Есть даже готовый набор для создания четырёхъядерного Arduino-кластера.Распиновка
Как вы наверное поняли, микроконтроллер – это микросхема с кучей ножек. У каждой ножки есть своя функция, в частности у блоков GPIO и интерфейсов связи есть свои личные ноги. Для экономии размера и уменьшения количества ног микросхемы производители практически всегда объединяют несколько функций на одной ножке. Чтобы понять, куда подключать внешнюю “железку”, нужно посмотреть на распиновку (pinout) микросхемы или платы: это картинка, на которой подписаны функции всех ножек МК или пинов платы. Вот для примера упрощённые распиновки плат Arduino Nano и Wemos Mini, на них вы найдёте уже знакомые из предыдущей главы аббревиатуры:
Почти на всех Ардуино-совместимых платах есть “отладочный” светодиод, подключенный к одному из пинов. На распиновках я отметил его как LED.
Читайте также: