RGB Световой меч

Racemaniac
Пт 18 декабря 2015 г., 23:19
Вот мой первый проект с Maple Mini: RGB световой меч :)
https: // www.YouTube.com/watch?v = l2rgkstrw_s

Maple Mini, управляющий всем этим (и любить его для дополнительной флеш -памяти, которая позволила мне сохранить 8 -битные образцы звука на нем : D)
Он использует светодиодные липсы WS2812B для огней (и я рассеивал их с помощью белой фольги, так что вы немного видите светодиоды, но все еще очень хорошо смотрится)
и поместите туда AMP TDA2003 и 8 -битный ЦАП, чтобы получить немного звука :).
Рад, что я получил его достаточно хорошо, так как выпущен 7 -й фильм :).

на моем тодолисте:
-Замените TDA2003 небольшим усилителем класса D, сэкономит мне много места, и это не так, как если бы у меня было место для запасного (жара в порядке, она только выпускает около 2 Вт, и у меня есть небольшой радиатор это, но все же, в этом маленьком месте...). а также положите на него лучший ЦАП, 12 или 16, я посмотрю, что я могу найти, это выглядит достаточно хорошо :).
-Добавить датчик движения и запрограммировать его, чтобы обнаружить колебания & столкновения :) (И, может быть, также кнопка, чтобы вы могли решить поиграть в отражающем звуке огня оружия).
-Посмотрите, смогу ли я добавить SD -карту для образцов звука, 120K действительно не так много места для поиска с :). Конечно, нет, если я хочу добавить качели & Столкновение :).

Саймонф
Сб 19 декабря 2015 г. 1:54
может быть, если вы хотите обмануть, вы могли бы использовать один из них.http: // www.aliexpress.com/item/1pcs-min ... EB201560_3

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

ZMEMW16
Сб 19 декабря 2015 г., 2:07
Может быть, если вы оставили отверстие от Pommel, чтобы дать чаевые для Ventialtion?
Может быть, добавить что -то NRF24 и Mini Someethings, отправьте настройки из блока запястья или сделайте это с помощью микро и кнопок внутри рукоятки?

на маленьких пространствах и нагревании

Десятилетия назад у меня был Honda CD175 с батареей 6 В
Что ж, он был изменен с фаром галогена 12 В, бегущим с инвертора, диодный мост был роскошный
и когда он немного потерпел себя, немного тряпилось в космосе с ним.

70 мл вниз по М6, пока во внешнем переулке у меня был довольно впечатляющий 12 -дюймовый квадратный шлейф дыма, выливающий боковую панель.
Теперь, чтобы добраться до этого пространства, требуется снятие сиденья, удерживаемого 2 сильно округлыми болтами на 13 мм,
Удаление танка, как на бензине, и мне пришлось снять весь свой багаж, чтобы начать.
Затем я просто схватил пламя и взбесился; разрушил мои перчатки.

Это закончилось велосипедом 3/4 в дюймах, а остальные вывешивали ботинок очень большой машины для ботинок, проезжая вокруг Бирмингема в поисках полного жгута проводки. (Раньше была крупная отрасль, поставляющая всевозможные «патентные» биты для мотоциклов, название?????)

Стивен

Racemaniac
Сб 19 декабря 2015 г., 7:21 утра
Саймонф написал:может быть, если вы хотите обмануть, вы могли бы использовать один из них.http: // www.aliexpress.com/item/1pcs-min ... EB201560_3

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

Racemaniac
Сб 19 декабря 2015 г. 11:10
Саймонф написал:может быть, если вы хотите обмануть, вы могли бы использовать один из них.http: // www.aliexpress.com/item/1pcs-min ... EB201560_3

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

Саймонф
Сб 19 декабря 2015 г. 13:48
Технически вам нужен только один шум для света и звуки столкновения из -за эффекта допплера, вы можете просто увеличить частоту воспроизведения, если она ускоряется и уменьшит его, если замедляет. Вы могли бы увеличить объем, если сабля была наклонена в воздух и вниз, если к земле.

Racemaniac
Сб 19 декабря 2015 г. 13:53
Саймонф написал:Технически вам нужен только один шум для света и звуки столкновения из -за эффекта допплера, вы можете просто увеличить частоту воспроизведения, если она ускоряется и уменьшит его, если замедляет. Вы могли бы увеличить объем, если сабля была наклонена в воздух и вниз, если к земле.

ZMEMW16
Сб 19 декабря 2015 г. 15:38
размахивать этим, все хорошо и хорошо, как насчет другого лезвия?
SRP

Racemaniac
Сб 19 декабря 2015 г., 16:04
ZMEMW16 написал:размахивать этим, все хорошо и хорошо, как насчет другого лезвия?
SRP

ZMEMW16
Сб 19 декабря 2015 г., 17:12
Apols, неаккуратные формулировки, я думал о необходимых шумах!
SRP

Racemaniac
Сб 19 декабря 2015 г., 17:25
ZMEMW16 написал:Apols, неаккуратные формулировки, я думал о необходимых шумах!
SRP

Rogerclark
Сб 19 декабря 2015 г., 20:47
Абсолютно фантастика

Re: Amplifer

Я конвертировал старый динамик Hifi хорошего качества в Bluetooth, и я использую дешевый выборку класса D от eBay (TDA7297), и он вообще не очень горячий.

Однако, чтобы получить громкие звуки, вам понадобится хорошая батарея и большая батарея.

Взгляните на нить @Ahull на недорогих источниках питания, используя различные ячейки Lipo.

Я рекомендую использовать 3 липоса последовательно, чтобы запустить усилитель.

