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

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

Самое хлопотное — запайка штырьков-коннекторов.... Но, как-то справился:) Значит и вы сможете. Главное, что бы не было "соплей", "коротышей" и "непропая" :)
Вот несколько фото готового изделия. Скажем так, не выставочный вариант, но все же...
Кстати, снизу видны SMD диоды, стоящие параллельно обмоткам реле. Трансформатор закреплен двумя проволочками.

И заливаем тестовый скейтч:

/*
Test Home made rele Shield (Ghost D. 2012)
Используем цифровые выводы № 7 и №8
*/

void setup() {
//
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}

void loop() {
digitalWrite(7, HIGH); // Включаем первое реле
delay(2000); // ждем
digitalWrite(8, HIGH); //Включаем второе реле
delay(2000);
digitalWrite(8, LOW); // Выключаем второе реле
delay(2000);
digitalWrite(7, LOW); // выключаем первое реле
delay(2000); //
}

Наш новый шилд щелкает релюшками. Вуаля!!!

P.S. В моем варианте, в ходе тестирования, достаточно сильно греется трансформатор. То ли на БП (откуда я его выковырял) неверно была указана информация (типа 300 мА), то ли с ним какая-то неприятность...

Какое-то время у меня валялась Arduino Uno. И вот нашлось ей применение. Сделал удобный шилд для прошивки ходовых контроллеров в разных корпусах. Теперь данная отладочная плата активно используется. Шилд позволяет прошивать довольно много контроллеров от ATMEL, которые все еще популярны среди самодельщиков по многим параметрам. Итак, под катом изготовление шилда для прошивки микроконтроллеров Atmega8 (168/328), Attiny13(45/85), причем, как в DIP корпусах, так и в QFP и SOIC, используя адаптеры.

Ссылку я дал на похожую отладочную плату Arduini Uno, поскольку уже и не помню где брал свою. Моя платка с закосом под оргинал (конечно же это копия - поскольку брал в Китае):




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


Конденсатор C4 позволяет не перезагружаться самой Arduino Uno во время прошивки, без него такое бывает и прошить не удается. На схеме видно два разъема для подключения контроллеров в корпусах dip28 и dip8. Для dip28 предусмотрен кварц с конденсаторами С2 и С3. Также на плате предусмотрен стандартный разъем ICSP для подключения, например, своих плат и их прошивки. Как и при типовом использовании, вывод 10 Arduino соединен с RESET программируемых контроллеров. Выводы 11, 12,13, представляющие ICSP соединены с аналогичными на подключаемых микроконтроллерах. На подключаемые контроллеры подается питание и земля от Arduino Uno. К выводам Arduino 7,8,9 через токоограничительные резисторы в 1КОм подключены индикационные светодиоды. Наш шилд позволит прошивать популярные контроллеры: Atmega8 (168/328), Attiny13(45/85), причем, как в DIP корпусах, так и в QFP и SOIC, используя адаптеры.

Платка получилась такая:




Желающие могут скачать , в формате для Sprint Layout. Также можно скачать готовые для заказа в Китае (или на местном производстве) .

На плате видны две версии отверстий для dip28 в узком и широком корпусе, это сделано для подключения адаптера QFP32 в DIP28, обзор которого я делал . Кроме того, если припаять разъем для узкой версии контроллера, то в отверстия для широкой версии можно припаять линейки штырьков и сразу тестировать прошитый контроллер. Для dip8 я также предусмотрел, помимо адаптера, отверстия для штырьков. Также имеются две версии ICSP разъемов широкий (10 контактов) и узкий (6 контактов), ну и все остальные детали, присутствующие на схеме. Светодиоды, резисторы и конденсаторы (22пФ) я использовал SMD 1206. Светодиоды распределил так: Зеленый - READY, Красный - ERROR, Желтый - PROG. Также предусмотрел штырьки для дополнительного питания и земли, которые могут потребоваться при тестировании прошиваемого контроллера.

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




Припаиваем детали, я изготовил 2 версии, для широкого dip28:




Здесь я не стал припаивать штырьки и разъемы, так как планирую эту плату использовать для прошивки контроллеров с помощью адаптеров в корпусах SOIC и QFP.
Для узкого dip28:




Как видно из фото, для подключения микросхем в dip корпусах я использовал цанговые разъемы, мне они нравятся больше.
Адаптер QFP32 в DIP28 для подключения в широкую версию шилда:


Встает отлично:


Весь бутерброд, включая Arduino Uno:




Для узкой версии со вставленным контроллером ATtiny85:


Для прошивки контроллеров в SOIC8 корпусе я использую также адаптер:

Для того чтобы наша конструкция стала программатором, следует без шилда загрузить в Arduino Uno прошивку ArduinoISP, идущую в комплекте с любой версией :

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


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


На этом заканчиваю. Спасибо всем, кто дочитал до конца! Надеюсь, что кому-то приведенная информация окажется полезной. Всех со странным праздником: Старым Новым Годом! Планирую купить +22 Добавить в избранное Обзор понравился +81 +123

01 02.2017

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

Из этой статьи вы узнаете:

Приветствую уважаемый посетитель! Меня зовут Гридин Семён, я являюсь автором блога kip-world, обо мне вы можете почитать . Рынок пестрит разнообразием различных плат, в том числе и клонов. Сегодня в этой статье я выделил модули, которые по-моему мнению основные и представляют наибольший интерес. Их основные функции и работу с ними я опишу в следующих сериях статей. Я относительно поделил шильды на несколько групп:

  1. Коммуникационные;
  2. Силовые;
  3. Датчики-сенсоры;
  4. Модемы;
  5. Специальные.

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

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

Видеть, слышать и чувствовать система может только через датчики . Их достаточно много. Среди большого числа датчиков существует и экзотика — датчик дыма, датчик влажности почвы, инфракрасный датчик. И, благодаря создателям Ардуино, цена очень демократичная. Так как я работаю в сфере автоматизации, эти же датчики будут стоить в 200-300 раз дороже.

К группе модемов я отнес GPRS-модемы. Работают они с GSM связью. Модули выполняют совершенно специфическую функцию — сбор данных, отправка СМС, приём звонков.

В категорию специальных попадают те, которые сложно определить к какой-либо группе. Разработчики выпускают кучу всяких переходников, пультов, сенсорных панелей, ЖК-индикаторов. Специальный ключ RFID тоже можно отнести в эту группу.

Если чего-то не хватает в списке, пишите в комментариях, я буду дополнять. Для тех, кто впервые связывается с Ардуино предлагаю прочитать про . А сейчас я расскажу о 5 модулях, с которыми мне хотелось бы ознакомиться в первую очередь, и предлагаю их вам!!

Интернет-модуль Ethernet shield W5100

На первое, что обращу внимание это Ethernet shield W5100. Модуль интернет-адаптера для отображения так называемой «визуализации» в браузере. Идеально подходит для системы «умного дома», метеостанции, диспетчеризации (если необходимо следить за физическими параметрами). Существует возможность использования в облачных технологиях .

Описание модуля:

  • Поддержка протокола TCP/IP
  • Слот для карты памяти microSD
  • Уровень напряжения 3.3/5 В
  • Совместима с платами Arduino UNO и MEGA
  • Уровни системы: UDP, TCP, IPv4, ARP, MAC

GPRS-модем GSM shield SIM900

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

Характеристики платы расширения:

  • Сборка на основе микросхемы SIM900
  • Рабочая частота GSM 850/900/1800/1900 МГц
  • Управление с помощью AT-команд
  • встроенный протокол TCP / UDP
  • возможность подключения динамика и наушников, есть возможность отправлять сигналы DTMF и проигрывать записи как на автоответчике
  • держатель SIM-карты и GSM антенны
  • 12 выводов GPIO (General Purpose Input/Output), 2 ШИМ (широтно-импульсная модуляция) и АЦП (аналогово-цифровой преобразователь)

Есть и дорогие аналоги для более серьёзных и надёжных систем. Совсем недавно я написал программу для взаимодействия GPRS модема ПМ-01 и ПЛК100. В случае возникновения аварии устройство отправляет смс на номер получателя.


WI-FI модуль ESP8266

Еще один способ передачи информации по беспроводной связи, это передача по WI-FI. Для такого случая есть небольшой модуль WI-FI ESP8266.Способ подключения и принцип действия мы рассмотрим позже. Выглядит она таким образом.

