8-900-374-94-44
[email protected]
Slide Image
Меню

Расширение портов ардуино: Расширяем порты

Содержание

Arduino Nano и 74HC595 - расширяем порты вывода: trampampamparam — LiveJournal

Как я уже рассказывал, я заказал три более или менее не пересекающихся набора датчиков для Ардуино. В обоих комплектах ко мне приехала микросхема 74HC595, которая так и осталась лежать в боксе до поры до времени. До поры до времени я даже не знал, что это за микросхема, и как вообще этот черный тараканчик промаркирован.

Но настали черные дни, когда мне перестало хватать выходных сигналов Arduino Nano, когда я занимался созданием устройства для тестирования шаговых двигателей. (TODO: вставить ссылку на статью о тестере ШД, когда будет готова). Моё устройство для тестирования ШД в результате вышло довольно комплексным - двухстрочный дисплей 1602 с системой меню, управляемое полнофункциональной клавиатурой 4x4, 3 цифровых разряда для установки величины микрошага ШД, сигналы Step и Dir для шагового двигателя, и тп. Казалось бы, самое время мигрировать на другую версию Arduino. Но моя природная лень воспротивилась этой миграции. И ленивая голова стала искать решение.

Было принято решение искать решение на базе уже того, что есть. Перебирая платки и детальки из наборов, я заметил 16ти-пинового черного "жука". Сначала в одном наборе, потом в другом. Решил поинтересоваться, что же это за деталь, и зачем её добавляют в наборы. Зачем её кладут в кит-наборы, я не понял, но саму микросхему нашел на сайте NXP.

Оказалось, что это довольно интересная микросхема - сдвиговый регистр с последовательным входом и параллельным выходом.

Условное обозначение микросхемы 74НС595 (из даташита)

Условное обозначение микросхемы 74НС595

Описание выводов


Контакт Наименование Описание и подключение
10 ~MR Master Reset - сброс, активный уровень низкий. В идеальном случае неплохо бы сделать схему сброса, которая сначала подает низкий уровень на этот вход, а затем переводит его в единичное состояние. Но можно не возиться, и подключить его на +5В. В этом случае на выходе до первой записи будут случайные значения
13 ~OE Output Enable - разрешение выхода, активный уровень низкий. При подаче 0 на выходы подается содержимое регистра, при подаче 1 - выходы отключаются, переводятся в Z-состояние, что позволяет использовать одну шину попеременно разным устройствам. Подключаем на землю, если не нужно управлять состоянием выходов
14 DS Serial Data In - последовательный вход. На этот вход следует подавать значение входного сигнала до подачи тактового сигнала сдвига SHCP
11 SHCP Shift Register Input clock - тактовый вход сдвигового регистра. Для вдвигания бита в регистр следует подать переход с 0 на 1. Когда возвращать в 0 - на усмотрение. Можно - сразу же, можно - непосредственно перед вдвиганием. В первом случае можно считать, что переключение происходит по фронту прямого сигнала, во втором - по спаду инверсного. См. также ниже замечания по быстродействию. Также по приходу этого сигнала изменяется значение последовательного выхода Q7/S
12 STCP Storage Register Clock Input - тактовый вход регистра защелки. По фронту данного импульса происходит перенос значения со сдвигового регистра на параллельные выходы Q0-Q7
9
Q7S Serial Data Output - последовательный выход. На него выводится значение старшего разряда сдвигового регистра. Данный выход может использоваться для масштабирования сдвигового регистра до 16ти-разрядной, 24х-разрядной и т.д. схемы
15, 1-7 Q0, Q1-7 Выходы регистра-защелки. Сигнал на них переносится с внутреннего сдвигового регистра по приходу сигнала STCP
8 GND Питание - общий провод
16 VCC Питание - +

Питание


HC версия микросхемы требует от 2В до 6В питания, версия HCT (TTL-совместимая) - от 4.5В до 5.5В. HCT - TTL - а оно вообще еще используется? Ардуино же вроде само по себе CMOS, так что HCT не нужно, но если нужно согласовывать уровни с внешними TTL потребителями, то можно запитать HC от 3.3В, тогда уровни сигналов будут совместимы с TTL. А вообще, с 5ти-вольтовым Ардуино должны работать и HC, и HCT. В интернетах так пишут.

Что более важно, так это блокировочные конденсаторы. Без них схема может работать не так, как задумано, и более того, непредсказуемо. Теоретически, в цепи питания каждого корпуса нужно ставить 0.1мкФ конденсатор. Это значение ёмкости я вычислил как среднее по интернету. Моя схема вполне заработала и без него. Чтобы уточнить, залез было в библию схемотехника, чтобы уточнить - Хилл и Хоровиц, "Искусство схемотехники" - это почти как "Искусство Программирования" Дональда Кнутта, но только для железячников (к слову, Хилл и Хоровиц гораздо ближе к народу, Кнутт через-чур умничает) - но там блокировочными конденсаторами похоже называют развязывающие по входам конденсаторы. Жаль, хорошая книга, но очень отстала уже от жизни. У меня второе или третье русское издание конца 90ых или начала 0ых годов, оригинал скорее всего ещё лет на 10 старше. На третьем, розовом томе, обнаружил наклейку - "14руб" - как же дешево тогда всё было, по современным меркам. А прошло-то всего 15 лет или чуть больше. Аж ностальгия замучала.

