+
Все потоки
Поиск
Написать публикацию
Обновить

Схемотехника и алгоритмы световых мечей: вызовы и решения

Время на прочтение13 мин
Количество просмотров22K
Всего голосов 66: ↑63 и ↓3+70
Комментарии54

Комментарии 54

Осталось пихнуть внутрь Алису и на рынок выпускайте.

А как же ритуал собственноручной сборки? Поиск нужного кристалла?

Алиса, проведи ритуал

Хм..

Круто! Где-то можно найти исходники и минимальную инструкцию по сборке такого меча у себя дома? Уверен, будет полезно всем джедаям :)

https://warsabers.com/

Это, собственно, заказчики разработки платы. Прошивка принадлежит им :)

Этот проект я делал ещё до Яндекса, так что Яндекс тут ни при чём :)

Тогда какой смысл в этой статье ? Кроме рекламы себя и магазина.

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

ну это несложно было догадаться.

но, насколько я помню, у них на большинстве мечей одна кнопка. Впрочем, они разве всё ещё пользуются этим железом/прошивкой? Там Xeno v3 сейчас.

Не, там с самого начала было именно две. Хотя я вносил в прошивку поддержку одной кнопки - и это было неудобно.

Ждем статью о схемотехнике бластеров и электромеханике астродроидов.

Ждем статью о сборке звезды смерти дома

А зачем аппаратный ГСЧ? Можно тупо помнить количество включений-выключений и каждый раз менять сид рандома, прибавляя к сиду это число.

Да, можно было бы запоминать в Backup Registers.

Отдельная проблема в том, чтобы при включении меча звук также был случайным. Стандартная функция random языка С — псевдослучайная, так что первое число после инициализации будет всегда одно и то же и меч будет включаться с одним и тем же звуком каждый раз. Чтобы добиться воспроизведения разных треков, нужно использовать аппаратный генератор истинно случайных чисел, который обычно применяется для криптографии.

Боже, зачем так сложно. Хоть количество включений хранить, хоть инициализировать RTC и пусть он считает себе что-нибудь. Или задержку какого-нибудь чтения/инита мерять. Или тупо шум с АЦП на незанятом пине. Вариантов как можно решить псевдослучаность функции вагон.

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

А про задержку чтения/инита поясните? Какое чтение недетерминировано?

Да всякая память-микросхемы-etc обычно чуть за разное время отвечают. Они же тактуются от своего генератора внутри (даже зачастую когда внутри одного корпуса или даже кристалла), и у них есть джиттер, если это разные генераторы.
Еще из-за деградации флеша (и из-за температуры, и из-за напряжения питания), его контроллеру может требоваться разное время чтобы что-то прочитать/записать.
Если это sd-карта, то там вообще контроллер манипулирует блоками как хочет во время простоя, и там еще больше джиттер будет.

Значит что время неопределено и неизвестно. Т.е. данные появятся в памяти после запроса на чтение не через какое-то точное количество чего-то, а каждый раз за разное. В таких случаях добавляют синхронизирующий таймер. Это же основная причина почему невозможно распараллеливание каких угодно программ.

  • он должен включаться и «выдвигать» лезвие;

Нет. Он должен включаться и выдвигать лезвие.

Все еще не канон.

По всей статье "меч", а не "сабля". Стыдоба.

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

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

Как в фильме" Отроки во вселенной."

 Для распознавания движений добавим акселерометр

Я преглагаю Вам калибровать акселерометры вот по этому простому алгоритму

Калибровка MEMS Акселерометра [Часть 2]
https://habr.com/ru/articles/858874/

Геометрия Стенда для Калибровки MEMS Акселерометра
https://habr.com/ru/articles/858354/

