Arduino: дополнительные модули, расширяющие возможности — arduino+

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

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

Такие платы, совершенно логично называемые платами расширения (другое название: arduino shield, шилд),  служат для выполнения самых разнообразных задач и могут существенно упростить жизнь ардуинщика.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы скачаете скетчи, рекомендованные самим производителем платы, то даже это делать не понадобится.

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

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

Тут нужно быть просто внимательным.

Arduino Sensor Shield

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

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

Варианты шилда и примеры использования можно найти на иллюстрациях.

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

Arduino Motor Shield

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

Дополнительным возможностями платы является функция управления мощностью мотора (с помощью ШИМ) и изменения направления вращения.  Существует множество разновидностей плат motor shield.

Общим для всех них является  наличие в схеме мощного транзистора, через который подключается внешняя нагрузка,   теплоотводящих элементов (как правило, радиатора), схемы для подключения внешнего питания, разъемов для подключения двигателей и пины для подключения к ардуино.

Arduino Ethernet Shield

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

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

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

Arduino LCD shield и tft shield

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

Гораздо проще вставить готовый модуль в плату ардуино и просто загрузить соответствующий скетч. В популярном LCD Keypad Shield на плату сразу заведены от 4 до 8 кнопок, что позволяет срзау организовать и внешний интерфейс для пользователя устройства.

TFT Shield также помогает

Arduino Data Logger Shield

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

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

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

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

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

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

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

Решать вам, все возможности для правильного выбора у вас есть.

Источник: https://ArduinoMaster.ru/platy-arduino/shildy-i-platy-rasshireniya-arduino/

Расширенные платы Arduino MEGA и DUE

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

Arduino MEGA

По своей концепции Arduino MEGA является логическим продолжением базовой модели. Главным отличием от нее стали новый процессор и соответственно большее количество линий ввода/вывода.

Для того, что бы упаковать все новшества, печатную плату удлинили и добавили дополнительные разъемы. В итоге количество цифровых линий стало равно 54, аналоговых входов – 16.

При этом сохранилась полная поддержка всех шилдов, разработанных для, базовых моделей  типа UNO.

Arduino MEGA

На сегодняшний день выпускаются две платы серии MEGA. Первая из них представляет собой классический вариант. Она оснащена процессором ATmega2560, работающим на частоте 16МГц.

Фактически данная плата – просто удлиненный вариант UNO, без каких-либо новшеств, но с более солидным процессором. Ее дальнейшим развитием стала плата MEGA ADK, которую разработчики оснастили дополнительным разъемом, выполняющим функции USB Host.

Благодаря нему платформа получила возможность управлять разнообразными устройствами на шине USB.

Arduino DUE

Дальнейшее развитие Arduino MEGA, да и всего проекта в целом, прослеживается в плате Arduino DUE. Фактически это самый современный и при этом самый мощный вариант платформы.

В его основе, впервые за всю историю Arduino, установлен 32-х разрядный ARM процессор AT91SAM3X8E. Такой процессор обладает быстродействием, в десятки раз превышающим характеристики 8-ми разрядных микроконтроллеров. Тактовая частота выбрана равной 84МГц.

Пользователю доступно 512 кБайт памяти программ, что в 2 раза превышает объем у последних вариантов MEGA.

Arduino Due

Наряду с увеличением производительности, плата DUE имеет и некоторые другие особенности. В частности, линии ввода/вывода работают с сигналами, уровень которых составляет 3.3В. При этом они не толерантны к напряжению 5В. Видимо последний факт и позволяет пока существовать классическим вариантам Arduino MEGA.

Претерпел некоторые изменения и состав периферийных линий. Если цифровых входов/выходов также осталось 54, то число аналоговых входов снижено до 12. Зато появилось два аналоговых выхода. Разъем ICSP, присутствующий на платах MEGA, заменен на коннектор шины SPI.

Большое влияние на возможности платы оказывает и состав внутренних модулей микроконтроллера. Он включает 4 интерфейса UART, один из которых используется для заливки программы.

 Встроенный USB также разведен на плате и может использоваться как для программирования, так и для подключения сложного периферийного оборудования. Входит в состав микроконтроллера DUE и популярный CAN-интерфейс.

Шилды для MEGA

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

Самым простым вариантом конечно же можно считать шилд, предназначенный для прототипирования устройств. Но о нем рассказать особо нечего. Разные его варианты мало, чем отличаются друг от друга.  При выборе Proto Shield рекомендуется обратить внимание на вариант с полем для беспаечного макетирования.

Стандартный Proto Shield Proto Shield с макетной платой

Гораздо более интересным и востребованным может оказаться дисплейный шилд, предназначенный для подключения цветного жидкокристаллического дисплея с тач-панелью. Его использование помогает реализовать высококачественный человеко-машинный интерфейс.

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

Имеется несколько вариантов подобных шилдов, поэтому следует проявить внимательность при выборе и учесть, что в большинстве случаев модули поставляются без дисплея.

Дисплейный шилд Дисплейный шилд в сборе

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

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

Шилдом 3в1 можно считать Mega IO Expansion Shield и его варианты, которые содержат три разъема для модулей XBee, слот для карт памяти mikroSD, макетное поле и штыревые разъемы. Данная плата фактически развивает идеи, заложенные в SensorShield, расширяя ее возможности за счет установки модулей радиосвязи.

Продолжая тему связи нельзя не отметить  LinkSprite CuHead WiFi Shield, нацеленный на работу в сетях Wi-Fi, и Arduino GSM Shield, выполняющий функции передачи информации по стандарту GSM. Кстати, последний шилд, обладая размерами MEGA, можно использовать и с базовым вариантом платы.

Sensor shield Xbee shield
Читайте также:  Введение в c# sharp: программирование простым языком - arduino+

Но, пожалуй, самым востребованным шилдом для Arduino MEGA оказался так называемый RAMPS (RepRap Arduino Mega Pololu Shield). Данная плата, фактически, представляет собой переходник между Arduino и модулями управления шаговыми двигателями от фирмы Polulu.

Ее использование совместно с драйверами A4988 позволяет получить готовый контроллер ЧПУ, применяемый в огромном числе конструкций 3D принтеров.

Комплект Arduino, RAMPS и A4988 представляет собой наглядный пример полезности открытых проектов и их огромнейших возможностей.

CuHead Wi-Fi shield RAMPS

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

You have no rights to post comments

Источник: https://mcucpu.ru/index.php/platformy-8-bit/arduino/153-rasshirennye-platy-arduino-mega-i-due

Обзор популярных Плат Расширения SHIELD для Ардуино

требовала немедленного полива.

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

Поэтому, если рано или поздно упрешься в предельный размер 30 Кб своей Arduino Duemilanova — подумай о замене на Mega 2560, памяти для скетчей будет раз в восемь с половиной больше.

Использование SD-карт

В проектах, связанных с накоплением какой-либо информации (например, GPS-координат), часто требуется нарастить объем доступной энергонезависимой памяти. Проще всего это сделать, подключив стандартную SD-карту. Для этого есть несколько готовых шилдов.

Самый симпатичный из известных мне вариантов — microSD module, разработан испанской фирмой Libellium, специализирующейся на мониторинге окружающей среды (goo.gl/iHCy4).
Шилд занимает всего одну колодку пинов Arduino и позволяет работать с SD и SDHC-картами, предварительно отформатированными на в FAT16 (предпочтительнее) или FAT32.

Единовременно можно работать только с одним файлом, длинные имена не поддерживаются.

Беспроводные шилды

Самые простые RF-модули на амплитудной модуляции (ASK), работающие в нелицензируемом диапазоне 433 и 313 МГц хоть и могут использоваться с Arduino через библиотеку VirtualWire, но все равно представляются мне довольно плохим вариантом.

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

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

Каждая такая плата сама по себе является устройством с микроконтроллером на борту, и от шилда требуется совсем немного — обеспечить согласование с Arduino. Называются такие шилды обычно «Xbee Shield», но не всегда — например, Libellium разработал Communication Shield (goo.gl/OZDxl).

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

Взамен получаем скорость до 250 Кбит/с, дальность в пределах прямой видимости до 90 метров (модификация Xbee PRO может добивать до 1,2 км), шифрование, экономное энергопотребление и возможность ретрансляции данных (два модуля прозрачно общаются друг с другом через третий).

Давно замечено, что если в компании заходит речь про беспроводные сети, первым делом почему-то вспоминают про WiFi, гораздо реже — про Bluetooth. В качестве примеров подойдут WiFly Shield от SparkFun (sparkfun.com/products/9954) и Bluetooth module от Libellium (cooking-hacks.com/index.php/arduinobluetoothmodule-89.html).

Последний выполнен в формате Xbee и будет работать с любым переходным шилдом для Xbee, а программная настройка из Arduino напоминает диалог с модемом — через последовательный порт и AT-команды. Кстати, в свое время была выпущена оригинальная плата Arduino BT (arduino.cc/en/Main/ArduinoBoardBluetooth), которая не имела USB-интерфейса, но программировалась и подключалась к компьютеру именно через Bluetooth. Большого распространения она не получила — может быть, в силу увеличения цены.

Для обмена данными через GSM обычно используется мобильник, способный работать по последовательному порту на уровнях TTL. Но сейчас таких все меньше и меньше — их вытесняет USB, для работы с которым требуется быть хостом (а не девайсом, каковым является Arduino).

Но, к счастью, производители уже давно штампуют законченные GSM- модули, к которым остается при крутить внешнюю антенну и разъем симки. За примером далеко ходить не надо — GPRS Quadband module for Arduino от Libellium (goo.gl/KueFH), который базируется на GPRS-модеме от SAGEM.

Особенность именно этой модели — GRPS-модуль съемный, и можно передавать не только данные — разведен выход на внешний спикерфон.

Источник: http://www.arduino-ic.ru/biblioteka/stati/obzor_populjarnyh_plat_rasshirenija_dlja_arduino_sovety_pri_podkljuchenii/

Открытая платформа Arduino высвобождает творческий потенциал. Часть 2 — Arduino Shields — расширение возможностей аппаратной платформы

Начало читайте здесь:

Часть 1

Arduino – это не специализированный продукт или технология, это экосистема аппаратного и программного обеспечения, инструментов и человеческих ресурсов, и в центре всего 8-разрядные микроконтроллеры семейства megaAVR, а с не давнего времени и 32-разрядный ARM микркоконтроллер на базе ядра Cortex-M3

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