Описание модуля:

  • Беспроводной интерфейс: Wi-Fi 802.11 b/g/n 2,4 ГГц
  • Режимы: P2P (клиент), soft-AP (точка доступа)
  • Максимальная выходная мощность: 19,5 дБ·мВт (89 мВт)
  • Номинальное напряжение: 3,3 В
  • Портов ввода-вывода свободного назначения: 2
  • Частота процессора: 80 МГц

Драйвер двигателей L293D

Для управления различных машинок и танчиков на двигателях постоянного тока в основном применяется драйвер двигателей L293D.Существует несколько вариаций подключения — и для шаговых двигателей, и для сервоприводов. Всё зависит от программы, которую вы напишите. Напишите в комментариях, как вы используете данный драйвер? В ближайшее время хочу приобрести данный девайс, очень интересно собрать робота на колёсах. Да, кстати вот он сам:

Его характеристики:

  • Cовместим с Arduino Mega 1280 и 2560, UNO, Duemilanove, Diecimila
  • 4-х канальное управление
  • питание моторов от 4.5В до 36В
  • допустимый ток нагрузки 600мА на канал, пиковый ток - 1.2A
  • защита от перегрева
  • 2 интерфейса с точным таймером Arduino (не будет «дрожания») для подключения сервомоторов на напряжение 5В, если напряжение питания нужно повыше, то подключение по питанию нужно переделать как описано ниже
  • возможно одновременно управлять 4 двунаправленными DC коллекторными моторами или 2 шаговыми, и 2 сервомоторами
  • разъем для подключения внешнего источника для раздельного питания управляющей логики и моторов

Модуль интерфейса RS-485

Для меня лично интересна ещё вот такая штука — RS485 Shield. Почему? Интерфейс RS-485 является промышленной витой парой для соединения различных промышленных модулей. Шина работает с протоколом ModBUS RTU и ModBUS ASCII. Просто интересно, как будут взаимодействовать Arduino с остальными устройствами по интерфейсу.

Характеристики модуля:

  • Питание 5.0 В
  • 16 цифровой порт ввода-вывода (в том числе интерфейс I2C)
  • 6 аналоговых I/O портов
  • Переключатель в режима программирования
  • Автоматический / ручной переключатель режима трансивера
  • Стандартный интерфейс RS485, мини-интерфейс RS485 (PH2.0) и выводы RS485

Ну, на этом всё, с этими модулями мне бы хотелось поработать больше всего. А что можете предложить вы? Что можно добавить в список? Пишите в комментах...

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

С уважением, Гридин Семён.

Шилд - это плата дополнения. Я предлагаю разделить шилды на полноразмерные и отдельные модули. Полноразмерные своими очертаниями повторяют форму платы Arduino, будь то UNO, Nano или MEGA. Отдельные модули - это платы произвольной формы, созданные для выполнения определенного набора функций. И те и другие могут быть как универсальными, так и для выполнения узконаправленных задач.

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

Начнем с шилда, который не несёт в себе никаких особенных функций, а создан для удобства монтажа ваших проектов. Итак первый в нашем обзоре облегчит монтаж проектов с платой Arduino Nano, правда толку от малых размеров «НАНО» в таком случае ноль.

На плате расположен разъём для подключения штекера от блока пиитания, стабилизатор напряжения, а также клеммные колодки. Они подписаны и соответствуют выводам «Нанки». Кроме того присутствует кнопка «сброс» и светодиод «Питание».

Второй шилд предназначен для платы Uno. На нем расположена беспаечная макетная плата для сборки проекта и выводы, дублирующие те, что на самой ардуине - удобное решение.

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

Вот пример такой платы для Ардуино версии Мега.

Проводная и беспроводная связь

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

Эта плата называется w5100 - содержит Ethernet модуль и модуль SD-кардридера. Это значит, что можно хранить данные, например лог измерений датчиков на карту памяти и управлять системой через web-интерфейс. Чтобы связать с ним ардуино пользуйтесь библиотеками:

    Ethernet library;

Обратите внимание внешне он повторяет концепцию Arduino UNO R3, кроме того, он подойдет и на Mega.

Если W5100 вам кажется слишком крупным - то ENC28J60 займет меньше места. К сожалению в нем уже отсутствует SD-модуль.

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

W5500 - еще один вариант Ethernet-шилда. По своей сути - это доработанная версия W5100, оптимизированная в плане скорости и энергоэффективности.

Обратите внимание, на полноразмерных шилдах все пины дублируются клеммной колодкой. К сожалению, шилды используют порты. Конкретно этот задействует MOSI, MISO, SCK, и пин 10, для сигнала CS (выбор адресата для связи).

Если вам нужна беспроводная связь - ваш выбор это Wi-fi шилды, если есть интернет и роутер, а если этого нет - GSM-модули или GPRS Шилды.

На фото официальный шилд. На нём установлен слот под Micro SD-карту памяти, а связывается с микроконтроллером он по SPI-протоколам, через Mini-USB можно обновлять его программное обеспечение. Поддерживает 802.11b/g.

GPRS-шилд от «Амперки» вы видите выше. Вы можете заменить антенну на более мощную. Ближе к зрителю виден слот для SIM-карты, чуть дальше слот под батарейку CR1225. Батарейка на плате нужна для хота часов реального времени, а это немаловажное дополнение к возможностям GPRS-шилда. Вы можете отправлять СМС на него и с него.

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


Как хранить данные на Arduino?

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

Это скорее не шилд, а модуль. Он миниатюрен и легок для повторению, кстати, вот его схема.

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

Управляем мощной нагрузкой с микроконтроллера

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

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

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

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

А вот как это выглядит в сборе:

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

Так как это задача часто становится перед изобретателями, было разработано готовое решение - симисторный shield, его полное название - ICStation 8 Channel EL Escudo Dos Shield for Arduino. Он изначально предназначался для управления свечением «гибкого неона».

У него есть 8 каналов, к которым подключается сеть переменного тока и нагрузка.

Шилды для двигателей

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

Мотор-ШИЛД для ардуино может управлять электродвигателями постоянного тока (4 штуки) или двумя шаговыми моторчиками.

Он построен на базе двух L293. Эта микросхема представляет собой сборку из двух H мостов, это позволяет управлять с возможностью реверса двумя ДПТ, либо 1 шаговым биполярным двигателем. Схемы подключения соответсвенно:

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

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

Можно управлять двигателями, которые рассчитаны на диапазон напряжение от 5 до 24 Вольт. Вместо 2-х DC-моторов можно использовать 1 однофазный шаговый или запараллелить каналы и подключить 1 мощный DC мотор с током до 4А, а это не мало - 48 Вт при напряжении питания в 24 В.

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

Здесь тоже есть возможность разделения цепей питания, как это было в предыдущем варианте. Итого можно подключить 18 сервоприводов (на плате нумерация от 0 до 17).

Везде есть своя специфика, шилды для необычных задач…

В атмеге328, сердце нашей платы, есть АЦП. Главная проблема в том, что на плате ардуино уно мы видим всего лишь 6 аналоговых входов. Что делать если у нас больше аналоговых датчиков?

Можно собрать две ардуино в единую сеть. Одну использовать в качестве основной, а вторую вспомогательную для изменений и с первой отправлять на сервер сигналы измерений или выводить их на экран… Но это сложно: нужно тратить память на дополнительные строки программного кода для реализации такой системы.

А что если умножить каждый вход на 16? Итого у нас может быть до 16*6=96 аналоговых входов. Это реально с помощью мультиплексора. Он просто переключает по очереди 16 аналоговых каналов на один аналоговый выход, который вы подключаете к такому же входу любого мироконтроллера.

Средствами микроконтроллера Атмега о-о-очень трудно релизовать функцию распознавания голоса, но ардуинщики могут не отчаиваться, есть специальное решение - EasyVR Shield 3.0.

Это готовое, но дорогое решение, на момент написания статьи он стоит почти 100 долларов в России. Сначала шилд запишет вашу команду, затем сравнит её с тем что записано в памяти, определив номер - выполнит её.

Вы можете устроить «диалог с компьютером», он может воспроизводить то, что в нём записано. Без дополнительных усилителей рекомендуется «общаться» с этой платой с расстояния не более 60 см.

Выводим изображение

LCD Keypad shield - это настоящая панель управления. На нём расположен дисплей LCD1602 (16 символов в две строки), и набор кнопок. Из-за них задействовано довольно много портов, например A0 и с D4 по D7 под клавиатуру, а порт D10 - ШИМ-регулятор яркости подсветки. D8 и D9 - сброс и включение.