Быстродействие


В титле даташита 74HC595 пишут, что она работает на 100МГц. Беглый взгляд на графики и таблицы даташита говорит, что самые большие тайминги в диапазоне температур от -40C до +85C при питании 4.5В - 10-20нс (100-50МГц). С теми частотами, на которых работают Ардуино, ничего больше знать не требуется. Возможно, только то, что стандартные библиотечные digitalRead/digitalWrite - огромнейшие тормоза из-за различных проверок, и их можно (и нужно) переписать в виде более быстрой версии. В планах есть поковырять это и написать поподробнее, но пока у меня нет особой нужды.

Быстродействие Arduino Nano и библиотеки Arduino в плане скорости переключения выходов и обработки входов по моим наблюдениям где-то посередине от единиц килогерц до десятков килогерц. Так что, на мой взгляд, при написании кода для управления сдвиговым регистром 74HC595 нет нужды озадачиваться какими-либо задержками при установке управляющих сигналов.

Другое дело, что для 8ми разрядного последовательного расширителя следует делить максимальную доступную на Ардуино частоту переключения выходов - установили DS, установили SHCP в 1, сбросили SHCP (в 0) - 8 раз, и установка/сброс STCP. Итого, на вскидку, 3*8 + 2 = 26 операций digitalWrite. Итого выходит примерно в 25 раз медленнее, чем может сама Ардуинка.

При масштабировании до 16ти, 24х или 32х выходов замедление будет соответственно примерно 3*16 + 2 = 50, 3*24 + 2 = 74 и 3*32 + 2 = 98 раз.

Для управления чем-то действительно быстрым, очевидно, такой расширитель на сдвиговом регистре 74HC595 не подходит, но, в некоторых применениях, для задания редко меняющихся статичных сигналов вполне подходит. Так, например, я использовал такой расширитель для задания 3х-разрядного режима микрошага для установки режима микрошага для драйвера ШД DRV8825 в тестере для шаговых двигателей. К слову, мне это пока не особо пригодилось - шаговики из матричных принтеров ужасно работают в микрошаговом режиме, по крайней мере, под управлением драйвера DRV8825 - так, например, в режиме микрошага 1/2 половина шага какая-то вялая и не уверенная, только вторая половина бодрая и мощная. Поэтому при использовании микрошага при малейшем усилии на ось ШД он первые пол-шаги начинал пропускать. Остальные режимы микрошага я как-то после этого и не исследовал на имеющихся принтерных ШД.

Масштабирование


Расширитель выходов Ардуино на базе 74HC595 достаточно элементарно из 8ми-разрядной версии может быть переделан в схему любой разрядности. Для этого последовательный выход младшего регистра Q7S нужно соединить со входом DS более старшего, а линии SHCP и STCP соединить параллельно. Ну, и, в зависимости от принятого схемотехнического и программного решения, нужно выбрать, как подключать линии ~MR и ~OE.

Расширение ввода


Расширение линий ввода для Ардуино в принципе похоже на расширение вывода, с учетом того, что нужно не задавать значение DS на выходе, а считывать его на входе, и использовать микросхему типа 74HC597. Впрочем, это я пока на практике не проверял.

Мультиплексирование


Увеличить количество выходных линий, которыми управляет Ардуина, можно двумя способами: 1) увеличить разрядность одного последовательного выхода, что при увеличении разрядности в два, три или четыре раза соответственно уменьшает в два, три или четыре раза быстродействие расширителя; 2) параллельным подключением нескольких расширителей, при этом задействуя один дополнительный выход на каждый расширитель, что может сохранить быстродействие на приемлемом уровне, но требует использования как минимум одного выхода Ардуино для каждого расширителя.

Если не управлять прямо сигналами регистра 74HC595 - ~MR, ~OE с Ардуино, то достаточно только трех выходов Ардуино для управления сигналами DS, SHCP и STCP сдвигового регистра, чтобы при помощи микросхемы 74HC595 превратить их в 8 или 16 или больше выходных сигналов.

Для мультиплексирования нескольких расширителей на базе 74HC595 можно пойти двумя путями: 1) для каждого расширителя сигнала выделить отдельный latch сигнал - т.е. все регистры на шине параллельно сдвигают поступающие данные, и, соответственно, сдвигают значения на выходах внутреннего сдвигового регистра, но только один передает значение из внутреннего сдвигового регистра на выходы микросхемы; 2) сигналы сдвига передаются только на один из расширителей, а перенос значений сигналов на выход происходит одновременно для всех модулей расширения.

