Arduino LilyPad: плата для электроники на одежде

Arduino LilyPad: плата для электроники на одежде

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

Плата, которую можно пришить

В семействе Arduino есть плата, рассчитанная не на макетку и не на корпус прибора, а на ткань. LilyPad создана Leah Buechley совместно со SparkFun для работы с одеждой и текстилем. Её пришивают к материалу, а питание, датчики и исполнительные устройства подключают токопроводящими нитями. Собранная на ткани схема вместе с самой платой переносит ручную стирку, если предварительно отключить питание.

Печатная плата выполнена в форме круга диаметром около 50 мм и строится на микроконтроллерах ATmega168V или ATmega328V. Питание допускается в диапазоне от 2,7 до 5,5 В. Переполюсовка или напряжение выше 5,5 В могут вывести плату из строя.

Три варианта исполнения

  • LilyPad Arduino 328 — версия на микроконтроллере ATmega328.
  • LilyPad Arduino USB — на ATmega32u4, с USB-портом для связи с компьютером и выходом для литиевой батареи.
  • LilyPad Simple Snap — со встроенным литиевым аккумулятором и контактами в виде кнопок, благодаря которым плата отстёгивается от схемы.
Плата LilyPad Arduino USB
Плата LilyPad Simple Snap с контактами-кнопками

LilyPad Arduino 328: выводы и характеристики

У LilyPad Arduino 328 по окружности расположено 22 контакта. Два из них, «+» и «−», служат для питания, остальные по назначению повторяют выводы Arduino Uno. Кроме того, на плате есть штырьковые контакты для переходника USB-Serial: собственного USB-порта у этой версии нет, и скетчи загружаются через него.

Плата LilyPad Arduino 328 и расположение контактов
  • Микроконтроллер — ATmega328V.
  • Цифровые контакты — 14, из них 6 могут работать как выходы ШИМ.
  • Аналоговые контакты — 6.
  • Рабочее и входное напряжение — 2,7–5,5 В.
  • Флеш-память — 16 Кб, из которых 2 Кб занимает загрузчик.
  • ОЗУ — 1 Кб.

Подключение к компьютеру и загрузка скетчей

Плата соединяется с компьютером через преобразователь USB-Serial, подключённый к штырьковым контактам. В Arduino IDE в меню «Инструменты» выбирают порт, на котором появилась плата, и тип платы — LilyPad Arduino.

Схема соединения LilyPad Arduino 328 с переходником USB-Serial

Частая причина ошибки при загрузке — переходник без контакта DTR. Этот контакт соединяется с выводом RESET и сбрасывает микроконтроллер перед записью новой программы; на дешёвых переходниках его нет. В таком случае сброс выполняют вручную: после запуска загрузки дожидаются окончания компиляции и появления сообщения о начале записи, затем нажимают и отпускают кнопку сброса на плате. Если скетч всё равно не загружается, стоит проверить правильность подключения переходника.

Дополнительные модули

SparkFun Electronics выпускает для LilyPad набор совместимых устройств. Среди них кнопка LilyPad Button Board, LilyPad Light Sensor, датчик температуры LilyPad Temperature Sensor, акселерометр LilyPad Accelerometer ADXL335, MP3-проигрыватель LilyPad MP3, плата LilyPad XBee для XBee-устройств, держатель батареи LilyPad Coin Cell Battery Holder и LilyPad Pixel — RGB-модуль на светодиоде WS2812.

Пример: цепочка из десяти LilyPad Pixel

LilyPad Pixel удобен тем, что управляется с одного контакта Arduino, при этом модули соединяются в цепочку и каждым можно управлять отдельно. Для примера нужны плата LilyPad, десять модулей Pixel, резистор 470 Ом, провод и блок питания на 5 В. Если токопроводящей нити нет, модули соединяют пайкой обычными проводами.

Модули включаются последовательно, вход Din одного соединяется с выходом Do соседнего, а управляющий сигнал подаётся на первый модуль цепочки. Данные идут пакетами по 3 байта — по одному на каждый цвет. Между пакетами выдерживается пауза 50 мкс, а пауза длиннее 100 мкс означает конец передачи. Первый модуль забирает первый пакет и устанавливает по нему свой цвет, следующий пакет пропускает дальше, где его принимает второй модуль, и так до конца посылки.

В скетче используется библиотека Adafruit_NeoPixel. Первый модуль подключён к выводу 4, количество модулей задано равным 10. Объект создаётся с параметрами NEO_GRB + NEO_KHZ800; в setup() вызывается begin() и show(), что гасит все модули. В основном цикле каждому светодиоду через setPixelColor() назначается случайный цвет (три значения random(0,255)), затем show() отправляет данные в цепочку, и программа ждёт одну секунду. На той же основе можно построить и более сложную световую анимацию.

Если модули не светятся

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

← Все статьи