Я с год собираю одноразовые "парилки"... чего только не попадалось - и с полноценными тачскринами (и с меню выбора режимов работы на этих 1.25" экранчиках), и с анимацией каких-то созвездий, и с более простыми анимациями типа бегущей строки... и всё это на платках, обычно, не крупнее ногтя большого пальца! Это не забывая про "основной функционал" - контроль заряда аккумулятора, подача питания на нагреватель по сигналу с "датчика давления", счётчик влючений (для отображения оставшейся "заправки").

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

Фото одной из плат управления с разъёмом Type-C

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

Ну, с тиражами соглашусь - охват очень разный. Сотни мегабайт звука - умещаются в копеечную MicroSD, драйверы лент - возможно, аргумент, но и нагреватель в парилке, думаю, не микроамперы кушает - у меня как-то при вскрытии один экзеипляр повредился и включил нагреватель на постоянку - за 4-5 минут разрядил аккумулятор 650 mAh в ноль (правда, и нагрелась эта конструкция порядочно - я её со страху даже на керамическую плитку положил, чтобы не загорелось что-нибудь), но каких-то габаритных деталей обычно не наблюдается.

"реализации сложных световых эффектов."

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

"Есть всему своё начало, свой конец.."

 а также аудиомикросхема C42L52 с интерфейсом I²S и встроенным усилителем класса D.

Почему вы выбрали именно аудиокодек CS42L52 ?

На тот момент он был единственным легкодоступным со встроенным усилителем класса D, и при этом мог работать от одной банки 4.2В. Сейчас я использую max98357A, он радикально проще по обвязке и, следовательно, габаритам.

MAX98357A тоже знаком
(или Обзор Усилителя Звука из Apple AirTag)
https://habr.com/ru/articles/767386/

И на эти два аудио кодека:

https://habr.com/ru/articles/758140/
Обзор Aппаратного Aудио кодека MAX9860 (2x ADC+DAC)

Чип AudioСodec(а) WM8731 (или (ADC/DAC)*2 из iPod(а))
https://habr.com/ru/articles/703588/

MAX9860: жалких 50мВт выходной мощности, и ещё нужен источинк питания 1.8В

WM8731: ещё более жалких 22мВт выхода.

Аудиокодеки обычно ставят вместе с отдельным ASICом усилителя мощности.
Например с TPA2013D1RGP.

Зачем ставить две микросхемы, когда можно поставить одну микросхему? :)

У него только 1Вт выходной мощности против 3Вт у MAX98357

Всегда можно поставить усилитель мощности.
Например SA51034HFA (Analog Class-D AUDIO IC )

Не, не всегда. Потому что это увеличивает занимаемую площадь на плате, а также номенклатуру. И ещё стоимость, в том числе сборки.

Но - спасибо за подборку усилителей! Пригодятся в следующих проектах! А то был тут один на днях в Гатчине, было недостаточно громко, говорят.

Пожалуйста .

Можно поставить разнообразные усилители мощности: HT8691, LPA2110, SA51034 или CS5230EA

Крутотень!

Чисто теоретически эти световые мечи можно монтировать под автомобили и получится, как в фильмах про уличных гонщиков.

Просто диодные ленты дешевле.

Зато у мечей есть аудиокодек и акселерометр.
Можно запрограммировать красивое и завораживающее бутафорское рокотание мотора в синхрон разгону.

Грумм -Грумм -Груу-у-умм

Вы в статье упоминаете датчик LSM303 (вроде как это акселерометр и магнитометр), а в схеме LSM6DS3 (вроде как это акселерометр и гироскоп). Я что-то не понял или это опечатка?

Вышел на вашу статью случайно. В поиске информации о Warsabers как раз.

В связи с чем у меня вопрос вы "переизобрели" Neopixel ? (внутрянка меча, не путать с библиотекой RGB ленты, хотя связь прослеживается). Или может в последствии из неё получился XenoPixel или Proffie (для не знакомых с вопросом - это системы вставок в "рукоятки", для управления клинком, в т.ч. звук и датчики движения, кстати и алгоритмы совпадают с описанными вами). Хочу заметить, что упоминание световых мечей на Neopixel можно найти даже в 2018 году, с ходу на реддите несколько статей попалось.

Хотелось бы узнать как ваша разработка коррелирует с описанными выше.

P.S. А на вашу статью я попал в поиске, пытаясь найти где можно оставить отзыв на компанию Warsabers, которая судя по всему продаёт мечи гораздо более низкого уровня и качества, чем варианты с XenoPixel 3.0 с алиэкспресс, но при этом за ужасный оверпрайс. Хотя по фото с лотов - это прям копипаста с Али.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载