Я больше склонен использовать вариант, когда во внутренних сдвиговых регистрах может находится всё, что угодно (вариант 1), а на выходе зафиксировано какое-то из предыдущих значений, и вот почему: при переносе значений из внутреннего сдвигового регистра на выход могут происходить неконтролируемые переходы из 0 в 1 и обратно, какой-то дребезг сигнала, даже если исходное значение во внутреннем регистре и на выходе одно и то же. И, на мой взгляд, операцию переноса состояния внутреннего регистра сдвига на выходы 74HC595 следует использовать как можно реже.

Программная поддержка


Программная поддержка этого и подобных расширений заключается в том, чтобы не обращаться к устройствам напрямую через конкретные пины при помощи digitalRead/digitalWrite используемого контроллера Ардуино, а через пины абстрактного устройства ввода-вывода, которое, в свою очередь, может быть инициализировано как привязанное к конкретному типу Ардуино, так и к другому аналогичному абстрактному устройству.

платы расширения для Arduino Uno, Mega, Nano

Одним из ключевых преимуществ платформы Arduino является популярность. Популярную платформу активно поддерживают производители электронных устройств, выпускающие специальные версии различных плат, расширяющих базовую функциональность контроллера. Такие платы, совершенно логично называемые платами расширения (другое название: arduino shield, шилд),  служат для выполнения самых разнообразных задач и могут существенно упростить жизнь ардуинщика. В этой статье мы узнаем, что такое плата расширения Arduino и как ее можно использовать для работы с разнообразными устройствами Arduino: двигателями (шилды драйверов двигателей), LCD-экранами (шилды LCD), SD-картами (data logger), датчиками (sensor shield) и множеством других.

Плата расширения или Arduino shield?

Arduino Shields - платы расширения для ардуиноДавайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное Arduino shield или просто шилд. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.

Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.

Зачем нужны шилды arduino?

Arduino Shields - платы расширения для ардуино

Все очень просто: 1) для того, чтобы мы экономили время, и 2) кто-то смог заработать на этом. Зачем тратить время, проектируя, размещая, припаивая и отлаживая то, что можно взять уже в собранном варианте, сразу начав использовать? Хорошо продуманные и собранные на качественном оборудовании платы расширения, как правило, более надежны и занимают меньше места в конечном устройстве. Это не значит, что нужно полностью отказываться от самостоятельной сборки и не нужно разбираться в принципе действия тех или иных элементов. Ведь настоящий инженер всегда старается понять, как работает то, что он использует. Но мы сможем делать более сложные устройства, если не будем каждый раз изобретать велосипед, а сосредоточим свое внимание на том, что до нас еще мало кто решал.

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

Наиболее популярным примерами шилдов являются платы расширения для работы с датчиками,  двигателями, LCD-экранами, SD-картами, сетевые и GPS-шилды, шилды со встроенными реле для подключения к нагрузке.

Подключение Arduino Shields

Для подключения шилда нужно просто аккуратно «надеть» его на основную плату. Обычно контакты шилда типа гребенки (папа) легко вставляются в разъемы платы ардуино. В некоторых случаях требуется аккуратно подправить штырки, если сама плата спаяна неаккуратно. Тут главное действовать аккуратно и не прилагаться излишней силы.

Как правило, шилд предназначен для вполне конкретной версии контроллера, хотя, например, многие шилды для Arduino Uno вполне нормально работают с платами Arduino Mega. Распиновка контактов на меге выполнена так, что первые 14 цифровых контактов и контакты с противоположной стороны платы совпадают с расположением контактов на UNO, поэтому  в нее легко становится шилд от ардуино.

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

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

Чтение или запись сигналов шилдов производится тоже обычным методом: с помощью функций analogRead (), digitalRead (), digitalWrite () и других, привычных любому ардуинщику команд. В некоторых случаях возможны коллизии, когда вы привыкли к оной схеме соединения, а производитель выбрал другую (например, вы подтягивали кнопку к земле, а на шилде – к питанию). Тут нужно быть просто внимательным.

Arduino Sensor Shield

Как правило, эта плата расширения идет в наборах ардуино и поэтому именно с ней ардуинщики встречаются чаще всего. Шилд достаточно прост – его основная задача предоставить более удобные варианты подключения к плате Arduino. Это осуществляется за счет дополнительных  разъемов питания и земли, выведенных на плату к каждому из аналоговых и цифровых пинов. Также на плате можно найти разъемы для подключения внешнего источника питания (для переключения нужно установить перемычки), светодиод и кнопка перезапуска. Варианты шилда и примеры использования можно найти на иллюстрациях.

Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино  Arduino Shields - платы расширения для ардуино  Arduino Shields - платы расширения для ардуино

Существует несколько версий сенсорной платы расширения. Все они отличаются количеством и видом разъемов. Наиболее популярными сегодня являются версии Sensor Shield v4 и v5.

Arduino Motor Shield

Данный шилд ардуино очень важен в робототехнических проектах, т.к. позволяет подключать к плате Arduino сразу обычный и серво двигатели. Основная задача шилда – обеспечить управление устройствами потребляющими достаточно высокий для обычной платы ардуино ток. Дополнительным возможностями платы является функция управления мощностью мотора (с помощью ШИМ) и изменения направления вращения.  Существует множество разновидностей плат motor shield. Общим для всех них является  наличие в схеме мощного транзистора, через который подключается внешняя нагрузка,   теплоотводящих элементов (как правило, радиатора), схемы для подключения внешнего питания, разъемов для подключения двигателей и пины для подключения к ардуино.

Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино  Arduino Shields - платы расширения для ардуино

