Платье с цветами на сервоприводах
Девушки в ИТ-сфере — не такое уж и редкое явление. Что интересно, даже будучи суровыми технарями, они сохраняют способность создавать какие-то красивые милые вещи. Так, например, Рехана Аль-Солтане (Rehana Al-Soltane) сшила элегантное вечернее платье с цветами, которые распускаются и закрываются по команде. Да и корона у неё необычная. Интересно? Тогда давайте посмотрим, как всё это реализовано.
Итак, Рехана учится в Массачусетском технологическом институте, а платье стало её последним проектом для знаменитого курса «Как сделать (почти) что угодно».
Рехане пришлось изрядно поэкспериментировать, чтобы придумать дизайн цветов, которые будут плавно распускаться и закрываться, не комкая ткань, и не потребуют чрезмерных усилий для приведения в действие. В конце концов она остановилась на пластиковом листе, зажатом между двумя слоями ткани. К ним крепятся кусочки лески, которые тянут края внутрь. Лески проходят через трубку вниз по спинке платья, где сервопривод тянет или отпускает их.
Вот так это выглядело в самом начале.
Если потянуть за нить, лепесток закрывается, а если отпустить нить — медленно раскрывается. Но Рехана пошла дальше, и разработала изогнутую структуру, которую можно вшить в ткань. А затем напечатала её, используя филамент PLA:
Внутри она полая для продевания нити. Но, хотя деталь была сделана максимально тонкой, получилась не самая удачная конструкция. Она была слишком жёсткой и тяжёлой для ткани. Тогда появилась другая идея: 3D-печать непосредственно на ткани. Напечатать там некий скелет, который позволил бы лепестку изгибаться, когда его тянут, но принимать исходную форму, если воздействие прекращается. Дизайн делался в Fusion:
Ткань довольно тонкая, что означает, что лепесток будет легко сгибаться и разгибаться.
Затем были ещё эксперименты. Рехана поместила кусочек пенки между двумя атласными лепестками. Всё работало отлично, но нить не двигалась обратно без дополнительного натяжения, требовалось большое усилие. Слишком большое трение может повредить приводную нить, так что этот вариант не подходил.
Тогда между двумя лепестками поместили тонкий лист пластика. Их сшили вместе и проплавили отверстия в нескольких местах. Листья вырезаны в форме сердца, а из каждой половинки выходит нить.
Работает, идём дальше.
Дизайн платья предполагает крепление на бедре сервомотора с вращением на 360°, который будет натягивать нити. Из-за изогнутости лифа требовалось придумать, как направить все нити в одно и то же место. Рехана решила сделать очень тонкие, пригодные для сшивания кабель-каналы и использовать гибкий филамент.
Проектирование печатной платы
Силуэт Рехана сделала в InkScape, нарисовав половину формы, затем скопировав и отразив её:
Затем импортировала его в svg-pcb. Вот как выглядит код:
let silhoutte = geo.pathD([], "m56.827,-41.626L55.948,-41.703L55.123,-41.774L54.349,-41.84L53.624,-41.901L52.945,-41.958L52.308,-42.011L51.712,-42.06L51.153,-42.107L50.628,-42.15L50.135,-42.191L49.671,-42.229L49.233,-42.267L48.818,-42.302L48.424,-42.338L48.047,-42.372L47.685,-42.407L47.335,-42.441L46.994,-42.477L46.66,-42.514L46.329,-42.552L45.999,-42.592L45.667,-42.634L45.33,-42.679L44.985,-42.728L44.63,-42.779L44.262,-42.835L43.878,-42.894L43.475,-42.959L43.05,-43.028L42.601,-43.103L42.124,-43.184L41.617,-43.271L41.039,-43.374L40.477,-43.483L39.931,-43.596L39.402,-43.714L38.889,-43.838L38.392,-43.968L37.912,-44.104L37.448,-44.247L37.001,-44.396L36.57,-44.552L36.155,-44.715L35.757,-44.886L35.375,-45.065L35.009,-45.252L34.66,-45.447L34.327,-45.651L34.011,-45.863L33.711,-46.085L33.427,-46.317L33.16,-46.558L32.909,-46.81L32.674,-47.071L32.456,-47.344L32.254,-47.627L32.069,-47.921L31.9,-48.227L31.747,-48.545L31.611,-48.875L31.491,-49.217L31.387,-49.571L31.3,-49.939L31.23,-50.32L31.195,-50.672L31.197,-51.058L31.234,-51.477L31.305,-51.925L31.409,-52.403L31.543,-52.907L31.706,-53.436L31.897,-53.988L32.114,-54.562L32.356,-55.156L32.621,-55.767L32.907,-56.394L33.212,-57.036L33.536,-57.689L33.877,-58.354L34.233,-59.027L34.603,-59.708L34.985,-60.393L35.377,-61.082L35.779,-61.773L36.187,-62.463L36.602,-63.152L37.021,-63.837L37.443,-64.516L37.865,-65.188L38.288,-65.85L38.709,-66.502L39.126,-67.141L39.538,-67.766L39.944,-68.374L40.341,-68.964L40.729,-69.534L41.053,-70.009L41.369,-70.478L41.677,-70.939L41.976,-71.393L42.267,-71.84L42.549,-72.279L42.823,-72.711L43.087,-73.135L43.342,-73.552L43.588,-73.961L43.824,-74.362L44.05,-74.756L44.266,-75.143L44.472,-75.521L44.668,-75.892L44.853,-76.255L45.027,-76.61L45.191,-76.957L45.344,-77.297L45.485,-77.628L45.615,-77.951L45.733,-78.267L45.839,-78.574L45.933,-78.873L46.016,-79.164L46.085,-79.446L46.143,-79.721L46.187,-79.987L46.219,-80.245L46.237,-80.494L46.242,-80.735L46.234,-80.967L46.213,-81.264L46.187,-81.558L46.159,-81.849L46.126,-82.138L46.09,-82.424L46.049,-82.708L46.005,-82.991L45.956,-83.272L45.904,-83.552L45.847,-83.831L45.786,-84.109L45.72,-84.387L45.649,-84.665L45.575,-84.944L45.495,-85.223L45.411,-85.503L45.321, -85.784L45.227,-86.066L45.128,-86.35L45.023,-86.636L44.914,-86.925L44.799,-87.215L44.679,-87.509L44.553,-87.806L44.422,-88.106L44.285,-88.411L44.142,-88.719L43.994,-89.031L43.84,-89.348L43.679,-89.67L43.513,-89.996L43.341,-90.329L43.164,-90.666L42.984,-91.007L42.801,-91.351L42.617,-91.697L42.245,-92.394L41.87,-93.09L41.683,-93.437L41.497,-93.782L41.312,-94.124L41.128,-94.462L40.947,-94.796L40.768,-95.125L40.592,-95.448L40.419,-95.764L40.25,-96.074L40.086,-96.375L39.926,-96.668L39.772,-96.951L39.623,-97.225L39.48,-97.487L39.344,-97.738L39.214,-97.976L39.092,-98.201L38.978,-98.413L38.872,-98.61L38.775,-98.791L38.687,-98.957L38.609,-99.106L38.54,-99.238L38.483,-99.351L38.424,-99.472L38.36,-99.613L38.29,-99.772L38.216,-99.949L38.138,-100.142L38.055,-100.35L37.97,-100.573L37.881,-100.808L37.789,-101.055L37.696,-101.313L37.6,-101.58L37.504,-101.855L37.406,-102.138L37.307,-102.427L37.209,-102.721L37.111,-103.019L37.013,-103.32L36.917,-103.622L36.822,-103.622L36.822,-103.925L36.729,-104.227L36.638,-104.528L36.55,-104.826L36.466,-105.119L36.384,-105.408L36.307,-105.69L36.235,-105.965L36.167,-106.231L36.104,-106.488L36.047,-106.733L35.996,-106.967L35.951,-107.188L35.914,-107.395L35.83,-107.926L35.763,-108.434L35.714,-108.921L35.681,-109.386L35.665,-109.831L35.665,-110.256L35.681,-110.662L35.713,-111.048L35.761,-111.417L35.824,-111.767L35.902,-112.1L35.996,-112.417L36.104,-112.717L36.226,-113.002L36.363,-113.272L36.515,-113.527L36.679,-113.769L36.858,-113.996L37.05,-114.212L37.255,-114.414L37.473,-114.605L37.704,-114.785L37.948,-114.955L38.203,-115.114L38.471,-115.264L38.751,-115.404L39.042,-115.536L39.344,-115.661L39.658,-115.778L39.983,-115.888L40.318,-115.992L40.664,-116.091L41.041,-116.186L41.465,-116.279L41.934,-116.37L42.443,-116.46L42.989,-116.548L43.567,-116.634L44.174,-116.718L44.805,-116.799L45.456,-116.879L46.124,-116.956L46.805,-117.03L47.495,-117.102L48.19,-117.171L48.885,-117.238L49.577,-117.302L50.262,-117.363L50.937,-117.421L51.596,-117.475L52.237,-117.527L52.854,-117.575L53.445,-117.62L54.006,-117.662L54.531,-117.7L55.018,-117.735L55.463,-117.765L55.861,-117.792L56.208,-117.815L56.502,-117.834L56.737,-117.849L56.909,-117.86L57.016,-117.867L57.052,-117.869,56.818,-41.626L57.697,-41.703L58.522,-41.774L59.295,-41.84L60.02,-41.901L60.7,-41.958L61.336,-42.011L61.933,-42.06L62.492,-42.107L63.016,-42.15L63.509,-42.191L63.974,-42.229L64.412,-42.267L64.827,-42.302L65.221,-42.338L65.598,-42.372L65.96,-42.407L66.31,-42.441L66.651,-42.477L66.985,-42.514L67.316,-42.552L67.646,-42.592L67.978,-42.634L68.315,-42.679L68.659,-42.728L69.014,-42.779L69.382,-42.835L69.767,-42.894L70.17,-42.959L70.595,-43.028L71.044,-43.103L71.521,-43.184L72.027,-43.271L72.606,-43.374L73.168,-43.483L73.713,-43.596L74.243,-43.714L74.756,-43.838L75.252,-43.968L75.733,-44.104L76.196,-44.247L76.644,-44.396L77.075,-44.552L77.49,-44.715L77.888,-44.886L78.27,-45.065L78.636,-45.252L78.985,-45.447L79.318,-45.651L79.634,-45.863L79.934,-46.085L80.218,-46.317L80.485,-46.558L80.736,-46.81L80.971,-47.071L81.189,-47.344L81.391,-47.627L81.576,-47.921L81.745,-48.227L81.898,-48.545L82.034,-48.875L82.154,-49.217L82.257,-49.571L82.344,-49.939L82.415,-50.32L82.45,-50.672L82.448,-51.058L82.411,-51.477L82.339,-51.925L82.236,-52.403L82.102,-52.907L81.938,-53.436L81.747,-53.988L81.53,-54.562L81.289,-55.156L81.024,-55.767L80.738,-56.394L80.432,-57.036L80.108,-57.689L79.767,-58.354L79.411,-59.027L79.042,-59.708L78.66,-60.393L78.267,-61.082L77.866,-61.773L77.457,-62.463L77.043,-63.152L76.624,-63.837L76.202,-64.516L75.779,-65.188L75.357,-65.85L74.936,-66.502L74.519,-67.141L74.107,-67.766L73.701,-68.374L73.303,-68.964L72.915,-69.534L72.592,-70.009L72.276,-70.478L71.968,-70.939L71.668,-71.393L71.378,-71.84L71.095,-72.279L70.822,-72.711L70.558,-73.135L70.303,-73.552L70.057,-73.961L69.821,-74.362L69.595,-74.756L69.379,-75.143L69.173,-75.521L68.977,-75.892L68.792,-76.255L68.617,-76.61L68.454,-76.957L68.301,-77.297L68.16,-77.628L68.03,-77.951L67.912,-78.267L67.806,-78.574L67.711,-78.873L67.629,-79.164L67.559,-79.446L67.502,-79.721L67.458,-79.987L67.426,-80.245L67.407,-80.494L67.402,-80.735L67.411,-80.967L67.432,-81.264L67.457,-81.558L67.486,-81.849L67.519,-82.138L67.555,-82.424L67.595,-82.708L67.64,-82.991L67.688,-83.272L67.741,-83.552L67.798,-83.831L67.859,-84.109L67.925,-84.387L67.995,-84.665L68.07,-84.944L68.15,-85.223L68.234,-85.503L68.323,-85.784L68.418,-86.066L68.517,-86.35L68.621,-86.636L68.731,-86.925L68.846,-87.215L68.966,-87.509L69.092,-87.806L69.223,-88.106L69.36,-88.411L69.502,-88.719L69.651,-89.031L69.805,-89.348L69.965,-89.67L70.132,-89.996L70.304,-90.329L70.481,-90.666L70.661,-91.007L70.843,-91.351L71.027,-91.697L71.4,-92.394L71.774,-93.09L71.961,-93.437L72.148,-93.782L72.333,-94.124L72.516,-94.462L72.698,-94.796L72.877,-95.125L73.053,-95.448L73.225,-95.764L73.394,-96.074L73.559,-96.375L73.718,-96.668L73.873,-96.951L74.022,-97.225L74.165,-97.487L74.301,-97.738L74.43,-97.976L74.552,-98.201L74.666,-98.413L74.772,-98.61L74.87,-98.791L74.957,-98.957L75.036,-99.106L75.104,-99.238L75.162,-99.351L75.221,-99.472L75.285,-99.613L75.355,-99.772L75.429,-99.949L75.507,-100.142L75.589,-100.35L75.675,-100.573L75.764,-100.808L75.855,-101.055L75.949,-101.313L76.044,-101.58L76.141,-101.855L76.239,-102.138L76.337,-102.427L76.436,-102.721L76.534,-103.019L76.631,-103.32L76.728,-103.622L76.823,-103.925L76.916,-104.227L77.006,-104.528L77.094,-104.826L77.179,-105.119L77.26,-105.408L77.337,-105.69L77.41,-105.965L77.478,-106.231L77.541,-106.488L77.598,-106.733L77.649,-106.967L77.693,-107.188L77.731,-107.395L77.815,-107.926L77.881,-108.434L77.931,-108.921L77.964,-109.386L77.98,-109.831L77.98,-110.256L77.964,-110.662L77.932,-111.048L77.884,-111.417L77.821,-111.767L77.742,-112.1L77.649,-112.417L77.541,-112.717L77.418,-113.002L77.281,-113.272L77.13,-113.527L76.965,-113.769L76.787,-113.996L76.595,-114.212L76.389,-114.414L76.171,-114.605L75.94,-114.785L75.697,-114.955L75.441,-115.114L75.174,-115.264L74.894,-115.404L74.603,-115.536L74.3,-115.661L73.986,-115.778L73.662,-115.888L73.326,-115.992L72.98,-116.091L72.604,-116.186L72.179,-116.279L71.71,-116.37L71.201,-116.46L70.656,-116.548L70.078,-116.634L69.471,-116.718L68.84,-116.799L68.188,-116.879L67.52,-116.956L66.839,-117.03L66.15,-117.102L65.455,-117.171L64.76,-117.238L64.067,-117.302L63.382,-117.363L62.708,-117.421L62.049,-117.475L61.408,-117.527L60.79,-117.575L60.199,-117.62L59.639,-117.662L59.113,-117.7L58.626,-117.735L58.182,-117.765L57.784,-117.792L57.436,-117.815L57.143,-117.834L56.908,-117.849L56.735,-117.86L56.629,-117.867L56.592,-117.869");
var s = 0.035;
geo.scale(silhoutte, [s, -s]);
geo.originate(silhoutte)
geo.translate(silhoutte, [0.00, 1.27]);
Рехана использовала дизайн своей короны (о том, как и из чего сделана корона, рассказывается здесь), чтобы скопировать несколько компонентов и дорожек, добавила светодиоды и пару других компонентов. Заодно предусмотрела возможность подключения ёмкостного тачпада.
Получилось так:
Цветы
Розы сделаны из четырёх лепестков разных размеров, которые имеют форму сердца. Сначала Рехана вырезала их вручную и сделала пробную розу:
Затем в Fusion, были созданы идентичные листья, с маленькими вставками, чтобы ткань не вылетала из лазерного резака. Экспортнуть файлы в формат dxf и сходу импортировать в InkScape не удалось. Пришлось переносить сначала в Rhino, затем сохранять в формате svg, который смог правильно импортироваться в InkScape. Так получилось подготовить файлы для лазерной резки.
Рехана нарезала целый букет:
Сшивать лучше, начиная с трёх маленьких сердечек, затем трёх побольше и так далее.
Лиф
Для изготовления лифа Рехана использовала онлайн-выкройку. Сначала распечатала их на бумаге, затем сняла мерки и сделала точную выкройку:
Первый лиф был сделан из атласа. Потребовались некоторые корректировки, но зато стало понятно, как лучше расположить цветы на платье.
Настоящий же лиф делался из чёрного бархата, поэтому выкройка была скорректирована, а затем нарезаны кусочки ткани.
Когда всё сшили вместе, то оказалось, что некоторые части получились не совсем по фигуре. Пришлось ушивать, чтобы получить достойный результат:
А чтобы не примерять на себе каждый раз, Рехана заказала манекен и дорабатывала платье уже на нём. Первый цветок в собранном состоянии выглядел неплохо
Сборка
Пришло время сборки платья с электроцветами. Рехана пришила к лифу гибкий кабель-канал, через который пропустила леску. А ещё сделала небольшой чехол для сервопривода.
Времени до конца проекта оставалось немного, а ещё нужно было провести ряд экспериментов по выбору лучшего способа приведения их в движение, поэтому Рехана сделала только две распускающиеся розы. А остальные цветы пришила сбоку для красоты.
Ещё девушка сделала проводящую розу, используя медную ленту, зажатую между несколькими лепестками. Провод от печатной платы подключался к розе.
Код
Код писать почти не пришлось, он уже имелся. Нужно было только найти, как заставить сервоприводы двигаться. Это оказалось просто (достаточно установить высокое или низкое значение в течение нескольких миллисекунд). Вот так выглядел окончательный код:
#include "Adafruit_FreeTouch.h"
#include
#define PIN_SERVO 6
#define DELAY_MS 5
#define PIN_QTOUCH 2
#define PIN_LED 17
Servo myservo;
float pos = 0;
Adafruit_FreeTouch qt(PIN_QTOUCH, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE);
void setup() {
Serial.begin(0);
pinMode(PIN_LED, OUTPUT);
qt.begin();
myservo.attach(PIN_SERVO);
}
void loop() {
int qt_value;
qt_value = qt.measure();
if (qt_value > 660) {
//move the servo full speed for 1 second
myservo.write(180);
delay(1000);
//set it to be stationary for 1 second
myservo.write(90);
delay(1000);
//move servo in reverse
myservo.write(0);
delay(1000);
// Servo is again stationary for 1 second.
myservo.write(90);
delay(1000);
//set LED to be off
digitalWrite(PIN_LED, LOW);
} else {
//set servo to be stationary
myservo.write(90);
delay(1000);
digitalWrite(PIN_LED, HIGH);
}
Serial.println(qt_value);
delay(50);
}
И вот результат. Механическим цветком можно управлять на ощупь, так как он подключён к интерфейсу ёмкостного сенсорного датчика микроконтроллера Atmel. Он впаян в изготовленную вручную печатную плату, повторяющую силуэт платья. На печатной плате нет USB-порта, но мы можем видеть шесть контактов GPIO, которые подключаются к микроконтроллеру, поэтому мы можем предположить, что программирование чипа включает USB-последовательный интерфейс (CP2102, CH340 и т. д.). Микросхема установлена на печатной плате, которую носят на бедре, а провода идут к сервоприводу сзади.
По ссылке есть короткое видео, на котором можно увидеть, как это выглядит в итоге. Было бы забавно добавить датчики для синхронизации движения цветка с дыханием Реханы, а ещё настроить медленное открывание бутона и быстрое его закрывание. Но это уже оставим на откуп хозяйке платья.
Спасибо за внимание!
Что ещё интересного есть в блоге Cloud4Y
→ Информационная безопасность и глупость: необычные примеры
→ Взлом Hyundai Tucson, часть 1, часть 2