Re: датчик движения

MPU9150 - хороший датчик, (i2c) я проверил его с Maple Mini давным -давно, но так и не приходился на его использование в проекте :-(

Racemaniac
Сб 19 декабря 2015 г., 21:24
Rogerclark написал:Абсолютно фантастика

Re: Amplifer

Я конвертировал старый динамик Hifi хорошего качества в Bluetooth, и я использую дешевый выборку класса D с eBay (TDA7297), и он вообще не очень горячий.

Однако, чтобы получить громкие звуки, вам понадобится хорошая батарея и большая батарея.

Взгляните на нить @Ahull на недорогих источниках питания, используя различные ячейки Lipo.

Я рекомендую использовать 3 липоса последовательно, чтобы запустить усилитель.

Re: датчик движения

MPU9150 - хороший датчик, (i2c) я проверил его с Maple Mini давным -давно, но так и не приходился на его использование в проекте :-(

Rogerclark
Солнце 20 декабря 2015 г. 12:56 утра
Реданьяк написал: У меня есть несколько досок MPU-6050, которые, по-видимому, являются предшественником MPU-9150. Все, чего не хватает, это магнитометр, который мне действительно не нужен. Слабость MPU-6050 заключается в том, что вы не можете обнаружить дрейф (который вы можете использовать магнитометр для компенсации), но я не думаю, что мне понадобится такое подробное зондирование движения.

Racemaniac
Солнце 20 декабря 2015 г., 7:24
Rogerclark написал:Реданьяк написал: У меня есть несколько досок MPU-6050, которые, по-видимому, являются предшественником MPU-9150. Все, чего не хватает, это магнитометр, который мне действительно не нужен. Слабость MPU-6050 заключается в том, что вы не можете обнаружить дрейф (который вы можете использовать магнитометр для компенсации), но я не думаю, что мне понадобится такое подробное зондирование движения.

Racemaniac
Чт 5 мая 2016 г., 17:01
Я мог бы продолжить в этой теме, так как я делаю банкомат для моего следующего светового меча :).

Как вы могли прочитать в других моих темах (http: // www.STM32duino.com/viewtopic.PHP?F = 27&t = 862), я усердно работал над созданием DMA Libs для улучшения производительности ввода -вывода, поэтому я могу сделать свою саблю еще на несколько шагов дальше :).

После тонны работы мой код наконец превзошел способности первой сабле, которую я сделал :). Пока рано встраивать его в сабле, но у меня есть доказательство концепции, которое наконец объединяет все это вместе : D.

Текущий прогресс:
- Я могу загрузить Soundsamples с SD -карты на флэш -чип, с небольшой «файловой системой», которую я сделал, чтобы я мог легко прочитать эти образцы из чипа.
- Я могу отправлять данные в Neopixels через порт SPI, который я обращаюсь через DMA :).
- Я могу отправить 12 -битные звуки в DAC I2C с максимальной скоростью отбора проб 60 кГц (при разгрузке порта до 1.2 МГц), но выборка выборки является переменным (поэтому звук может реагировать на движение :)) (Подробнее здесь: http: // www.STM32duino.com/viewtopic.PHP?F = 19&t = 1048)
- Я могу прочитать датчик движения I2C через вызовы DMA и извлечь из него полезные данные (ну, я думаю, что это будет полезно xD).

Мое текущее доказательство концепции - первые 3 комбинированные и отлично работающие : D.
Soundsamples стабильно выходят (при примерно 16 кГц банкомат). Звук поступает из Flash MemoryChip, который транслирует его в блоках 128 байтов, и в то же время строка Neopixel 144Less обновляется примерно 200 раз в секунду в секунду в секунду в секунду :). Как порт I2C для DAC, так и порт SPI неопиксельной строки отправляют данные в значительной степени непрерывно, и когда требуется следующий блок запрашивается из Flash Chip :).
-> Моя первая сабля не может приблизиться к этому обновлению неопикселей, пришлось читать звук из его внутренней флеш -памяти (так что очень ограничено в том, сколько звуков я мог иметь), имел 8 -битный параллельный ЦАП, чтобы у меня не было накладных расходов серийных протоколов (я только что подключил его к одному из портов клена и установил образцы на этом порту), и когда все это было полностью заваленным, так как он делал все время вручную :), и вождение неопикселей с помощью битбангевого кода :).

Todo в эти выходные (возможно), попробуйте и также добавьте датчик движения, так что у меня есть 4 устройства одновременно и делать то, что они должны делать :).
Я думаю, это здорово, сколько вводачков вы можете получить от этого маленького кленового мини -мини - :). Когда я начинал, это казалось почти невозможным проектом, но я медленно добираюсь туда :).

(И для тех, кто задается вопросом, SD -карта используется только для заполнения флэш -памяти, потоковая передача с SD -карты чувствовала себя медленной & с трудностями с трудом).

Racemaniac
Сб 14 мая 2016 г. 12:55
Хорошо, несколько первых видео ( 1, 2 ) о том, к чему движется проект :)
В настоящее время постоянная скорость отбора проб, но это первая демонстрация Maple Mini Динамически смешивание 2 звуков (и простальный звук & качающийся звук) на основе датчика движения :).

Racemaniac
Солнце 27 ноября 2016 г. 10:26 утра
После еще некоторой работы, сегодня я наконец собрал саблу с новой электроникой и дал ей небольшой тест:
Тест светового меча

Довольно доволен тем, как он сейчас реагирует на движение :). Дает ему действительно естественный звук xD. Я все еще должен реализовать столкновения, добавить некоторый способ выбора звуков/цветов, сделать некоторые аппаратные улучшения, .... Но с каждой итерацией становится лучше :).
Проекты когда -либо действительно выполнены? :)