Arduino Ethernet Shield

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

arduino ethernet shield arduino ethernet shield arduino ethernet shield arduino nano ethernet shield

Платы расширения для прототипирования

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

Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино

Arduino LCD shield и tft shield

Данный тип шилдов используется для работы с LCD-экранами в ардуино. Как известно, подключение даже самого простого 2-строчного текстового экрана далеко не тривиальная задача: требуется правильно подключить сразу 6 контактов экрана, не считая питания. Гораздо проще вставить готовый модуль в плату ардуино и просто загрузить соответствующий скетч. В популярном LCD Keypad Shield на плату сразу заведены от 4 до 8 кнопок, что позволяет срзау организовать и внешний интерфейс для пользователя устройства. TFT Shield также помогает

Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино

Arduino Data Logger Shield

Еще одна задача, которую достаточно трудно реализовывать самостоятельно в своих изделиях – это сохранение данных, полученных с датчиков, с привязкой по времени. Готовый шилд позволяет не только сохранить данные и получать время со встроенных часов, но и подключить датчики в удобном виде путем пайки или на монтажной плате.

Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино Arduino Shields - платы расширения для ардуино

Краткое резюме

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

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

распиновка, схема подключения и программирование [Амперка / Вики]

Arduino Uno — флагманская платформа для разработки на базе микроконтроллера ATmega328P. На Arduino Uno предусмотрено всё необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (6 из них могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъём USB, разъём питания, разъём для внутрисхемного программирования (ICSP) и кнопка сброса.

Подключение и настройка

Для работы с платой Arduino Uno в операционной системе Windows скачайте и установите на компьютер интегрированную среду разработки Arduino — Arduino IDE.

Видеообзор платформы Arduino

Что-то пошло не так?

Элементы платы

Микроконтроллер ATmega328P

Сердцем платформы Arduino Uno является 8-битный микроконтроллер семейства AVR — ATmega328P.

Микроконтроллер ATmega16U2

Микроконтроллер ATmega16U2 обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт. Прошивка микросхемы 16U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется.

Пины питания

  • VIN: Напряжение от внешнего источника питания (не связано с 5 В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, если к устройству подключён внешний адаптер.

  • 5V: На вывод поступает напряжение 5 В от стабилизатора платы. Данный стабилизатор обеспечивает питание микроконтроллера ATmega328. Запитывать устройство через вывод 5V не рекомендуется — в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.

  • 3.3V: 3,3 В от стабилизатора платы. Максимальный ток вывода — 50 мА.

  • GND: Выводы земли.

  • IOREF: Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5 В, так и с 3,3 В устройствами.

Порты ввода/вывода

  • Цифровые входы/выходы: пины 013
    Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.

  • ШИМ: пины 3,5,6,9,10 и 11
    Позволяют выводить 8-битные аналоговые значения в виде ШИМ-сигнала.

  • АЦП: пины A0A5
    6 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 значений). Разрядность АЦП — 10 бит.

  • TWI/I²C: пины SDA и SCL
    Для общения с периферией по синхронному протоколу, через 2 провода. Для работы — используйте библиотеку Wire.

  • SPI: пины 10(SS), 11(MOSI), 12(MISO), 13(SCK).
    Через эти пины осуществляется связь по интерфейсу SPI. Для работы — используйте библиотеку SPI.

  • UART: пины 0(RX) и 1(TX)
    Эти выводы соединены с соответствующими выводами микроконтроллера ATmega16U2, выполняющей роль преобразователя USB-UART. Используется для коммуникации платы Arduino с компьютером или другими устройствами через класс Serial.

Светодиодная индикация

Имя светодиода Назначение
RX и TX Мигают при обмене данными между Arduino Uno и ПК.
L Светодиод вывода 13. При отправке значения HIGH светодиод включается, при отправке LOW – выключается.
ON Индикатор питания на плате.

Разъём USB Type-B

Разъём USB Type-B предназначен для прошивки платформы Arduino Uno с помощью компьютера.

Разъём для внешнего питания

Разъём для подключения внешнего питания от 7 В до 12 В.

ICSP-разъём для ATmega328P

ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega328P. С использованием библиотеки SPI данные выводы могут осуществлять связь с платами расширения по интерфейсу SPI. Линии SPI выведены на 6-контактный разъём, а также продублированы на цифровых пинах 10(SS), 11(MOSI), 12(MISO) и 13(SCK).

ICSP-разъём для ATmega16U2

ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega16U2.

Распиновка

Принципиальная и монтажная схемы

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

  • Микроконтроллер: ATmega328

  • Тактовая частота: 16 МГц

  • Напряжение логических уровней: 5 В

  • Входное напряжение питания: 7–12 В

  • Портов ввода-вывода общего назначения: 20

  • Максимальный ток с пина ввода-вывода: 40 мА

  • Максимальный выходной ток пина 3.3V: 50 мА

  • Максимальный выходной ток пина 5V: 800 мА

  • Портов с поддержкой ШИМ: 6

  • Портов, подключённых к АЦП: 6

  • Разрядность АЦП: 10 бит

  • Flash-память: 32 КБ

  • EEPROM-память: 1 КБ

  • Оперативная память: 2 КБ

  • Габариты: 69×53 мм

Ресурсы

Разбираемся с Arduino IDE | AlexGyver Technologies

Работа с Arduino IDE


Рассмотрим основную программу, с которой будем работать – Arduino IDE. IDE расшифровывается как интегрированная среда разработки, и в нашем случае представляет собой блокнот, в котором мы пишем код, препроцессор и компилятор, которые проверяют и компилируют код, и инструменты для загрузки, которые загружают код выбранным способом. IDE написана на java, поэтому не удивляйтесь её долгому запуску, большому объему занимаемой оперативки и медленной работе. Несмотря на огромный опыт работы с ардуино я до сих пор продолжаю писать код в Arduino IDE, потому что я к ней привык. Помимо перечисленных проблем стандартная IDE выделяется на фоне “взрослых” сред разработки отсутствием дерева/файловой структуры проекта (что не нужно для простых проектов), отсутствием рефакторинга, отсутствием автоматического дополнения кода (хотя его обещают вот-вот добавить и уже есть beta) и очень медленной компиляцией кода. Этих недостатков лишены аналоги Arduino IDE, о них поговорим в конце урока. Помимо отсутствия озвученных недостатков там есть некоторые полезные фишки, например все define-ы файла с кодом отображаются в отдельном блоке и с ними очень удобно работать.

Интерфейс


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

  • Проверить – компиляция (сборка, проверка на ошибки…) кода без его загрузки в плату. То есть код можно написать и проверить на ошибки даже не подключая плату к компьютеру
  • Загрузить – компиляция и загрузка прошивки в плату
  • Создать/открыть/сохранить – тут всё понятно
  • Монитор порта – кнопка открывает монитор последовательного пора для общения с платой
  • Меню вкладок – работа с вкладками, о них поговорим ниже
  • Текущее состояние – тут выводится краткая информация о последнем действии: загрузка завершена, ошибка загрузки, автоформатирование завершено и т.д.
  • Лог работы – тут выводится лог компиляции и вообще все системные сообщения, отчёты об ошибках и размере скомпилированного кода
  • Конфигурация оборудования – выводится название выбранной платы, версии микроконтроллера и номер выбранного COM порта
Arduino IDE

Пробежимся по пунктам меню, которые я считаю первостепенно важными, с остальными можно познакомиться самостоятельно по ходу работы с программой. Версия моей IDE – 1.8.8, в новых что-то может отличаться

Вкладка “Файл”


  • Новый
  • Открыть
  • Открыть недавние
  • Папка со скетчами – список скетчей, которые сохранены туда, куда программа предлагает их сохранять по умолчанию (Документы/Arduino)
  • Примеры – список установленных библиотек с подсписком примеров к каждой. Весьма полезная штука
  • Закрыть
  • Сохранить
  • Сохранить как…
  • Настройки страницы (для печати)
  • Печать
  • Настройки
  • Выход

Далее сразу рассмотрим окно настроек:

Окно настроек


Настройки Arduino IDE

Куча интересных настроек на свой вкус. Из них отмечу

  • Размещение папки скетчей – куда по умолчанию сохраняются скетчи
  • Показать подробный вывод – показывает подробный лог при компиляции и загрузке, нужно при поиске багов и непонятных глюков/ошибок
  • Использовать внешний редактор – запрещает редактирование кода из Arduino IDE, чтобы редактировать его в других редакторах, например Notepad++. Редактируем там, а загружаем через IDE. Зачем это? Писать код в том же Notepad++ гораздо удобнее и приятнее, чем в Arduino IDE. К сожалению.
  • Дополнительные ссылки для менеджера плат – сюда вставляются ссылки на пакеты для работы с другими платами, например такими основанными на ESP8266 или ATtiny85.

Вкладка “Правка”


Во вкладке Правка ничего такого особенного нет, всё как в других программах

Вкладка “Скетч”


Вкладка “Скетч”
  • Проверить/компилировать – то же, что кнопка галочка
  • Загрузка – то же, что кнопка загрузка
  • Загрузить через программатор – загрузить скетч напрямую в МК, минуя загрузчик
  • Экспорт бинарного файла – сохраняет скомпилированный файл, который и загружается в МК. Бинарный файл хорош тем, что содержащийся в нём код практически невозможно не то что отредактировать, но даже прочитать как вменяемый код. Именно в таком виде обычно поставляются прошивки для цифровой техники, чтобы никто не видел исходник =)
  • Показать папку скетча
  • Подключить библиотеку – подключает в код библиотеку, с директивой include, всё как нужно
    • Управлять библиотеками… – открывает менеджер библиотек, из которого можно установить библиотеки из официального списка
    • Добавить .zip библиотеку – не рекомендую так делать, потом не найдёте, куда она установилась
  • Добавить файл… – подключает в код внешний файл