На самом деле существует много дисплеев совместимых с ардуино. Вернее тех, о которых написано больше всего информации и вы легко их запустите в своей системе. Довольно популярен в кругах самодельщиков дисплей от NOKIA 5110, на выбор есть и OLED и TFT экраны, работающие по I2C. Но они не в «шилдовом» исполнении.

Автономное питание

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

Заключение

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

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

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

Как быстро начать?

Для быстрого начала новичку проще всего купить готовую плату - стоит она примерно $30. На плате будет всего два чипа - микроконтроллер ATMEL и микросхема USB-интерфейса, к которой он подключен. Все остальные элементы добавляются самостоятельно по мере необходимости.

Программы для Arduino (называемые на сленге «скетчами») пишутся на языке Wiring. По сути, это обычный C++, расширенный специальными процедурами типа «digitalWrite» (записать значение в порт) или «analogRead» (прочитать значение из АЦП). Осваивается все это в один-два присеста, особенно если у тебя уже есть опыт программирования на C++. Написанные скетчи компилируются и загружаются в Arduino через USB с помощью среды ArduinoIDE (arduino.cc/en/Main/Software). Чтобы собрать простейший проект требуются какие-то минут тридцать, без необходимости глубокого погружения в даташиты ATMEL и конструкции ассемблера. Язык интуитивно понятен, а разобраться с нюансами поможет неплохой онлайн-хелп. Да и паять, кстати, тоже необязательно, если есть беспаечная макетка и набор проводков.

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

Что такое Shield-плата?

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

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

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

В первую очередь, на нем обязана быть кнопка сброса. Оценить это может любой, кто отлаживал Arduino с одетым шилдом - штатная кнопка сброса становится недоступной и упражнения по ее нажиманию при помощи подручных продолговатых предметов порядком раздражают. Хороший шилд также должен быть совместим с Arduino Mega - если у тебя расширенная версия Arduino на ATmega1280 или ATmega2560, еще не факт, что с ней заработает шилд, созданный для привычной Uno или Duemilanova. А все из-за того, что в Mega отвечающие за аппаратный SPI пины перенесли в другое место! Так что если шилд общается с Arduino по шине SPI, обязательно изучи его «брюхо» - надеяться на совместимость с Mega можно, если ты увидишь там не только штырьки, но и черный квадратный разъем-розетку 2х3. Ниже я подготовил обзор лучших готовых Shield-плат для решения частых задач.

Управление моторами

Если необходимо управлять моторами, смело используй шилд Motorshield, созданный талантливым американским инженером Лимором Фридом aka ladyada (ladyada.net/make/mshield/).

Главное преимущество шилда заключается в его универсальности, поскольку он поддерживает до четырех моторов прямого тока, до двух шаговых двигателей и двух серво-приводов. Можно комбинировать: например, один шаговый и два двигателя постоянного тока. Основу шилда обеспечивают две микросхемы счетверенного H-моста L293D, способные выдавать ток до 600 мА на канал и работать напряжениями от 4,5 до 36 В. Запараллелив входы одной микросхемы, можно отодвинуть ограничение по току до 1,2 А.

С помощью этого шилда можно, например, управлять одновременно моторами и рулевой тягой модели гоночного автомобиля, шаговыми двигателями координатного стола. Для более мощных нагрузок можно использовать Ardumoto с чипом L298 от фирмы Sparkfun (два канала с токами нагрузки до 2 А) или ее более продвинутую версию Monster Moto Shield (sparkfun.com/products/10182) на двух чипах VNH2SP30, способную отдавать уже до 30 А с предельным напряжением 41 В. Если дело дойдет до последнего варианта, не забудь посоветоваться со знающими спецами: все-таки нагрузки довольно приличные, возможно придется обзавестись дополнительным радиатором, чтобы не обжечься.

Работа с Ethernet

Существуют два основных варианта шилдов для работы с Ethernet - на основе старого доброго чипа ENC28J60 от Microchip и более совершенного W5100 от Wiznet. Оба решения используют для обмена шину SPI, отнимая всего четыре пина Arduino. Но ENC28J60 появился много раньше и явно проигрывает продвинутому W5100: только 10 Мбит/с, нет аппаратной поддержки IP, UDP, TCP. Кроме того, W5100 позволяет работать с четырьмя сокетами (что означает поддержку до четырех одновременных соединений).

В общем, настоятельно рекомендую использовать именно W5100, потому что он существенно экономит ключевой ресурс микроконтроллера - оперативную память (SRAM), которую приходится экономить (у Atmega328 - всего один килобайт). Ну и все остальные преимущества предобработки налицо: пока W5100 сам переспрашивает пакеты по протоколу TCP и считает контрольные суммы заголовков, Atmegа может спокойно заниматься более важными вещами.

Другим образцовым примером является шилд Arduino Ethernet Shield (arduino.cc/en/Main/ArduinoEthernetShield) от команды Arduino. С его помощью можно создать скетч, который будет способен:

  • получать динамический IP-адрес по DHCP;
  • устанавливать время по протоколу NTP;
  • резолвить имена через DNS;
  • проходить авторизацию через RADIUS;
  • выполнять функции несложного Web-сервера или выступать в качестве Web-клиента, формируя запросы и осуществляя парсинг ответов.

Из схожих плат можно отметить разработку Freetronics - EthernetShield with PoE (freetronics.com/products/ethernet-shieldwithpoe). Идея питания Ethernet-устройства от той же линии Ethernet, к которой оно и подключено, родилась в 2001 году, а два года спустя стала официальным промышленным стандартом IEEE 802.3af. По собственному опыту замечу, что нет ничего удобнее для питания автономных коробочек, которые общаются по Ethernet и разбросаны по зданию в радиусе 100 метров от специального питающего коммутатора. Стоит такой шилд чуть дороже, требует приобретения дополнительной микроплатки модуля PoE и вместо SD-разъема имеет макетное поле.

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

Сразу вспоминается проект «твиттер-цветочка», в котором связка Arduino+Ethernet при помощи воткнутого в землю датчика влажности через твиттер жаловалась на сухость и требовала немедленного полива. При всем многообразии применения 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-модуль съемный, и можно передавать не только данные - разведен выход на внешний спикерфон.

Разные шилды

Подводя краткий итог, можно с уверенностью сказать - решения почти всех типичных задач давно существуют в виде шилдов. Но не стоит думать, что на этом все заканчивается. Вот несколько примеров: Radiation Sensor Board от Libellium (счетчик Гейгера).

Шилд своими руками

В качестве примера создадим свой собственный LCD-шилд. Схема подключения популярного алфавитно-цифрового ЖКИдисплея 1602 на контроллере HD44780 возможна в двух вариантах - восьмибитной шиной или четырехбитной. Самое время открыть стратегию шилдостроения Arduino: пинов много не бывает! Стараемся использовать их по минимуму и поэтому выбираем четырехбитную схему (на наше счастье, поддержка такой схемы входит в дистрибутив ArduinoIDE, в виде библиотеки LiquidCrystal).

Используем для построения нашего шилда специальную заготовку - протошилд, который представляет собой макетную плату с небольшими изысками. Самая главная его ценность - это правильно расставленные отверстия для пинов, для идеальной стыковки с Arduino. Так уж получилось, что все колодки пинов расположены на сетке с шагом 2,54 мм, кроме одной (если бы не этот досадный факт, можно было бы взять любой кусочек «дырчатой макетки» и впаять в него стыковочные вилки PLS). Сделано это было специально, чтобы реципиент по рассеянности не вставил шилд наоборот и не пожег на корню будущий шедевр.
Обрати внимание, что схема предусматривает наличие переменного резистора для регулировки контрастности. Это важно! Если забить на это, при правильной в остальном схеме и скетче ничего видно не будет. Подойдет любой на 10-20 кОм, а конкретно на этом протошилде он уже и так предусмотрен - правда подключен ко входу analog0, поэтому придется припаять лишний проводок.

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

Оденем полученный результат на Arduino и загрузим первый тестовый скетч-пример из каталога LiquidCrystal. Ничего нет на экране? Или куча черных квадратиков? Не беда, самое время подкрутить переменный резистор - уверен, что-то обязательно появится! В этом случае можешь облегченно вздохнуть - теперь у тебя есть первый шилд собственного изготовления. Ну и раз уж он заработал - можно заодно его русифицировать. В свое время я изменил стандартную библиотеку так, чтобы символы кириллицы корректно транслировались из UTF-8 в знакогенератор дисплея. Ищи последнюю версию библиотеки на github.com/mk90 .