Даниэфф
Солнце 27 ноября 2016 г. 10:53 утра
Черт возьми, это звучит потрясающе!

Racemaniac
Солнце 27 ноября 2016 г. 11:19
Даниэфф написал:Черт возьми, это звучит потрясающе!

Racemaniac
Солнце 12 февраля 2017 г. 13:02
Некоторый прогресс, чтобы упомянуть: после того, как я немного экспериментировал с моей доской 411, я сделал скачок, чтобы выучить Кикад и спроектировать свою собственную печатную плату :). Я отправил его сейчас в DirtyPCB, чтобы сделать это, давайте посмотрим, будет ли с каким -то чудом, моя первая печатная плата будет работать: P.
Это небольшая пользовательская печатная плата с STM32F411, датчиком движения, ЦАП I2S, держателем микро -SD -карты и некоторыми полезными булавками (заголовок SWD, один из USARTS, некоторые булавки для того, что мне нужно).

Мне интересно, как это получится :)

И пока мне очень нравится Кикад. Когда я впервые заглянул в печатную плату, я попробовал eaglecad, но это не очень понравилось. С недавней вещью с их лицензиями моя мотивация для изучения eaglecad уменьшится еще дальше >_<. Итак, я решил попробовать Кикада, и мне это очень нравится :). уже сделал свои собственные следы и все такое, и мне очень нравится работать с этим :).

Беннебой
Солнце 12 февраля 2017 г. 16:50
Я думаю, что мне тоже нужно инвестировать в Кикад. Пальцы скрещены для вас здесь!

Какая стоимость & Время переключения было прототипные доски?

Racemaniac
Солнце 12 февраля 2017 г., 17:10
Bennehboy ​​написал:Я думаю, что мне тоже нужно инвестировать в Кикад. Пальцы скрещены для вас здесь!

Какая стоимость & Время переключения было прототипные доски?

Беннебой
Солнце 12 февраля 2017 г., 17:38
Ваше здоровье.

Rogerclark
Солнце 12 февраля 2017 г. 9:59 вечера
Я использую DirtyPCB и обычно плачу за их ускоренную доставку и возвращаю доски между 2 и 3 неделями.

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

Основное отличие в том, что символы не имеют автоматической связи между схематическим представлением и следом печатной платы, и для начала, я подумал, что это ретроградный шаг.
Но через некоторое время стало иметь смысл связать след только в программе проектирования печатных плат

Я не знаю, добавили ли они это за последние пару месяцев, так как в последний раз я использовал Кикад, изогнутые треки не были возможны, но это была единственная особенность, которую я использовал в Орете, которого не было в Кикаде

Racemaniac
Пн 13 февраля 2017 г., 6:35 утра
Rogerclark написал:Я использую DirtyPCB и обычно плачу за их ускоренную доставку и возвращаю доски между 2 и 3 неделями.

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

Основное отличие в том, что символы не имеют автоматической связи между схематическим представлением и следом печатной платы, и для начала, я подумал, что это ретроградный шаг.
Но через некоторое время стало иметь смысл связать след только в программе проектирования печатных плат

Я не знаю, добавили ли они это за последние пару месяцев, так как в последний раз я использовал Кикад, изогнутые треки не были возможны, но это была единственная особенность, которую я использовал в Орете, которого не было в Кикаде

Rogerclark
Пн 13 февраля 2017 г. 6:56 утра
Я никогда не нашел пользовательского интерфейса на орете, что хорошо

Кикад не хуже. Но, возможно, некоторые из дорогих пакетов, таких как Altium, лучше, и это то, с чем они могут сравнить (хотя это кажется маловероятным)

Racemaniac
Пн 13 февраля 2017 г. 13:30
Ну, это быстрое начало ^^
Вчера отправлены файлы, сегодня получила обновленную информацию о том, что печатная плата находится в производстве ^^
Rogerclark написал:Я никогда не нашел пользовательского интерфейса на орете, что хорошо

Кикад не хуже. Но, возможно, некоторые из дорогих пакетов, таких как Altium, лучше, и это то, с чем они могут сравнить (хотя это кажется маловероятным)

Rogerclark
Пн 13 февраля 2017 г., 21:08
Да... Запуск DCR на Eagle очень важно

Я полагаю, что у Eagle есть авторутер, но я обнаружил, что это было полезно, только если я впервые сделал некоторые сложные маршрутизации, и это все еще в конечном итоге распыляет доску и т. Д

Таким образом, вручную маршрутизировать мою последнюю доску (домашний проект), используя KICAD, не было проблемой, так как было бы невозможно использовать AuroRouter в Eagle! Поскольку у меня были силовые дорожки шириной 5 мм, которые необходимо было направить на тоже и нижнюю часть платы параллельно, так как это необходимо для перевозки большого количества тока, и я также должен был обеспечить интервал между сети между треками и т. д


Одной из других причин, по которой я переехал в Кикад, был ограниченный размер совета директоров на Eagle, на бесплатной и основной коммерческой версии.

Я заплатил за базовую коммерческую версию (около 100 долларов), но вы все еще ограничены тем же размером доски, что и бесплатная версия.

Если вы хотите сделать доску больше 100 мм в ширину или длине, вам нужно выложить 1000 долларов или более для следующего уровня.
Это все еще в то же время, даже сейчас Eagle был куплен Autodesk (я проверил несколько недель назад)

Так что я не могу сделать длинную штуку с орлом.

Следовательно, я прыгнул на корабль, чтобы я мог сделать доски 110 мм на 50 мм и т. Д. в Кикаде, если я хочу ;-)

Racemaniac
Сб 25 марта 2017 г., 21:02
Моя печатная плата наконец -то появилась на этой неделе, впервые в моей жизни потратил день, собирая печатную плату с крошечными компонентами SMD.
После большого количества трудностей (и сделав глупую ошибку, предполагая, что вкладка на AMS1117 связана с землей, это не так: p), у меня есть одна из досок, мигающих его светодиода, используя STM32F411, который на нем xD.
У меня все еще много работы, чтобы получить эту маленькую вещь полностью и запустить, но это хорошее начало xD. Я уже удивлен, что, помимо ошибки регулятора глупой напряжения (которая была легко решена, используя некоторую термоусильнику вокруг вкладки, и мы посмотрим, как это происходит с теплом, это плата с низкой мощностью, так что, возможно, она будет так: так: так: p), я пока не сталкивался с другими ошибками :). Я нашел некоторые возможные улучшения, но пока это хорошее начало xD.
на следующие приключения с этой маленькой доской xD.

У меня сложилось впечатление, что в настоящее время он работает слишком быстро, так что это первое, что мне нужно исследовать (он использует кристалл 24 МГц)
* Редактировать* Исправлено :)
Найдено, где в коде Cubemx, где он все еще думал, что у меня был кристалл 8 МГц :)
Теперь светодиод мигает, как и ожидалось, и эта небольшая доска медленно становится пригодной для использования :)

Racemaniac
Солнце 23 апреля 2017 г. 16:12
Дальнейшее обновление:
- Кажется, все работает на плате (звук в порядке, микроконтроллер в порядке, датчик движения подтверждает свой адрес I2C, SD -карта работает на своих 4 данных, а светодиод работает :) )

Итак, я разработал несколько новых досок для тестирования:
- Та же самая плата с ошибкой & Некоторые раздражения исправлены
- плата со слегка повышенной функциональностью (MOSFET для переключения PowerHungry (= SD -карта & ЦАП) части доски & Micro USB -порт ISO просто простой порт USART) и меньший FormFactor (33 x 18 мм)
- Плата около одинаково большой (48x18 мм) в качестве исходной, также содержащей вышеуказанные улучшения, и, кроме того, высокая часть мощности, где усилитель PAM8403 также на плате, +3 МОСФЕТА (На том же канале, что и MOSFET для переключения других частей).
И вчера отправил их в Китай, чтобы произвести :).

Мне интересно, как получатся эти доски

Кроме того, я теперь возвращаюсь к написанию кода для текущей платы, чтобы получить рабочую систему светового меча на этой плате. До сих пор я уже адаптировал драйвер HAL I2S, чтобы работать, как мне это нужно (он извлекает образцы под прерыванием), поэтому у меня есть рабочий звуковой слой (поддерживает 8 -битный звук в 8, 16, 24 & 48 кГц. ЦАП - 16 -битный ЦАП, работающий при 48 кГц). Теперь начинаю писать код для чтения FAT32 под DMA, аналогично моей потоковой системе, которую я имел на моей предыдущей сабле, которая транслировала данные из флэш -чипа SPI. А потом я перенес свой код MPU6050 в этот проект и постепенно прихожу на рабочую саблу :).

ZMEMW16
Солнце 23 апреля 2017 г., 19:48
Тогда настало время для тестирования боевого звука, по одному в каждой руке :?: :ржу не могу:
SRP

Racemaniac
Пн 24 апреля 2017 г., 7:28 утра
ZMEMW16 написал:Тогда настало время для тестирования боевого звука, по одному в каждой руке :?: :ржу не могу:
SRP

Racemaniac
Пт 28 апреля 2017 г. 8:37 утра
Реданьяк написал:Итак, я разработал несколько новых досок для тестирования:
- Та же самая плата с ошибкой & Некоторые раздражения исправлены
- плата со слегка повышенной функциональностью (MOSFET для переключения PowerHungry (= SD -карта & ЦАП) части доски & Micro USB -порт ISO просто простой порт USART) и меньший FormFactor (33 x 18 мм)
- Плата около одинаково большой (48x18 мм) в качестве исходной, также содержащей вышеуказанные улучшения, и, кроме того, высокая часть мощности, где усилитель PAM8403 также на плате, +3 МОСФЕТА (На том же канале, что и MOSFET для переключения других частей).
И вчера отправил их в Китай, чтобы произвести :).

Racemaniac
Сб 29 апреля 2017 г. 13:53
Продолжение работы над программным обеспечением: теперь я потокосил файлы WAV с SD -карты и воспроизводим их через DAC I2S :). Много улучшений еще предстоит сделать с этим, но я довольно удивлен, что на самом деле это уже работает XD.
Потоковая передача от SD выполняется через DMA в блоках 2 кб, отправка на i2s проходит через прерывания :).

*маленькое редактирование*
Продолжение немного по нему (это было все еще немного шумно), исправил все ошибки в коде, и теперь у меня очень хорошее воспроизведение : D.
эта штука работает xD.

Racemaniac
Сб, 6 мая 2017 г. 12:59
Базовый звуковой код сейчас в порядке :)
Только что перенес код MPU в Хэл, и это тоже работало сейчас :)
кусочки медленно собираются вместе : D

Racemaniac
Солнце 07 мая 2017 13:29
Написал код для обращения к неопикселям через SPI DMA, который теперь также работает, и сделала простую тестовую программу, которая использует все одновременно (потоковое движение музыки + чтение и демонстрация интенсивности движения на неопиксельном светодиоде), и все это работает :).
Это хорошая базовая программа для разработки хорошей программы светового меча :).
И это также означает, что все, что на первой печатной плате, которую я сделал, работает XD
Wheeeee : D

Rogerclark
Пт, 09 июня 2017 11:01
Вы опубликовали свой код DMA в Neopixels в любом месте?

Или знать любой код неопикселей, который работает нормально?

Я пытался использовать порт ( https: // github.com/andnxor/adafruit_neopixel-andnxor ), но, похоже, у него много проблем, с генерацией данных пикселей, где в итоге он просто превращает каждый из них, чтобы получить 255,255 255 или 0,0,0, а не за то, что я запросил.

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

Racemaniac
Сб 10 июня 2017 г. 5:58 утра
Rogerclark написал:Вы опубликовали свой код DMA в Neopixels в любом месте?

Или знать любой код неопикселей, который работает нормально?

Я пытался использовать порт ( https: // github.com/andnxor/adafruit_neopixel-andnxor ), но, похоже, у него много проблем, с генерацией данных пикселей, где в итоге он просто превращает каждый из них, чтобы получить 255,255 255 или 0,0,0, а не за то, что я запросил.

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

Rogerclark
Сб 10 июня 2017 г. 8:24 утра
Спасибо

Я изменил кленовый порт Adafruit Lib, и теперь он работает нормально.

Теперь я также пытался использовать SPI, но у меня проблемы с первым пикселем :-(

Racemaniac
SAT 10 июня 2017 г. 10:23
Rogerclark написал:Спасибо

Я изменил кленовый порт Adafruit Lib, и теперь он работает нормально.

Теперь я также пытался использовать SPI, но у меня проблемы с первым пикселем :-(

Rogerclark
Сб 10 июня 2017 г. 10:42
Спасибо

Я думаю, что я делаю то же самое, что и ты

Установите SPI для Div 32

затем напишите 100 для 0 и 110 для высокого уровня

Таким образом, вы получите буфер, который на 9 x больше, чем количество пикселей, так как он занимает 3 бита на цветовой бит.

Как ни странно, это только красный канал, у которого есть проблемы (я.e Средний канал)

Первоначально я попробовал порт Adafruit Lib, который бил данные, но он продолжал делать очень странные вещи, и когда я смотрел с помощью своего логического анализатора, я обнаружил.
Поэтому я переписываю некоторые из них, чтобы использовать ASM «NOP» S в качестве задержек и улучшил код, который использовал порт BSSR.

Теперь это работает нормально, но использование SPI и DMA выглядело как лучшее решение, поэтому я написал реализацию SPI, и она почти работает, но не совсем.

Красный канал первого пикселя, кажется, смещен, так что если я напишу 0x01 в красный, я получаю 0x80 в зеленом
Но только в первом пикселе.

У меня есть клон анализатора Saleae, поэтому я сейчас пытаюсь сравнить версию бит с битом, которая работает со SPI, которая не

Racemaniac
Сб 10 июня 2017 г. 10:44
К этому посте я прикрепил код, который я использовал для управления неопикселями через HAL.
В этом коде я закодировал 1 бит неопикселя до 4 бит в SPI (также возможно 3 бита, но для конвертации требуется немного больше работы, а на STM32F4 у меня достаточно оперативной памяти, чтобы не беспокоиться).
Это означает, что я сделал таблицу поиска, которая преобразует байт в Int32, который содержит неопиксельный сигнал для этого байта :). Я думаю, что порт SPI установлен на уровне ~ 2 МГц, чтобы заставить его работать.
И в этом коде вы также можете увидеть, как я добавляю дополнительные 4 байта, содержащие нули, чтобы промыть и не иметь первой проблемы с пикселем.

Я надеюсь, что это поможет вам немного дальше :)

Rogerclark
Сб 10 июня 2017 г. 10:58 утра
КСТАТИ.

Я немного смущен протоколом

Чтение листа данных https: // cdn-shop.Адафрут.com/dataheets/ws2812b.PDF

Бит MS отправляется сначала (бит 24), а порядок цветового бита зеленый, красный, синий, так что первый бит - MS it of Green

Странно то, что он выглядит так, как будто каждый пиксель читает в своих собственных данных и не передает эти данные, но ожидает, пока его данные не будут заблокированы, а затем передают все последующие данные в следующее пиксель (и так далее)

Таким образом, первый пиксель, который отправляется, - это данные для конца полосы, где изначально ввод данных.


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

Racemaniac
Сб 10 июня 2017 г. 11:03
Rogerclark написал:КСТАТИ.

Я немного смущен протоколом

Чтение листа данных https: // cdn-shop.Адафрут.com/dataheets/ws2812b.PDF

Бит MS отправляется сначала (бит 24), а порядок цветового бита зеленый, красный, синий, так что первый бит - MS it of Green

Странно то, что он выглядит так, как будто каждый пиксель читает в своих собственных данных и не передает эти данные, но ожидает, пока его данные не будут заблокированы, а затем передают все последующие данные в следующее пиксель (и так далее)

Таким образом, первый пиксель, который отправляется, - это данные для конца полосы, где изначально ввод данных.


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

Rogerclark
Сб 10 июня 2017 г. 11:46
Теперь я просто отправляю 1 пиксель из нулей, и это два прослеженных


Это избитая версия, которая работает, и первый светодиод выключен
bit_banged.png
bit_banged.PNG (7.5 киб) просмотрено 416 раз

Rogerclark
Сб 10 июня 2017 г. 11:54
Обновлять.

Исправил это.

Сделал весь буфер DMA на 1 байт длиннее и убедился, что первый байт нуль.

Затем скорректировали код так, чтобы все смещалось 1 байт после начала буфера, кроме DMASEND

Редактировать.

Я не уверен, что это полностью исправлено, так как он выглядит немного отличается от битовой версии, поэтому мне нужно провести еще несколько тестов, но, по крайней мере, у меня нет огромной проблемы с первым пикселем

Racemaniac
Сб 10 июня 2017 г. 12:07
Кстати, это остается лучшим справочным руководством для неопикселей для меня: https: // wp.Джош.com/2014/05/13/ws2812-n ... ноу-тему/
Это очень хорошо объясняет, как они работают и какие время необходимы :)

Rogerclark
Сб 10 июня 2017 г. 12:18
Спасибо.

Я думаю, что что -то все еще не так с зеленым каналом, но, надеюсь, я смогу это исправить.

КСТАТИ.
Вы использовали SPI DMA для вашей версии?

Racemaniac
Сб 10 июня 2017 г. 12:40
Rogerclark написал:Спасибо.

Я думаю, что что -то все еще не так с зеленым каналом, но, надеюсь, я смогу это исправить.

КСТАТИ.
Вы использовали SPI DMA для вашей версии?

Rogerclark
Сб 10 июня 2017 г., 8:44 вечера
Вы используете SPI в Div32, с 3 битами SPI на импульс ?

Теоретически время должно быть в пределах спецификации, так как каждый бит, отправляемый через SPI, составляет 444 нс длиной, а кратчайшая продолжительность бита может быть от 250 нс до 550NS

На логическом анализаторе 100 МГц я вижу вариацию ширины импульса 10NS, но это просто будет разрешением образца анализатора.
Но самый первый «бит» данных, отправленных SPI, всегда кажется дольше, около 490us, что было причиной включения зеленого светодиода.

Отправка первого байта, содержащего 0x00, исправила это.

КСТАТИ. Спасибо за ссылку. Очень интересно.
По сути, это только длина высокого импульса, которая является критической, и определяет, является ли «пиксельный бит» 1 или 0.
я.e Светодиоды не сравнивают соотношение марки/пространства, чтобы определить, является ли это знаком или пространством.

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

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

КСТАТИ.
Я вижу, что подростка может одновременно DMA 8 струн светодиодов, поэтому мне интересно, как это достигается. Я предполагаю, что он использует аналогичный принцип, но Dmaing to GPIO, шириной 1 байт. Но код подростков, по -видимому, является частью установленного подросткового пакета и MOT, доступного в другом месте, например,. GitHub.

Я могу искать реализацию ESP8266 или Arduino и т. Д. И посмотреть, как они это делают

Rogerclark
Сб 10 июня 2017 г., 21:34
Я нашел это

http: // www.Мартинхубацек.CZ/ARM/улучшить ... 2B-библиотека

Кажется, он в состоянии DMA несколько полос через DMA.

Он может быть совместим с одним из ядер на основе HAL.

Но для одной строки я думаю, что размер данных будет неожиданно большим

Я думаю, что могу самостоятельно начать новую ветку для этой темы

Rogerclark
Солнце 11 июня 2017 г., 5:49 утра
Я сделал свой код в библиотеку, которая в основном поддерживает API Adafruit

ViewTopic.PHP?f = 13&T = 2179

Я также возился с асинхронными dmatransfers, чтобы улучшить скорость, и я добавил новую функцию в SPI под названием dmasendasync

Эта функция не используется в библиотеке, но она запускает dmatransfer, затем выйти из функции, чтобы основной код мог продолжать и делать другие вещи.

Затем, когда вы вызовут dmasendasync, он проверяет, будет ли передача все еще в процессе, и в этом случае он ждет, пока он завершит перед настройкой новой передачи

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

Racemaniac
Солнце 11 июня 2017 г. 7:10 утра
хороший : D
и другая ссылка, которую вы отправили с таймерами & Несколько DMA безумно xD. Я еще не научился использовать такие функции (хотя недавно я впервые выполнил DMA, вызванный таймером для отбора проб ADC, но это было разочаровывающим упражнением).
И, как вы можете видеть в моем коде, я использую тот факт, что низкий сигнал может быть немного длиннее, чтобы использовать 4 бита на сигнал в моем генераторе SPI, и тогда я могу просто преобразовать байт, который хочу отправить в строку в 32 -битный int через небольшую таблицу поиска (размером 1 кб), а затем вы можете очень быстро преобразовать кадр -буфер, содержащий значения RGB в буфер, содержащий неопиксельный сигнал :).

Rogerclark
Солнце 11 июня 2017 г. 8:06 утра
ХОРОШО.
Я использую LUTS для выработки значений, необходимых для моей системы 3 бита на бит

Я мог бы сделать латы меньше, и я оставил маленькие латы в коде, но он будет работать медленнее, так как мне нужно было маскировать и переключаться, и для меня потребуется больше времени, так что 3 бита работают для меня нормально

Racemaniac
Вторник 18 июля 2017 г. 13:26
Время для другого небольшого обновления:

Я недавно получил отличную паяную пасту (Loctite GC-10), и она работает очень хорошо :). Улучшал трафареты для пайки SMD & перегорев печатных платежей (банкомат все еще отражает печатную плату в сковороде. Посмотреть на создание собственной духовки, но метод сковороды также работает довольно хорошо : D)
pcbs.jpg
ПХБ.JPG (112.3 киб) просмотрено 516 раз

Racemaniac
Чт 17 августа 2017 г., 6:05
Еще одно небольшое обновление: протестировал все, кроме USB до сих пор на вышеуказанных досках, и все это хорошо XD

Немного боролся с картами SD, но в итоге это на самом деле была SD -картой, которая была сломана ^^ '. (Я должен следить за этим, если я сломаю больше SD -карт, используя эти платы :) ).
Но очень счастливы, что эти маленькие парни работают xD.

Rogerclark
Четверг 17 августа 2017 г., 6:50 утра
Хорошая работа !

уходящий бот
Чт, 07 сентября 2017 г., 21:57
[Racemaniac - Четверг 17 августа 2017 г. 6:05] - Еще одно небольшое обновление: протестировал все, кроме USB до сих пор на вышеуказанных досках, и все это хорошо XD

Немного боролся с картами SD, но в итоге это на самом деле была SD -картой, которая была сломана ^^ '. (Я должен следить за этим, если я сломаю больше SD -карт, используя эти платы :) ).
Но очень счастливы, что эти маленькие парни работают xD.
Я хотел бы построить один из них. Планируете ли вы выпустить исходный код/схемы?

ZMEMW16
Пт, сентябрь 08, 2017 12:18
@racemaniac
Любой шанс на видео ?
набор красивых фото ?
Стивен

Racemaniac
Пт, сентябрь 08, 2017 5:53 утра
В настоящее время оба будут немного ошеломляющими xD.
Текущий исходный код просто настраивает все и выполняет базовые тесты (воспроизводив музыку, используя датчик движения, чтобы зажечь светодиод, когда плата перемещается, выполняя тестовый шаблон на нескольких светодиодах). Этого достаточно, чтобы знать, что все работает, но еще не большая программа.
И единственное видео, которое у меня есть, - это доска, играющая в саундтреке Starwars :). Приятно знать, что это работает, но еще не так много, чтобы показать.

v4 из только что отправленных досок, я надеюсь, что это будет окончательным пересмотром, я думаю, что он совместим с V3, и как только они прибудут, я собираюсь несколько и начну строить настоящий световой меж и немного программного обеспечения для управления этими досками XD.
и банкомат, этот проект больше о том, чтобы научиться делать печатную плату & Как припаять, чем о световых мечах xD. Но конец этого туннеля наконец приближается, и тогда я могу снова обратить все внимание на то, чтобы сделать его хорошим световым мелом xD.

victor_pv
Вторник 12 сентября 2017 г., 4:49
Слегка оффтопич, какая максимальная скорость, с которой вы разгорели интерфейс I2C?
Я просто тестировал и могу подняться до 1.3 МГц. Помимо этого либо замедляется, либо прямо перестает работать.

Racemaniac
Вторник 12 сентября 2017 г. 6:05
[victor_pv - Вторник 12 сентября 2017 г., 4:49 утра] - Слегка оффтопич, какая максимальная скорость, с которой вы разгорели интерфейс I2C?
Я просто тестировал и могу подняться до 1.3 МГц. Помимо этого либо замедляется, либо прямо перестает работать.
Я добрался до 1.2 МГц, а затем он перестал работать на меня (не уверен, был ли STM32 или ЦАП в ЦАП)

victor_pv
Вторник 12 сентября 2017 г. 22:27
Подобные результаты с ЦАП тогда. Я использую фрам, которая должна работать до 1 МГц в спецификациях, в основном я хотел проверить разгону, а затем решил не останавливаться на 1 ГГц и продолжать подталкивать.
Я подозреваю, что предел - это MCU, так как мы оба достигли его примерно на одинаковой скорости.

Стивестронг
Ср 13 сентября 2017 г. 7:33 утра
На этой скорости подтягивания должны быть меньше 1K...

Racemaniac
Пт 13 октября 2017 г., 17:06
После долгого ожидания (~ 5 недель? Черт возьми, почтовые услуги), наконец -то появилась следующая итерация моих досок из светового меча :)
с нетерпением жду возможности собрать некоторые из них и взглянуть на то, как хорошо они работают :). Я надеюсь, что на некоторое время это хорошо будет моей последней ревизией (но, как вы, возможно, видели в другой ветке, я сейчас пытаюсь сделать следующий чертеж :) ).

Помимо плат с световым мечами, на панели также содержатся 2 небольшие платы, которые являются очень минимальными платами STM32F103C8T6 (только STM32, с развязками, резистором для вытягивания Boot0 и кнопкой на печатной плате и выводах, которые меня интересуют. вне). Это сделано так, чтобы он мог быть подключен к основным доскам светового меча, и заставить их общаться через SPI. Не уверен, что мне это понадобится, но это не так много работы, чтобы сделать.
И кроме того, некоторые небольшие доски для размещения развязки на кабелях питания неопикселя и несколько адаптеров для AMS1117 -> AP2112K. Мне нравится Maple Mini, но AMS должен идти: P. Поэтому я сделал несколько адаптерных плат, теперь я должен быть в состоянии заменить их на AP2112K, что, кажется, намного лучше справляется с задачей :).
pcbv4.jpg
PCBV4.JPG (179.09 киб) просмотрено 407 раз

Racemaniac
Вт 31 октября 2017 г., 17:08
Нашел некоторое время, чтобы собрать вышеуказанные доски :)
Выглядит довольно хорошо :). Однако при выполнении полного теста мне пришлось поставить дополнительный конденсатор на рельс 3V3, так как SD -карта удалось потянуть достаточно тока, чтобы перезапустить STM32 >_<
Кроме того, все, кажется, работает (мне все еще нужно проверить USB, но SD -карта, звук, датчик движения, ... все в порядке).

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

Zoomx
Пн, 6 ноября 2017 г. 14:41
Отличная работа!

Racemaniac
Пн, 6 ноября 2017 г. 15:01
[Zoomx - Пн, 6 ноября 2017 г. 14:41] - Молодцы!
Спасибо :)
Теперь вернемся к улучшению моего программного обеспечения для доски :)
Сделал некоторое тестирование в смешивании нескольких саундкраналов, и это было немного медленно. Итак, теперь переписываю эту часть (теперь работая с I2S в круговой петле DMA и используя наполовину xfer & xfer Полные прерывания, чтобы заполнить части буфера, поэтому я могу сделать это в большем (и, надеюсь, более эффективные куски), а не образец на образец, как я делал сейчас :).
Я уже смог смешать 2 48 кГц каналы вместе, 3 -й канал был слишком много ^^ '.
Я также думаю о создании «разработчика» доски: более крупная версия, со всеми интересными моментами, которые можно легко добраться. Затем, работая над этим, я могу подключить логический анализатор к цифровым сигналам, которые я хочу исследовать, подключить осциллограф, чтобы проверить аналоговые детали и т. Д... :). Иногда при работе над этим я не могу легко измерить все эти вещи ^^ '. На такой маленькой доске ничего не может быть легко достижимо >_<.

Racemaniac
Сб 09 декабря 2017 г. 8:43
Просто наткнемся здесь немного xD
Вчера взял меня вчера слишком долго, чтобы получить FileStreaming от FAT32 полностью работать (был достаточно мудр, чтобы написать надлежащий тест, чтобы я мог найти любые ошибки, и мальчик, я нашел их всех XD). Где -то в будущем я хочу вернуться к этому, так как у меня наконец -то есть хороший взгляд на то, что требуется для потоковой передачи нескольких аудиоканалов с SD -карты и смогу их смешивать :). (Моя первая попытка была намного проще: под образец прерывания избрать на образец из буфера и попытаться смешать, но это Slooooooow....)

Для тех, кто заинтересован, моя текущая система (дайте мне знать, если вы знаете о лучших способах):
Расположение памяти:
По файлу, который я транслирую, у меня есть следующие буферы:
- Filestart
- Буфер1
- Буфер2
- Buffer1startretepeat

Причины этих буферов:
- буфер 1 & 2 - просто стандартная двойная буферизация, ничего особенного
- Буфер Filestart, предназначен для поддержки зацикливания звука. Последний буфер, который я заполняю, может буквально содержать 1 образец, поэтому, если у меня нет готовых данных, я облажался.
-Buffer1startReated: единственный способ получить хорошую производительность, это если я могу просто взять указатель на блок образцов и просто могу их использовать, не переключаться на другой буфер на полпути или около того. Поскольку я иногда набираюсь (заголовок файла, файл не повторяется в точных кратных блоков, которые я потопилю, ...), я могу хотеть, чтобы данные в начале буфера 1 были позади Buffer2, чтобы я мог просто дать указатель в конце Buffer2 и знать, что начало буфера 1 также после него в памяти.

В настоящее время вышеуказанные буферы имеют размер 4K (это то, сколько данных я запрашиваю на вызов на SD -карту), за исключением повторяющейся части, которая так же велика, как блоки, которые я запрашиваю из этой потоковой системы (это половина размера Буфер I2S, в настоящее время 256bytes).

Как это работает:
После загрузки файла вы загружаете Startbuffer & Буфер 1 (и технически должен заполнить Buffer1start Repeat, но у меня не будет таких коротких файлов, и я ленив: P).
Порт I2S находится в цикле DMA с наполовину передачей & Tranfer завершить прерывания на.
При каждом из вышеперечисленных прерываний вы читаете блок из файлов, а затем можете знать, что это смежные звуковые данные, без уловов, поэтому просто добавьте данные вместе в соответствии с томом каждого канала и скопируйте их в буфер i2S.
Когда вы переходите от одного блока SD -карты к следующему, как в стандартной двойной буферизации, другой буфер загружается. Если буфер 1 загружается, после его загрузки он также запускает DMA памяти 2 памяти, чтобы заполнить повторяющуюся буферную часть.
Поскольку последний блок файла загружается, после того, как его заканчивается часть стартового блюда, копируется за ним, так что вы можете плавно зацикливаться на файле (если вы не хотите зацикливаться на файле, а пустой буфер также может быть скопирован после это, чтобы убедиться, что он только возвращает 0).
Это основная операция.

Все работает на DMA (I2S находится в цикле DMA, для SDIO я создавал очередь вызовов DMA, поэтому всякий раз, когда необходим новый кусок, если данные необходимы, система добавляет вызов, который должен быть сделан в очередь, копии памяти для повторного буфера 1 & Копирование начальных данных - это вызов DMA Memory2 Mememory (также должен составить очередь для этого)).

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

В настоящее время код немного ужасен ^^ ', но, по крайней мере, он работает xD. Он развил впадины много застрявших в пунктах, заметив, какие резервуары являются производительностью (в основном все, что вам нужно сделать на выборку. Если я работаю в блоках из 128 образцов, любая дополнительная инструкция просто убивает производительность. Теперь я пошел на решение, где я мог просто взять данные, знать, что это последовательные аудиоданные, и вообще не должен ничего проверять, просто прочитайте буфер и покончите с ним xD.)

Теперь я могу успешно транслировать четыре 16 -битных стерео -аудиофайла 48 кГц одновременно без проблем :). цель достигнута ^^.

Бинарные часы

WWVB Timecode от синей таблетки