Вкладка “Инструменты”


Вкладка “Инструменты”
  • АвтоФорматирование – выравнивает код по табуляции. Крайне важная фишка, используйте её и комбинацию Ctrl+T как можно чаще
  • Архивировать скетч – сохраняет скетч как .zip архив
  • Исправить кодировку и перезагрузить – полезная штука, когда скачал чей-то код из интернета, а там поехала кодировка
  • Управлять библиотеками… – открывает менеджер библиотек, из которого можно установить библиотеки из официального списка 
  • Монитор порта
  • Плоттер по последовательному соединению – встроенный построитель графиков по идущим в порт данным
  • Плата – выбор платы, куда хотим загрузить прошивку
  • Процессор – выбор процессора, который стоит на плате. Обычно он один на выбор, но иногда есть варианты
  • Порт – COM порт, к которому подключена плата. Это всегда порт, отличный от COM1 (системный порт)
  • Программатор – выбор программатора для загрузки кода через программатор
  • Записать загрузчик – прошивает загрузчик, соответствующий выбранной плате и процессору в микроконтроллер при помощи программатора (который ISP)

Меню вкладок


Меню вкладок

Система вкладок в Arduino IDE работает крайне необычным образом и очень отличается от понятия вкладок в других программах:

  • Вкладки относятся к одному и тому же проекту, к файлам, находящимся с ним в одной папке
  • Вкладки просто разбивают общий код на части, то есть в одной вкладке фигурная скобка { может открыться, а в следующей – закрыться }. При компиляции все вкладки просто объединяются в один текст по порядку слева направо (с левой вкладки до правой). Также это означает, что вкладки должны содержать код, относящийся только к этому проекту, и сделать в одной вкладке void loop() и в другой – нельзя, так как loop() может быть только один
  • Вкладки автоматически располагаются в алфавитном порядке, поэтому создаваемая вкладка может оказаться между другими уже существующими. Это означает, что разбивать блоки кода по разным вкладкам (как во втором пункте, { на одной вкладке, } на другой вкладке) – крайне не рекомендуется.
  • Также не забываем, что переменная должна быть объявлена до своего вызова, то есть вкладка с объявлением переменной должна быть левее вкладки, где переменная вызывается. Создавая новую вкладку нужно сразу думать, где она появится с таким именем и не будет ли из за этого проблем. Также название вкладок можно начинать с цифр и таким образом точно контролировать их порядок. Во избежание проблем с переменными, все глобальные переменные лучше объявлять в самой первой вкладке.
  • Вкладки сохраняются в папке с проектом и имеют расширение .ino, при запуске любой вкладки откроется весь проект со всеми вкладками.
  • Помимо “родных” .ino файлов Arduino IDE автоматически подцепляет файлы с расширениями .h (заголовочный файл), .cpp (файл реализации) и .pde (старый формат файлов Arduino IDE). Эти файлы точно так же появляются в виде вкладок, но например заголовочный файл .h не участвует в компиляци до тех пор, пока не будет вручную подключен к проекту при помощи команды include. То есть он висит как вкладка, его можно редактировать, но без подключения он так и останется просто отдельным текстом. В таких файлах обычно содержатся классы или просто отдельные массивы данных.