Практически все процессорные платы Arduino благодаря универсальному форм-фактору поддерживают подключение модулей расширения, мезонинных модулей и дополнительных плат, которые присоединяются к шине микроконтроллера и линиям ввода/вывода посредством специальных штыревых разъемов с шагом 2.54 мм.

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

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

Официальная плата Arduino Ethernet Shield

С помощью платы Arduino Ethernet Shield подключить платформу Arduino к сети Интернет можно за считанные минуты.

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

Каждый элемент платформы (аппаратная часть, программная часть и документация) доступен бесплатно и имеет открытый код.

Плата расширения Arduino Ethernet совместима с процессорными платами Arduino Mega и Arduino Uno

Основные характеристики платы расширения Ethernet Shield:

  • Требуется процессорная плата Arduino
  • Рабочее напряжение 5 В
  • Ethernet контроллер Wiznet W5100 со встроенным буфером 16 КБайт
  • Скорость подключения 10/100 Мбит/с
  • Подключение к Arduino по интерфейсу SPI
  • Установлен слот для карт памяти microSD
  • Поддержка подключения модуля PoE:
    • IEEE802.3af совместимый
    • Низкие пульсации и шумы выходного напряжения
    • Диапазон входного напряжения 36 … 57 В
    • Защита от перегрузки и короткого замыкания
    • Выходное напряжение 9 В
    • Высокоэффективный DC/DC преобразователь
    • Напряжение изоляции вход/выход 1500 В
  • Встроенный контроллер сброса.

Работа с платой расширения, а также с картой памяти осуществляется с помощью программной библиотеки, поддерживающей до 4 одновременных входных подключений по протоколам TCP или UDP. Встроенный разъем RJ45 содержит интегрированный линейный трансформатор и позволяет использовать функцию Power over Ethernet.

Официальная плата Arduino Motor Shield

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

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

Основные характеристики Arduino Motor Shield:

  • Одновременное управление двумя электродвигателями постоянного тока или одним шаговым двигателем
  • Независимый контроль скорости и направления движения
  • Рабочее напряжение 5 … 12 В
  • Установлен интегральный драйвер управления индуктивной нагрузкой L298
  • Максимальный ток 2 А на канал, или общий максимальный ток 4 А
  • Возможность измерения тока, потребляемого каждым двигателем (1.65 В/А).
Официальная плата Arduino Motor Shield может управлять двумя электродвигателям с контролем скорости и направления вращения
Рассчитанная на рабочее напряжение до 30 В и рабочий ток до 2.8 А, эта коммерческая плата предназначена для управления двумя электродвигателями постоянного тока и может применяться в робототехнике или других моторизированных приложениях

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

Коммерческие платы расширения и модули, которые поддерживают ZigBee, Bluetooth и IEEE 801.11 протоколы также доступны для пользователей. Кроме того, имеется несколько плат, которые содержат завершенные сотовые трансиверы на базе GSM с поддержкой GPRS сервиса и подкачаются к платформе Arduino Uno и Mega с питанием от интерфейса USB.

Официальная плата Arduino Wireless SD Shield добавляет возможность беспроводного обмена с отладочной платой.

В основном, плата расширения рассчитана на подключение модулей XBee, однако возможно использование и других модулей с соответствующей топологией.

Кроме того, на плате установлен слот для карт памяти SD, имеется небольшая область для макетирования и переключатель, который выбирает режим обмена с беспроводным модулем.

Официальная плата расширения Arduino Wireless SD Shield используется для организации беспроводной передачи данных с использованием, в основном, беспроводных модулей Xbee. Однако возможно использование и других беспроводных модулей с соответствующей топологией платы
Плата расширения Xbee Shield (Digi-Key) с установленным радиомодулем

Плата Arduino BT (Digi-Key) – это завершенная плата на базе микроконтроллера ATmega168 и беспроводного модуля Bluetooth Bluegiga WT11, обеспечивающая обмен по протоколу Bluetooth.

Она имеет 14 цифровых входов/выходов (6 из которых могут использоваться как ШИМ выходы), 6 аналоговых входов, кварцевый резонатор 16 МГц, разъем внутрисхемного программирования.

Отличительной особенностью является возможность программирования микроконтроллера по беспроводному интерфейсу.

Плата Arduino BT (Digi-Key) выполнена на микроконтроллере ATmega168 и модуле Bluegiga WT11

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

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

Источник: https://www.rlocman.ru/review/article.html?di=112746

Самые интересные шилды для Arduino

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

Как правило, большинство шилдов изготавливается под конкретный форм-фактор платы. В большинстве случаев — это микроконтроллеры Arduino Uno.

Идея шилдов состоит в том, что вы покупаете отдельный модуль, который «садится» сверху на ваш микроконтроллер. Можно использовать несколько шилдов одновременно, устанавливая их один на другой.

В результате вы получить многофункциональный «пирог» Arduino.

Ethernet Shield

Официальный шилд от создателей Arduino. Ethernet shield — это отличный вариант, чтобы обеспечить независимость вашего проекта от вашего персонального компьютера, так как он дает возможность наладить связь Arduino с интернет.

Интересная особенность данного шилда — наличие на нем слота для MicroSD карты.

Так что если в вашем проекте обрабатывается большой объем информации, например — mp3 файлы или видео; или вам надо хранить большие массивы данных для таких проектов как, например, светодиодный куб, хранить данные вы можете именно на SD карте.

Можно обеспечить работу хостинга для веб-сервера с использованием Ethernet шилда.

Перед тем как вы кинулись покупать Ethernet Shield, предупреждаю из личного опыта: Ethernet шилды зависимы от версий. Сначала я купил шилд v3 т оказалось, он не подходить к моему Arduino Uno v2, так как на версии платы v3 добавлено два пина. Кстати, Ethernet Shield стоит дороже чем сам контроллер Arduino, так что пришлось купить новую Arduino, а старую версию оставить для других проектов.

Читайте также:  Умный дом: делаем систему управления домом на расстоянии

Так что проверяйте версию вашей платы и Ethernet шилда, который вы собираетесь покупать.

4 Relay Shield

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

Если вы когда-то подключали реле, вы знаете, что для его работы необходима дополнительная обвязка: транзистор, диод и т.п.

Если вам для проекта надо несколько реле, то монтажная плата (bredboard) очень быстро обрастет кучей проводников и контактов, в которых разобраться будет очень сложно.

4 Relay Shield (шилд на 4 реле) предоставляет вам все необходимые контакты для подключения 4-х периферийных устройств. Каждое реле дает возможность подключать оборудование которое работает с силой тока до 3 ампер. Конечно, можно использовать реле шилд и для маломощных электрических цепей. В таком формате их часто используют для замены переключателей.

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

Protoshield

Protoshield (протошилд) сам по себе ничего не делает. Потому он такой плоский ;). Очень полезный шилд.

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

Вы собираете всю схему на нем и садите его сверху на вашу Arduino как любой другой шилд. То есть — это отличный вариант для создания собственного шилда!

LCD Shield

Зачем вам LCD Shield? Все просто: выводить информацию с Arduino не на персональный компьютер с использованием серийного монитора, а напрямую на периферийный экран! Это реально классно! Но! При использовании внешних экранов, вам обычно требуется 7 и более контактов с Arduino.

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

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

В добавок к экрану, на LCD шилде установлено 4 «управляющие» кнопки и кнопка «select» (выбор). Благодаря этому у вас появляется дополнительный интерактивный интерфейс и непосредственного подключения к ПК при работе с шилдом можно избежать. Если монохромный дисплей вас не впечатляет, вы можете спокойно апгрейдить шилд, установив 1.8 inch TFT 18-bit color screen.

Вот на этом этапе вы должны понять, что не все шилды 100% совместимы друг с другом. Некоторые из них надо устанавливать сверху вашего Arduino «пирога». Именно к таким шилдам относится LCD шилд.

Energy Shield

Energy shield расширяет ваши возможности с точки зрения обеспечения питания проектов на Arduino. Шилд позволяет подключать различные источники питания и обеспечивать их работу с Arduino. Одна из самых ярких сфер применения — обеспечение подзарядки мобильных телефонов и гаджетов.

Motor Shield

Motor shield обеспечивает возможность управления множеством моторов с использованием Arduino. На шилде установлены все необходимые регуляторы, переключатели, предохранители. В общем, на motor шилде есть все для обеспечения простого управления двигателями и для их защиты.

SD Card Shield

Во многих проектах необходимо обрабатывать большие массивы информации, для хранения которой недостаточно встроенной в Arduino памяти. Именно в этом случае вам может понадобится SD Card Shield. Он совместим с картами памяти форматов SD, SDHCи MicroSD. Sd Card шилд использует простой SPI интерфейс для подключения и передачи данных.

Wifi Shield

Этот шилд предоставляет вам действительно огромные возможности, позволяя настроить передачу данных от Arduino с использованием WiFi технологий. Уверен, вы найдете ему достойное применение.

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

WiFi шилд подключается к серийному порту.

GPRS Shield

GPRS Shield дает Arduino возможность использовать сети GSM/GPRS, которые используются для мобильных телефонов. В результате вы можете делать и принимать звонки и текстовые сообщения! Как правило, GPRS шилды оснащаются антеннами.

E-Ink Shield

E-Ink shield — очень интересная разработка, которая использует технологию электронных чернил (та же технология используется в электронных книгах).

Основное преимущество E-Ink шилда — вы получаете дисплей, который требует минимум энергии для питания и предоставляет отличный формат для отображения и чтения текста.

Подобные шилды могут отобразить текст даже без использования внешнего питания!

Music Shield

Music Shield дает вам возможность воспроизводить музыку в отличном качестве чрез Arduino. Шилд поддерживает широкий диапазон музыкальных форматов для воспроизведения. Естественно, в Music шилде предусмотрен слот для SD карты. Так что вы без проблем сможете загрузить вашу медиатеку без использования дополнительного SD шилда.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Источник: http://arduino-diy.com/arduino-interesnyye-shildy

Что такое Arduino? Краткий обзор Arduino Uno

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

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

Arduino — открытая физическая вычислительная платформа. Открытое аппаратное обеспечение [англ. Open Hardware] — это инициатива, предоставляющая открытый доступ к технической информации оборудования с целью повторения или улучшения его характеристик.

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

Хакерспейс (Hackerspace) — мастерская-клуб, где энтузиасты могут заниматься любимым делом. Благодаря этой популярности, в интернете вы найдете много людей, которые готовы оказать посильную помощь в обучении и освоении Arduino.

Внешний вид Arduino UNO

Плата контроллера Arduino UNO проста. С левой стороны есть USB разъем, который соединяет Arduino с компьютером.

Паяльная станция Eruntop 8586D

Цена: 3900.00 руб.     Бесплатная доставка.

По краям платы сверху и снизу расположен ряд контактов черного цвета, называемые пинами [англ. «Pin»]. Они сконструированы таким образом, что к ним легко подключить провода не используя при этом паяльник.

Именно к этим контактам подключаются различные устройства и датчики, которые взаимодействуют с Arduino. Также эти разъемы позволяют установить на плату контроллера дополнительные модули (платы расширения), увеличивающие возможности Arduino. Эти модули называются Шилд [англ. «Shield»].

Распиновка Arduino UNO

Основные элементы на схеме обозначены синим цветом. Дополнительные, менее важные элементы обозначены зеленым цветом. Выводы питания с различным напряжением отмечены красным цветом. Выводы GND [минус] отмечены черным цветом.

Разъем «USB»

Разъем USB используется для подключения Arduino к компьютеру. Через этот разъем загружается программа (скетч) в микроконтроллер Ардуино. Этот разъем также служит для связи с компьютерной программой.

В процессе «общения» Arduino с компьютером мигают светодиоды:

  • LED_TX — при передаче данных на компьютер
  • LED_RX – при получении данных от компьютера

Разъем POWER

Разъем «POWER» служит для подключения блока питания. Внешний источник питания обычно используется тогда, когда Arduino должен работать без компьютера. Напряжение источника питания должно находиться в пределах от 7 до 12 В. По умолчанию Arduino может питаться от компьютера через разъем USB (5В).

Индикатор «ON»

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

Кнопка «RESET»

После нажатия кнопки «RESET» ваша программа в Arduino запускается заново.

Выводы питания – «POWER»

Контакты питания расположены с левой стороны нижнего края платы. Они предназначены для обеспечения необходимого напряжения для проекта. На выбор у вас есть напряжение 3,3В и 5В. «GND» (масса) — это обозначение второго полюса питания, в народе называемый «минус». Вывод «VIN» — это напряжение с адаптера (блока питания).

Вывод «RESET»

Вывод «RESET» полностью выполняет ту же функцию, что и кнопка «RESET». Если на данный вывод соединить на некоторое время к землей (GND), то программа в Arduino запускается заново.

Вывод «IOREF»

Вывод «IOREF» позволяет адаптировать платы расширения и Arduino по напряжению.

«Digital» – Цифровой вывод

Данный тип выводов отмечен на рисунке как «Digital». Находятся на верхней кромке платы. Пронумерованы от 0 до 13. Каждый из них можно запрограммировать так, чтобы он выполнял роль входа или выхода.

Характеризуются они тем, что в качестве выходного сигнала присутствует 0В (лог.0) или 5В (лог.1). В качестве входа принимают также два уровня напряжения около 0В и напряжение между 2,5 и 5В. Они управляют устройствами в стиле вкл/выкл, например, для управления светом в доме.

«Analog» – Аналоговый вывод

Они отмечены на рисунке как «Analog». Пронумерованы от 0 до 5. Выполняют только функцию входа. Могут измерять напряжение от 0 до 5В. Аналоговые входы имеют разрешение 10 бит.

Распознают 1024 уровня напряжения, что дает точность примерно 0,005 В. Точность можно повысить, уменьшая программно диапазон опорного напряжений от 0 до 1,1В. С помощью вывода «AREF» можно подключить внешний источник опорного напряжения (ИОН) не превышающий 5В.

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

Светодиод «L»

Arduino имеет встроенный светодиод обозначенный как «L». Его можно включать и выключать с помощью программы. В Arduino UNO индикатор подключен к цифровому контакту номер 13.

«PWM» (ШИМ) вывод

Часть цифровых пинов имеет дополнительную функцию, обозначенную как ШИМ. Эта функция позволяет регулировать мощность, которая подается на светодиоды и электродвигатели. Благодаря ШИМ можно программно регулировать скорость вращения двигателя или яркость свечения светодиодов.

«INT» – вывод прерываний

Два цифровых пина имеют дополнительную функцию «INT». Они отвечают за прерывания. Прерывание необходимо, чтобы контроллер остановил выполнение текущей части кода программы и сразу выполнил специально подготовленный вами кусок кода.

«INT» вывод используется совместно с устройством, сигнал которого должн быть обработаны немедленно.

«Serial» — RS232 TTL

Основной последовательный интерфейс – «Serial». Его контакты вы найдете в группе цифровых пинов с номерами 0 и 1. Они помечены как «RX» (вход данных) и «ТХ» (вывод данных). Этот интерфейс работает в стандарте RS-232 TTL. Позволяет передавать последовательно данные, асинхронно со скоростью до 115200 бод. Этот же интерфейс используется для связи с компьютером через USB.

«I2C / TWI»

Другой последовательный интерфейс – «I2C», также называется «TWI». Это последовательная синхронная шина с тактовой частотой 100 или 400 кГц. Его выход расположен на левом конце цифровых контактных гнезд. Они помечены как «SCL» (Serial Clock) и «SDA» (Serial Data). Это позволяет подключать к одним и тем же выводам до 127 устройств.

«SPI»

«SPI» — это быстрая синхронная последовательная шина. В Arduino UNO ее таймер может работать с частотой до 8 Мгц. Выводы шины имеют маркировку «SCK» (Serial Clock), «MOSI» (Master Out Slave In), «MISO» (Master In Slave Out) и расположены в 6-контактном разъеме «ICSP» с правой стороны платы.

В Arduino UNO эти сигналы используются совместно с цифровыми выводами, пронумерованными от 10 до 13. Здесь же находится дополнительный сигнал «SS» для выбора устройства в шине.

Плата Arduino UNO доставит вам много удовольствия от знакомства с тайнами электроники и программирования. Удачи в ваших экспериментах и изобретениях.

Источник: http://fornk.ru/3255-chto-takoe-arduino-kratkij-obzor-arduino-uno/

Как расширить количество аналоговых входов и выходов на вашем Arduino?

Главная → Библиотека Arduino → Как расширить количество аналоговых входов и выходов на вашем Arduino?

Мультиплексор или демультиплексор позволит вам расширить количество входов и выходов на вашем Arduino.

 Микросхема 4051 является 8-канальным аналоговым мультиплексор / демультиплексором, таким образом: * Если вы используете 4051 как мультиплексор: Вы можете выбрать любой из 8 различных входов и прочитать его состояние в контролер. 

* Если вы используете 4051 как демультиплексор вы можете выбрать любой из 8 различных выходов и записать туда нужное вам значение.

Кроме того, 4051 может работать с аналоговыми значения, в вашем Arduino, вы можете использовать аналоговые сигналы с напряжением 0-5В и подключить микросхему к аналоговым входам на Arduino.

Чтобы выбрать нужный вход микросхемы а также режимы работы чтение или запись, мы должны использовать три управляющих сигнала (S0, S1 и S2).

Каждый из этих контактов должен быть подключён к одному из цифровых выходов Arduino.

Читайте также:  Syma toys x5sw: коптер за 4000 руб - arduino+

Каждый выход имеет номер (S0 = 1; S1 = 2; S2 = 4) и, если установить на одном из этих выходов высокий логический уровень то, число контактных представляет будет передано 4051.

Например: 
* Если на входах микросхемы S0 и S1 установить лог“1» а на S2 лог“0» то выбран вход y3 микросхемы, это выглядит так (1 +2 +0 = 3). 
* Если на входах микросхемы S0 и S2 установить лог“1» а на S1 лог“0» то выбран вход y5 микросхемы, это выглядит так (1 +0 +4 = 5).

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

* Z —— общий сигнал ввода или вывода (соединенный с входом/выходом Arduino) 
* E —— вход разрешения (активный лог «0») (подключен к земле (GND)) 
* Vee — отрицательное напряжение питания (подключен к земле (GND)) 
* GND — общий минус (0 V) 
* S0-S2 — выбор входов (подключены к трем цифровым выводам Arduino) * y0-Y7 — независимые входы/выходы 

* Vcc — положительное напряжение питания (5 В)

Левое изображение выше, например, как использовать 9 мультиплексор читать 64 аналоговых входов только с одним аналоговым входом Arduino.

 

Правое изображение выше пример того, как использовать два 4051 (один настроенный как демультиплексор и одного в качестве мультиплексора) в матрице 8×8 для проверки 64 кнопок или других цифровых входов только с одного цифрового входа на Arduino (со второй установки вы может просто две кнопки в то же время, в противном случае вы должны использовать первый (слева) установки).

// Пример для использования 4051 аналоговый мультиплексор / демультиплексор // by david c. int led = 13 ; // Настраиваем на 13 ноге светодиод 

int r0 = 0 ;    // значение выбрать вывод на 4051 (S0) 

int r1 = 0 ;    // значение выбрать вывод на 4051 (S1) 
int r2 = 0 ;    // значение выбрать вывод на 4051 (S2) int row = 0 ; // storeing the bin code      int count = 0 ; // щётчик int bin [ ] = { 000, 1, 10, 11, 100, 101, 110, 111 } ; // Массив двоичных числ определяющих номер выбранного входа/выхода микросхемы 4051, с 1 по 8. 

void setup () { // ИНИЦИАЛИЗАЦИЯ 

pinMode (2, OUTPUT) ; // s0  выход 
pinMode (3, OUTPUT) ; // s1  выход 
pinMode (4, OUTPUT) ; // s2  выход 
digitalWrite (led, HIGH) ; //зажечь светодиод 
beginSerial (9600) ; // скорость обмена по UART  }      

void loop () {      

for (count = 0 ; count ≤ 7 ; count ++) { // цикл перебора элементов массива с 1 по 8  row = bin [ count ] ;       r0 = row & 0x01 ;      

r1 = (row >> 1) & 0x01 ; // 

r2 = (row >> 2) & 0x01 ; // 
digitalWrite (2, r0) ;      
digitalWrite (3, r1) ;      
digitalWrite (4, r2) ;      
Serial.println (bin[count]);      
delay (1000) ;       }      

}

Купить CD4051 в нашем интернет-магазине

Источник: http://arduino.net.ua/Arduino_articles/Kak%20rasshirit%20kolichestvo%20analogovyh%20vhodov%20i%20vyhodov%20na%20vashem%20Arduino/

Подключаем кучу устройств к Arduino по 5 проводам

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

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

При наличии некоторого опыта в C++ это не покажется сложным (:

Начнём с того, что авторы библиотек Arduino старались сильно не заморачиваться насчёт расширяемости функционала, и не получится просто сказать объекту LCD «подключись через сдвиговый регистр». Так что придётся немножко поработать руками и мозгами за них: доработать библиотеки напильником. Заодно упростим себе работу со . Ну что ж, приступим.

С первого взгляда не очень-то понятно, а как, чёрт возьми, заставить работать тот же LCD через сдвиговый регистр? Что записывать в регистр, какие его выводы должны менять состояние и как? Очевидно, что для начала нужно как-то предоставить возможность управлять отдельными выводами регистра так же, как и обычными пинами Arduino.

Вспомним, как LCD, а затем заглянем в исходный код библиотеки LiquidCrystal и увидим, что там чуть ли не в каждой функции дёргаются пины, к которым подключен LCD, вызовами функции digitalWrite(), а режимы этих пинов устанавливаются через pinMode(). Логично будет написать такие же функции и для сдвиговых регистров.

Немного забегая вперёд, скажу, что я уже написал класс SPI_Bus для удобной работы с устройствами по SPI (его я опишу позже), и в него нужно только добавить поддержку управления выводами.

В целях унификации определим интерфейс «контроллера линии»: class LineDriver { public: virtual void lineConfig(uint8_t pin, uint8_t mode) = 0; virtual void lineWrite(uint8_t pin, uint8_t value) = 0; virtual uint8_t lineRead(uint8_t pin) = 0; };
Этот интерфейс содержит объявления функций lineConfig(), lineWrite() и lineRead() — это аналоги pinMode(), digitalWrite() и digitalRead(). Всю работу с нужными пинами библиотека LCD должна будет делать через интерфейс LineDriver. Для начала создадим драйвер по умолчанию, который будет просто вызывать стандартные функции:
class DefaultLineDriver: public LineDriver { public: virtual void lineConfig(uint8_t pin, uint8_t mode) { pinMode(pin, mode); } virtual void lineWrite(uint8_t pin, uint8_t value) { digitalWrite(pin, value); } virtual uint8_t lineRead(uint8_t pin) { return digitalRead(pin); } static DefaultLineDriver* getInstance() { return &g_instance; } private: static DefaultLineDriver g_instance; // один глобальный экземпляр драйвера };
Теперь добавим в класс LiquidCrystal указатель на экземпляр LineDriver и изменим конструкторы класса и функцию init() так, чтобы они принимали соответствующий аргумент:
// LiquidCrystalExt.h class LiquidCrystal: public Print { … public: LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, LineDriver *line_driver = 0, uint8_t backlight = 0xFF); … protected: void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, LineDriver *line_driver = 0, uint8_t backlight = 0xFF); … LineDriver *_pins; … }; // LiquidCrystalExt.cpp LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, LineDriver *line_driver, uint8_t backlight) { init(1, rs, 0xFF, enable, d0, d1, d2, d3, 0, 0, 0, 0, backlight, line_driver); } void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlight, LineDriver *line_driver) { _pins = line_driver; if (!_pins) _pins = DefaultLineDriver::getInstance(); … } По умолчанию аргумент line_driver будет равным нулю и его можно не указывать при объявлении объекта LCD-дисплея — тогда будет использоваться драйвер по умолчанию (DefaultLineDriver) и дисплей будет работать, как обычно, через пины Arduino. Теперь добавим поддержку интерфейса LineDriver в класс для работы с SPI: class SPI_Bus: public LineDriver { public: … virtual void lineConfig(uint8_t pin, uint8_t mode) { /* Оставляем метод пустым, т.к. возможность управления состоянием выводов * зависит от конкретного устройства. */ } virtual void lineWrite(uint8_t line_num, uint8_t value) { /* Каждому байту соответствует 8 «линий данных» (виртуальных пинов). * Проверяем, не превышает ли номер линии максимальный. */ if (line_num < m_bandwidth * 8) { /* Рассчитываем номер байта в буфере и номер бита в байте */ const uint8_t byte_index = line_num / 8, bit_index = line_num % 8; /* Сначала стираем нужный бит в буфере */ m_buffer[byte_index] &= ~(1 > bit_index) & 1 ? HIGH : LOW; } … }; Как можно заметить из приведённого кода, в классе SPI_Bus данные буферизуются: если из регистра ничего не считывать, а только управлять отдельными его выводами через функционал LineDriver, то регистр будет поддерживать уровни напряжений на выводах до тех пор, пока вы не установите новые. Это как раз то, что нужно для управления устройствами — менять состояния отдельных выводов, не трогая при этом другие. Всё, теперь можно работать со сдвиговыми регистрами, как с наборами пинов: /* Допустим, у нас есть один сдвиговый регистр с 8 выходами, * защёлка которого (SS) подключена к 10му пину Arduino. */ SPI_Bus shift_register(_8bit, 10); /* Аналог digitalWrite(3), только вместо 3-го пина Arduino * мы управляем 3-м выходом сдвигового регистра. */ shift_register.lineWrite(3, LOW); Так как сделано это через реализацию интерфейса LineDriver, мы можем передавать указатель на объект сдвигового регистра в конструктор объекта LCD: SPI_Bus shift_register(_8bit, 10); /* А LCD-дисплей подключен к сдвиговому регистру: * RS ⇨ выход QA (0) * E ⇨ QB (1) * DB4-DB7 ⇨ QC-QF (2-5) */ LiquidCrystal lcd(0, 1, 2, 3, 4, 5, &shift_register); Теперь при работе с LCD будут меняться уровни не на пинах Arduino, а на выходах сдвигового регистра. Одна строка кода для подключения регистра, и один дополнительный аргумент для объекта LiquidCrystal — и можно управлять дисплеем по 3м проводам SPI. При этом ещё два выхода регистра остались свободными, и мы можем их использовать, как обычные пины.

Но мы не ограничимся одним лишь LCD — есть же ещё . Я проделал аналогичные манипуляции с , и теперь точно так же можно управлять сервоприводами через сдвиговый регистр:

SPI_Bus shift_register(_8bit, 10); Servo servo(&shift_register); /* А дальше всё делается, как обычно */ void setup() { servo.attach(6); // вывод QG регистра }
А что насчёт ввода? Ранее я о чтении состояний кнопок через сдвиговый регистр. Теперь, с библиотекой SPI_Bus, это можно сделать так:
SPI_Bus shift_register(_8bit, 10); void setup() { /* Говорим регистру, чтобы дёргал защёлку до чтения по SPI */ shift_register.setSelectionPolicy(SPI_Bus::SELECT_BEFORE); } void loop() { uint8_t states = shift_register.read8bits(); // считываем состояния } А теперь пора использовать наши сдвиговые регистры на полную катушку — подключим к Arduino сразу несколько устройств всего по 5 проводам: LCD-дисплей, 4 сервопривода, RGB-светодиод, несколько кнопок и dip-переключатель на 3 позиции. Схема подключения:

Вся логика запитана от +5 В Craftduino, а сервы — напрямую от +5 В . Сама Craftduino запитана от +12 В провода БП. Тут нужно быть поосторожнее с нагрузкой: если она будет слишком велика, то стабилизатор на Craftduino будет перегреваться из-за слишком высокого входного напряжения. В этой схеме подавать +12 В вполне допустимо, т.к. компоненты, запитанные от крафтины, не особо жадные.

Общий вид:Здесь я сделал пару хитростей для уменьшения количества проводов. Во-первых, сделал breakout-платы для 74HC595 (в корпусах SSOP), которые легко соединяются каскадно, используя общие линии SPI и питание:Во-вторых, сделал для сигнальных линий сервоприводов 4-жильный шлейф:Просто взял 4 жилы от старого шлейфа для привода гибких дисков (флопарей), припаял к ним 4 пина гребёнки PLS и залепил всё это поликапролактоном (ПКЛ) — последний для этих целей рулит не по-детски (: Ну, и в-третьих, припаял к LCD-дисплею легендарный транзистор КТ315 с килоомным резистором на базе — для управления подсветкой, подстроечный резистор на 10 кОм — для настройки контрастности, а также 9-жильный шлейф (4 линии данных DB7-DB4, Enable, RS, подсветка, +5V, GND):Можете рассмотреть некоторые части системы отдельно. Вот сдвиговые регистры 74HC595, к которым подключены LCD, сервы и RGB-светодиод:Регистр 74HC165 c подключенными кнопками и dip-переключателем:Заметьте, кнопки и dip-переключатель подключены к «земле» резисторами на 1 кОм — я это сделал лишь потому, что провода ещё больше загромоздили бы плату. Так как к питанию они подключены через резисторы на 10 кОм, получается, что входы 74HC165 подключены к резистивным делителям напряжения с коэффициентом 10:1, но так как при нажатии кнопки делитель выдаёт напряжение около 0.5 В, это не вызывает никаких проблем — такое напряжение является логическим нулём, так как меньше необходимого порога. Можете убедиться, к Craftduino идёт всего 5 сигнальных проводов:Ну и повторюсь — питается это всё от обычного компьютерного блока питания — оттуда берётся +12 В на вход Craftduino, +5 В для питания серв и «земля»:Суть эксперимента такова: пусть при щёлкании dip-переключателем включается/выключается подсветка LCD и загораются/гаснут два значка на нём, при нажатии и удержании кнопок вращаются сервоприводы, и параллельно ещё меняются цвета RGB-светодиода. Для этого примера потребуются библиотеки LineDriver, SPI_Bus, ServoExt и LiquidCrystalExt, ссылки на которые приведены в конце статьи. /* Включаем все необходимые библиотеки */ #include #include #include #include #include enum { SERVOS_AMOUNT = 4, // количество серв SERVOS_FIRST_PIN = 9, // вывод сдвигового регистра для первой сервы SERVO_ROTATE_STEP = 2, // насколько поворачивать серву, когда нажата кнопка SYMBOL_HEIGHT = 8, // высота символа LCD SYM_DANGER = 0, // код символа «череп и кости» SYM_LIGHTNING = 1, // код символа «молния» RED_LINE = 2, // номер вывода регистра для красного канала светодиода GREEN_LINE = 0, // и зелёного BLUE_LINE = 1, // и синего SWITCH1 = 1

Источник: http://robocraft.ru/blog/arduino/541.HTML

Ссылка на основную публикацию