Как пользоваться макетной платой » Ардуино Уроки

Как пользоваться макетной платой » Ардуино Уроки Как паять

1описание rgb светодиодов ws2812 и ws2812b

Светодиод WS2812 (или его модификация WS2812B, которая и будет использована в данной статье) представляет собой RGB светодиод. То есть в одном корпусе представлены сразу три светодиода разных цветов: красный, зелёный и синий.

Внешний вид и габариты светодиодов WS2812
Внешний вид и габариты светодиодов WS2812

Светодиод WS2812 имеет 6 выводов, в то время как WS2812B – лишь 4.

Назначение выводов светодиода WS2812
Номер выводаНазваниеНазначение вывода
1DoutВыход управляющего сигнала
2DinВход управляющего сигнала
3VCCПитание управляющей цепи, 6…7 В
4NCНе подключен
5VDDПитание светодиода, 6…7 В
6GndЗемля

А вот назначение выводов светодиода WS2812B:

Внешний вид и габариты светодиодов WS2812B
Внешний вид и габариты светодиодов WS2812B
Назначение выводов светодиода WS2812B
Номер выводаНазваниеНазначение вывода
1VDDПитание светодиода, 3,5…5,3 В
2DoutВыход управляющего сигнала
3GndЗемля
4DinВход управляющего сигнала

Главное преимущество данных светодиодов в том, что они могут соединяться в цепочку последовательно друг за другом, их можно соединять в ленты или собирать из них панели. При этом управление осуществляется всего по одному проводу. Это возможно благодаря тому, что каждый светодиод содержит в своём составе контроллер, который и управляет цветом и яркостью трёх каналов RGB.

Для примера на схеме показано последовательное подключение трёх светодиодов. На вход DIN первого светодиода подаётся управляющий сигнал. Светодиод обрабатывает его и передаёт далее со своего выхода DOUT на вход следующего в цепочке светодиода.

Последовательное подключение светодиодов WS2812B
Последовательное подключение светодиодов WS2812B

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

Читайте также:  Как рисовать паяльником по дереву и как выжигать по дереву выжигателем 🥝 уроки гравировки

Обратите внимание, что светодиодная панель весьма «прожорлива». На иллюстрации ниже это можно видеть по показаниям встроенного датчика тока источника питания: панель из ста светодиодов WS2812B потребляет ток более 3 амперов. Правда, почти все светодиоды в данном случае включены на максимальную яркость белым цветом (самый энергозатратный режим, т.к. для обеспечения белого свечения используются все три канала RGB на максимальной яркости).

Управление светодиодной панелью WS2812B
Управление светодиодной панелью WS2812B

Приблизительное потребление вашего устройства можно оценть так. Один канал светодиода на максимальной яркости потребляет около 20 мА. В одном корпусе располагаются 3 светодиода. Следовательно, один RGB светодиод в максимуме потребляет до 60 мА тока. Умножаете это число на количество светодиодов в вашей матрице или ленте – это и будет максимально возможное потребление, и ваш источник питания должен иметь возможность выдать такой ток.

↑ p.s. немного воспоминаний, не совсем в тему

В далёкие школьные и студенческие времена, «идея» заложенная в описанную в статье макетную плату сильно пригодилась в условиях недостатка фольгированных материалов. Изрядно подустав крутить проволочки, стал собирать не очень сложные схемы, припаивая детали на устаноленных в нужных местах платы жестяных площадках и дорожках, в общем делал нечто среднее между печатным и навесным монтажом.

Конечно способ не без недостатков, но обслуживание изделия, замену неисправных деталей, и внесение изменений в схему делать быстрей и удобней чем на стандартной «печатке». До сих пор сохранилось несколько артефактов изготовленных этим экзотическим способом:

Как пользоваться макетной платой » Ардуино Уроки
Микрофонный усилитель

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

Как пользоваться макетной платой » Ардуино Уроки
Одна из гитарных примочек

Как видите пара плат сделана из картона. Давно уже, лет двадцать назад. Видать торопился тогда. Подумываю заменить их на печатные да и схему изрядно перелопатить, только всё руки не доходят. Тем более в уличных концертах этому изделию уже вряд-ли предстоит участвовать.

Как пользоваться макетной платой » Ардуино Уроки
Неведомая антинаучная фигня

Когда-то в докомпьютерные времена служила ритм-боксом и обеспечивала моё гитарное брыньканье ударным сопровождением бумканьем и дыцканьем :russian: Несмотря на опять же картонные платы, криво сделанную, не вполне законченную схему и общую неактуальность, работает до сих пор.

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

Одна такая плата, сделанная под одну из первых гитарных примочек, впоследствии разобранную, в разное время «носила на себе» предусилитель, генератор, и ещё несколько похожих по смыслу и топологии платы схем. Некоторые из этих блоков после доведения до ума работают на других платах, сделанных уже специально под них.

↑ без единого гвоздя

1. Берётся подходящий по размерам кусок гетинакса или текстолита.

Как пользоваться макетной платой » Ардуино Уроки
Естественно, нефольгированного. В противом случае можно было бы сделать намного быстрее. И получилось бы красивее, но в долговечности такого изделия сильно сомневаюсь. Фольга имеет дурную привычку отслаиваться от основы при нагревании. Размеры определяются «требованиями заказчика» и имеющимися в наличии кусками материала. Когда-то у меня был «монстр» примерно 20×40 см. Жаль потерял. Это сейчас маленькие делал. На большие масштабы пока не замахиваюсь. Спаять блок на паре-тройке транзисторов можно. Или даже что-нибудь звуковое на микросхеме, благо у них сейчас выводов не так много, да и обвески тоже.
2. Шилом, ножом, или ещё каким подходящим инструментом на поверхности материала «процарапывается» разметка под будущие контактные площадки. Указанные на рисунке размеры срисовал со своего изделия. Если кому нужно — могут сделать другие.

3. По разметке, на месте будущих контактных площадок сверлятся отверстия диаметром 2 — 3 мм (для площадок шириной 5 мм, как в моём случае).

4. А потом отверстиям на плате придаётся вот такая форма.

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

Как пользоваться макетной платой » Ардуино Уроки
Вместо такого самопального «лобзика» вполне можно воспользоваться треугольным надфилем. Форма отверстий будет малость не такая, но свою задачу (препятствовать вращению лепестков) они выполнят так же. Только не было надфилей под рукой в то время. Да и сверло нашлось только на 1,5 мм. Поэтому получились абсолютно ровные сквозные пазы.

6 А потом из подходящей жести вырезаются полосы шириной 5 мм. В моём случае это была знаменитая жесть от банок из под сгущёнки.

7. Полосы режутся на куски длиной примерно 24 мм (для площадок 8×5 мм.). Заготовки сгибаются примерно так:

Полученные изделия вставляются в вышеописанные отверстия:

И фиксируются.

В результате получается что-то вот такое.

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

Из-за торчащих с обратной стороны платы жестянок работать нужно, естесственно на диэлектрической поверхности. Ну и не допускать попадания под плату металла. В этом смысле доска с жестянками выгодно отличается, если гвозди не слишком длинные: smile: Для большей гарантии можно прикрепить к плате снизу кусок текстолита (гетинакса) такого же размера. Или ножки приспособить как на картинке из «ЮТ», если плата достаточно большая.

Согласен, что всё можно сделать слегка проще. Например «конструкцию» контактных площадок. (Сам когда-то делал вариант где жестяная заготовка просто сгибалась пополам.) Да и саму плату можно делать хоть из картона, если что-то новое делается не так уж часто и нет риска перегреть его во время работы. В нём и пазы под площадки режутся куда легче. (Когда-то и его использовал, правда для несколько других целей.)

А можно и вообще не делать. Но, возможно пригодится кому-нибудь. Мало ли.

И в завершении — фото платы «в деле». То есть во время проверки блока для очередного изделия.

Дело было вдали от цивилизации, нормальных приборов инструментов и радиодеталей.

Так что сильно не удивляйтесь «музейным экспонатам» из которых всё собрано. Делалось всё только для подбора катушки, так что тип остальных элементов роли не играл. К тому же, поблизости у знакомых водился осциллограф, позволяющий контролировать сигнал на радиочастотах, который для меня до сих пор остаётся в планах и мечтах. Стоящий на заднем плане приёмник в данном случае выполняет роль частотомера.

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

1обзор программатораch341a

Как следует из названия программатора, его основная часть – это микросхема CH341A. Рядом с ней располагается кварцевый резонатор на 12 МГц, а также стабилизатор напряжения AMS1117, который выдаёт 3,3 вольта. По бокам от USB разъёма, которым программатор подключается к компьютеру, располагаются светодиодные индикаторы: сверху (на фото) – индикатор питания (POWER), а снизу – индикатор обмена данными между ПК и программатором (RUN). Он включается, когда программатор считывает данные из программируемой микросхемы и когда происходит запись.

Верхняя сторона программатора CH341A
Верхняя сторона программатора CH341A

Для подключения программируемых микросхем установлена 16-контактная DIP панель с нулевым усилием (ZIF), которая промаркирована TFXTDOL. С обеих сторон панели располагаются две группы контактов. Их назначение описано на нижней стороне программатора и приводится на фото ниже:

Нижняя сторона программатора CH341A
Нижняя сторона программатора CH341A

По названиям выводов понятно, что верхняя (на фото) гребёнка предназначена для обмена по интерфейсу SPI, а нижняя – по UART. Также тут имеется площадка для пайки, на которую можно припаять программируемую микросхему.

Лучше использовать переходные панели с нулевым усилением (т.н. ZIF панели), которые позволяют подключать микросхемы к программатору без пайки посредством DIP панели на верхней стороне.

С помощью перемычки, которая по умолчанию установлена между контактами 1 и 2, можно менять режим работы программатора. Так, если перемычка установлена между контактами 1 и 2, программатор работает в параллельном режиме и определяется в диспетчере устройств Windows как параллельный порт (USB-EPP/I2C), а если между контактами 2 и 3 – в последовательном режиме и определяется в диспетчере устройств как COM-порт.

Программатор CH341A в диспетчере устройств при разных положениях перемычки
Программатор CH341A в диспетчере устройств при разных положениях перемычки

Программатор предназначен для чтения и записи данных в микросхемы flash-памяти серий 24 и 25. На шелкографии на нижней стороне программатора CH341A указано, каким образом нужно подключать программируемую микросхему каждой из серий. Приобрести программатор можно на Али-Экспресс, например, здесь, а подходящие микросхемы памяти здесь.

1установка и пайка радиоэлектронных компонентов

Продаётся набор DSO138 вот в таком виде (купить можно тут). В набор входит собственно печатная плата с установленными на ней SMD компонентами (есть также разновидность набора, где SMD компоненты не установлены), плата с ЖК дисплеем, пакетик с комплектующими, кабель с BNC разъёмом и «крокодилами», а также инструкция по сборке и инструкция по настройке на английском языке.

Набор для самостоятельной сборки DSO138
Набор для самостоятельной сборки DSO138

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

Первым делом производится пайка резисторов. Их тут много, и много номиналов. Пайка ведётся обычным образом: формуете выводы, вставляете в отверстия, покрываете флюсом, разогреваете, паяете. Будьте внимательны и аккуратны при проведении пайки.

Монтаж резисторов на плату цифрового осциллографа DSO138
Монтаж резисторов на плату цифрового осциллографа DSO138

Следующий шаг – пайка трёх дросселей и двух диодов. Дроссели одинаковые, а вот диоды – разные, но в одинаковых корпусах. Кроме того, диоды имеют полярность. На шелкографии платы «минус» (катод) обозначен белой чертой, как и на корпусе самих диодов. Так что соблюдайте внимательность.

Монтаж дросселей и диодов на плату цифрового осциллографа DSO138
Монтаж дросселей и диодов на плату цифрового осциллографа DSO138

Далее припаиваем кварцевый резонатор на 8 МГц. Полярность не важна.

Монтаж кварцевого резонатора на плату цифрового осциллографа DSO138
Монтаж кварцевого резонатора на плату цифрового осциллографа DSO138

Следующим паяем разъём mini-USB на плату и пять тактовых кнопок. И разъём, и кнопки имеют специфические размеры корпуса и выводов, так что перепутать ничего невозможно.

Монтаж USB разъёма и тактовых кнопок на плату цифрового осциллографа DSO138
Монтаж USB разъёма и тактовых кнопок на плату цифрового осциллографа DSO138

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

Монтаж конденсаторов на плату цифрового осциллографа DSO138
Монтаж конденсаторов на плату цифрового осциллографа DSO138

Следующим делом припаяем светодиод. Длинный вывод – это анод, «плюс». Для него предназначено отверстие с квадратной контактной площадкой.

Монтаж светодиода на плату цифрового осциллографа DSO138
Монтаж светодиода на плату цифрового осциллографа DSO138

Теперь очередь штыревого белого разъёма для питания. Ставим его открытой частью по направлению от центра платы.

Монтаж разъёма питания на плату цифрового осциллографа DSO138
Монтаж разъёма питания на плату цифрового осциллографа DSO138

Устанавливаем на плату 2 транзистора и 2 регулятора напряжения. Они все разных типов, но в одинаковых корпусах. Будьте внимательны при установке их на плату осциллографа. Формуйте выводы перед установкой и не перегревайте их паяльником.

Монтаж транзисторов и регуляторов напряжения на плату цифрового осциллографа DSO138
Монтаж транзисторов и регуляторов напряжения на плату цифрового осциллографа DSO138

Устанавливаем два переменных конденсатора.

Монтаж переменных ёмкостей на плату цифрового осциллографа DSO138
Монтаж переменных ёмкостей на плату цифрового осциллографа DSO138

Монтируем большую катушку индуктивности для фильтра питания.

Монтаж катушки индуктивности на плату цифрового осциллографа DSO138
Монтаж катушки индуктивности на плату цифрового осциллографа DSO138

Далее устанавливаем 6 электролитических конденсаторов. При установке важно соблюдать полярность. Более длинный вывод – это «плюс». Он устанавливается в отверстие с квадратной площадкой под пайку.

Монтаж электролитических конденсаторов на плату цифрового осциллографа DSO138
Монтаж электролитических конденсаторов на плату цифрового осциллографа DSO138

Ставим на плату осциллографа DSO138 разъём для питания. Он имеет широкие довольно толстые выводы, его нужно хорошо пропаять.

Монтаж разъёма питания на плату цифрового осциллографа DSO138
Монтаж разъёма питания на плату цифрового осциллографа DSO138

Далее – пайка штыревых разъёмов и соответствующих колодок на плату осциллографа DSO138.

Монтаж штыревых разъёмов на плату цифрового осциллографа DSO138
Монтаж штыревых разъёмов на плату цифрового осциллографа DSO138

Устанавливаем три подвижных переключателя SW1, SW2 и SW3. Затем монтируем BNC разъём. Его корпус из толстого слоя металла, и трудно поддаётся пайке. Тем не менее, нужно очень хорошо его припаять к контактным площадкам. Это разъём часто будет подвергаться механической нагрузке, и его пайка должна быть очень качественной. Хорошо прогревайте толстые выводы его корпуса.

Монтаж разъёма BNC на плату цифрового осциллографа DSO138
Монтаж разъёма BNC на плату цифрового осциллографа DSO138

Теперь припаяем петлю из проволоки толщиной 0,5 мм в отверстия разъёма J2. Это будет контакт для выхода сигнала самотестирования осциллографа.

После этого закоротим с помощью паяльника и припоя контакты перемычки JP3.

Делаем петлю на плате осциллографа DSO138
Делаем петлю для самотестирования на плате цифрового осциллографа DSO138

Займёмся платой TFT LCD экрана. Нужно припаять 3 штыревых разъёма с нижней части платы. Два маленьких разъёма по два пина и один двухрядный 40-пиновый.

Мы почти закончили пайку. Но не спешите убирать паяльник, он нам ещё ненадолго понадобится.

Монтаж разъёмов на плату ЖК экрана цифрового осциллографа DSO138
Монтаж разъёмов на плату ЖК экрана цифрового осциллографа DSO138

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

Промытой плате нужно дать хорошо просохнуть. Это очень важно! Влаги на плате не должно остаться совершенно.

После этого подключим источник питания к плате и замерим напряжение между землёй и точкой TP22. Если напряжение примерно равно 3,3 вольтам, значит вы всё хорошо спаяли, поздравляю! Сейчас нужно отключить источник питания и закоротить припоем контакты перемычки JP4.

Измеряем напряжение в точке TP22 цифрового осциллографа DSO138
Измеряем напряжение в точке TP22 цифрового осциллографа DSO138

Сейчас можно подключить к осциллографу ЖК дисплей, совместив его штыревые выводы с колодками на печатной плате осциллографа.

Первое включение цифрового осциллографа DSO138
Первое включение цифрового осциллографа DSO138

2управление светодиодами ws2812b (или ws2812)

Если просто подать на светодиодную ленту напряжение, ничего не произойдёт. Светодиоды ждут определённый сигнал, который будет ими управлять. Для управления используется последовательный однопроводный интерфейс. Биты «0» и «1» кодируются импульсами различной длины.

Коды нуля, единицы и сброса светодиода WS2812B
Коды нуля, единицы и сброса светодиода WS2812B

На диаграмме обозначены:

  • T0H – время выдержки высокого уровня при передаче кода логического нуля;
  • T0L – время выдержки низкого уровня при передаче кода логического нуля;
  • T1H – время выдержки высокого уровня при передаче кода логической единицы;
  • T1L – время выдержки низкого уровня при передаче кода логической единицы;
  • Treset – время сигнала оповещения об окончании управляющей последовательности.

Причём временные допуски заданы весьма жёстко. Так, для WS2812B время T0H = T1L и составляет 0,35 мкс, а время T1H = T0L и составляет 0,9 мкс. Для светодиода WS2812 временные параметры более изощрённые: T0H = 0,35 мкс, T1H = 0,7 мкс, T0L = 0,8 мкс, T1L = 0,6 мкс. Но длительность передачи одного бита и там, и там составляет 1,25 мкс.

Для указания цвета светодиода используется 24-битная схема RGB: под каждый из трёх каналов отводится по 8 бит. И расположены цвета в следующем порядке:

Кодирование цвета в пространстве RGB для светодиода WS2812B
Кодирование цвета в пространстве RGB для светодиода WS2812B

То есть для того чтобы выставить желаемый цвет на первом светодиоде в цепочке, необходимо сформировать 24-битный код и подать его на вход DIN цепочки. Если мы хотим выставить цвет на двух светодиодах, необходимо сформировать уже 48-битный сигнал и так же подать его на вход DIN цепочки. И так далее.

Чем больше светодиодов в цепочке – тем более длинную последовательность мы должны подать на её вход. Получив управляющий сигнал, контроллер светодиода берёт из неё первые 24 бита и выставляет тот цвет, который указан в этих 24 битах. Затем он отбрасывает эти 24 бита, а оставшуюся часть последовательности передаёт дальше.

Осталось дело за малым: передать цепочке светодиодов WS2812B осмысленную управляющую последовательность.

На этот счёт есть такая идея. По сути нам необходимо передавать 24-битные значения цвета в соответствии с положением светодиода в матрице 10 на 10. Аналогичным образом данные хранятся в графических файлах формата *.BMP. Только у них в начале файла ещё присутствует заголовок, который содержит дополнительную информацию: размер изображения, сколько бит приходится на один пиксель, есть ли сжатие и т.д. Вот как в деталях устроен формат BMP:

Внутреннее устройство формата BMP
Внутреннее устройство формата BMP

Можно в любом графическом редакторе (например, Paint .NET) нарисовать изображение размером 10 на 10 пикселей (или такого, какой размерности у вас светодиодная панель), сохранить его в 24-битном формате, а затем взять массив байтов из раздела Image Data Pixel Array с данной схемы, и таким образом мы получим управляющий массив для загрузки светодиодной панели.

Обратите внимание, что в массиве данных о точках изображения BMP содержатся заполнители (Padding), которые дополняют строку байтов до числа, кратного 4. Т.е., например, в нашем случае строка содержит 10 пикселей по 24 бита на цвет (3 байта). Соответственно, строка будет содержать 3×10=30 байтов.

Ах, да, чуть не забыл. В файле изображения BMP данные о цвете хранятся в формате R-G-B, а светодиод WS2812 принимает цвет в формате G-R-B. Необходимо поменять местами цвета, иначе все изображения будут совсем не тех цветов, которые мы ожидаем.

3примеры работы с логическим анализатором

Для первого эксперимента возьмём преобразователь USB-UART на микросхеме FTD1232. Подключим анализатор к порту USB. Выводы каналов с 1 по 6 подключим к выводам USB-UART преобразователя. По большому счёту, больше всего нас интересует только две линии – Rx и Tx, можно обойтись только ими.

Подключение FTD1232 к логическому анализатору
Подключение USB-UART конвертера на микросхеме FTD1232 к логическому анализатору

Запускаем программу Saleae Logic. Если драйверы для анализатора установлены корректно, в заголовке программы будет указано Connected – подключено. Допустим, мы не знаем на каком канале будет сигнал, а на каком нет, поэтому не будем выставлять триггер для начала захвата сигнала.

Просто нажмём на стрелки большой зелёной кнопки Start (Старт) и выставим в поле Duration (Длительность), скажем, 10 секунд. Это время, в течение которого логический анализатор будет собирать приходящие по всем 8-ми каналам данные после нажатия кнопки «Старт».

Запускаем захват и одновременно отправляем в COM-порт какое-нибудь сообщение. Через 10 секунд анализатор закончит сбор данных и выведет результат в поле просмотра сигналов. В данном случае сигнал будет лишь на одном канале, который присоединён к выводу Tx (передатчик) USB-UART преобразователя.

Последовательный сигнал, захваченный логическим анализатором
Последовательный сигнал, захваченный логическим анализатором

Для наглядности можно настроить декодер перехваченных данных. Для этого в правом столбце находим поле Analyzers, нажимаем иконку в виде плюса – «Добавить», указываем тип – Async Serial. Появится окно с выбором настроек.

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

Настройки декодера данных
Настройки декодера данных

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

Аналогичным образом подключим логический анализатор к преобразователю USB-RS485. Линии данных всего две, поэтому можно установить триггер срабатывания по фронту любого из каналов: сигнал в протоколе RS-485 дифференциальный и фронты импульсов появляются одновременно на каждом из каналов, но в противофазе.

Подключение конвертера USB-RS485 к логическому анализатору
Подключение конвертера USB-RS485 к логическому анализатору

Нажмём кнопку «Старт» в программе анализатора. С помощью нашей терминалки подключимся к USB-RS485 конвертеру и передадим какие-нибудь данные. По срабатыванию триггера программа начнёт собирать данные, по завершению выведет их на экран.

Последовательный сигнал RS485, захваченный логическим анализатором
Последовательный сигнал RS485, захваченный логическим анализатором

Программа Saleae Logic позволяет экспортировать сохранённые данные в виде изображений и текстовых данных, сохранять настройки программы, аннотации и декодеры каналов.

Последний пример в данном небольшом обзоре – захваченный кадр данных, переданный по последовательному протоколу SPI. В канале 2 виден сигнал выбора ведомого, в канале 0 – тактовые импульсы, а в канале 1 – собственно данные от ведущего устройства к ведомому.

Последовательный сигнал SPI, захваченный логическим анализатором
Последовательный сигнал SPI, захваченный логическим анализатором

3управление светодиодной панелью ws2812b по spi с помощью ft2232h

Предлагаю использовать для управления диодами WS2812B отладочную плату с микросхемой FT2232H и программу SPI via FTDI, которые уже не раз нас выручали. Единственная загвоздка в том, что FT2232H не может формировать импульсы с заданной длительностью. Придётся сымитировать их. Идея здесь следующая.

Короткие импульсы (T0H и T1L) для WS2812B одинаковые и они в 3 раза короче, чем длинные (T0L и T1H). Таким образом, используя 4 импульса можно закодировать «0» или «1». А именно: для передачи логического нуля будем формировать бинарную последовательность «1000» или 0x8, а для передачи логической единицы будем формировать бинарную последовательность «1110» или 0xE.

Будем использовать режим SPI и его линию MOSI для передачи двоичных данных загрузки светодиодов. Причём необходимо выбрать такую частоту передачи, чтобы длительность одного бита равнялась 1,25 мкс. Т.к. нам вместо одного бита нужно передавать четыре, то для обеспечения той же длительности одного бита управляющей последовательности частота SPI должна быть в 4 раза выше: вместо 1/1.25 будет 4/1.25 мкс = 3.2 МГц. Это микросхема FT2232H способна обеспечить.

Если сформировать произвольную управляющую последовательность и посмотреть её на осциллографе, то увидим, что эта идея вполне работоспособна: на осциллограмме видны 6 логических единиц, а затем логический ноль. Причём длительность передачи одного бита в среднем равняется как раз тем самым 1.25 мкс.

Осциллограмма части управляющего сигнала светодиодами WS2812B
Осциллограмма части управляющего сигнала светодиодами WS2812B

Теперь, когда мы умеем формировать биты необходимой длительности, нужно взять массив, считанный из соответствующего раздела BMP файла, и преобразовать его побитово в то, что нам нужно (бит «0» – в 0x8, «1» – в 0xE).

Я всё это уже проделал и прикладываю к статье маленькое консольное приложение, которое принимает на вход файл *.BMP и генерирует из него бинарный файл с управляющей последовательностью, которую нужно «скормить» цепочке светодиодов.

Чтобы загрузить управляющую последовательность, воспользуемся программой SPI via FTDI. Подключимся к микросхеме FT2232H, установим режим SPI и зададим скорость передачи 3 МГц. Также в полях состояний выводов укажем «00000000»; этот нулевой уровень будет служить сигналом Reset, по которому светодиодная лента «поймёт», что передача управляющей последовательности завершена.

Параметры программы при загрузке управляющего массива WS2812
Параметры программы при загрузке управляющего массива WS2812

В качестве примера на изображении в поле «Команда» приведён массив, который активирует первые три светодиода в цепочке цветами красный, зелёный, синий.

Включение первых трёх светодиодов панели WS2812B
Включение первых трёх светодиодов панели WS2812B

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

Управление светодиодной панелью WS2812B
Управление светодиодной панелью WS2812B

С помощью такой панели можно создавать довольно красивые и зрелищные эффекты, как, например, цветовые градиенты:

https://www.youtube.com/watch?v=4AoHuyOH9GE

Как развитие данной идеи, с помощью такой LED-панели можно воспроизводить анимацию. Для этого можно создать управляющий файл, в котором последовательно будут содержаться управляющие массивы для всех кадров анимации, а для обеспечения пауз между кадрами будет необходимое число нулей. Посчитать число нулей несложно, если вспомнить, что время передачи одного бита составляет 1,25 мкс.

Оцените статью
Про пайку
Добавить комментарий