Какие микроконтроллеры используются на платах arduino

Знакомство с Arduino

Введение

Торжественно открываю новый блог на Хабре, посвящённый Arduino! Блог об универсальном opensource-микроконтроллере Arduino, который будет интересен всем любителям микроэлектроники, самодельных гаджетов и всем, кто не боится взять в руки паяльник.

Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB, а в качестве периферии — любые устройства от светодиодов до механизмов радиуоправляемых моделей и роботов. Программы для него пишутся на простом и интуитивно понятном си-подобном языке Wiring (c возможностью подключения сторонних библиотек на C/C++, например, для управления LCD-дисплеями или двигателями), компилируются и загружаются в устройство одной кнопкой, после чего вы тут же получаете работающий автономный гаджет. Никакого ассемблера, никаких лишних проводов и дорогущих деталей и программаторов — чистое творчество, включай и работай!

Применение

После короткого рассказа друзьям и знакомым про Arduino («это типа электронного конструктора, микро-ЭВМ, в который можно загрузить любую программу и получить любое другое устройство») самый часто задаваемый вопрос «А зачем это всё?» или «Какая мне от этого выгода?» Скучные люди, не правда ли? Неужели среди ваших знакомых нет ни одного радиолюбителя, а может вы и сами радиолюбитель?
Применение Arduino очень простое — не забавы ради, а развития мозга для. Интересно же линуксоидам ковыряться в коде ядра? Какая от этого польза? Почему бы вам не заняться «железным» (в противовес «софтовому») творчеством? Вот прямо сейчас рядом со мной сидит коллега-дизайнер и разбирается… с нейронными сетями. В общем что говорить, забыт дух технического творчества, забыты радиокружки и авиамодельные клубы. Все только сидят у своих компьютеров и сделать ничего путного в железе, кроме как воткнуть вилку в розетку, не могут :) Соберите свой веб-сервер, цветомузыкальную установку или прикольного робота!
Сообщество любителей Arduino уже знает об успешных примерах: GPS-трекер с записью на SD-карту, простой аудиоплеер, Twitter-дисплей, электронные игры с дисплеем и тачскрином… Попробуйте купить радиодеталей и сделать что-то своё! Есть даже готовый набор для создания четырёхъядерного Arduino-кластера.

Технические характеристики

Arduino Diecimila представляет собой небольшую электронную плату (далее просто плата) ядром которой является микроконтроллер ATmega168. На плате есть: 14 цифровых входов/выходов, 6 из которых могут работать в режиме ШИМ (PWM) (а следовательно управлять аналоговыми устройствами вроде двигателей и передавать двоичные данные), 6 аналоговых входов (исходной информацией служат не логические 0/1, а значение напряжения), тактовый генератор на 16 МГц, разъёмы питания и USB, ICSP-порт (что-то вроде последовательного интерфейса для цифровых устройств), несколько контрольных светодиодов и кнопка сброса.
Этого вполне достаточно, чтобы подключить плату к USB-порту компьютера, установить нужный софт и начать программировать.

Краткая спецификация

  • Микроконтроллер: ATmega168
  • Рабочее напряжение: 5 В
  • Входное напряжение (рекомендуемое): 7-12 В
  • Входное напряжение (пределы): 6-20 В
  • Цифровые порты ввода/вывода: 14 портов (из них 6 с ШИМ-сигналом)
  • Аналоговые порты ввода: 6 портов
  • Ток для портов: 40 мА
  • Ток для 3.3В источника: 50 мА
  • ППЗУ (Flash Memory): 16 KB (из них 2 Кб используются загрузчиком)
  • ОЗУ (SRAM): 1 Кб
  • ПЗУ (EEPROM): 512 байт
  • Тактовая частота: 16 МГц

Питание
Питание платы осуществляется двумя способами: по кабелю USB (при этом никаких других ухищрений делать не нужно, используется в процессе отладки), либо по специальному разъёму вроде того, что у ноутбуков. В радиомагазине можно купить такой разъём и присоединить к нему аккумулятор или 9-тивольтовую батарейку типа «Крона». Источники питания можно менять перемычкой на плате.

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

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

Из недостатков отмечу, пожалуй, довольно убогую программную оболочку, низкую частоту процессора (чего на самом деле достаточно выше крыши и, кроме того, снижает энергопотребление) и малое количество «дисковой» (флэш) памяти для программ. При такой тактовой частоте и объёме памяти вряд ли получится собрать простой mp3-плеер. Однако вряд ли кто будет пытаться сделать на основе Arduino, скажем, управляемую крылатую ракету :) Кроме того, мне не удалось найти вменяемых исходников для сборки avr-gcc. Ну и само собой, придётся знать (или изучить в процессе) основы электроники на уровне «плюс/минус, резистор/конденсатор» — без этого точно никак.

Источник

Arduino.ru

Аппаратная часть платформы Arduino

Существует несколько версий платформ Arduino. Последняя версия Leonardo базируется на микроконтроллере ATmega32u4. Uno, как и предыдущая версия Duemilanove построены на микроконтроллере Atmel ATmega328 (техническое описание). Старые версии платформы Diecimila и первая рабочая Duemilanoves были разработаны на основе Atmel ATmega168 (техническое описание), более ранние версии использовали ATmega8 (техническое описание). Arduino Mega2560, в свою очередь, построена на микроконтроллере ATmega2560 (техническое описание).

Примечание: На всю документацию Arduino распространяется лицензия ShareAlike 3.0 Creative Commons Attribution. Обратитесь к странице «Вы хотите собрать Arduino?» (англ) за более подробной информацией по разработке собственной платформы.

Версии платформы Arduino:

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

  • Due — новая плата на базе ARM микропроцессора 32bit Cortex-M3 ARM SAM3U4E.
  • Leonardo — последняя версия платформы Arduno на ATmega32u4 микроконтроллере . Отличается разъемом microUSB, по размерам совпадает с UNO.
  • Yun (описание на англ.) — новая плата, с встроенной поддержкой WiFi на базе ATmega32u4 and the Atheros AR9331
  • Micro — новое компактное решение на базе ATmega32u4.
  • Uno — самая популяраня версия базовой платформы Arduino USB. Uno имеет стандартный порт USB. Arduino Uno во многом схожа с Duemilanove, но имеет новый чип ATMega8U2 для последовательного подключения по USB и новую, более удобную маркировку вход/выходов. Платформа может быть дополнена платами расширения, например, пользовательскими платами с различными функциями.
  • Arduino Ethernet — контроллер со встроенной поддержкой работы по сети и с опциональной возможностью питания по сети с помощью модуля POE (Power over Ethernet).
  • Duemilanove — является предпоследней версией базовой платформы Arduino USB. Подключение Duemilanove производится стандартным кабелем USB. После подключения она готова к использованию. Платформа может быть дополнена платами расширения, например, пользовательскими платами с различными функциями.
  • Diecimila — предыдущая версия базовой платформы Arduino USB.
  • Nano — это компактная платформа, используемая как макет. Nano подключается к компьютеру при помощи кабеля USB Mini-B.
  • Mega ADK — версия платы Mega 2560 с поддрежкой USB host интерфейса для связи с телефонами на Android и другими устройствами с USB интерфейсом.
  • Mega2560 – новая версия платы серии Mega. Построена на базе Atmega2560 и с использованием чипа ATMega8U2 для последовательного соединения по USB порту.
  • Mega – предыдущая версия серии Mega на базе Atmega1280.
  • Arduino BT платформа с модулем Bluetooth для беспроводной связи и программирования. Совместима с платами расширения Arduino.
  • LilyPad– платформа, пурпурного цвета, разработанная для переноски, может зашиваться в ткань.
  • Fio – платформа разработана для беспроводных применений. Fio содержит разъем для радио XBee, разъем для батареи LiPo и встроенную схему подзарядки.
  • Mini – самая маленькая платформа Arduino. Прекрасно работает как макетная модель, или, в проектах, где пространство является критическим параметром. Платформа подключается к компьютеру при помощи адаптера Mini USB.
  • Адаптер Mini USB – плата, конвертирующая подключение USB в линии 5 В, GND, TX и RX для соединения с платформой Arduino Mini или другими микроконтроллерами.
  • Pro – платформа, разработанная для опытных пользователей, может являться частью большего проекта. Она дешевле, чем Diecimila и может питаться от аккумуляторной батареи, но в тоже время требует дополнительной сборки и компонентов.
  • Pro Mini – как и платформа Pro разработана для опытных пользователей, которым требуется низкая цена, меньшие размеры и дополнительная функциональность.
  • Serial – базовая платформа с интерфейсом RS232 для связи и программирования. Плата легко собирается даже начинающими пользователями. (включает схемы и файлы CAD)
  • Serial Single Sided – платформа разработана для ручной сборки. Она обладает чуть большим размером, чем Diecimila, но совместима с платами расширения Arduino.
  • USB Serial Light Адаптер — адаптер, позволяющий подключать платы Arduino к компьютеру для обмена данными и заливки скетчей. Удобен для программирования таких плат, как Arduino Mini, Arduino Ethernet и других, не имеющих своего разъема USB
Платы расширения

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

  • Плата расширения WiFiиспользуется для соединения с беспроводными сетями стандарта 802.11 b/g.
  • Плата расширения Xbee Shield обеспечивает при помощи модуля Maxstream Xbee Zigbee беспроводную связь нескольким устройствам Arduino в радиусе до 35 метров (в помещении) и до 90 метров (вне помещения).
  • Плата расширения Motor Shield обеспечивает управление двигателями постоянного тока и чтение датчиков положения.
  • Плата расширения Ethernet Shield обеспечивает подключение к интернету.
Рекомендуемые аппаратные средства других разработчиков

Испытанные и понравившиеся устройства других разработчиков, совместимые с программой Arduino:

Платформа Boarduino от Adafruit Industries. Предназначена для использования с кабелем FTDI USB-to-TTL-Serial или другим адаптером USB-to-serial. Доступна в виде пустой печатной платы или в комплекте.

Другие сопутствующие устройства

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

Источник

Arduino: выбор платы, подключение и первая программа

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

Из чего состоит Arduino?

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

Платы имеют на борту всё необходимое для комфортной работы, но их функциональности часто бывает недостаточно. Чтобы сделать свой проект более интерактивным, можно использовать различные модули и платы расширений, совместимые с платформой Arduino. Сюда входят датчики (температуры, освещения, влаги, газа/дыма, атмосферного давления), устройства ввода (клавиатуры, джойстики, сенсорные панели) и вывода (сегментные индикаторы, LCD/TFT дисплеи, светодиодные матрицы).

На программном уровне платформа Arduino представляет собой бесплатную среду разработки Arduino IDE. Микроконтроллеры надо программировать на языке C++, с некоторыми отличиями и облегчениями, созданными для быстрой адаптации начинающих. Компиляцию программного кода и прошивку микроконтроллера среда разработки берёт на себя.

Существует также s4a.cat — сервис, базирующийся на Scratch, позволяющий более наглядно вести разработку на Arduino. Он подойдёт для обучения детей, а также если вы разово хотите создать простое устройство без изучения языка программирования Arduino и различных документаций. Для остальных же случаев лучше придерживаться традиционного процесса разработки.

Нужно ли уметь паять?

Знания в области электромонтажа приветствуются, но совсем не обязательны. Простые устройства на базе Arduino часто выполняются в виде макета. Для этого используется беспаечная макетная плата (англ. breadboard), на которой происходит коммутация модулей с платой Arduino с помощью перемычек.

Макетная плата на 400 отверстий (имеются шины питания по бокам). Источник

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

Набор для изучения Arduino. Источник

Какие бывают платы

По производителю

Существуют как официальные версии плат Arduino, так и платы от сторонних производителей. Оригинальные платы отличаются высоким качеством продукта, но и цена тоже выше. Они производятся только в Италии и США, о чём свидетельствует надпись на самой плате.

На примере самой популярной платы Arduino UNO:

    Оригинальная плата. Поставляется только в фирменной коробке, имеет логотип компании, на портах платы — маркировка. Цена от производителя 20 €.

Оригинальная плата Arduino UNO. Источник

Плата Arduino UNO от стороннего производителя. Источник

По назначению

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

Различные платы Arduino. Источник

Самые популярные из них:

  • Arduino Nano — различие с UNO только в конструктивном исполнении. Nano меньше.
  • Arduino Mega — плата на базе мощного микроконтроллера. Имеет большое количество портов.
  • Arduino Micro — имеет встроенную поддержку USB-соединения, а потому может использоваться как HID-устройство (клавиатура, мышь, MIDI-устройство).
  • Arduino Ethernet — имеет возможность подключения к сети через Ethernet-провод. На плате также расположен слот для microSD карточки.
  • Arduino Mini — по характеристикам немного уступает UNO. Преимуществом платы является её миниатюрное исполнение.
  • Arduino Due — плата на базе 32-разрядного ARM микроконтроллера. Имеет преимущество в производительности по сравнению с остальными.
  • Arduino LilyPad — форм-фактор позволяет использовать плату в предметах одежды и текстиля.
  • Arduino Yún — «нужно было ставить линукс…». Имеет поддержку дистрибутива Linux, встроенную поддержку Ethernet и Wi-Fi, слот для microSD. Как и Micro, имеет встроенную поддержку USB-соединения.

Установка ПО

После выбора необходимой платы нужно установить бесплатную среду разработки Arduino IDE, которую можно найти на официальном сайте, а также, по необходимости, драйвер CH340.

Недавно открылась облачная платформа Arduino Create, которая покрывает большинство этапов разработки (от идеи до сборки). Вам не нужно ничего устанавливать на свой компьютер, всё необходимое платформа берёт на себя. В первую очередь — онлайн редактор кода.

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

Среда разработки Arduino IDE

Особенности программирования на платформе Arduino

Термины

Программный код для Arduino принято называть скетчами (англ. sketches). У скетчей есть два основных метода: setup() и loop() . Первый метод автоматически вызывается после включения/сброса микроконтроллера. В нём происходит инициализация портов и различных модулей, систем. Метод loop() вызывается в бесконечном цикле на протяжении всей работы микроконтроллера.

Порты — неотъемлемая часть любого микроконтроллера. Через них происходит взаимодействие микроконтроллера с внешними устройствами. С программной стороны порты называются пинами. Любой пин может работать в режиме входа (для дальнейшего считывания напряжения с него) или в режиме выхода (для дальнейшей установки напряжения на нём).

Любой пин работает с двумя логическими состояниями: LOW и HIGH , что эквивалентно логическому нулю и единице соответственно. У некоторых портов есть встроенный АЦП, что позволяет считывать аналоговый сигнал со входа (например, значение переменного резистора). Также некоторые пины могут работать в режиме ШИМ (англ. PWM), что позволяет устанавливать аналоговое напряжение на выходе. Обычно функциональные возможности пина указываются на маркировке самой платы.

Основные функции

Для базовой работы с платой в библиотеке Arduino есть следующие функции:

  • pinMode(PIN, type) — указывает назначение конкретного пина PIN (значение type INPUT — вход, OUTPUT — выход);
  • digitalWrite(PIN, state) — устанавливает логическое состояние на выходе PIN ( state LOW — 0, HIGH — 1);
  • digitalRead(PIN) — возвращает логическое состояние со входа PIN ( LOW — 0, HIGH — 1);
  • analogWrite(PIN, state) — устанавливает аналоговое напряжение на выходе PIN ( state в пределах от 0 до 255);
  • analogRead(PIN) — возвращает значение аналогового уровня сигнала со входа PIN (пределы зависят от разрядности встроенного АЦП. Обычно разрядность составляет 10 бит, следовательно, возвращаемое значение лежит в пределах от 0 до 1023);
  • delay(ms) — приостанавливает исполнение скетча на заданное количество миллисекунд;
  • millis() — возвращает количество миллисекунд после момента запуска микроконтроллера.

В остальном процесс программирования на Arduino такой же, как на стандартном C++.

Пишем первую программу

Вместо всем привычных Hello World’ов в Arduino принято запускать скетч Blink, который можно найти в ФайлПримеры01.BasicsBlink. Там же можно найти множество других учебных скетчей на разные темы.

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

Рассмотрим скетч Blink:

Прошивка

После написания необходимо «залить» скетч на микроконтроллер. Как уже говорилось, платформа Arduino берёт весь процесс прошивки микроконтроллера на себя — вам лишь необходимо подключить плату к компьютеру.

Перед прошивкой микроконтроллера нужно выбрать вашу плату из списка в IDE. Делается это во вкладке ИнструментыПлата. Большинство существующих плат уже там есть, но при необходимости можно добавлять другие через Менеджер Плат.

После этого нужно подключить плату Arduino к любому USB-порту вашего компьютера и выбрать соответствующий порт во вкладке ИнструментыПорт.

Теперь можно приступать к прошивке микроконтроллера. Для этого достаточно нажать кнопку Загрузка, либо зайти на вкладку СкетчЗагрузка. После нажатия начнётся компиляция кода, и в случае отсутствия ошибок компиляции начнётся прошивка микроконтроллера. Если все этапы выполнены правильно, на плате замигает светодиод с периодом и интервалом в 1 сек.

Обмен данными с компьютером

У всех плат Arduino есть возможность обмена информацией с компьютером. Обмен происходит по USB-кабелю — никаких дополнительных «плюшек» не требуется. Нам нужен класс Serial , который содержит все необходимые функции. Перед работой с классом необходимо инициализировать последовательный порт, указав при этом скорость передачи данных (по умолчанию она равна 9600). Для отправки текстовых данных в классе Serial существуют небезызвестные методы print() и println() . Рассмотрим следующий скетч:

В Arduino IDE есть Монитор порта. Запустить его можно через ИнструментыМонитор порта. После его открытия убедитесь, что Монитор работает на той же скорости, которую вы указали при инициализации последовательного порта в скетче. Это можно сделать в нижней панели Монитора. Если всё правильно настроено, то ежесекундно в Мониторе должна появляться новая строка « T for Tproger ». Обмен данными с компьютером можно использовать для отладки вашего устройства.

Информацию на стороне компьютера можно не только получать, но и отправлять. Для этого рассмотрим следующий скетч:

Прошиваем микроконтроллер и возвращаемся в Монитор порта. Вводим в верхнее поле 1 и нажимаем Отправить. После этого на плате должен загореться светодиод. Выключаем светодиод, отправив с Монитора 0 . Если же отправить символ T , в ответ мы должны получить строку « proger ».

Таким способом можно пересылать информацию с компьютера на Arduino и обратно. Подобным образом можно реализовать связь между двумя Arduino.

А как подключать модули?

Для работы с датчиками и модулями их изготовители создают специальные библиотеки. Они служат для простой интеграции модулей в вашу систему. Подключение библиотеки возможно с zip файла или с помощью Менеджера Библиотек.

Однако большое количество датчиков являются бинарными, т. е. считывать информацию с них можно простой функцией digitalRead() .

Источник

Какие микроконтроллеры используются на платах ардуино

Arduino.ru

Аппаратная часть платформы Arduino

Существует несколько версий платформ Arduino. Последняя версия Leonardo базируется на микроконтроллере ATmega32u4. Uno, как и предыдущая версия Duemilanove построены на микроконтроллере Atmel ATmega328 (техническое описание). Старые версии платформы Diecimila и первая рабочая Duemilanoves были разработаны на основе Atmel ATmega168 (техническое описание), более ранние версии использовали ATmega8 (техническое описание). Arduino Mega2560, в свою очередь, построена на микроконтроллере ATmega2560 (техническое описание).

Примечание: На всю документацию Arduino распространяется лицензия ShareAlike 3.0 Creative Commons Attribution. Обратитесь к странице «Вы хотите собрать Arduino?» (англ) за более подробной информацией по разработке собственной платформы.

Версии платформы Arduino:

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

  • Due — новая плата на базе ARM микропроцессора 32bit Cortex-M3 ARM SAM3U4E.
  • Leonardo — последняя версия платформы Arduno на ATmega32u4 микроконтроллере . Отличается разъемом microUSB, по размерам совпадает с UNO.
  • Yun (описание на англ.) — новая плата, с встроенной поддержкой WiFi на базе ATmega32u4 and the Atheros AR9331
  • Micro — новое компактное решение на базе ATmega32u4.
  • Uno — самая популяраня версия базовой платформы Arduino USB. Uno имеет стандартный порт USB. Arduino Uno во многом схожа с Duemilanove, но имеет новый чип ATMega8U2 для последовательного подключения по USB и новую, более удобную маркировку вход/выходов. Платформа может быть дополнена платами расширения, например, пользовательскими платами с различными функциями.
  • Arduino Ethernet — контроллер со встроенной поддержкой работы по сети и с опциональной возможностью питания по сети с помощью модуля POE (Power over Ethernet).
  • Duemilanove — является предпоследней версией базовой платформы Arduino USB. Подключение Duemilanove производится стандартным кабелем USB. После подключения она готова к использованию. Платформа может быть дополнена платами расширения, например, пользовательскими платами с различными функциями.
  • Diecimila — предыдущая версия базовой платформы Arduino USB.
  • Nano — это компактная платформа, используемая как макет. Nano подключается к компьютеру при помощи кабеля USB Mini-B.
  • Mega ADK — версия платы Mega 2560 с поддрежкой USB host интерфейса для связи с телефонами на Android и другими устройствами с USB интерфейсом.
  • Mega2560 – новая версия платы серии Mega. Построена на базе Atmega2560 и с использованием чипа ATMega8U2 для последовательного соединения по USB порту.
  • Mega – предыдущая версия серии Mega на базе Atmega1280.
  • Arduino BT платформа с модулем Bluetooth для беспроводной связи и программирования. Совместима с платами расширения Arduino.
  • LilyPad– платформа, пурпурного цвета, разработанная для переноски, может зашиваться в ткань.
  • Fio – платформа разработана для беспроводных применений. Fio содержит разъем для радио XBee, разъем для батареи LiPo и встроенную схему подзарядки.
  • Mini – самая маленькая платформа Arduino. Прекрасно работает как макетная модель, или, в проектах, где пространство является критическим параметром. Платформа подключается к компьютеру при помощи адаптера Mini USB.
  • Адаптер Mini USB – плата, конвертирующая подключение USB в линии 5 В, GND, TX и RX для соединения с платформой Arduino Mini или другими микроконтроллерами.
  • Pro – платформа, разработанная для опытных пользователей, может являться частью большего проекта. Она дешевле, чем Diecimila и может питаться от аккумуляторной батареи, но в тоже время требует дополнительной сборки и компонентов.
  • Pro Mini – как и платформа Pro разработана для опытных пользователей, которым требуется низкая цена, меньшие размеры и дополнительная функциональность.
  • Serial – базовая платформа с интерфейсом RS232 для связи и программирования. Плата легко собирается даже начинающими пользователями. (включает схемы и файлы CAD)
  • Serial Single Sided – платформа разработана для ручной сборки. Она обладает чуть большим размером, чем Diecimila, но совместима с платами расширения Arduino.
  • USB Serial Light Адаптер — адаптер, позволяющий подключать платы Arduino к компьютеру для обмена данными и заливки скетчей. Удобен для программирования таких плат, как Arduino Mini, Arduino Ethernet и других, не имеющих своего разъема USB
Платы расширения

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

  • Плата расширения WiFiиспользуется для соединения с беспроводными сетями стандарта 802.11 b/g.
  • Плата расширения Xbee Shield обеспечивает при помощи модуля Maxstream Xbee Zigbee беспроводную связь нескольким устройствам Arduino в радиусе до 35 метров (в помещении) и до 90 метров (вне помещения).
  • Плата расширения Motor Shield обеспечивает управление двигателями постоянного тока и чтение датчиков положения.
  • Плата расширения Ethernet Shield обеспечивает подключение к интернету.
Рекомендуемые аппаратные средства других разработчиков

Испытанные и понравившиеся устройства других разработчиков, совместимые с программой Arduino:

Платформа Boarduino от Adafruit Industries. Предназначена для использования с кабелем FTDI USB-to-TTL-Serial или другим адаптером USB-to-serial. Доступна в виде пустой печатной платы или в комплекте.

Другие сопутствующие устройства

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

Источник

Что такое Arduino?

Что такое Arduino? Формально это торговая марка, под которой выпускаются официальные платы и программы. Название Arduino идёт от одноименного названия забегаловки в Италии, где создатели любили пропустить по рюмочке. С точки зрения использования, Arduino – это платформа для разработки электронных устройств, точнее их прототипов и макетов. Включает в себя железо (платы) и софт (среда разработки).

Семейство Arduino – несколько моделей так называемых отладочных плат. Отладочная плата представляет собой как ни странно печатную плату, на которой стоит микроконтроллер (далее МК) – та самая штука, которую мы будем программировать. В младших платах Arduino используются микроконтроллеры AVR (UNO, Nano, Mega, Leonardo), в современных моделях стоят более мощные ARM Cortex для более серьёзных проектов.

Ардуино является открытой платформой, поэтому модельный ряд постоянно пополняется неофициальными платами от других производителей, такие платы называют “Arduino-совместимыми”. С ними можно работать в официальной программе Arduino IDE, писать на том же языке с тем же набором команд и даже использовать те же библиотеки! В качестве примера: это платы Teensy, платы на базе МК esp32 и esp8266 (Wemos, NodeMCU), различных китайских клонов и так далее.

Рассмотрим, из чего состоит платформа и какие задачи она решает.

Железо (аппаратная часть)

Как собрать электронное устройство на базе МК? Нужно:

  • Сделать печатную плату, ибо сам МК очень маленький и паять его неудобно.
  • Обеспечить тактирование МК (те самые мегагерцы, как в обычном компьютере) – подключить тактовый генератор.
  • Добавить необходимую обвязку: фильтры по питанию, кнопку перезагрузки, некоторые МК требуют подключения резисторов к определённым пинам, и так далее.
  • Подключить остальные компоненты проекта: расположить их на плате или предусмотреть штекеры.
  • Обеспечить стабильное питание схемы, возможно даже в широком диапазоне питающего напряжения.
  • Некоторые МК нужно “настроить” при помощи программатора.
  • Загрузить прошивку при помощи программатора.

Звучит сложно, именно поэтому ребята из Arduino решили объединить всё это на одной плате: уже настроенный микроконтроллер и всё необходимое для его работы, стабилизатор напряжения, и самое главное – программатор, он тоже расположен на плате и для загрузки прошивки достаточно просто подключить USB кабель! Ноги МК выведены на рейку с пинами (стандартный шаг 2.54 мм), что позволяет работать с платой на брэдборде (макетная плата) и быстро подключать к ней любые компоненты. Изначально сложную задачу упростили до электронного “конструктора”, именно поэтому Arduino стали настолько популярны.

Софт (программная часть)

Как запрограммировать МК? Нужно:

  • Написать прошивку (при помощи любого текстового редактора).
  • Скомпилировать прошивку (для AVR – при помощи бесплатного консольного компилятора avr-gcc).
  • Загрузить прошивку в МК (для AVR – при помощи консольной утилиты avrdude).

Для этого у Arduino есть своя IDE (Integrated Development Environment) – интегрированная среда разработки Arduino IDE. Она представляет собой текстовый редактор, умеет компилировать и загружать код. А также менеджер библиотек и поддержку неофициальных плат. Таким образом весь процесс прошивки сводится к одному щелчку по кнопке загрузить: никаких настроек, никаких плясок с бубном, ничего лишнего. Подробнее об Arduino IDE мы поговорим в отдельном уроке.

Также к программной части можно отнести:

  • “Язык” Arduino, который на самом деле является просто встроенной библиотекой. У всех Arduino-совместимых плат есть одинаковый набор функций, поэтому проект можно практически без изменений перенести с одной платы на другую.
  • Библиотеки, которые в сотни упрощают работу с модулями и прочими железками. Для Arduino-среды существует около 5000 библиотек, которые охватывают все Arduino-модули и некоторые микросхемы. Также среди библиотек можно найти различные интересные алгоритмы обработки данных и прочие полезные штуки.

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

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

На каком языке программируется Arduino? Многие называют его “упрощённый C++“, “разновидность C++“, “язык Ардуино“, сами Arduino называют его “Arduino Wiring“. Но на самом деле язык здесь – обычный C++ (си-плюс-плюс) со всем соответствующим ему синтаксисом и возможностями (версия C++17). Но есть пара моментов:

  • Среда Arduino IDE слегка меняет стандартный вид программы на C++ и действительно упрощает понимание для новичка. В то же время IDE не заставляет писать программу “по-Ардуиновски”, можно оформлять её как обычную программу на Си.
  • Arduino IDE автоматически подключает в код библиотеку Arduino.h, которая содержит базовый набор функций для работы с МК, а также некоторые константы и математические функции, которые пошли из открытого фреймворка Wiring.

Дополнительно в Arduino IDE нам доступно:

  • Встроенные библиотеки для работы с интерфейсами связи и памятью.
  • В папке с программой лежит набор стандартных библиотек: для LCD дисплея, шагового мотора, сервопривода и некоторых других железок.
  • [Только для AVR Arduino] Вместе с компилятором идёт набор низкоуровневых библиотек для AVR (сон, progmem, watchdog и многие многие другие).
  • Работа с микроконтроллером “напрямую” при помощи регистров.
  • Можно писать на ассемблере, взяв под контроль каждый такт работы МК.

Если вы научитесь свободно программировать Ардуино и вдруг перейдете к разработке программ на том же C++ в более взрослых средах разработки, вы будете неприятно удивлены большим количеством дополнительного кода, который придется писать руками. И наоборот, если умеющий в C++ человек посмотрит на типичный ардуино-код, он скажет “да как это вообще работает?”. Компилятор в Arduino IDE настроен на максимальную всеядность и прощение ошибок, потому что это обучающая платформа.

Библиотеки

Жизнь рядового ардуинщика неразрывно связана с библиотеками, потому что огромное комьюнити за годы своего существования сделало огромное количество этих самых библиотек на все случаи жизни и для всех продающихся датчиков и модулей. Библиотека это набор файлов с кодом, которым мы можем пользоваться просто ознакомившись с документацией или посмотрев примеры. Такой подход называется “черным ящиком”, мы можем даже не догадываться, насколько сложный код содержится в библиотеке, но будем с лёгкостью пользоваться возможностями, который этот код даёт. Купили модуль – нашли библиотеку – открыли пример – всё, результат достигнут.

Чистый Си? Писать без библиотек?

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

  • Современные микроконтроллеры имеют достаточно памяти для того, чтобы разработчик мог позволить себе сэкономить время и использовать готовые инструменты. Более того, серьёзные разработки делаются с использованием операционных систем реального времени, которые сами по себе являются огромной тяжёлой библиотекой. Никто не пишет на ассемблере, за окном не 1980 год.
  • Компилятор “вырежет” неиспользуемый код из библиотеки.
  • Если писать крупный проект чисто голым кодом – это будет полотно на несколько тысяч строк, в котором невозможно будет разобраться. Программу разбивают на файлы – по сути на те же самые библиотеки! Некоторые алгоритмы и части программы изначально удобно обернуть в независимую библиотеку и использовать в том числе для других проектов, чтобы не писать заново. Так что писать без библиотек невозможно в принципе, неважно скачаете ли вы её с интернета или напишете сами.
  • Если у вас в проекте одна кнопка – нет большой разницы, описывать её вручную или использовать библиотеку. Но как только появляется ещё одна кнопка – с точки зрения памяти гораздо эффективнее использовать библиотеку, потому что код обработки не будет дублироваться. К этому мы вернёмся в уроке про создание крупных проектов.
  • Если вы новичок, то в 99% библиотека из интернета будет написана и оптимизирована в разы лучше, чем ваш код.

Возможности

Зачем учиться работать с Ардуино и электроникой в целом?

  • Это невероятно интересное, техническое, развивающее мозги и относительно дешёвое “DIY” хобби с бесконечным количеством идей и способов их реализаций
  • Возможность создания узко-специальных электронных устройств и станков, аналогов которым нет в продаже или они слишком дорогие. В том числе для личных нужд или работы (знакомый ювелир сделал себе контроллер для муфельной печи, который стоит очень дорого).
  • Возможность создания уникальных устройств с целью выхода на краудфандинг и запуска своего бизнеса.
  • Отличная практика в программировании и электронике, особенно перед обучением на соответствующую специальность.
  • Возможности в целом: автоматизация, автоматическое регулирование процессов, дистанционное управление, мониторинг различных величин, носимые и стационарные электронные устройства различного назначения.

Хейтеры платформы

