Знакомство с ARDUINO Платформа ARDUINO представляет собой «электронный конструктор» для быстрой разработки различных устройств под управлением микроконтроллеров семейства AVR. Платы, на которых установлен микроконтроллер Платы расширения – «шилды» (shield) Что значит «быстрая разработка»? Почему микроконтроллеры установлены на какие-то платы с множеством непонятных разъёмов? Все очень просто! При подготовке разработчиков устройств на микроконтроллерах, львиная доля времени подготовки уходит на изучение особенностей микроконтроллеров, с которыми предстоит работать данному разработчику, что отодвигает на второй план изучение языка программирования и алгоритмов работы создаваемых им устройств. В свою очередь, это ведет к множеству ошибок при обучении, а следовательно, к увеличению времени обучения и серьезным требованиям к квалификации обучающегося в области ЭВМ и информационных технологий. К тому же, сам процесс записи программы в память микроконтроллера (т.н. прошивка) требует наличия нескольких устройств и довольно сложной их настройки, что затруднительно для новичка. Поэтому, для преодоления этих трудностей была разработана платформа Arduino. Что же в итоге получилось? А получилось то, что разработчик в процессе обучения может полностью сосредоточится на написании программы и продумывании алгоритма работы устройства, а аппаратные настройки микроконтроллера не занимают какоголибо существенного времени и выполняются через интуитивно понятные любому человеку функции языка программирования. Как это происходит? Для сравнения, код на языке С (Си) для микроконтроллера AVR и Arduino Программа «Помигать светодиодом» Тоже самое касается и «прошивки» микроконтроллера При программировании «чистого» микроконтроллера необходимо задать его режим работы с помощью т.н. «фьюз-битов», скомпилировать программу в файл с расширением .hex и с помощью программатора загрузить её микроконтроллер, предварительно подключенный к питанию и необходимому «обвесу». В случае же с Arduino, пользователю всего лишь необходимо нажать на кнопку «Загрузка» в среде программирования и программа через USB загрузится в Arduino (точнее, в микроконтроллер). Эта простота достигается тем, что на микроконтроллер уже установлена маленькая программа, называемая «загрузчик», в которой уже сделаны все настройки микроконтроллера, а также на самой плате Arduino есть весь необходимый интерфейс для обмена данными с компьютером через USB. Казалось бы, все хорошо! Но, есть и недостатки… На сегодняшний день платформа Arduino применяется как правило только в учебных целях. Но ведь на Arduino можно создать практически любой проект, что и на микроконтроллере, который входит в её устройство, вплоть до роботов под управлением искусственного интеллекта! Однако, сама плата содержит много лишних устройств не нужных при работе микроконтроллера в составе реальной системы, также для некоторых приложений необходима более тонкая настройка микроконтроллера, что невозможно (или затруднено) в среде программирования Arduino. К тому же сильно различается цена платы Arduino и «чистого» микроконтроллера AVR. Но, как показывает практика, порог вхождения человека в мир микроконтроллеров при обучении на Arduino существенно ниже, чем при обучении его «в лоб». Из-за этого все детские школы робототехники используют исключительно Arduino или подобные платформы. Как выглядит Arduino? Плата, на которой установлен микроконтроллер Плата Arduino UNO Кроме, собственно, микроконтроллера, имеет все элементы, необходимые для его работы: разъемы для быстрого подключения микроконтроллера к периферийным устройствам – 14 цифровых и 6 аналоговых входов-выходов; USB-разъем для подключения ПК и микроконтроллер для согласования сигналов USB и UART; разъем питания и стабилизатор напряжения +5 В; ICSP-разъём для внутрисхемного программирования; кнопка сброса. Договоримся о терминах микроконтроллер — контроллер под Arduino будем подразумевать только платы с контроллером (например Arduino UNO); входы-выходы контроллера будем называть «пины» (от англ. слова pin). Литература: 1) Колмаков С. «Дело в программировании» 2) Саймон Монк «Программируем Arduino» 3) Петин В., Биняковский А. «Практическая энциклопедия Arduino» 4) Иго Том «Arduino, датчики и сети для связи устройств» 5) John-David Warren, Josh Adams «Arduino robotics» Интернет-ресурсы: www.arduino.cc офф. сайт Arduino doc.arduino.ua Arduino.ua – документация по Arduino arduino.ru Arduino.ru – тоже самое amperka.ru Amperka – сайт разработчиков на базе Arduino каналы на YouTube «AmperkaRu» плейлист «Видеоуроки по Arduino» «arduinoLab» «Jeremy Blum» Для решения различных задач существует целая линейка плат Arduino. Они различаются по размерам, моделям установленных контроллеров, наличием дополнительных функциональных блоков: Arduino UNO - это устройство на основе контроллера ATmega328 Arduino Leonardo - это устройство на базе контроллера ATmega32U4. По отношению к UNO обладает большим числом пинов и большей вычислительной мощностью. Также, преобразователь USB-UART встроен в кристалл контроллера Arduino Mega 2560 - это устройство на основе микроконтроллера ATmega2560. Имеет 54 цифровых входа/выхода (из которых 15 могут использоваться в качестве ШИМ-выходов), 16 аналоговых входов, 4 UART Arduino ADK – тоже, что и Arduino Mega плюс в нем реализован USB-хост для подключения смартфонов на базе операционной системы Android Arduino Due - это устройство на основе микропроцессора Atmel SAM3X8E ARM Cortex-M3. Имеет такое же количество пинов, что и Arduino Mega, но намного превосходит её по вычислительной мощности благодаря 32-битной архитектуре ядра и тактовой частоте 84 МГц Arduino Ethernet - это устройство на основе микроконтроллера ATmega328. Вместо USB-разъема содержит рзъем RJ45 и Ethernet-контроллер, также содержит встроенный MicroSD-кардридер, который позволяет хранить файлы, к которым можно организовать сетевой доступ. Arduino Pro - это устройство на базе микроконтроллера ATmega168. Имеет такой же функционал, как и Arduino UNO. Благодаря своим небольшим габаритам может применятся для разработки встраиваемых систем Arduino Pro Mini - это устройство на базе микроконтроллера ATmega328. Функционал аналогичен Arduino Pro за исключением более мощного контроллера. Также, имеет меньшие размеры. Arduino Micro - это устройство на основе микроконтроллера ATmega32u4. Уменьшенный вариант Arduino Leonardo. Arduino Nano - это устройство имеющее функционал Arduino UNO и адаптированное для использования с макетными платами. Arduino Mini - это устройство имеющее функционал Arduino UNO и адаптированное для использования с макетными платами. Имеет меньшие размеры, чем Arduino Nano. Также, на нём отсутствует USBразъем, и преобразователь USB-UART поэтому программирование осуществляется при помощи стороннего программатора. Arduino Fio - это устройство на базе микроконтроллера ATmega328P, работающего на частоте 8 МГц от 3.3В. На плате предусмотрен разъем для подключения литий-полимерного аккумулятора, а также цепи для его подзарядки от USB. На обратной стороне платы расположено гнездо для подключения модулей XBee. Arduino Fio ориентирован на использование в задачах, использующих беспроводную связь. Arduino YÚN - это первый представитель серии плат Ардуино со встроенным WiFi. Arduino YÚN представляет собой комбинацию Arduino Leonardo и WiFi-системы на кристалле, работающей под управлением Linino (дистрибутив ОС GNU/Linux на основе OpenWRT для микропроцессоров MIPS) Arduino Esplora - это микропроцессорное устройство, спроектированное на основе Arduino Leonardo. Esplora отличается от всех предыдущих плат Arduino наличием множества встроенных, готовых к использованию датчиков для взаимодействия. Он спроектирован для тех, кто предпочитает сразу начать работу с Ардуино, не изучая перед этим электронику. LilyPad Arduino - это устройство, специально разработанное для использования с предметами одежды и текстиля. Arduino Robot - первая официальная версия Ардуино, в конструкции которого предусмотрены колеса. Робот состоит из двух плат, каждая из которых содержит свой микропроцессор. Плата приводов (Motor Board) контролирует работу двигателей, в то время, как управляющая плата (Control Board) считывает показания датчиков и принимает решения о дальнейших операциях. Каждая из двух плат представляет собой полноценное устройство Arduino, программируемое с помощью среды разработки Arduino IDE. Arduino TRE – устройство на базе микропроцессора Sitara AM335x с тактовой частотой 1 ГГц. Обладает примерно в 100 раз большей производительностью по сравнению с Arduino Leonardo или Uno. Для разработчика такая производительность открывает широкие возможности по использованию мощных Linuxприложений. Ардуино на базе микропроцессора Sitara может выполнять высокопроизводительные десктоп-приложения Linux, ресурсоемкие алгоритмы и обеспечивать работу быстродействующих интерфейсов связи. Подробную информацию о шилдах см. на doc.arduino.ua Устройство ARDUINO Сердцем любой платы Arduino является КОНТРОЛЛЕР. На большинстве плат установлены контроллеры семейства AVR Микроконтроллер – это однокристальный компьютер, способный выполнять относительно простые задачи. Чем же он отличается от обычного компьютера кроме размеров? Обычный компьютер, не смотря на множество периферийных устройств, ориентирован на взаимодействие с пользователем Контроллер, а следовательно и Arduino, ориентирован на взаимодействие с различными электронными устройствами: датчиками, индикаторами, различными исполнительными устройствами, другими контроллерами. Для этого пины Arduino могут взаимодействовать с окружающей средой с помощью цифровых сигналов и преобразовывать аналоговые сигналы окружающей среды в цифровые с помощью встроенного аналогово-цифрового преобразователя. Основные характеристики Arduino UNO Микроконтроллер Рабочее напряжение Напряжение питания (рекомендуемое) Напряжение питания (предельное) Цифровые входы/выходы Аналоговые входы Максимальный ток одного вывода Максимальный выходной ток вывода 3.3V Flash-память SRAM EEPROM Тактовая частота ATmega328 5В 7-12В 6-20В 14 (из них 6 могут использоваться в качестве ШИМ-выходов) 6 40 мА 50 мА 32 КБ из которых 0.5 КБ используются загрузчиком 2 КБ 1 КБ 16 МГц Назначение пинов Arduino Выводы питания VIN. Напряжение, поступающее в Arduino непосредственно от внешнего источника питания (не связано с 5В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, когда устройство запитано от внешнего адаптера. 5V. На вывод поступает напряжение 5В от стабилизатора напряжения на плате, вне независимости от того, как запитано устройство: от адаптера (7 - 12В), от USB (5В) или через вывод VIN (7 - 12В). Запитывать устройство через выводы 5V или 3V3 не рекомендуется, поскольку в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя. 3V3. 3.3В, поступающие от стабилизатора напряжения на плате. Максимальный ток, потребляемый от этого вывода, составляет 50 мА. GND. Выводы земли. IOREF. Этот вывод предоставляет платам расширения информацию о рабочем напряжении контроллера Arduino. В зависимости от напряжения, считанного с вывода IOREF, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5В, так и с 3.3В-устройствами Аналоговые пины Пины (A0 - A5), каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 различных значения). По умолчанию, измерение напряжения осуществляется относительно диапазона от 0 до 5 В. Тем не менее, верхнюю границу этого диапазона можно изменить, используя вывод AREF и функцию analogReference(). Помимо этого, некоторые из аналоговых входов имеют дополнительные функции: TWI: вывод A4 или SDA и вывод A5 или SCL. С использованием библиотеки Wire данные выводы могут осуществлять связь по интерфейсу TWI. Цифровые пины Кроме, собственно, считывания и вывода цифровых сигналов у цифровых пинов существует несколько дополнительных функций Последовательный интерфейс: выводы 0 (RX) и 1 (TX). Используются для получения (RX) и передачи (TX) данных по последовательному интерфейсу. Эти выводы соединены с соответствующими выводами микросхемы ATmega8U2, выполняющей роль преобразователя USB-UART. Внешние прерывания: выводы 2 и 3. Могут служить источниками прерываний, возникающих при фронте, спаде или при низком уровне сигнала на этих выводах. ШИМ: выводы 3, 5, 6, 9, 10 и 11. С помощью функции analogWrite() могут выводить 8-битные аналоговые значения в виде ШИМ-сигнала. Интерфейс SPI: выводы 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). С применением библиотеки SPI данные выводы могут осуществлять связь по интерфейсу SPI. Светодиод: 13. Встроенный светодиод, подсоединенный к выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW - выключается. Соответствие пинов Arduino пинам контроллера Заключение Разработка устройств на базе Arduino позволит вам прикоснутся к маленькой вселенной, которая, зачастую незаметно, создает облик современного мира Спасибо за внимание!