Как разработчик собрал свою первую печатную плату

Автор, разработчик софта, около десяти лет назад немного занимавшийся прошивками для IoT-компании, купил отладочную плату Arduino Nano ESP32 просто из любопытства к железу. Быстро научился мигать светодиодами через Arduino IDE (с помощью LLM), затем перешёл на сборку и прошивку из командной строки со своим привычным редактором nvim. Подключил к плате ЖК-экран и датчик температуры/влажности BME280 по протоколу I2C через макетную плату.

Чтобы уйти от макетной платы к «продакшен»-варианту, автор решил не переносить сразу всю схему, а начать с малого, спроектировать отдельный модуль для датчика BME280. Для схемы и разводки платы выбрал бесплатный KiCad (под лицензией GPL) вместо альтернативы EasyEDA. По даташиту BME280 (техническому документу производителя с распиновкой, температурными режимами и схемами подключения) перенёс в KiCad вариант подключения по I2C, более узкий, чем у купленного на Amazon модуля, который поддерживает и I2C, и SPI.

При переходе от схемы к плате пришлось разбираться с посадочными местами (footprint) компонентов: для самого датчика есть только один вариант, а для резисторов и конденсаторов, множество стандартных типоразмеров (1206, 0805, 0603 и т.д.). Автор выбрал 0805 (около 2×1,25 мм) как предел, ещё пригодный для пайки вручную. Он также разобрался в разнице между компонентами со сквозным монтажом (THT, крупнее, вставляются в отверстия) и компонентами для поверхностного монтажа (SMD, мельче, применяются почти во всей современной электронике). При разводке платы залил свободное место с обеих сторон платы землёй и соединил слои переходными отверстиями (via), по его словам, это распространённый приём, упрощающий разводку.

Компоненты заказывал на DigiKey, но сам датчик BME280 там и на других площадках был в дефиците (заказ растянулся бы на месяцы), пришлось выпаять его из уже купленного модуля Amazon. Из KiCad выгрузил список компонентов (BOM), а для заказа платы, файлы Gerber (топология дорожек) и файл сверления, которые отправил в китайскую компанию JLCPCB. Доставка заняла 2, 3 недели и обошлась меньше чем в 10 долларов.

Для пайки использовал паяльник с регулировкой температуры Hakko FX888DX-010BY (обычно на 650°F/≈343°C) и паяльную станцию с горячим воздухом Quick 861DW, она наносит паяльную пасту, укладывает компоненты, а затем оплавляет припой потоком горячего воздуха; для мелких SMD-компонентов автор выставлял поток на минимум (уровень 15) и температуру 250°C, чтобы не сдуть детали. Сборка платы заняла около 15 минут; больше всего беспокойства вызвал сам датчик, у него восемь контактных площадок под корпусом, не видных при пайке, и был риск случайного замыкания. Автор оценивал шансы на успех примерно в 50/50.

В итоге плата заработала с первого включения без каких-либо переделок и изменений в прошивке, интерфейс I2C совпал с оригинальным, так что новая плата встала на место старой полностью «подключи и работай». Автор пишет, что этот, пусть и простой, опыт дал ему уверенность в способности проектировать рабочие платы и понимание всего процесса от схемы до готового устройства. Следующим шагом он планирует собрать более сложную плату, объединить на одной плате ЖК-экран, ESP32 и BME280, разобравшись при этом, какие компоненты отладочной платы Arduino на самом деле необходимы для работы, а какие нет.

Ключевые факты

  • Разработчик без опыта в электронике спроектировал и собрал свою первую печатную плату, модуль датчика температуры/влажности BME280 для Arduino Nano ESP32
  • Схему и разводку платы делал в бесплатном KiCad, перенеся вариант подключения по I2C прямо из даташита датчика
  • Для мелких компонентов выбрал типоразмер 0805, предел, ещё пригодный для ручной пайки; распространённый датчик BME280 пришлось выпаивать из готового модуля Amazon из-за дефицита на складах
  • Плату изготовила китайская JLCPCB за 2, 3 недели и меньше чем за 10 долларов по Gerber-файлам из KiCad
  • Пайка заняла около 15 минут паяльником и станцией горячего воздуха, и плата заработала с первого включения без единой переделки

Почему это важно

История показывает, что порог входа в физическое прототипирование электроники заметно снизился: бесплатные инструменты вроде KiCad, дешёвое контрактное производство плат (JLCPCB, доставка за пару недель и меньше 10 долларов) и помощь LLM в освоении незнакомых инструментов позволяют разработчику софта без профильного опыта за пару месяцев дойти от мигающего светодиода до собственной работающей платы.

Кому это важно

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

Как это применить

Практический маршрут из статьи: изучить даташит компонента → перенести схему в KiCad → подобрать типоразмер компонентов под свои навыки пайки (0805, комфортный предел для ручной работы) → выгрузить Gerber- и drill-файлы → заказать плату на JLCPCB → паять паяльником с регулировкой температуры и станцией горячего воздуха, следя за потоком воздуха для мелких деталей.

Можно ли доверять

Это личный отчёт автора о собственном проекте с конкретными деталями, названием инструментов, ценами, сроками доставки и типоразмерами компонентов, что делает рассказ достоверным как первоисточник личного опыта; независимой проверки цифр (цена, сроки JLCPCB) в тексте нет, но они правдоподобны и совпадают с типичной практикой хобби-производства плат.

Риски и подводные камни

Автор прямо предупреждает: пайка требует контроля температуры, чтобы не повредить компоненты; работа с компонентами мельче 1206 без должного контроля воздушного потока в станции горячего воздуха рискует просто сдуть детали с платы; дефицит отдельных компонентов (как с датчиком BME280) может сорвать сроки, если не иметь запасного плана вроде разбора готового модуля.

«Однако, к моему удивлению, спроектированная и собранная мной плата заработала с первого раза! Мне не пришлось ни переделывать прошивку, ни добавлять что-либо между платами. Это буквально было решение «подключи и работай», потому что я вывел тот же интерфейс I2C, что использовался изначально.»

— tadasv, автор блога