При разработке электронных устройств важно использовать стенды для их тестирования и отладки. Такие стенды уменьшают нагрузку на оператора завода-изготовителя, облегчают отладку устройства и упрощают большинство рутинных действий. Чаще всего, когда речь заходит о стендах тестирования электронных устройств, мы представляем массовое производство. Там подобные стенды не просто правило хорошего тона, а острая необходимость. И это правильный подход! На эту тему есть пара интересных статей: «Как выглядит тестирование электроники Flipper Zero», «Серийное производство электроники в России. Автоматизация тестирования». На поточных производствах обычно используют готовые решения для тестирования и отладки устройств, такие как PCBA Test, Semco Machine Corporation или INGUN. Для первичной отладки оборудования готовые решения могут не подойти: у них большие габариты (стенд может занимать треть стола Embedded-разработчика), компоненты таких стендов труднодоступны для модификации. А что, если изделие не предполагает серийного производства? Как проводить отладку небольшого устройства, к которому неудобно подключать разъемы? Припаивание проводов к тест-поинтам имеет свои нюансы: этот процесс может быть долгим и трудозатратным, из-за следов пайки портится внешний вид платы, да и вообще неаккуратная пайка может привести к отрыванию контактных площадок.  В этой статье мы поделимся опытом создания стендов для отладки. Допустим, вы разработали электронное устройство. Оно вставляется в корпус так, что свободного пространства для установки разъемов отладки не остается. Заказывать дорогостоящие решения (о которых говорили выше) может быть либо нерентабельно, либо нецелесообразно по срокам изготовления. Как быть? В таком случае мы разрабатываем стенд для тестирования и отладки (далее – стенд), который включает в себя тестируемую плату (далее  – DUT (device under test)), механическую оснастку для крепления DUT и плату управления стенда. Механическую оснастку легко напечатать на 3D-принтере. Ниже приведен пример такого DUT – пульт на базе nRF52, который должен уместиться в пластиковом корпусе. Все компоненты этого пульта расположены только с одной стороны. Чтобы пощупать будущее устройство, оценить его габариты и размещение компонентов, мы экспортируем его 3D-модель из CAD'а для разработки плат и печатаем на 3D-принтере. Это стандартная процедура при разработке плат, которые входят в другие платы или корпуса, – проверка на собираемость. Слева – 3D-модель пульта, напечатанная на FDM-принтере соплом 0,4 мм и высотой слоя 0,2 мм, справа – на SLA с высотой слоя 35 мкм. Логика поэтапной печати на обоих принтерах очень проста: FDM-принтер напечатал устройство посредственного качества за 13 минут, а SLA напечатал за 3 часа, но с высоким качеством (подняли от стола на 5 мм, плата под углом, поддержки – классика). Первые грубые прикидки делаем на FDM, а финальную проверку всех тонкостей – на SLA. Разрабатываемый пульт будет подключаться к стенду через погопины. В пульте нет больших потребителей тока, поэтому для качественного подключения достаточно тонких погопинов типа P50-J1 с полусферическим контактом (фото ниже). У таких погопинов много преимуществ – за счет полусферической формы контакта они будут иметь большую эффективную площадь контакта. А минимальный рекомендуемый шаг между контактными площадками составляет всего 1,27 мм, что значительно ниже чем для погопинов 75-й (1,91 мм) или 100-й серии (2,54 мм). Что выводим на тест-поинты? Прежде всего, пины программирования (JTAG, SWD) на каждый микроконтроллер/ПЛИС в DUT, поскольку отладка и заливка прошивки – важный этап отладки DUT. Во-вторых, контактные площадки для кнопок и GPIO управления – они нужны для тестирования срабатывания и обработки откликов нажатий. Еще пригодятся интерфейсы (SPI, UART, I2C и т.д.), через которые можно посылать информацию на стенд либо «подслушивать» сообщения между функциональными узлами. Среди прочего надо не забыть про питание – как про его подачу через стенд, так и про его контроль на DUT при помощи АЦП на плате управления стенда (измерение напряжения, тока, переключения между напряжениями, если предусмотрено в DUT, и т.д.). Если на DUT несколько разных питающих напряжений, то для удобства на каждом питании можно использовать светодиоды, сигнализирующие о наличии каждого вида питания (пример на фото ниже). Результаты проверки питания с помощью АЦП на плате управления стенда тоже можно выводить на светодиоды. И еще один важный момент – необходимо выводить как можно больше доступных интерфейсов. К примеру, у вас в устройстве остается незадействованный SPI и на плате есть физическое место для тест-поинтов. Выведите его! Вы никогда заранее не угадаете, что понадобится в процессе отладки. Возможно, сам SPI-интерфейс вы не используете, но три из четырех пинов сможете задействовать как GPIO (если заливаете релизную прошивку, не забудьте отключить эти пины!). Теперь мы можем подключаться к нашему DUT и даже получать с него информацию. Но для начала позаботимся о надежной механической фиксации на стенде. Для этих целей чаще всего используют PCBA Test, Semco Machine Corporation или INGUN. Но у нас уже были закуплены крепления (фото ниже), а наши инженеры полны энтузиазма и любят 3D-печать. Видно, что на крепеже GH-201-B предусмотрен резиновый «палец», который при защелкивании красного рычага надавливает на плату. Первые попытки не увенчались успехом: «палец» надавливал на большую BGA-микросхему, установленную на плату, а ответная часть содержала встречные крепежные ограничители, фиксирующие плату. Как результат – растрескивание шаров с последующей перепайкой BGA. После доработок оснастки мы заменили «палец» на крышку, которая равномерно давит на свободные участки платы. Результат на фото ниже.  Поскольку погопины длинные и тонкие, они могут изгибаться при надавливании, а это чревато тем, что они могут сдвинуться и подключиться куда-нибудь «не туда». Поэтому в ложементе оснастки нужно предусмотреть направляющие отверстия достаточной глубины. Для рассматриваемых P50-J1 будет достаточно 10 мм. Диаметр отверстий – от 0,8 до 1,0 мм (точная величина зависит от режимов и филаментов) при диаметре погопина в 0,68 мм, поскольку FDM-принтер печатает с погрешностями. Если погопин все же не влезает, то нужно слегка досверлить отверстие сверлом 0,8 мм. Вернемся к нашему пульту. Для его механической фиксации мы использовали крепеж P2458A. Крепеж фиксирует крышку оснастки, которая закрывается сверху и надавливает на свободные участки платы. Плюсы подобных стендов: малые габариты; легкость и скорость внесения правок «по ходу», оснастку можно заново распечатать на 3D-принтере; условно легкая и дешевая масштабируемость: если нужно сделать пару-тройку штук – просто печатаем и собираем. Во-первых, на каком 3D-принтере вы будете печатать? Наш опыт подсказывает, что самые крепкие и износоустойчивые детали получаются на FDM-принтерах. Но главная проблема FDM – точность. Это особенно заметно, когда нужно состыковать несколько деталей. Поэтому при печати на FDM мы всегда закладываем допуск по направлению печати XY – от одного до двух диаметров сопла. Ну и напомним, что филаменты PETG и ABS более дружелюбны к постобработке, чем PLA (сверление, напильник, наждачка и т.д.). Во-вторых, нужно предусмотреть защиту от КЗ. Такой стенд будут бросать на стол, где могут лежать металлические предметы, на которые так любят попадать торчащие хвостики погопинов. Достаточно добавить на стенд пластиковое дно, которое защитит от КЗ. В-третьих, как мы писали выше, не стоит давить на корпуса микросхем, лучше надавливать на свободные участки печатной платы, и желательно максимально равномерно. В-четвертых, вынесите кнопки на поверхность стенда – когда DUT в стенде, бывает сложно до них дотянуться.  В-пятых, не забывайте про питание. Если ваше устройство работает от батареек, то предусмотрите питание как от батареек/аккумуляторов, так и от внешнего блока питания, т.к. процессы перепрошивки устройства (стирание и запись Flash-памяти) могут быстро высаживать маломощные батарейки (к примеру, LR44, CR2016, и т.д.). Ну и напоследок еще один совет: облегчите жизнь будущим пользователям вашего стенда, сделайте его компактным и мобильным. И не забывайте о короткой инструкции по использованию ;) Raccoon Security  – специальная команда экспертов НТЦ «Вулкан» в области практической  информационной безопасности, криптографии, схемотехники, обратной  разработки и создания низкоуровневого программного обеспечения.