Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Ходячий посох волшебников

Компоненты и расходные материалы

Arduino 101
× 1
Регулятор напряжения Pololu за 4 доллара
× 1
3 батарейных отсека AA с переключателем
× 1
Батарейки AA
Подойдет любой тип. Вам нужно 3.
× 1
M Barrel Jack Adapter
1,95 долл. США. Это упрощает подключение и отключение питания
× 1
F-образный переходник для гнезда
1,95 долл. США. Это упрощает подключение и отключение питания
× 1
Адресная светодиодная лента
Пример написан для любых светодиодов, совместимых с NeoPixel, полоса 60 пикселей.
× 1
Спортивная лента
Тканевая лента любого типа. Он используется для удержания электроники на рейке и удобного захвата.
× 1
Резинки
Чтобы помочь удерживать детали на рейке, пока вы не сможете использовать скотч.
× 1
Посох. (метла, оросительная трубка, натуральная трость и т. д.)
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Этот проект использует Arduino 101, батарею и светодиодную ленту для создания шагающего посоха мастера, управляемого жестами. Мы определим три разных световых «заклинания», которые вы можете вызвать, перемещая посох одним из трех жестов.

Техника:

Код использует блок инерциальных измерений в Arduino 101 для считывания перегрузок, но не использует механизм сопоставления с образцом (например, с использованием PME, ознакомьтесь с проектом Китти Йунг PME). Вместо этого этот код подсчитывает быстрые импульсы в направлениях X, Y и Z и вызывает заклинания, когда вы выполняете определенную комбинацию за короткое время.

Применение заклинаний:

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

Визуальная обратная связь:

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

Применение заклинаний (подробно):

Держите посох так, чтобы Arduino 101 был обращен к вам. Сначала дважды коснитесь посохом (осторожно!) По земле или сделайте два быстрых вертикальных импульса в воздухе. Когда вы видите белую вспышку, резко переместите посох вперед или назад, чтобы выбрать Заклинание 1, или наклоните посох влево или вправо, чтобы выбрать Заклинание 2, или переместите вертикально в третий раз, чтобы выбрать Заклинание 3. Когда заклинание выбрано, загорится свет. будет гореть сплошным зеленым (заклинание 1,) синим (заклинание 2) или красным (заклинание 3). Когда загорится свет, вызовите заклинание последним вертикальным касанием. Огни будут мерцать и мигать выбранным цветом.

Жесты чувствительны ко времени! У вас есть только 1 секунда между каждым шагом в жесте, иначе заклинание сбросится. Это означает, что если вы ошиблись или выбрали неправильное заклинание, вы можете просто подождать секунду и начать заново. Точно вызывать заклинания немного сложно, но хорошая новость заключается в том, что заклинания не будут вызваны случайно, когда вы просто гуляете с посохом.

Создание электроники:

По сути, это просто Arduino 101, батарея и полоска светодиодов NeoPixel.

Есть несколько способов настроить мощность. Самым быстрым было бы использовать батарею 9 В и запускать светодиоды прямо на Arduino 101, но время автономной работы было бы очень коротким. Вы также можете использовать LiPo аккумулятор, чтобы максимизировать мощность / вес для более «профессиональной» сборки, но вам понадобится безопасный способ зарядки аккумулятора. Для меня хороший баланс между временем автономной работы и простотой - использование 3 батареек AA и регулятора напряжения за 4 доллара. Это та же электроника, что и в Shadow Theater и Kaleidoscope Infinity Mirror.

Шаг 1

Соберите концевой жгут светодиодной ленты, отрезав примерно 1 см от конца фонарей. Зачистите концы проводов.

Шаг 2

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

Шаг 3

Затем припаяйте красный провод к клемме VIN на регуляторе напряжения и припаяйте два прямых разъема к контактам GND и VOUT, как показано.

Шаг 4

Теперь подсоедините переходники цилиндрического домкрата. Сначала зачистите концы проводов, идущих от аккумуляторного отсека, затем вставьте их в клеммы штекерного гнезда и затяните отверткой. КРАСНЫЙ идет к клемме (+), ЧЕРНЫЙ идет к клемме (-).

Затем подключите переходник гнездового цилиндра к свободным проводам, идущим от начала светодиодной ленты. ЖЕЛТЫЙ идет к клемме (-), а КРАСНЫЙ идет к (+).

Шаг 5

Теперь подключите ваш жгут к Arduino 101. ЗЕЛЕНЫЙ провод идет к контакту 6, ЖЕЛТЫЙ провод идет к контакту GND рядом с №13. С двумя контактами заголовка на регуляторе напряжения GND идет на GND, а VOUT идет на контакт «VIN» на Arduino 101. Не поймите неправильно! Подключение в обратном направлении приводит к появлению запахов и ожогов. Я знаю это.

Загрузка примера кода:

Шаг 1

При выключенном батарейном блоке подключите Arduino 101 к компьютеру с помощью USB-кабеля и загрузите прилагаемый пример кода с помощью Arduino IDE.

Если вы никогда раньше не программировали Arduino 101, на сайте Arduino есть отличные инструкции:https://www.arduino.cc/en/Guide/Arduino101

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

Обсуждение кода:

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

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

Поскольку твердый удар по земле фактически зарегистрирует первоначальный толчок плюс несколько «шумовых» толчков от вибрации в посохе, первый код в цикле просто пытается найти доминирующий импульс от каждой группы толчков и классифицировать его просто как вертикальный, левый / правый или передний / задний. Я использую переменную под названием «жест» для удержания каждого доминирующего импульса:1 =вертикальный импульс, 2 =передний / задний импульс, 3 =левый / правый импульс.

Затем, чтобы отслеживать комбинации, код использует оператор «switch» и перемещается по нему по мере накопления жестов. Это что-то вроде книги «выбери свое собственное приключение», где каждый шаг говорит что-то вроде «если следующий импульс левый / правый, переходите к шагу 2, если таймер истек, возвращайтесь к нулю».

Заклинания:

Здесь вы можете легко изменить то, что делает каждое заклинание. В настоящее время они просто запускают пример кода «погони за театром», выделенный разными цветами. Здесь вы можете легко добавить больше, изменить цвета или написать свою собственную функцию освещения. Первые три переменные в функции TheaterChase - это значения для красного, зеленого и синего цветов. Последнее число - это скорость (большее число =медленнее).

  //////////////////////////////////////////// ///// заклинания ////////////////////// void tapspell () {/// красные огни театра TheaterChase (strip.Color (127, 20, 0 ), 20); TheaterChase (strip.Color (127, 20, 50), 55); strip.show (); } void leftspell () {theatreChase (strip.Color (0, 0, 100), 20); TheaterChase (strip.Color (0, 30, 120), 75); strip.show (); } void forwardspell () {TheaterChase (strip.Color (0, 127, 0), 30); TheaterChase (strip.Color (0, 127, 90), 55); strip.show (); }  

Создание персонала:

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

Шаг 1. Найдите походную палку / посох

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

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

Шаг 2. Поместите Arduino 101 на рейку с опущенным портом USB

Используйте резинку, чтобы удерживать Arduino 101 на месте.

Шаг 3. Оберните светодиоды с помощью резинки с обеих сторон

Шаг 4. Оберните спортивную ленту, чтобы закрепить Arduino 101 и аккумулятор

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

Шаг 5. Рассеяните светодиодный свет и украсьте его

Код

  • Пример кода посоха волшебника
Пример кода Wizard Walking Staff Arduino
Считайте импульсы по осям x, y и z, некоторые комбинации импульсов вызывают «заклинания» (световые индикаторы) на неопиксельной полосе.
 / * Copyright (c) 2016 Intel Corporation. Все права защищены. См. Уведомление о лицензии в конце файла. * // * Arduino 101 «Wizard's Walking Staff». В этом коде используется библиотека Adafruit Neopixel. Инструкции по установке библиотеки здесь:https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-installation. Убедитесь, что у вас установлена ​​последняя версия Intel Curie Core. Для получения дополнительной информации посетите https://www.arduino.cc/en/Guide/Arduino101*/#include "CurieIMU.h" #include  #define PIN 6 //// с каким контактом подключены NeoPixels в? Adafruit_NeoPixel strip =Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800); /// длина полосы 60 пикселей int tr =0; // Некоторые переменные для сохранения цветовой цели и цветового тока для сглаживания ... int tg =0; int tb =0; int r =0; int g =0; int b =0; long int globaltimer =0; /// таймеры для отслеживания жестов в зависимости от времени ... для таких вещей, как «если таймер не прошел 0,5 секунды, и есть два касания, то ...» long int gesturetimer =0; long int ledtimer =0; int fade =10; /// как быстро гаснет свет. Используется для сглаживания int tap =0; // счетчик вертикальных импульсов int lr =0; // корректор для левых / правых импульсов int fb =0; // корректор для импульсов вперед / назадint gesture =0; // int state =0; /// для нашего случая переключателя ... это будет отслеживать каждое движение в серии .void setup () {// поместите здесь свой установочный код, чтобы запустить его один раз://Serial.begin(9600); globaltimer =миллис (); // запускаем хронометры в текущее время gesturetimer =millis (); ledtimer =миллис (); / * Инициализируем IMU * / CurieIMU.begin (); CurieIMU.attachInterrupt (eventCallback); / * Включить обнаружение шока * / CurieIMU.setDetectionThreshold (CURIE_IMU_SHOCK, 1500); // 1,5 г =1500 мг CurieIMU.setDetectionDuration (CURIE_IMU_SHOCK, 50); // миллисекунды всплеска, необходимые для вызова прерывания CurieIMU.interrupts (CURIE_IMU_SHOCK); strip.begin (); // инициализировать неопиксельную полосу strip.show (); // Инициализируем все пиксели на "выключено"} void loop () {// поместите сюда ваш основной код, чтобы запускать его повторно://// базовый фильтр - IMU регистрирует множественные удары от отскока и противодействия. Это пытается уловить доминирующий шок в каждом жесте. if (millis () - globaltimer> 170) {/// это пытается найти доминирующую ось движения для каждого удара .. Сравнивает сумму касаний, движений влево-вправо и вперед-назад и выбирает наибольшее. if ((коснитесь> lr) &&(коснитесь> fb)) {Serial.println ("коснитесь"); жест =1; тап =0; lr =0; fb =0; //// сбросить значения после классификации движения. } иначе, если ((lr> fb) &&(lr> tap)) {Serial.println ("lr"); жест =2; тап =0; lr =0; fb =0; } else if ((fb> lr) || (fb> tap)) {Serial.println ("fb"); жест =3; тап =0; lr =0; fb =0; }} //////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////////// if (millis () - globaltimer> 1000) {///// timeoutreset globaltimer =millis () - 170; tr =0; tg =0; tb =0; состояние =0; // жест =0; } if (millis () - gesturetimer> 1000) {gesturetimer =millis () - 350; tr =0; tg =0; tb =0; состояние =0; // жест =0; } ///////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////// switch (state) {// Отслеживает жесты case 0:{/// жесты еще не записаны ... прислушивайтесь к тапу. Если он есть, перейдите к случаю 1. if (millis () - gesturetimer> 350) {if (gesture ==1) {state =1; жест =0; gesturetimer =millis (); } } ломать; } случай 1:{///// записано одно касание. Если произойдет второе касание, воспроизведите быструю вспышку, затем перейдите к шагу 2. if (millis () - gesturetimer> 350) {if (gesture ==1) {r =10; g =10; b =10; /// обратная связь flash state =2; жест =0; gesturetimer =millis (); } } ломать; } случай 2:{/////// Точка переключения - записано два касания. Здесь три заклинания расходятся в зависимости от следующего жеста. Если это касание, переходите к случаю 3. Если это L / R, переходите к случаю 4. Если это Front / Back, переходите к случаю 5. if (millis () - gesturetimer> 350) {if (gesture ==1) {состояние =3; жест =0; gesturetimer =millis (); } если (жест ==2) {состояние =4; жест =0; gesturetimer =millis (); } если (жест ==3) {состояние =5; жест =0; gesturetimer =millis (); } } ломать; } случай 3:{//// записано три удара ... мы находимся в заклинании "нажатие", поворачиваем посох в красный цвет и прислушиваемся к последнему "нажатию", чтобы активировать заклинание. tr =20; tg =0; tb =0; globaltimer =millis () - 250; if (millis () - gesturetimer> 350) {если (жест ==1) {состояние =0; Serial.println («Tapspell!»); Tapspell (); } } ломать; } случай 4:{///// два нажатия и записано L или R ... мы находимся в левом заклинании, включаем посох в синий цвет и ждем последнего "нажатия", чтобы активировать заклинание. tr =0; tg =0; tb =20; globaltimer =millis () - 250; if (millis () - gesturetimer> 350) {; если (жест ==1) {состояние =0; Serial.println («левое заклинание!»); leftspell (); } } ломать; } case 5:{///// //// два нажатия и записано вперед или назад ... мы находимся в прямом заклинании, включаем посох в зеленый цвет и ждем последнего "нажатия", чтобы активировать заклинание. tr =0; tg =20; tb =0; globaltimer =millis () - 250; if (millis () - gesturetimer> 350) {если (жест ==1) {состояние =0; Serial.println («вперёд!»); forwardspell (); } } ломать; } defaut:{перерыв; }} //Serial.println(tr); if (millis () - ledtimer> fade) {/// делать этот следующий шаг только периодически каждые (значение затухания) миллисекунды. В отличие от функции "delay ()", это позволяет другим вещам происходить в программе между обновлениями. /// сглаживание цвета. Фактический цвет приближается к целевому цвету ... Если цель больше, чем текущая, двигайтесь вверх, если меньше, двигайтесь вниз. если (tr> r + 1) {r ++; } если (tg> g + 1) {g ++; } если (tb> b + 1) {b ++; } если (tr  

Производственный процесс

  1. Определение электрических полей переменного тока
  2. Расчет мощности
  3. Семь способов сделать этап постобработки более безопасным
  4. Пищевой краситель:основные ингредиенты, делающие пищу привлекательной
  5. Как заставить любую бизнес-модель Интернета вещей работать - или нет ?!
  6. Создайте свой собственный Google Voice HAT
  7. Как создать платформу для роботов Arduino + Raspberry Pi
  8. Как сделать стекловолокно
  9. Любой день может быть днем ​​производства!
  10. Как сделать анимацию в разрезе в Solidworks