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

Не дисклеймер

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

Приятного чтения!

Введение

Холодным весенним вечером практически перед сном я пересматривал посты нашего Телеграм-канала, и в голову резко пришла следующая мысль:

А что, если перенести логотип канала на печатную плату?

Возможно, катализатором к идее был лежащий рядом бейдж с Offzone, который я давно хотел расковырять, но никак не находил время. Навык проектирования плат у меня на тот момент был равен нулю, но была мотивация

Немного погуглив, я скачал первую попавшуюся ECAD (IDE для проектирования плат) под названием Altium Designer. Несколько десятков минут просмотра гайдов, импорта готовых компонентов, преобразования логотипа из png в шелкографию, и у меня получилось сделать набросок:

Набросок платы с логотипом

Набросок платы с логотипом

Реакция коллег

Реакция коллег

Имеющиеся скиллы

На момент первого запуска Altium Designer небольшая база, конечно, присутствовала: физика 7 класс, работа с Arduino, макетными платами и пайка безделушек из наборов на AliExpress, но этого недостаточно для раблоты работы с ECAD.

Целью данного проекта стал вкат в проектирование плат путем создания с нуля полноценной функциональной платы в виде жетона с логотипом канала.

Задумка следующая - сделать интерактивную печатную плату с глазами-светодиодами. Для красоты написать что-то красивым шрифтом и не забыть оставить ссылку на канал.

проектирование схемы

Первым этапом идет проектирование схемы. В моём случае она простая, всё будет понятно и на словах:

Элементы питания соединены с микроконтроллером. Микроконтроллер соединяется двумя своими сигнальными пинами с соответствующими двумя светодиодами. Вторые пины светодиодов соединены с резисторами, резисторы - с землей. Вот и всё.

Далее показан скриншот схемы. Такую схему вроде как еще называют принципиальной, но это не точно.

Электрическая схема

Электрическая схема

Просьба не смеяться шарящих в теме. Это моя самая первая схема в ECAD. К тому же, забегу вперед, я её переделаю

Хоть эта схема и достаточно простая, и, если опустить время на изучение инструментария в ECAD, на момент проектирования у меня был ряд задач, над которыми нужно было подумать дольше пяти минут:

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

    Выбор пал на Attiny85. Это очень популярный микроконтроллер с 8 Кб flash-памяти для кода. На его основе сделана популярная плата Digispark. Наверное, можно было выбрать и более дешевый аналог, Attiny13, но выбор уже был сделан.

  2. Подбор номинального сопротивления резистора

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

    R = (Uист - Uсв) / Iсв

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

    Познавательное видео про работу светодиодов

  3. Выбор элементов питания Максимальное напряжение Attiny85 - 5.5 В. Казалось бы, просто найти подходящий элемент питания. Оказалось, что задача на 5 секунд может превратиться на 30 минут. Единого элемента питания на 5.5 В, как и на 5 В не существует. Знающие, подскажите пожалуйста, почему нет батарейки с напряжением, равным напряжению в стандарте USB?

    Так или иначе, нужно как-то выкручиваться. Выхода два:

    • Использовать схемы повышения выходного напряжения
    • Использовать последовательное соединение одинаковых элементов питания

    Выбор пал на второй вариант, так отсутствует необходимость (лень) в доработке и усложнении схемы.

    Выбрал батарейки LR44, так как их размер подходит под примерный размер платы. 3 Штуки по 1.5 В дают 4.5 В. Микроконтроллер должен стабильно работать.

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

  4. Выбор компонентов.

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

    Я пользовался магазином Чип и Дип. Да, у них в 3 раза дороже, но кто сказал, что хобби должно быть дешевым? Конечная цена на 10 плат составила примерно 4100 рублей (большая часть ушла на микроконтроллеры). Также возникли сложности с батарейными отсеками под LL44 - Их не оказалось в России, пришлось заказывать из Китая.

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

Валидация схемы

Валидация схемы

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

Разводка компонентов

Неразведенная плата выглядит следующим образом:

Неразведенная плата

Неразведенная плата

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

Для нанесения рисунка на плату используем шелкографию. Обычно она применяется для выделения компонентов на плате, но кто нам запрещает? В Altium Designer есть отдельная утилита импорта png изображения в шелкографию:

Преобразование изображения

Преобразование изображения

Изображение на плате

Изображение на плате

Упомяну про места для посадки компонентов. Их на плате 2 вида - DIP (микроконтроллер, пайка через дырки), и SMD (всё остальное, пайка на одном слое). У Altium Designer имеется большая библиотека компонентов с заготовленными под них места посадки, однако, я таковых не нашел под мои резисторы, светодиоды, батарейные отсеки и выключатель, поэтому пришлось добавить их самому:

Создание посадочных мест для выключателя

Создание посадочных мест для выключателя

Готово, Теперь разводка.

Сам процесс напоминает игру в конструктор, что-то вроде сборки Лего. Занятие монотонное и медитативное, однако, есть ряд основных правил, которые необходимо соблюдать. Несколько примеров:

  1. Располагать компоненты как можно ближе друг к другу
  2. Использовать большую ширину дорожек для больших нагрузок
  3. Избегать положения элементов, создающих помехи для неустойчивых элементов

Я же придерживался лишь одного правила - правильно поставить светодиоды в зрачках:

Вид платы в PDB-редакторе Altium Designer

Вид платы в PDB-редакторе Altium Designer

Микроконтроллер для аутентичности поставил в голову (Ну вы поняли, типа чипирован), батарейки - на обратную сторону. Выключатель сверху. Резисторы под светодиодами.

После окончания разводки можно посмотреть плату в 3D:

3D, вид спереди

3D, вид спереди

3D, вид сзади

3D, вид сзади

Ну красота, осталось только лишь распечатать. Кстати, а как это сделать?

…И на этом моменте я сильно поплыл, так как ошибок на плате было очень много. Правила, аналогичные правилам проверки схемы, не позволяли экспортировать плату в формат для передачи в производство. Нужно было многое переделывать. Тут я забил на проект и ушел на несколько месяцев…

Второе дыхание

Вернувшись к проекту, я успел забыть половину сделанной работы, да и как пользоваться Altium Designer в целом. Поэтому было принято решение делать всё заново, и в другой ECAD.

Выбор пал на KiCAD — это опенсурсная альтернатива для разработки печатных плат. По сравнению с Altium Designer в нём сильно урезан функционал и нету официальных обучающих видел. Однако, немного разобравшись, мне он понравился больше, чем Altium. Хоть шортсов от разработчиков нет, комьюнити всё же у него большое, гайдов хватает (как официальных, так и от сообщества). А что касается функционала, ну, возможно восьмислойные платы удобнее будет делать в Altium Designer, но для 90% задач подойдёт и KiCAD, а разобраться в нём легче, так как UI сильно проще.

Итак, со вступлением в KiCAD закончил. Все дальнейшие шаги были аналогичны предыдущим пунктам в Altium, поэтому пройдусь кратко:

  1. Создание схемы - она без изменений, но смотрится более наглядно. Учтены миллиметровая и “миливая” сетки. Electrical Rules Checker отработал без ошибок и предупреждений

Электрическая схема в KiCAD

Электрическая схема в KiCAD

  1. Разводка печатной платы. В KiCAD тоже имеется инструмент импорта картинки на плату. Импортировал картинку, расставил и красиво (ну, более-менее) соединил элементы, убрал лишние символы для производства платы. Также проверил чекером, ошибок и предупреждений нет.

PCB-схема

PCB-схема

Всё, отправляем на производство

Заказ печатной платы

Если предыдущие шаги выполнены корректно (а не как у меня в Altium Designer), то дальше проблем возникнуть не должно.

Производителю плат необходимо скинуть файлы платы в двух форматах - gerber (.grb, .grbjob) и drill (.drl):

Файлы на отправку производителю

Файлы на отправку производителю

  • .grb файлы содержат послойное представление элементов платы с соответвующими координатами

  • .drl файлы показывают, где нужно создавать дырки. В моём случае это отверстия под выключатель и пины микроконтроллера.

  • .gbrjob - для объединения всех этих файлов. В нём указано, где и какой это вид слоя.

На данный момент есть несколько производителей печатных плат (PCB Manufactorer). Я выбирал между Китайским JLCPCB и нашим Резонитом. Выбрал наших, так как необходимо поддерживать российское производство, ВВП, да и просто посмотреть, насколько хорошо они работают :)

В ЛК Резонита нужно выбрать вид изделия, загрузить файлы и в несколько шагов проверить корректность платы

Создание проекта в Резоните

Создание проекта в Резоните

И всё, дальше ждать около месяца. За 10 плат вышло ~3к рублей. Просьба тех, кто подумал про рекламную интеграцию, посмотреть цены на JLCPCB - там дешевле.

Платы приехали

Платы приехали

Радости не было предела, когда я увидел готовые изделия. Gerber-файлы были правильно обработаны на производстве, и в целом на взгляд всё выглядит красиво.

Но радовался я недолго, так как увидел G*** на носах котов. Да, я успешно забыл скрыть одну оставшуюся надпись при проектировании PCB. Ну и ладно, не баг, а фича.

Пайка компонентов

Пайка гвоздём

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

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

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

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

Платы приехали

Платы приехали

Программируем микроконтроллеры

Как я упоминал ранее, работать будем с микроконтроллером ATTiny-85. Оказалось, что опыта создания мигающих светодиодов на Ардуино недостаточно, я долго возился с настройкой IDE, драйверами и библиотеками для Attiny-85, но по итогу всё настроил. В качестве программатора был выбран Arduino as ISP, так как у меня был лишний Arduino Nano и на него много гайдов.

Программатор на макетной плате

Программатор на макетной плате

Через несколько итераций отладки стало понятно, что макетная схема очень неудобна для программирования 10 микроконтроллеров, поэтому решено собрать программатор на плате для разработки.

Arduino as ISP, вид спереди

Arduino as ISP, вид спереди

Arduino as ISP, вид сзади

Arduino as ISP, вид сзади

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

Послесловие

Приключение получилось интересное. Я был удивлен, когда после пайки плата заработала с первого раза. Значит, в результате всё оказалось не так уж и сложно. И при этом я не сломал ни один купленный элемент (дорожки платы не в счет, про них далее).

Работа над ошибками

Вот такие ошибки я выделил во время проектирования и изготовления платы:

  • Не надо переобуваться из одной ECAD в другую
  • Закупать компоненты на конечных этапах проектирования, а не после изготовления
  • Правильно выбирать ширину дорожек и контактов, особенно для держателей батареек (в моем случае 1 дорожка отклеилась после пайки)
  • Использовать качественный припой и флюс. Когда я использовал первый попавшийся, из-за высокой температуры плавления было угроблено 2 платы

Спасибо за внимание!


Автор: 🔗@pyfffe

Наш Telegram канал: 🔗REDTalk