Аналоги Arduino IDE


Всем нетерпимо относящимся к кривой официальной IDE могу посоветовать следующие аналоги, работа в которых чем-то лучше, а чем-то хуже официальной IDE:

  • Notepad++ + Arduino IDE – вполне работоспособная связка – прогерский блокнот “на максималках”, в котором ОЧЕНЬ удобно писать код, и Arduino IDE, в которой удобно выбирать железо и загружать прошивку
  • PlatformIO – очень мощная взрослая среда разработки, подробнее можно почитать даже в статье у меня на сайте. Автор – не я. Лично мне платформио не понравилась. Да, есть автодополнение кода и всякие удобные фишки, но конфигурировать проект приходится вручную (в 2019 году не сделать пару кнопок для того же выбора порта – разработчики – АУ!!!), также есть проблемы с библиотеками.
  • Programino IDE – вот эта среда мне довольно таки понравилась, есть автодополнение и другие удобные фичи. Единственный минус – она платная, но на всё платное можно нагуглить кряк =) Подробнее на официальном сайте
  • MariaMole – интересная среда, которая вроде как больше не развивается. Количество “плюшек” примерно равно количеству “багов” и недоделок, по крайней мере так было в 2017 году. Подробнее
  • B4R – среда, позволяющая программировать Арудино на языке Basic. Кому интересно – вот официальный сайт
  • Visual Studio Micro – очень мощный и взрослый инструмент, являющийся плагином к Microsoft Visual Studio. Подробнее читать здесь
  • XOD – очень интересная среда разработки, в которой программа составляется из нод (node) – блоков. Полностью другая концепция программирования, посмотрите обязательно. Официальный сайт
  • Atmel Studio – официальная среда для программирования микроконтроллеров AVR. Никаких детских ардуиновских функций – только работа напрямую с МК, только хардкор! Подробнее можно почитать на сайте амперки

