Как вы думаете, что делают девушки, когда собираются вместе? Идут по магазинам, фотографируются, ходят по салонам красоты? Да, так и есть, но так делают далеко не все. В данной статье пойдёт речь о том, как две девушки решили собрать радиоэлектронное устройство своими руками.
Почему именно анализатор-визуализатор спектра?
Ведь программных решений данной задачи довольно много и вариантов аппаратной реализации так же немало. Во-первых, очень хотелось поработать с большим количеством светодиодов (т.к. мы уже собирали led-куб, каждый для себя, но в небольших размерах), во-вторых, применить на практике полученные знания по цифровой обработке сигналов и, в-третьих, в очередной раз попрактиковаться в работе с паяльником.
Разработка устройства
Т.к. брать готовое решение и делать строго по инструкции – это скучно и неинтересно, поэтому мы решили разрабатывать схему сами, лишь немного опираясь на уже созданные устройства.
В качестве дисплея выбрали светодиодную матрицу 8х32. Можно было использоваться готовые led-матрицы 8х8 и собирать из них, но мы решили не отказывать себе в удовольствии посидеть вечерком с паяльником, и поэтому собирали дисплей сами из светодиодов.
Для управления дисплеем мы не изобретали велосипед и использовали схему управления с динамической индикацией. Т.е. выбрали один столбец, зажгли его, остальные столбцы в этот момент погасили, затем выбирали следующий, зажгли его, остальные погасили и т.д. Ввиду того, что человеческий глаз не идеален, мы можем наблюдать статическую картинку на дисплее.
Пойдя по пути наименьшего сопротивления было решено, что все вычисления разумно будет перенести на контроллер Arduino.
Включение той или иной строки в столбце осуществляется с помощью открытия соответствующего ключа. Для уменьшения количества выходных пинов контроллера, выбор столбца происходит через дешифраторы (таким образом, мы можем сократить количество управляющих линий до 5).
В качестве интерфейса подключения к компьютеру (или другому устройству, способному передавать аудио сигнал) был выбран разъём TRS (mini-jack 3.5 mm).
Сборка устройства
Сборку устройства начинаем с того, что делаем макет лицевой панели устройства.
Материалом для лицевой панели был выбран чёрный пластик толщиной 5мм (т.к. диаметр линзы диода также 5мм). По разработанному макету размечаем, вырезаем лицевую панель под необходимый размер и просверливаем отверстия в пластике под светодиоды.
Таким образом получаем готовую лицевую панель, на которой можно уже собирать дисплей.
В качестве светодиодов для матрицы были использованы двухцветные (красный-зелёный) с общим катодом GNL-5019UEUGC. Перед началом сборки матрицы, руководствуясь правилом “лишний контроль не повредит” все светодиоды, а именно 270 шт. (брали с запасом на всякий случай), были проверены на работоспособность (для этого было собрано тестирующее устройство, включающее в себя разъём, резистор 200Ом и источник питания на 5В).
Дальше разгибаем светодиоды следующим образом. Аноды красного и зеленого диодов отгибаем в одну сторону (вправо), катод отгибаем в другую сторону, при этом следим, чтобы катод был ниже чем аноды. И затем под 90° загибаем катод вниз.
Сборку матрицы начинаем с правого нижнего угла, сборку производим по столбцам.
Вспоминая про правило “лишний контроль не повредит”, после одного-двух спаянных столбцов, проверяем работоспособность.
Готовая матрица выглядит следующим образом.
Вид сзади:
По разработанной схеме паяем схему управления строками и столбцами, распаиваем шлейфы и место под Arduino.
Было решено так же выводить не только амплитудно-частотны, но и фазо-частотный спектр, а также выбирать количества отсчетов для отображения (32,16,8,4). Для этого были добавлены 4 переключателя: один на выбор типа спектра, два на выбор количества отсчётов, и один на включение и выключение устройства.
Написание программы
В очередной раз руководствуемся нашим правилом и убеждаемся, что наш дисплей полностью в рабочем состоянии. Для этого пишем простую программу, которая полностью зажигает все светодиоды на дисплее. Естественно, по закону Мёрфи, нескольким светодиодам не хватало тока, и их необходимо было заменить.
Удостоверившись, что всё работает, мы приступили к написанию основного программного кода. Он состоит из трёх частей: инициализация необходимых переменных и считывание данных, получение спектра сигнала при помощи быстрого преобразования Фурье, вывод полученного спектра с необходимым форматированием на дисплей.
Сборка конечного устройства
В конце мы имеем лицевую панель, а под ней куча проводов, которые необходимо чем-то закрыть, да и переключатели нужно на чём-то закрепить. До этого были мысли сделать корпус из остатков пластика, но мы не вполне представляли, как это будет конкретно выглядеть и как это сделать. Решение проблемы пришло довольно неожиданно. Прогулявшись по строительному магазину, мы обнаружили пластиковый цветочный горшок, который на удивление идеально подошёл по размеру.
Дело оставалось за малым, разметить отверстия под разъёмы, кабели и переключатели, а также вырезать две боковые панели из пластика.
В итоге, собрав всё воедино, подключив устройство к компьютеру мы получили следующее:
Амплитудно-частотный спектр (32 отсчёта):
Амплитудно-частотный спектр (16 отсчётов):
Амплитудно-частотный спектр (8 отсчётов):
Амплитудно-частотный спектр (4 отсчёта):
Фазо-частотный спектр:
Вид задней панели:
Видео работы устройства
Для большей наглядности видео снималось в темноте. На видео устройство выводит амплитудно-частотный спектр, а затем на 7 секунде переключаем его в режим фазо-частотного спектра.
Список необходимых элементов
- Светодиоды GNL-5019UEUGC – 256 шт. (Для дисплея)
- Транзисторы n-p-n KT863A – 8 шт. (Для управления строками)
- Транзисторы p-n-p С32740 – 32 шт. (Для управления столбцами)
- Резисторы 1кОм – 32 шт. (Для ограничения тока базы p-n-p транзисторов)
- Дешифраторы 3/8 IN74AC138 – 4 шт. (Для выбора столбца)
- Дешифраторы 2/4 IN74AC139 – 1 шт. (Для каскадирования дешифраторов)
- Монтажная плата 5х10см – 2 шт.
- Шлейфы
- Arduino Pro micro – 1 шт.
- Разъём mini-jack 3.5мм – 1 шт.
- Переключатель – 4 шт.
- Чёрный пластик 720*490*5 мм – 1 лист. (Для лицевой панели)
- Горшок цветочный чёрный 550*200*150 мм – 1 шт. (Для корпуса)
Комментарии (47)
GrakovNe
15.06.2016 13:41+4Классно) Почему-то устройства, собранные девушками всегда выглядят очень аккуратно.
P.S. а где исходникиru_vlad
15.06.2016 14:24Полностью согласен!!!
Сколько в свое время ездил по «ящикам» и могу с уверенностью сказать что если бы не прекрасные руки монтажниц, терпеливые и прекрасные головы наладчиц не было бы у нас космоса и оборонки :)
stargazr
15.06.2016 16:38Да, так все и есть, вы абсолютно правы.
Причем, ладно бы еще неаккуратно у мальчиков было, часто дело вообще до грязи и ржавчины доходит. Вот как здесь, например: https://www.facebook.com/pastindicator/posts/863706450429165
(надеюсь, тэг не нужен?)
scg
15.06.2016 13:49Плюсую. Проделывание дырочек можно было бы заказать на лазерной резке. Дрелью ровно не сделаешь.
olafnew
15.06.2016 14:24+2Что самое интересное — у них есть сверлильный станок судя по одному из фото.
Что значит «дрелью ровно не сделаешь»? Если руки растут не из Ж — то руками никаких проблем сделать ровно.scg
15.06.2016 15:01+1Когда у тебя решетка из дырочек, то отклонение на треть миллиметра уже хорошо видно. Без станка такие вещи очень тяжело делать.
ilyaplot
15.06.2016 14:29У любого девайса есть свой бюджет, да и самостоятельное изготовление с помощью имеющегося в распоряжении инструмента могло быть основной целью проекта. А так, проще купить готовый девайс, будет еще ровнее.
scg
15.06.2016 15:06Да не так это уж и дорого — лазерная резка. Максимум, рублей 500. Заказать изготовление различных деталей у профессионалов не равнозначно покупки девайса целиком. Ардуину и светодиоды чай не сами в печи выплавляли.
Julick
15.06.2016 15:31В общей сложности у нас на всё устройство ушело около 30$, так что это бы занимало существенную часть. Не спрю, было бы ровнее значительно. Но практический опыт ничто не заменит
scg
15.06.2016 15:58Ну, я со своей меркой подхожу, конечно. Мне для DIY и печатную плату за 50$ заказать не жалко. :) Не, девайс у вас получился то, что надо. Просто есть вещи, которые практически невозможно сделать вручную аккуратно. В частности, это — решетки из дырочек.
dlinyj
15.06.2016 17:34Вполне можно аккуратно прорезать. Разумеется со сверльным станком и предварительной разметкой. Пластик-то уж точно
uterr
15.06.2016 14:04+2А можно по подробнее, как вы получаете спектр на ардуине? Можно даже показать исходник… Ведь в ардуине мало памяти и не слишком быстрый процессор, поэтому преобразование фурье не такая и простая штука для нее. За какое время происходит преобразование и для какой выборки?
IronHead
15.06.2016 14:33Чан давным давно все это реализовал http://elm-chan.org/works/akilcd/report_e.html
uterr
15.06.2016 14:42+1мне интересно, как конкретно в этом проекте :) так как тут ардуина, нужно еще выделять время на отрисовку столбиков, с какими практическими проблемами столкнулись и т.д.
stargazr
15.06.2016 14:55Полагаю, что так же, как и у остальных ардуино-поделок: берем либу, дописываем две строчки, и вуаля.
Вот, например, абсолютно аналогичная железка (даже чуть посложнее), на Uno
www.youtube.com/watch?v=jJ7lzkrQIFk
Использовалось, видимо, вот это github.com/mike95826/makefurt/tree/master/arduino-libraries
Да, под видео есть еще ссылка на гуглкод, но там куча мусорных файлов в исходниках.
zeit-geist
15.06.2016 14:24Девчонки с ножовкой и паяльником — это невероятно круто!
Жаль, у меня плюсануть не получается
AndriAnoBoTS
15.06.2016 14:24+1Что вы понимаете под «фазо-частотный спектр»? И зачем Вам он вообще может быть полезен?
avost
15.06.2016 18:28Ну, амплитудо-частотный в таких устройствах тоже не особо полезен. Так, для красоты… но, что понимается под этим в данном случае, да, интересно.
HeadWind
15.06.2016 14:24Отлично! Места на передней панели много, еще можно добавить динамики, разъемы USB и флешек всяких, питание от аккумулятора и будет БумБокс)
ilyaplot
15.06.2016 14:25+1Продолжайте крушить стереотипы. У вас это прекрасно получается. Кстати, делал что то подобное в виде куба на примерно таком-же наборе элементов, но, определенно, меньше понимал в принципе их работы, чем автор поста.
REPISOT
15.06.2016 14:50+5Ни программы, ни схемы. Кто в итоге спектр-то считает?
и уж тогда не «Амплитудно-частотный спектр», а
Спектральная плотность мощности (СПМ).Julick
15.06.2016 15:42Амплитудно-частотная характеристика спектра ведь и есть модуль спектральной плотности мощности?
REPISOT
16.06.2016 06:09+1Нет. АЧХ — это характеристика тракта. Спектр — характеристика СИГНАЛА.
При прохождении сигнала через тракт, его спектр будет соответствовать АЧХ тракта, только если на входе будет белый шум.
Как это АЧХ может быть модулем СПМ? компоненты СПМ вычисляются как «корень из суммы квадратов реальной и мнимой компоненты преобразования Фурье»
dlinyj
15.06.2016 14:58Было бы интересно посмотреть софт и схему ардуины. И как вообще её хватает на такую обработку?
Julick
15.06.2016 15:25Исходный код проекта:
github.com/Vichkarichka/Analyzer-visualizer-audio-spectrum/tree/master/codestargazr
15.06.2016 15:38А зачем копипастить? Нельзя было просто добавить всю библиотеку?
https://github.com/mike95826/makefurt/blob/master/arduino-libraries/FixFFT/fix_fft.cpp
https://github.com/Vichkarichka/Analyzer-visualizer-audio-spectrum/blob/master/code/fft.cppJulick
15.06.2016 15:48Изначально планировали писать библиотеку сами, но после тщетных попыток адаптировать наш код под ардуино мы вытащили из данной либы только то, что нам было необходимо.
madf
15.06.2016 16:06+1Сверхизвращенство, мне подобное было делать лень, проще было взять WS-ки: www.youtube.com/watch?v=4ldsFIbf8aU
Подача/расположение/формы панелей в любой комбинации…IronHead
15.06.2016 16:33Нет, я конечно тоже похвастаюсь своим творением
https://www.youtube.com/watch?v=hdeJQqIIclo
https://www.youtube.com/watch?v=l7EDhozF0PI
сначала хотел предложить, как альтернативу разработки из статьи,
но
для осмысленного управления ws нужен как минимум stm32, на ардуино боюсь ничего толкового не выйдет
плюс хороший блок питания на 5В 3А — это применительно для поделки из видео
плюс нужно писать прошивку — тут не отделаешься простым копированием ардуиновской либы
ну и конечно — бюджет. на видео строка из 5 метров ленты, одна лента уже дороже 30$ выходитmadf
15.06.2016 16:421. на дунях — это всё прекрасно делается, без проблем и на более маломощных МК… надо только понимать, что происходит, чтобы не выходило казусов.
2. у меня на видео 16х16х3=768 светодиодов питаются от обычного USB (500мА), яркость с избытком.
3. ну на счет кода — это дело уже вообще для каждого сугубо личное…
4. поглядел ваши видюшки, простите, но картинки у вас не плавные, рисуются рывками.
Kavaru
15.06.2016 17:22А зачем было брать двухцветные светодиоды, если они всегда горят только одним цветом? Монохромными и управлять было бы проще, и паять меньше, и стоят они дешевле.
VillyV
15.06.2016 17:27Изначально планировалось брать не двухцветные а RGB, но количество светодиодов 256 да ещё и RGB это очень дорогое удовольствие. Мы нашли очень хороший вариант, дешёвые светодиоды и двухцветные. Почему такие, мы хотели смешивать цвета, и менять цвет к примеру по нажатию тумблера или по интенсивности музыки.
jetcat78
17.06.2016 10:26www.aliexpress.com/item/WS2812B-4pins-5050-SMD-W-WS2811-Individually-Addressable-Digital-RGB-LED-Chip-5V/1639139960.html
7$ за 100 шт WS2811 — разве что плату пришлось бы чертить и травить.
А так да, хорошо для набивки рук на «воздушный» монтаж.
Молодцы!
GarryC
15.06.2016 17:37Присоединяюсь к вопросу о ФЧХ и ее смысле в данном контексте?
Ну и заметка на полях — все великолепно и замечательно, при этом применение специализированных микросхем драйверов с токовым выходом сильно увеличило бы цену девайса, особенно если рассматривать цену владения — с учетом места на плате, разводки платы, количества точек пайки и сопутствующих факторов?
Кстати, по поводу FFT — если число точек по частоте не превосходит определенного значения, то СКП дает намного лучшие результаты, по моим оценкам это число точек в районе 3 и лежит, так что девушки молодцы, что не стали усложнять программу сверх необходимого.
AntiFreezeman
15.06.2016 20:08Никто не знает где можно купить уже готовую схему с каким нибудь led экранчиком или заказать у кого?
igruh
Ну кто тут сможет удержаться и не плюсануть? Жаль мало фотографий участников проекта.
vitecd
участниц, но действительно — мало. Технические девочки сильно редкость и еще более сильная радость )