Андрей Смирнов
Время чтения: ~16 мин.
Просмотров: 1

Электронный конструктор: Обзор лучших Shield-плат для Arduino

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

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

sku_377749_1-300x300.jpgДавайте сперва разберемся в терминах. Плата расширения Ардуино  – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов.  Другое популярное название платы расширения – англоязычное 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. Это осуществляется за счет дополнительных  разъемов питания и земли, выведенных на плату к каждому из аналоговых и цифровых пинов. Также на плате можно найти разъемы для подключения внешнего источника питания (для переключения нужно установить перемычки), светодиод и кнопка перезапуска. Варианты шилда и примеры использования можно найти на иллюстрациях.

  81EZ-RWJqyL._SX355_-300x200.jpg  sku_377749_1-300x300.jpg

Существует несколько версий сенсорной платы расширения. Все они отличаются количеством и видом разъемов. Наиболее популярными сегодня являются версии 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, подключить ее  к ардуино и загрузить скетч. Обычно любое программирование шилда заключается в выполнении простых действий по переименованию внутренних переменных уже готовой программы. В итоге мы получаем удобство в использовании и подключении, а также быстроту сборки готовых устройств или прототипов.

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

Я знакома с мнением многих технических специалистов об Arduino и в некоторой степени разделяю их взгляд. Тем не менее, например, для быстрой автоматизации, эта платформа очень полезна: она подобно детскому конструктору позволяет собрать и запрограммировать устройство за пару часов, не тратя время на различные «undefined reference to __bss_start__» и «Device not detected». Однажды для автоматизации очередной рутинной работы мне понадобился дисплей. Я листала Aliexpress и все не могла найти подходящий шилд для Arduno. Кот для привлечения внимания

Лиха беда начало

Итак, мне нужен был диалоговый пользовательский интерфейс и притом быстро. (Кот был для привлечения внимания, замечено — работает.) Как будто нарочно все производители предлагали самостоятельно вручную рисовать поля ввода и прогресс-бары, программировать обработчики нажатий кнопок, и, словом, делать все то, что мне как раз не хотелось. Поразительно, почему бы не предоставить высокоуровневую библиотеку, которая взяла бы эти заботы на себя? Наверное в 80% случаев все задачи сводятся к простой последовательности:

  1. Отобразить форму с полями ввода.
  2. Подождать, пока пользователь отредактирует поле Foo.
  3. Получить новое значение поля Foo.
  4. Сделать что-то в ответ.

Но отсутствие библиотеки было не единственной препоной. Скудных запасов ROM моей Arduino Uno (а такая же ситуация и у Leonardo, Ethernet, Pro) хватало в лучшем случае на хранение одного изображения при разрешении 128х128 точек. И на код места уже не оставалось. Пройдясь широким фронтом по Aliexpress, DX и подобным магазинам, я в итоге нашла, выражаясь языком сетевых разработчиков, либо «тонкие тупые», либо «чересчур жирные» шилды. Первые не решают проблему, но стоят дёшево. Вторые походят на ракетно-зенитный комплекс, и за эту избыточность придется порядочно заплатить. Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича… После некоторых колебаний я решилась заполнить этот досадный маркетинговый пробел.

Что нам стоит шилд построить

Развела плату, заказала несколько первых образцов для опытов, попробовала. Идея постепенно оформилась. Итак, решение должно быть простым в использовании и обязательно дешёвым (о чем ниже):

  • На борту шилда должен быть микроконтроллер с запасом памяти хотя бы на пару экранов.
  • Чтобы с памятью точно не возникло проблем, можно добавить слот microSD.
  • Также прямо на шилде нужно расположить несколько кнопок.
  • Микроконтроллер должен заниматься «чёрной работой», отрисовывая поля формы и обрабатывая нажатия кнопок таким образом, чтобы, только подав питание на прошитый шилд, можно было листать формы, редактировать поля ввода, ставить птичку в поле для отметки и проч.
  • Микроконтроллер на шилде будет связан с Arduino по одному из доступных последовательных интерфейсов: I2C, SPI или UART. По каналу будут передаваться команды от Arduino; (например, установка начального значения или получение текущего).
  • Чтобы не заставлять Arduino циклически опрашивать шилд в ожидании действий пользователя можно предусмотреть линию GPIO, которая будет выполнять роль внешнего прерывания.
  • В отношении метода программирования шилда можно, конечно, провозгласить известный принцип «только Vim, только хардкор!», но всё же, понимая потребности целевой аудитории этого продукта, весьма полезно разработать дизайнер форм наподобие GTK Glade и предоставить возможность новичкам одним нажатием кнопки этого дизайнера прошить формы в шилд.