Важные страницы


Arduino - провод

Эта библиотека позволяет вам связываться с устройствами I2C / TWI. На платах Arduino с разводкой R3 (распиновка 1.0) SDA (линия данных) и SCL (линия синхронизации) находятся на разъемах контактов, близких к контакту AREF. Arduino Due имеет два интерфейса I2C / TWI: SDA1 и SCL1 расположены рядом с выводом AREF, а дополнительный - на выводах 20 и 21.

Для справки в таблице ниже показано расположение контактов TWI на различных платах Arduino.

Плата Контакты I2C / TWI
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Леонардо 2 (SDA), 3 (SCL)
Срок погашения 20 (SDA), 21 (SCL), SDA1, SCL1

Начиная с Arduino 1.0, библиотека наследуется от функций Stream, что делает ее совместимой с другими библиотеками чтения / записи. Из-за этого send () и receive () были заменены на read () и write ().

Примечание

Существуют как 7-, так и 8-битные версии адресов I2C. 7 бит идентифицируют устройство, а восьмой бит определяет, записывается оно или читается с него. Библиотека Wire использует 7-битные адреса. Если у вас есть таблица данных или образец кода, в котором используется 8-битный адрес, вам нужно отбросить младший бит (т.е.е. сдвиньте значение на один бит вправо), получая адрес от 0 до 127. Однако адреса от 0 до 7 не используются, потому что зарезервированы, поэтому первый адрес, который можно использовать, равен 8. Обратите внимание, что при подключении контактов SDA / SCL необходим подтягивающий резистор. Пожалуйста, обратитесь к примерам для получения дополнительной информации. Плата MEGA 2560 имеет подтягивающие резисторы на контактах 20-21 на плате.


Реализация библиотеки Wire использует 32-байтовый буфер, поэтому любой обмен данными не должен выходить за этот предел.Превышение байтов в одной передаче будет просто отброшено.

Чтобы использовать эту библиотеку
#include

Примеры

    Цифровой потенциометр
  • : управление цифровым потенциометром AD5171 Analog Devices.
  • Master Reader / Slave Writer: запрограммируйте две платы Arduino для связи друг с другом в конфигурации Master Reader / Slave Sender через I2C.
  • Master Writer / Slave Receiver: запрограммируйте две платы Arduino для связи друг с другом в конфигурации Master Writer / Slave Receiver через I2C.
  • SFR Ranger Reader: считывание ультразвукового дальномера, подключенного через I2C.
  • Добавить SerCom: Добавление дополнительных Последовательных интерфейсов к микроконтроллерам SAMD.

См. Также

Последняя редакция 2019/12/24, автор: SM

Функции
.

Загрузить код Arduino на виртуальный последовательный порт через Arduino IDE

Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Общественные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним возможности технической карьеры
  5. Талант Нанять технических талантов
  6. реклама Обратитесь к разработчикам по всему миру
,

c # - Использование arduino в качестве параллельного порта

Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Общественные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним возможности технической карьеры
  5. Талант Нанять технических талантов
  6. реклама Обратитесь к разработчикам по всему миру
,

Arduino - Устранение неполадок

Поиск и устранение неисправностей Arduino

Почему я не могу загрузить свои программы на плату Arduino?

Чтобы загрузить программу на плату Arduino, нужно задействовать множество элементов, и если какая-либо из них не подходит, загрузка может завершиться ошибкой. К ним относятся: драйверы для платы, выбор платы и последовательного порта в программном обеспечении Arduino, доступ к последовательному порту, физическое подключение к плате, прошивка на 8U2 (на Uno и Mega 2560), загрузчик на основной микроконтроллер на плате, настройки предохранителя микроконтроллера и многое другое.Вот несколько конкретных предложений по устранению неполадок каждой из частей.

Программное обеспечение Arduino

  • Убедитесь, что в меню Tools> Board выбран правильный элемент. Если у вас есть Arduino Uno, вам нужно выбрать его. Кроме того, новые платы Arduino Duemilanove поставляются с ATmega328, а более старые - с ATmega168. Чтобы проверить, прочтите текст на микроконтроллере (больший чип) на вашей плате Arduino. Дополнительные сведения о пунктах меню платы см. В руководстве по среде Arduino.
  • Затем убедитесь, что в меню «Инструменты »> «Последовательный порт » выбран правильный порт (если ваш порт не отображается, попробуйте перезапустить среду IDE с платой, подключенной к компьютеру). На Mac последовательный порт должен иметь вид /dev/tty.usbmodem621 (для Uno или Mega 2560) или /dev/tty.usbserial-A02f8e (для старых плат на базе FTDI). В Linux это должен быть / dev / ttyACM0 или аналогичный (для Uno или Mega 2560) или / dev / ttyUSB0 или аналогичный (для старых плат). В Windows это будет COM-порт, но вам нужно будет проверить в диспетчере устройств (в разделе «Порты»), какой именно.Если у вас нет последовательного порта для вашей платы Arduino, см. Следующую информацию о драйверах.


Драйверы

Драйверы

позволяют программному обеспечению на вашем компьютере (то есть программному обеспечению Arduino) взаимодействовать с оборудованием, которое вы подключаете к компьютеру (платой Arduino). В случае с Arduino драйверы работают, предоставляя виртуальный последовательный порт (или виртуальный COM-порт). Arduino Uno и Mega 2560 используют стандартные драйверы (USB CDC), предоставляемые операционной системой, для связи с ATmega8U2 на плате.Другие платы Arduino используют драйверы FTDI для связи с микросхемой FTDI на плате (или в преобразователе последовательного порта USB).

Самый простой способ проверить, правильно ли установлены драйверы для вашей платы, - открыть меню «Инструменты »> «Последовательный порт » в программном обеспечении Arduino с платой Arduino, подключенной к вашему компьютеру. Дополнительные элементы меню должны отображаться относительно того, когда вы открываете меню без подключения Arduino к вашему компьютеру. Обратите внимание, что не имеет значения, какое имя назначается последовательному порту платы Arduino, если это имя вы выбираете из меню.

  • В Windows 7 (особенно в 64-разрядной версии) вам может потребоваться зайти в диспетчер устройств и обновить драйверы для Uno или Mega 2560. Просто щелкните устройство правой кнопкой мыши (плата должна быть подключена к вашему компьютеру) и снова укажите Windows на соответствующий INF-файл. .Inf находится в каталоге drivers / программного обеспечения Arduino (а не в подкаталоге FTDI USB Drivers).
  • Если вы получаете эту ошибку при установке драйверов Uno или Mega 2560 в Windows XP: «Система не может найти указанный файл», вы можете попробовать следующее предложение (о добавлении ключа «RunOnce» в «HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion ").
  • В Linux Uno и Mega 2560 отображаются как устройства вида / dev / ttyACM0. Они не поддерживаются стандартной версией библиотеки RXTX, которую программное обеспечение Arduino использует для последовательной связи. Загрузка программного обеспечения Arduino для Linux включает версию библиотеки RXTX, исправленную для поиска этих устройств / dev / ttyACM *. Также существует пакет Ubuntu (для 11.04), который включает поддержку этих устройств. Однако, если вы используете пакет RXTX из своего дистрибутива, вам может потребоваться символическая ссылка с / dev / ttyACM0 на / dev / ttyUSB0 (например), чтобы последовательный порт появился в программном обеспечении Arduino.
    Выполнить:
    sudo usermod -a -G tty yourUserName
    sudo usermod -a -G dialout yourUserName
    Выйдите из системы и снова войдите в систему, чтобы изменения вступили в силу.


Доступ к последовательному порту

  • В Windows, если программное обеспечение запускается медленно или дает сбой при запуске, или меню «Инструменты» открывается медленно, может потребоваться отключить последовательные порты Bluetooth или другие сетевые COM-порты в диспетчере устройств. Программное обеспечение Arduino сканирует все последовательные (COM) порты на вашем компьютере при запуске и при открытии меню «Инструменты», и эти сетевые порты иногда могут вызывать большие задержки или сбои.
  • Убедитесь, что у вас не запущены какие-либо программы, которые сканируют все последовательные порты, например, программное обеспечение USB Cellular Wifi Dongle (например, от Sprint или Verizon), приложения синхронизации КПК, драйверы Bluetooth-USB (например, BlueSoleil), инструменты виртуального демона и т. Д.
  • Убедитесь, что у вас нет программного обеспечения брандмауэра, которое блокирует доступ к последовательному порту (например, ZoneAlarm).
  • Вам может потребоваться выйти из Processing, PD, vvvv и т. Д., Если вы используете их для чтения данных через USB или последовательное соединение с платой Arduino.
  • В Linux вы можете попробовать запустить программное обеспечение Arduino от имени пользователя root, по крайней мере, временно, чтобы увидеть, исправляет ли загрузка.


Физическое соединение

  • Сначала убедитесь, что ваша плата включена (горит зеленый светодиод) и подключена к компьютеру.
  • У Arduino Uno и Mega 2560 могут возникнуть проблемы с подключением к Mac через концентратор USB. Если в меню «Инструменты> Последовательный порт» ничего не отображается, попробуйте подключить плату напрямую к компьютеру и перезапустить Arduino IDE.
  • Отсоедините цифровые выводы 0 и 1 во время загрузки, поскольку они используются для последовательной связи с компьютером (их можно подключать и использовать после загрузки кода).
  • Попробуйте загрузить, когда к плате ничего не подключено (кроме кабеля USB, конечно).
  • Убедитесь, что плата не касается ничего металлического или проводящего.
  • Попробуйте другой кабель USB; иногда они не работают.


Автосброс

  • Если у вас есть плата, которая не поддерживает автоматический сброс, убедитесь, что вы перезагружаете плату за пару секунд до загрузки.(Arduino Diecimila, Duemilanove и Nano поддерживают автоматический сброс, как и
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *