Предыдущая часть
Часть 5: Алгоритмы – реализация и модель ошибок
Предисловие. Сегодня расскажу мало про технику, но много про практическую часть работы с поставщиками компонентов на примере известного сервиса JLCPCB. Расскажу какие возникли сложности и как сумели их решить. Поэтому если вам более по душе технический сюжет, то можете смело пропускать статью.
План статьи: В этой части рассматривается практический процесс изготовления печатной платы нашего устройства:
Подготовка документов для производства: генерация Gerber-файлов, списка компонентов (BOM) и файлов размещения (CPL).
Выбор компонентов в библиотеке JLCPCB: как подобрать доступные компоненты или заменить недоступные, использование опции Global Parts.
Размещение заказа PCB и монтажа: пошагово о заполнении параметров заказа на сервисе JLCPCB, особенности совмещенного заказа платы и сборки.
Стоимость и сроки: анализ итоговой цены, структура расходов (плата, компоненты, работа по монтажу, доставка) и сроки изготовления.
Результаты: полученные платы, качество монтажа, дальнейшие шаги по проверке.
Подготовка к производству: Gerber, BOM, CPL
После разработки схемы и разводки печатной платы (в САПР, например KiCad) наступает этап подготовки файлов для производства. Стандартно нам понадобилось:
Gerber-файлы – это набор файлов, описывающих слои платы (рисунок меди, маски, шелкографии и т.д.) плюс файл сверловки. Обычно их получают экспортом из PCB-системы (в KiCad есть
Plot
для Gerber иDrill Files
для сверловки). Все Gerber-файлы упаковываются в zip-архив.BOM (Bill of Materials) – список компонентов. Он включает позиции, наименование или обозначение компонента (совпадающее со схемой), его тип, значение, корпус, а главное – идентификатор из библиотек производителя (MPN или LCSC код для JLCPCB). BOM можно выгрузить из САПР или заполнить вручную в шаблон Excel от JLCPCB.
CPL (Pick-and-Place файл) – файл с координатами установки компонентов. Этот файл содержит для каждого компонента его рефдиз (RefDes, например U1, R5…), координаты X,Y на плате, слой (Top/Bottom) и угол поворота для автоматической сборки. Формат файла – CSV или XYRS, также выгружается из PCB-системы.
Мы тщательно проверили, что позиции в BOM и CPL совпадают (одинаковые RefDes) и что все нужные детали присутствуют. Особенно важно, чтобы в BOM были указаны корректные номера компонентов LCSC – идентификаторы деталей из каталога JLCPCB. От этого зависит, сможет ли фабрика подобрать нужные компоненты.
После загрузки гербер-файла, БОМа и ЦПЛ пройдет проверка и система создаст виртуальный прототип платы для DFM-анализа.


Выбор компонентов: библиотека JLCPCB и замены
При проектировании устройства мы старались использовать такие компоненты, которые доступны для монтажа на JLCPCB. У JLCPCB есть собственная библиотека (каталог LCSC), из которой они могут напрямую установить детали. Каждый компонент имеет уникальный код (например, Cxxxxx). В идеале, достаточно выбрать из каталога нужные артикулы и указать их в BOM.
Однако, не все необходимые микросхемы были доступны. Например, наш основной микроконтроллер STM32F407IGT6 отсутствует в списке основных складских позиций JLCPCB. То же касалось некоторых датчиков инерциальной системы. В таких случаях есть несколько вариантов:
Поиск аналогов: Иногда можно заменить компонент на похожий, имеющийся в библиотеке. Например, другой MPU или акселерометр, если он совместим по характеристикам и пину.
Global Parts / Extended Library: JLCPCB предлагает расширенный подбор компонентов. Можно указать практически любой MPN, и они попытаются закупить его специально (так называемый Global Sourcing). В нашем случае мы воспользовались этим для STM32 и ключевого сенсора – добавив их MPN в BOM с пометкой "Global".
Свои компоненты (Consigned): есть опция прислать свои детали, но это дольше и сложнее (нужно отправлять физически). Мы ей не пользовались, предпочтя глобальный заказ.

Чтобы упростить подбор, на сайте JLCPCB есть удобный интерфейс BOM-анализатора. Мы загрузили наш BOM-файл, и система автоматически сопоставила позиции с их каталогом.
Рис. 1: Фрагмент списка компонентов из библиотеки JLCPCB. На скриншоте видно пример подбора: некоторые позиции (например, датчик LIS2DE12TR или разъёмы) доступны на складе и имеют указанный LCSC-код. Напротив сложных микросхем (как STM32F407) показано 0 наличия – это значит, деталь не в базовом каталоге. Для таких позиций мы отметили опцию "Global Part" – это позволит JLCPCB закупить нужное количество STM32F407 (минимальная партия 5–6 шт) специально под наш заказ. Таким образом, критически важные микросхемы удалось включить в спецификацию, хотя они и не хранились на складе JLCPCB.
Следует учитывать, что использование Global Parts увеличивает стоимость и время. В нашем случае микроконтроллер и один из датчиков шли как Global (поставка 9–15 дней), а всё остальное – из стандартного ассортимента. Мы проверили, что корпуса всех компонентов поддерживаются автоматическим монтажом (для JLCPCB это обычно SMD-компоненты; наши ключевые микросхемы – в корпусах LQFP, QFN, мелкие элементы – 0603, 0805 резисторы и т.д., что подходит).
Пришлось докупить много компонентов на личный сток, т.к. пока делались одни - заканчивались другие. Вообще процесс заказа компонентов очень динамичный, раз в день заходишь и смотришь чего еще закончилось и требует замены, ищешь замену, делаешь заказ MOQ. В целом интересно как через JLCPCB можно заказывать компоненты от самых разных вендоров напрямую (тот же Texas Instruments).

Размещение заказа на JLCPCB
Когда все файлы готовы и компоненты определены, мы оформили заказ через сайт JLCPCB. Процесс выглядит так:
Загрузка Gerber: На стартовой странице заказа PCB загружаем zip с Gerber-файлами. Система показывает предварительный просмотр платы, определяет размеры. Мы убедились, что размеры верные и плата односторонней сборки (большинство компонентов на топ-стороне).
Параметры платы: Выбираем количество (мы заказали 5 шт, минимально), толщину (1.6 мм стандарт), цвет маски (в нашем случае базовый зеленый, а затем перешли на желтый), тип платы (обычная FR4).
Assembly (монтаж): Отмечаем, что нужен монтаж компонентов. Выбираем, на какой стороне платы монтаж (Top side). Число плат для сборки – мы указали 2 из 5 (нам сразу понадобились 2 собранные экземпляра, остальные 3 — запасные чистые платы).
Загрузка BOM и CPL: Далее система попросит загрузить BOM и CPL файлы. Мы загрузили подготовленные CSV. Интерфейс показал список компонентов и их статус (совпадения с библиотекой, количество, и пр.).
Рис. 2: Интерфейс JLCPCB после загрузки BOM/CPL. Видно, что система распознала 9 позиций как стандартные (LCSC), а 2 позиции как Global. Также отображаются количества компонентов (для 2 собираемых плат, плюс запас, итого 12 штук STM32, сенсора и др. были зарезервированы). Мы проверили каждую строчку: правильный ли идентификатор, не заменился ли автоматически на другой. При необходимости, можно вручную выбрать замену из списка (например, если рекомендованный аналог не подходит).
DFM-проверка: Перед финальным подтверждением заказ проходит автоматическую проверку техпроекта (Design for Manufacturing). JLCPCB сгенерировал отчет, в котором предупредил о паре моментов: все ли компоненты помещаются физически, нет ли конфликтов. В нашем случае критичных замечаний не было – плата спроектирована под их требования.
Подтверждение и оплата: После проверки и выбора компонентов мы подтвердили заказ. Стоимость рассчиталась автоматически (о ней подробно ниже). Оплату произвели онлайн, выбрав доставку (мы выбрали экономичную доставку в РФ, около 2 недель ожидания).
Стоит отметить, что JLCPCB позволяет также заказать только печатные платы без монтажа, но для нашего прототипа удобнее сразу получить готовые собранные модули.

При проведении проверки нужно внимательно смотреть за направлением расположения ножек пинов, при этом ничего страшного если пины будут над другими компонентами - это позволяется.
Стоимость и сроки
Теперь рассмотрим, из чего сложилась итоговая стоимость и сколько времени занял весь процесс.
Рис. 3: Структура стоимости заказа PCB + PCBA. На скриншоте – итоги нашего заказа:
PCB Prototype (5 шт): это цена за сами платы (5 штук 2-слойных, 100x60 мм, стандартные параметры).
Assembly (монтаж 2 шт): сюда вошли работа по установке (установка + фиксированная плата за партию), а также стоимость всех компонентов. Крупнейший вклад внесли STM32F4 (дорогие, да еще и x2 шт + запас), модуль сенсора, разъемы и прочие микросхемы.
Кастомизация: в данном разделе я накликал много разных опций, чтобы посмотреть что вообще могут сделать ребята, там есть даже гибкие PCB.
Доставка: очень недорого, выбрана обычная SF доставка по Китаю.
НДС: Куда же без него.
С учетом всех расходов (MOQ, стоков, издержек) сумма выросла до $3500, устройство оказалось вовсе не таким дешевым, как предполагалось, т.к. только прямые расходы на его прототипирование перевалили за 300тыс рублей.
Как оказалось, монтаж обходится дороже, чем сами платы, особенно из-за специфичных компонентов. Если бы все детали были из базовой библиотеки, цена была бы ниже. Например, global-составляющие добавили порядка $1000 к стоимости (включая избыточные 6 штук STM32, из которых реально пайка 2, остальные про запас). Тем не менее, для прототипа стоимость вполне приемлема, учитывая экономию времени на ручной монтаж.
По срокам получилось следующее:
Выпуск плат занял 3 дня (стандартное время).
Закупка Global Parts – около недели.
Монтаж после наличия всех компонентов – 4–5 дней.
Доставка в РФ – ~10 дней.
В сумме от оплаты до получения прошло около 3 недель. Это чуть дольше, чем просто платы, но вполне неплохо, учитывая индивидуальную закупку микросхем.
Результаты: готовые платы и проверка
Спустя примерно 3 недели мы получили посылку с JLCPCB. Внутри – запаянные антистатические пакеты с нашими платами. Две платы были полностью собраны, остальные три – только печатные платы без компонентов (мы заказали именно так).
Визуальный осмотр показал, что монтаж выполнен аккуратно: все микросхемы ровно размещены, пайка без шунтов и непропаев, мелкие резисторы и конденсаторы на местах. Разъемы и крупные детали тоже установлены верно. Мы выбрали плату и подключили питание – устройство ожило с первого раза, микроконтроллер прошился и выдал первые телеметрические данные по UART. Это свидетельство того, что качество сборки хорошее и компоненты целы.

Конечно, после получения мы провели функциональное тестирование: проверили связь с датчиками, работу питания, вычислительную часть. В одной из следующих статей мы подробно опишем результаты испытаний. Но уже на этапе приемки стало ясно, что сотрудничество с JLCPCB себя оправдало – мы за короткое время получили профессионально изготовленные платы, что позволило сконцентрироваться на программной и алгоритмической части.

Выводы: Печать и монтаж плат через сервис JLCPCB оказались удобными для нашего DIY-проекта. Несмотря на некоторые трудности с компонентной базой (пришлось использовать глобальный заказ на ключевые чипы), итоговый результат – рабочие устройства – стоил затраченных средств. В данном гайде мы прошли все шаги, от подготовки Gerber/BOM до получения устройства, что, надеемся, будет полезно тем, кто планирует заказать свою электронику через подобные сервисы.
Ну и конечно хочется сказать про альтернативы в России - у нас есть несколько сервисов чем-то похожих на китайский JLCPCB, отличия в доступности компонентов, сроках производства и набору дополнительных возможностей кастомизации.
В следующей статье поговорим про выбор элементов питания, экране, UI и способе взаимодействия с устройством с использованием кастомного 3-осевого джойстика.