В мире серьезных программистов и разработчиков очень не любят Ардуино. Почему? Рассмотрим несколько популярных негативных комментариев о платформе.

  • В среде Arduino IDE работа с микроконтроллером упрощена настолько, что ардуинщику вообще ничего не нужно знать о его архитектуре и о том, как он вообще программируется и настраивается: все сделано в виде готовых и понятных функций.
    • С каких пор удобство и простота стали плохими? Для новичка это единственный способ познакомиться с миром робототехники без изучения кипы документации и получения соответствующего образования. Ардуино создана в первую очередь для обучения, и во вторую – для быстрого и удобного создания прототипов электронных устройств, это её фишка.
  • Это всё конечно хорошо, но скрытый за ширмой дружелюбного “Ардуино Вайринга” код ужасает: за безобидными на первый взгляд функциями кроются полотна кода, который что-то проверят, перепроверяет, перенастраивает уже настроенное и делает многие другие на первый взгляд ненужные вещи. Это безобразие работает очень медленно и занимает кучу места!
    • Да, стандартные функции имеют кучу защит от дурака новичка, они тяжёлые и медленные. Но новичок и не сможет написать такой код, где скорость и память будут настолько критичны! А если понадобится, то к этому времени он уже будет в состоянии писать код оптимально и найдёт на моём сайте или в другом месте в Интернете быстрые аналоги Ардуино-функций или напишет их сам. И ещё один момент: ядро Ардуино устроено так, что обеспечивает совместимость кода и библиотек для всех Ардуино-плат. Начали делать проект на Arduino NANO и памяти/ног стало не хватать? Переносим проект на Arduino MEGA и продолжаем работать. NANO оказалась слишком велика для проекта? Переносим на ATTiny85, даже не открывая документацию: большинство библиотек работают на всех Ардуино-совместимых платах, это очень жирный плюс, хоть и в ущерб производительности и памяти.
  • Стандартные функции из Arduino.h описывают незначительную часть всех возможностей и настроек, которые есть в микроконтроллере.
    • А никто и не обещал вам HAL! Возможности МК раскрываются при использовании библиотек (см. список библиотек), благо сообщество у платформы действительно огромное. Также всегда можно научиться работать с даташитом и регистрами и настраивать всё что угодно и как угодно вручную.
  • Arduino IDE “скрывает” от пользователя важные низкоуровневые настройки.
    • И правильно делает! Одна ошибка – и можно остаться с заблокированным МК. При желании через Arduino IDE можно и фьюзы прошить, и под другие частоты настроить, об этом читайте вот в этом уроке.
  • Ардуино для детей! Серьёзные дяди работают с “голым камнем”.
    • Всё верно, для детей и домохозяек. Плата Ардуино задумана для создания макетов, прототипирования, её можно рассматривать как часть электронного “конструктора” для обучения. На плате есть вся необходимая обвязка, почему не использовать её даже как сердце готового проекта?
  • Arduino IDE для детей! Серьёзные дяди работают во взрослых средах разработки.
    • Верно, но есть небольшой нюанс: Arduino IDE официально бесплатная, после простой установки (Далее, Далее, Далее, Готово) она сразу готова к работе: достаточно выбрать плату из списка и начать писать код. Взрослые среды разработки требуют взрослого подхода и порог вхождения для работы с ними несоизмеримо высок. Помимо непростой установки и настройки вас ждут расширенные настройки самого микроконтроллера в ручном режиме, чтение документации и даташитов, “взрослый” интерфейс и множество нюансов в самом программировании и настройках компилятора. Времени на изучение этого всего уйдёт много, а нормальных уроков вы скорее всего не найдёте.
  • Ардуинщики ходят по замкнутому кругу, они никогда не разовьются дальше мигания светодиодом.
    • Платформа ничем не ограничивает разработчика, но если он сам не захочет – не разовьётся.
  • На Ардуино нельзя создать что-то реально сложное и интересное.
    • Скажите это ЧПУ станкам (прошивка GRBL), 3D принтерам (прошивка Marlin), квадрокоптерам и самолётам (прошивка Ardupilot) и многим другим крупным проектам.
  • А STM32 лучше! И в разы мощнее! И возможностей у неё больше! И она дешевле.
    • Да, да, да. Но не забывайте про порог вхождения и размер сообщества с контентом, библиотеками и примерами “для новичков”, а также о сложности работы с STM в целом. Посмотрите видосы вот на этом канале и сравните происходящее с Arduino. Что касается возможностей и скорости работы – для большинства любительских проектов Arduino (ATmega328/2560) будет более чем достаточно, особенно если уметь писать оптимальный код.
  • Качество кода “из Интернета” просто ужасное.
    • Да, из-за простых, но понятных стандартных примеров аудитория ардуинщиков выросла очень быстро и буквально завалила интернет своими проектами, завлекая тем самым в это хобби других новичков. 99% учебных примеров, примеров работы с библиотеками и модулями написаны простенько и ужасно неоптимально: int переменные для всего подряд, вездесущий delay, блокирующие циклы и прочее, помимо богомерзких ардуино-функций. Люди берут эти примеры как основу и продолжают дальше писать так же. Но эти люди стоят на пороге очень большой двери под названием робототехника. Перешагнув через этот порог, отбросив все кривые примеры и научившись грамотно выстраивать структуру своего кода, они попадают в мир безграничных возможностей для творчества и исследования, мир бесконечно интересных и разнообразных проектов на Arduino. Для этого я и пишу данные уроки.

Что ещё хочется сказать по поводу негатива от “профессионалов” – в большинстве случаев они просто завидуют: в “их время” для создания даже простенького проекта на базе микроконтроллера нужно было потратить огромное количество времени на изучение документации на английском языке на конкретную модель МК, на все остальные железки и микросхемы в проекте, научиться работать в недружелюбной среде разработки, развести и спаять плату, купить дорогой программатор и прочее прочее. А в наше время можно купить плату за 150р, воткнуть её в USB, запустить программу вида “блокнот с кнопкой Загрузить” и начать кодить с использованием огромного количества готовых библиотек и примеров для практически любых железок на рынке, а на любой свой вопрос можно найти ответ в гугле. Реально, у ребят просто пригорает одно место =)

Видео версия

Источник

Adblock
detector