Несколько слов о комплектующих

Самым основным комплектующим шилда является дисплейный модуль. От него в наибольшей степени зависит как цена, так и технические характеристики продукта. При поиске подходящего модуля хотелось и рыбку съесть, и на лошади покататься: с одной стороны я исходила из критерия доступности, с другой стороны стоимость модуля должна быть минимальной. В основном эти критерии противоречат друг другу: магазины вроде Терраэлектроники, имеющие отделения по всей стране, предлагали некоторый набор цветных дисплеев распространённых моделей, но цены на них были от 2000 руб и выше; с другой стороны на том же Aliexpress было много хороших вариантов, но все они обладали одним и тем же недостатком: между ними и нашими несчастными пользователями пролегала бездна, в которой погибла не одна тысяча картонных коробок, и поведение которой было столь же легко предсказуемо, как поведение нефтяных котировок или погоды. Все, конечно, поняли о чем речь. Так что моя идея по-прежнему оставалась лишь идеей. Как это часто бывает, ночная кухонная болтовня за чашкой чая оказывается судьбоносной. Приятель мимоходом поделился, как менял сломанный дисплей на своем HTC. Оказалось, что дисплеи смартфонов, имея несомненно лучшие характеристики, чем товары в каталогах Терраэлектроники, стоят в два-три раза дешевле! Это было открытием. После этого достаточно быстро был найден дисплей, который в России можно купить практически на каждом шагу за копейки; он устанавливался на телефоны Nokia 2600/2650/3100/3200/5100/5140/6100/6220/6610/7210/7250. (Как впоследствии оказалось, я заново открыла Америку, так как именно этот дисплей используется во многих шилдах для Arduino.) Его разрешения — 128×128 точек — вполне хватает, чтобы отобразить форму с тремя-четырьмя полями ввода.

Гляженное лучше хваленного

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

  • У нас есть цифровой термометр, необходимо отображать его показания на дисплее.
  • Есть сервопривод, требуется задавать параметры его работы. Например, его положение.
Термометр
#include  #include <onewire><dallastemperature arduino="" one_wire_bus="" form_termo="" field_termo="" onewire="" sensor="" dallastemperature="" lcd="" intelcd="" void="" setup="" lcd.init="" sensor.begin="" loop="" sensor.requesttemperatures="" lcd.update="" sensor.gettempcbyindex="" delay=""></onewire>
Сервопривод
#include  #include <servo>   #define FORM_SERVO 0 #define FIELD_S  InteLCD lcd; // создать объект lcd для управления LCD шилдом Servo myservo; // создать объект servo для управления сервоприводом void lcdEvent(void); // Обработчик событий от шилда  void setup(void) {     myservo.attach(9); // указать, что сервопривод на 9 линии     lcd.init(); // инициализация lcd }   void loop(void) { }   void lcdEvent(void) {     switch (lcd.event.code) {         case InteLCD::FIELD_UPDATED: // если обновлено поле 0 формы 1 if (lcd.event.formid == FORM_SERVO && lcd.event.fieldid == FIELD_SERVO)                 {                 // установить позицию сервопривода в соответствии              // с полученным от поля ввода значением                 myservo.write(lcd.event.arg[0]);                    // подождать пока сервопривод примет нужное положение              delay(15);      }               break;     } } </servo>

Напоследок

По моим представлением DIY электроника должна развиваться в сторону наибольшей модульности, где каждый модуль предельно прост и закончен. Тогда, как из разнообразных деталей Lego ребенок возводит свой игрушечный замок, пользователь по кирпичикам должен собирать свое устройство, но без использования молотка и напильника. Мой шилд — небольшой шаг в этом направлении. Буду рада услышать ценные советы и понять, кому же ещё кроме меня не достаёт такой полезной штуки.

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

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

Nano Uno shield.

Как понятно из названия сей шилд позволяет превратить вашу Нано в Уно одним легким движением. Зачем это надо? Да в общем для подключения шилдов Уно не через бредборд а напрямую. Шилд имеет множество колодок для подключения, кнопку ресета и гнездо для внешнего питания. Колодки под шилды придется распаивать самостоятельно.

Стоимость в районе 100-110 рублей (1.6 доллара)

146557626012187682.jpg

Arduino Motor Shield.

Данный шилд предназначен для подключения разнообразных моторов к вашей Ардуине. Может водить 2 шаговика или 2 сервы или 4 двигателя постоянного тока. Шилд содержит в себе 2 чипа L293D и восьмибитный сдвиговый регистр SN74HC595N. Сила тока на канал 0.6 ампера и 1.2 ампера в пике, максимальное напряжение 36 вольт.

Стоимость платки от 120 рублей (1.8 доллара)

146557708114726465.jpg

Arduino Proto Shield.

Данный шилд предназначен для быстрого прототипирования или изготовления своего шилда. В комплекте с шилдом идет бредборд на 34 ряда по 5 дырок, бредборд можно приклеить к шилду посредством самоклейки. Сам шилд произведен в виде макетной платы, на борту имеет выход всех пинов с Arduino и множество пинов 5v и gnd, reset, кнопку и 2 всетодиода которые вы можете использовать по собственному желанию.

Стоимость платки начинается от 70 рублей (~1 с небольшим доллар)

1465578153122359326.jpg

Arduino Sensor Shield.

Данный шилд предназначен для легкого подключения всего и вся к ардуине. На борту имеет колодки для подключения радиомодуля APC220, Bluetooth модуля, модуля SD карты, ультразвукового модуля, RS232 COM модуля, I2C порт, LCD параллельный и последовательный порты, 6 цифровых и 12 аналоговых портов с подведенным питанием и землей, зажимная клемма для питания, светодиод 13го пина и кнопку reset.

Цена от 90 рублей (1.35 доллара)

1465579347164641678.jpg

Arduino Data Logging Shield

Как можно понять из названия благодаря этому шилду можно писать лог. Но по факту его можно использовать и как файловое хранилище и как часы реального времени. Для шилда есть специальная библиотека которая помогает логировать данные на карточку памяти FAT16(приоритетно) и FAT32. Так же шилд имеет макетную плату на 110 дырок. Комплектация не включает батарейку и карту памяти.

Стоимость шилда начинается от 175 рублей (2.65 доллара)

1465580361134123780.jpg

Arduino More-Core Shield

Этого шилда нет на Али. По крайней мере я не нашел. Шилд не новый и не очень популярный но очень полезный. По факту это еще одна Ардуина которая подключается к Ардуине и работает с ней сообща. На шилде стоит Atmega328 и колодка переключателей состояния. Рассказать кратко про этот шилд не удастся т.ч. предлагаю просто почитать. http://blog.protoneer.co.nz/arduino-more-core-shield/

Стоимость неизвестна.

1465582855119880960.jpg

На данной ноте я пожалуй закончу пост. Надеюсь кому-то эта информация будет полезной.

Всем безошибочной компиляции скетчей и быстрой доставки с Али. 🙂

355Используемые источники:

  • https://arduinomaster.ru/platy-arduino/shildy-i-platy-rasshireniya-arduino/
  • https://habr.com/post/384363/
  • https://pikabu.ru/story/obzor_populyarnyikh_shildov_dlya_arduino_4262944

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации