미세먼지 측정기 PCB를 직접 만들어 봤습니다 – 설계 및 주문
목차
드디어 PCB를 직접 만들어 보다
이번 글에서는 제 입장에서는 정말 흥미로운 프로젝트가 되겠습니다. 그동안 임베디드 SW 개발을 하면서 직접 해본 적이 없는 하드웨어 시스템의 기본인 “PCB”를 직접 제가 스스로 만들어 보기로 했습니다.
PCB를 직접 만들어 보겠다는 생각은 1년도 훨씬 전입니다. 우연한 기회에 JLCPCB 라는 PCB 전문 제조 회사가 있다는 걸 알게 되고 나서 혹시 나도 저렴한 비용으로 PCB 제작을 할 수 있을까? 라는 생각이 머릿속에 스쳐 지나갔습니다.
PCB에 전자 부품들이 실장된 보드는 제가 개발을 시작하면서 수도 없이 봤지만 제가 직접 해본 적은 없습니다. 이 영역은 하드웨어 엔지니어나 PCB 디지이너들의 영역이고 제가 섣불리 접근할 수 없기 때문이죠. 특히 PCB 디자인은 “아트웍(ARTWORK)” 이라는 전문분야라서 저는 당연히 해볼 일이 거의 없습니다.
그런데 현재는 시대가 많이 달라졌군요. 무료 툴이 등장하고 AI 라는 좋은 개발 도구들이 옆에 있습니다. 또한 PCB를 저렴한 비용에 소량으로 제작하는 것도 충분히 가능해졌군요.
그래서 도전해봤습니다. 저같이 SW 개발만 했던 사람이 직접 PCB를 제작하는 것을 말이지요.
어떤 PCB를 제작할까?
일단 PCB를 제작해 보기로 결심했는데 어떤 PCB를 제작할지는 바로 감이 안오더군요. 아무 PCB나 만들 수 없고 간단한 프로젝트를 진행해야 될꺼 같은데 제 상황상 복잡한 회로를 PCB로 만들 수가 없어서(처음이기도 하고) 최대한 간단한 회로를 꾸며서 PCB로 만들어 보기로 했습니다.
그럴려면 작은 MCU에 이런 저런 주변 장치나 센서들을 연결해서 제어해 보는 게 어떨까? 라는 생각이 들더군요. 그래서 가장 가성비 좋은 ESP32 를 메인 MCU로 하고 센서들을 붙힌다음 남은 GPIO들을 확장하여 연결할 수 있는 실습용 보드를 만들기로 했습니다.

그래서 위와 같이 어떤 보드를 만들지 간단하게 작성하였네요. ESP32-S3-WROOM 모듈을 써서 WiFi 나 BLE 통신이 가능하고 먼지 센서와 OLED, 온습도 센서를 부착하기로 했습니다. 기타 LED, 부저, 확장 핀 헤더를 연결하여 쓰기로 하고요.
요렇게 구상하고 PCB는 최대한 작게 설계해 보기로 하였습니다.
이번 프로젝트에서 모든 회로 설계 및 PCB 제작은 JLCPCB 를 통해 한번 해보기로 했습니다. JLCPCB 에서는 EasyEDA 라는 무료 툴을 배포하고 있고 이 툴로 회로 설계 및 PCB 거버 파일 생성을 비교적 손쉽게 할 수 있다고 하네요. 또한 EasyEDA로 바로 PCB 주문 및 SMT 까지 한번에 해결 할 수 있다고 하니 저같이 초보자의 입장에서는 더없이 편리할 거 같습니다. 또한 제작 비용도 저렴하다고 하니깐요.
EasyEDA 설치 및 JLCPCB 회원 가입
대략적인 PCB의 구상이 끝났으니 이제 회로부터 그려야 될거 같습니다. 그런데 대학 다닐때 회로 약간 그려본거 말고는 한번도 그려본적이 없어서 난감하더군요.
일단 PCB를 제작하기 위해 필요한 EasyEDA를 다운로드 및 설치해야 합니다. (온라인 웹 버전도 있지만 PC에서 사용하는게 좀더 편리해서 PC 버전을 설치합니다)
EasyEDA는 JLCPCB 에서 직접 개발하여 배포하는 무료 툴입니다. 이 툴로 회로 설계 및 PCB 제작까지 한번에 하는게 가능합니다. 그래서 일단 다운로드 하여 설치합니다.

다운로드를 할때 버전은 무료 버전인 Pro 버전을 사용하면 됩니다. 굳이 유료 버전을 사용할 필요는 없어 보입니다.

참고로 EasyEDA를 사용하기 위해서는 일단 회원 가입이 필요합니다. 메일 주소로 가입한 다음에 Username 을 입력해 주면 가입이 끝나네요. 가입은 간단합니다.

가입을 한다음에 인증서 파일을 활성화 시킨 다음에 다운로드 하여 내 PC에 복사해서 넣어둬야 합니다. 그래야 EasyEDA를 사용할 수 있습니다. 살짝 번거롭지만 무료로 쓸 수 있는거에 감사하여 이정도만 수고해 주면 됩니다.

요렇게 활성화 된 파일을 다운로드 하여 EasyEDA 경로에 붙여넣어주면 됩니다.

그럼 이렇게 정상적으로 실행이 되면 회로 설계 및 PCB 제작을 위한 준비가 끝납니다.
회로설계 초보자는 어떻게 해야 하지?
일단 진행 초입부터 막히기 시작했습니다. 회로 설계를 해야 하는데 워낙 오래 되기도 했고 기초 지식을 다 까먹어서 시간이 걸릴거 같다는 생각이 들었습니다.
공부를 해야 할까? 했지만 시간이 충분한건 아닌거 같아서 일단 시대의 흐름에 맞게 “AI”를 활용하면 어떨까? 라는 생각이 들었습니다. 그래서 ChatGPT를 통해 회로를 그려 줄 수 있는지 물어봤습니다.
오! 원하는 대로 그려서 결과물까지 준다고 하네요. 그래서 ChatGPT와 씨름하면서 조금씩 진행했지만…. 이틀 동안 결국 뱅글뱅글 돌기만 하네요. 일정 파트만 만들고 다시 원점으로 회기하고… 반복입니다.
에휴 그래서 일단 AI에게 회로 설계를 맡기는건 일단 포기했습니다. 그래서 “제미나이” 에게 물어보니 자기는 회로 설계 파일까지 만들어주진 못하지만 ESP32 기반의 회로는 그리기 쉽기 때문에 알려준 대로 따라하면 금방 그린다고 합니다. 그래서 직접 그려보기로 했습니다. (제미나이 무료 버전으로 진행)
EasyEDA 에서 직접 그리다
오랜만에 해보지만 일단 도전했습니다. 꽤 시간이 걸릴 줄 알았는데 생각보다 회로가 복잡하진 않더군요. 제미나이에게 물어보면서 틈틈히 여유시간에 하나 둘씩 그려보니 2페이지 분량의 회로도가 완성되었습니다.
ESP32는 모듈을 사용하기로 했습니다. 초보자이고 직접 회로를 구성하려면 ESP32의 기본 기능 중에 WiFi나 블루투스 등의 무선 통신 관련 회로를 직접 꾸미기엔 부담스럽더군요.
그래서 선택한 모듈이 “ESP32-S3-WROOM-1-N16R8” 입니다. 아마 ESP32-S3-WROOM-1 시리즈 모듈 중에서는 스펙이 좋은 편입니다. PSRAM 이 8 MB 이고 Flash 용량이 16 MB 라서 실습용으로는 넉넉한 스펙입니다.
I2C, I2S, SPI, UART 등의 기본 통신 인터페이스 제공에 802.11n 2.4Ghz WiFi 기본 탑재, BLE 5 도 기본으로 갖추고 있어서 IoT 용 센서 통신에도 매우 적합하네요.
회로 설계시에도 “부품 단가” 계산을 해야 하는데요, EasyEDA의 편리함 중에 하나가 전세계의 모든 부품의 컴포넌트가 제공이 되서 라이브러리에서 손쉽게 불러와서 회로를 그릴 수 있다는 점입니다. 또한 해당 부품별로 단가를 바로 알 수 있어서 매우 편리한거 같습니다(저같이 소량으로 PCB 제작 및 SMT 까지 해보려는 사람들에게 매우 유용하네요)
EasyEDA 를 통해서 제휴산인 LCSC 의 ESP32-S3-WROOM-1-N16R8 의 단가는 1개당 5.41 $ 정도 됩니다. 이게 주문 수량이 많을 수록 싸지는 구조 같은데 수량이 많아지면 더 저렴하게 구입도 가능한거 같네요.
물론 부품 구매 및 SMT를 안해도 상관없는거 같습니다. PCB만 주문해도 되고 부품도 구매하고 싶은 거만 구매해도 됩니다. EasyEDA를 통해서 회로를 그리면 바로 PCB 거버도 만들 수 있고 PCB 견적 및 부품 주문, SMT 까지 한번에 할 수 있는 편리함이 장점인 듯 합니다.
일단 ESP32 모듈을 선정했으니 제미나이 도움 받아가면서 ESP32 모듈 회로 및 전원 쪽 회로를 1페이지에 그렸습니다.

실로 오랜만에 해보니 감회가 새롭긴 하네요 ㅎㅎ 20년 전에 해보고 처음인데 모든게 낯설었습니다. 먼저 각 부품과 소자를 회로도 상에 그려야 하는데 Shift + F 키를 누르면 검색하여 부품들을 실장할 수 있습니다.

EasyEDA 에서 Shift + F 키를 누르면 나오는 화면입니다. 여기서 부품 이름을 검색하거나 LCSC 번호로 조회하면 손쉽게 원하는 부품의 컴포넌트를 찾을 수 있습니다. 위 화면에서도 보이듯이 LCSC의 부품 재고 수량과 단가가 표시되기 때문에 꽤나 유용한거 같네요. 검색 후에 나온 부품의 “Place” 버튼을 누르면 EasyEDA 의 스키메틱 화면에 바로 넣을 수 있습니다.
이렇게 모든 부품을 검색하여 넣어주면 PCB 제작도 손쉽게 할 수 있습니다. 저도 그래서 기본 소자들과 핀 헤더 등의 부품들도 LCSC의 재고와 단가 파악하여 넣어 줬네요.

그 다음에 그린 회로가 핀 헤더, 확장 핀 헤더, 온습도 센서 회로, LED 제어 회로, 부저 회로 등입니다. 요것도 그릴때 제미나이 도움 받아가면서 그렸네요. 일단 핀 헤더의 경우에는 먼지 측정 센서를 연결할 예정이고 확장 핀 헤더에는 OLED 와 기타 여분의 GPIO 등을 연결하여 사용할 수 있게 구성하였습니다.
온습도 센서는 먼지 측정 후에 현재 온습도 값이 어떤지를 같이 넣으면 좋을꺼 같아서 구성했습니다. 부저의 경우에는 굳이 필요할까? 를 고민하다가 일정 조건이 되면 부저를 울리게끔 하는게 어떨까? 라는 생각이 들어서 구성하였습니다.
생각보다 회로가 간단하죠? 저도 처음에는 회로 그리는게 분량이 많고 어려울줄 알았으나 ESP32 모듈 때문인지 꽤 간단하게 구성하였습니다. 이제 회로를 토대로 PCB 를 만들 차례입니다.
EasyEDA로 PCB 를 손쉽게 제작하기
자 이제 회로 설계를 끝냈으니 PCB를 직접 만들어볼 차례입니다. 제가 알아본 바 EasyEDA 에서 회로 설계가 되었다면 PCB 설계는 쉽게 할 수 있다고 하더군요. 아직 경험해 보지 못했으니 직접 해볼 차례입니다.
일단 회로가 이상 없는지 체크 부터 해야 합니다.

회로가 다 작성되었더라도 실제 연결이 이상없는지 반드시 체크를 해야 합니다. EasyEDA 에서는 Design – Check DRC 를 누르면 됩니다.

그럼 위의 그림과 같이 화면 하단에 실제 결과가 나타납니다. Error 나 Warning 이 나오지 않았다면 실제 연결에 이상이 없다고 보면 됩니다. 저는 Info 에서 4건이 발생했는데 알아보니 핀 네이밍 규칙 권고여서 크게 상관없을꺼 같아 그냥 넘어가기로 했습니다. 만약 Error 나 Warning 같은 메시지가 나오면 수정이 되어야 합니다.
스키메틱을 PCB Layout 으로 변환하기
회로 검증이 끝났으니 바로 PCB로 변환해 볼까요? 생각보다 PCB로 전환은 간단합니다.

Design – Update/Convert Schmetic to PCB를 눌러주면 됩니다. 그런 다음에 DRC 체크 다시 한번하면 PCB Layout 화면이 짠 나타납니다.

아 그런데 화면을 보니 뭔가 너저분하고 엉망 인거 같아 보이네요. 제가 기대했던 자동 PCB는 아닌듯 합니다. 그래서 찾아보니… 일단 어느정도 수동으로 부품 배치를 해야 하는군요.

일단 먼저 PCB의 크기를 대략 정하고 PCB의 경계 라인을 그려줘야 합니다. EasyEDA의 PCB Layout 화면의 오른쪽에 보시면 위의 그림과 같이 Other – Board Outline Layer 라는게 있습니다. 이걸 선택하여 PCB 외곽 경계를 그려줍니다.

처음에는 현재 배치된 부품의 외곽에 아웃라인을 그리고 라우팅을 자동으로 연결하였더니 오호라~ 뭔가 PCB 패턴으로 그려줍니다.

Route – Auto Routing 을 클릭하면 자동으로 배치를 하는 작업을 진행합니다. 그런데 PCB 사이즈가 너무 커서 수동으로 아웃라인을 작게 그려주고 부품 배치를 다시 하고 나서 Auto Routing 을 해줬는데 위 그림같이 PCB 패턴이 엉망이 되버리더군요. 이럴땐 Design – Unroute – All 하면 이전에 그려놨던 라우팅을 전부 삭제합니다. 그런 다음에 다시 Auto Routing 을 해주면 아주 예쁘게 라우팅을 자동으로 진행해 줍니다.

요게 최종으로 완성된 저만의 PCB 입니다. DRC 체크를 해서 이상이 없는걸 확인했네요. 위 그림을 보시면 2층짜리 PCB 이고 Top 이 붉은 색 라우팅, Bottom 이 파란색 라우팅 입니다. 사이즈는 가로 750mm X 세로 280 mm 정도 되네요.
생각보다 쉽고 잘 만들어주는 EasyEDA를 보고 있노라니 놀랍습니다. 생전 처음으로 PCB를 직접 만들어 보는 건데 감회가 새롭군요.
EasyEDA 는 이 상태에서 PCB를 3D 로 모델링 하는 기능이 있습니다. 요걸 실행시켜 보니

이야~ 이건 뭐 신세계네요 ㅎㅎ 무료 툴이 이정도로 3D 로 모델링 해서 보여주다니 감격스럽습니다. 확실히 시대가 좋아진 느낌입니다.
JLCPCB에 PCB 및 SMT 주문 하기
자 지금까지 EasyEDA로 회로설계 및 PCB를 제작하는 과정을 보여드렸습니다. 생각보다 쉽게 진행된거 같습니다. 이제 만든 PCB를 직접 JLCPCB에 주문 해보도록 하지요.
EasyEDA 에는 JLCPCB에 바로 주문을 할 수 있는 메뉴가 있습니다. 따라서 바로 주문이 가능하지만 EasyEDA 뿐만 아니라 다른 도구로 JLCPCB에 주문을 할 수도 있으니 JLCPCB의 온라인 상에서 직접 수동으로 주문을 해보도록 하지요.
일단 JLCPCB는 PCB만 제작하는 것과 SMT 까지 같이 할 수 있는 옵션이 존재합니다. 예전에는 소량으로 PCB 제작 및 SMT 를 주문하는게 일반 개인의 경우에는 나름 장벽이 존재했습니다.
PCB도 최소 수량이 주문되어야 주문을 받아주는 업체들이 대다수였으며 SMT 의 경우에도 일반 개인이 직접 하기에는 쉽지 않은 상황이었습니다. 그런에 이번에 JLCPCB에 주문을 해보니 최소 5장 이상만 되면 주문이 가능한거 같네요.
또한 SMT도 내가 부품을 보내야 될 필요가 없습니다. JLCPCB 에서 부품까지 같이 주문할 수 있으며 부품도 하고 싶은 부품만 해도 됩니다. 이번에는 처음이라서 전부 부품까지 같이 구매하여 SMT 까지 주문을 하겠지만 이후에는 납땜하기 어려운 RLC 소자 정도만 하면 비용을 아낄 수 있을거 같습니다. ESP32 모듈은 제가 직접 사서 납땜해도 되겠네요.
PCB를 주문하기 위한 사전 준비
EasyEDA를 사용하면 사실 클릭 한번에 PCB 주문 및 SMT 까지 하는게 가능합니다.

Export 메뉴에 가면 위와 같이 “Order PCB Layout at JLCPCB” 를 클릭만 하면 바로 내 JLCPCB 계정에 연동되어 주문이 진행됩니다. 꽤나 편리한데 이번에는 수동으로 주문을 해보도록 하지요.
먼저 반드시 JLCPCB에 가입이 되있어야 합니다. JLCPCB의 계정이 있다면 접속하여 “주문하기” 버튼을 누르면 진행이 됩니다.

웹사이트는 기본으로 영어인데 한국어로도 사용이 가능합니다.
그 다음에 주문에 필요한 PCB 거버 파일과 CPL, BOM 파일들이 각각 필요합니다. EasyEDA 를 예를 들면 거버 파일은

Export – PCB Fabrication File(Gerber) 를 선택하여 zip 파일을 생성해 주면 됩니다. 그 다음에 CPL, BOM 파일들도 밑에 차례대로 생성 메뉴가 있으니 차례대로 생성해 주면 끝입니다. 엄청 쉽죠?

CPL 이나 BOM 파일들도 xlsx 파일로 생성해 주면 됩니다.
JLCPCB 에서 거버, CPL, BOM 업로드 하고 주문하기
그럼 JLCPCB 주문 화면에서 직접 주문을 해보도록 하지요.

초기 주문 화면을 들어가면 위와 같이 나옵니다. 여기서 거버 파일을 올려 줍니다.

그러면 위와 같이 내가 만든 거버 파일을 토대로 PCB 모습을 리모델링 하여 보여줍니다. 이 상태에서 PCB 수량만 설정해 주세요. 저는 5장으로 선택했습니다. 레이어는 2층 짜리이므로 그대로 놔뒀습니다.

다음엔 PCB 사양인데 저는 PCB 색상만 “흰색” 으로 바꿨습니다. 흰색으로 하면 시간이 조금 더 걸리는 듯 합니다. 다른건 안건드리고 그대로 나뒀습니다.

아래로 내려가면 PCB 어셈블리 가 나옵니다 이건 SMT 작업을 의미하는데 여기서 이 옵션을 켜주면 위와 같이 나타납니다. 여기선 별다른게 없으므로 통과

이 다음에도 별다른건 건드릴께 없는데 부품 선택을 “고객 직접 진행” 으로 선택해 주세요. JLCPCB 대행으로 하면 JLCPCB에서 부품을 알아서 선택해 주는 서비스인데 수수료가 붙게 됩니다.

그럼 다음에 조립 서비스 이용약관을 동의하고 오른쪽에 “다음” 버튼을 누르면 됩니다.

그럼 위와 같이 PCB을 다시 리모델링 해서 보여줍니다. “다음” 으로 넘어갑니다.

그러면 위와 같이 BOM 항목이 나타나는데 여기서 생성해 놓은 CPL과 BOM 파일들을 업로드 하면 됩니다. 그 다음에 “프로세스 BOM 및 CPL” 버튼을 누르면 됩니다.

그럼 SMT 진행시에 부품을 직접 선택할 수 있습니다. 저는 일단 모든 부품에 대해서 JLCPCB 통해 주문하고 SMT 까지 진행하는 걸로 선택했습니다.
나중에는 비싼 부품을 제외하고 납땜하기 어려우면서 저렴한 부품들만 선택하면 비용을 줄일 수 있을거 같습니다.

그럼 이렇게 부품 리스트와 모델링한 PCB 및 부품 실장 모습이 나타납니다. 다음으로 넘어가면 됩니다.

마지막으로 견적 및 주문에 대한 금액을 확인한 다음에 “장바구니에 저장” 을 누르면 내 주문 내역이 장바구니로 들어가게 됩니다. 참고로 위 총 가격은 10장 PCB + SMT 10장 가격입니다.(이렇게 수량을 다르게 해도 장바구니에서 수량을 언제든 조절할 수 있습니다)
또한 “제품 설명” 에는 JLCPCB가 중국에 있기 때문에 국내로 통관 절차를 거치는데 이때 어떤 물품으로 통관을 할지 선택할 수 있습니다. 저는 여기서 Development Board 라고 선택했습니다.

자 그럼 내 장바구니에 주문 내역이 저장이 됩니다. 여기서 장바구니에 담긴 내역을 결제를 진행하면 됩니다. 일단 배송비까지 해서 최종 주문 금액이 135$ 정도 되는데 처음에는 160$ 정도를 했다가 국내 통관시 관세 기준이 150$ 이하라고 알고 있어서 혹시나 하는 마음에 150$ 이하로 조절하였습니다. 그래서 처음에는 10장으로 했다가 5장으로 변경을 했습니다.
여기까지 확정이 되었으면 “안전한 결제”를 누르면 됩니다.

그럼 “배송주소”를 입력해야 합니다. 저는 “개인고객”으로 선택했고 이름을 포함하여 모든 정보는 “영문”으로 적었네요. 아무래도 중국에서 오다보니 영문으로 적는게 맞다 생각했습니다. 영문주소는 “네이버 영문 주소 변환”을 이용하면 됩니다.
그런 다음에 “저장” 을 누르면 됩니다.

다음으로 배송 방법이 있는데 저는 약간 더 저렴한 FedEx 를 선택했습니다. 어차피 하루 차이인데 좀더 저렴한게 좋지요. 그런 다음에 “진행하기” 로 넘어갑니다.

다음으로 최종 결제를 진행하면 됩니다. 결제는 Paypal 이나 신용카드 등으로 결제가 가능한데 저는 신용카드로 결제를 했습니다. 결제 부분은 별도로 설명드릴 필요가 없어서 패스. 결제가 성공하면 위와 같이 성공했다는 메시지가 나옵니다.

내 주문 내역을 보면 위와 같이 진행중인 주문 내역이 나타납니다. 여기서 보면 “검토중” 이라는 메시지가 나오는데 업로드한 파일을 JLCPCB에서 검토를 하고 있단 뜻입니다. 약간의 시간이 지나면 내 메일로 관련 내용이 날아옵니다.

이 메일을 받으면 업로드한 데이터의 검증이 끝났다는 뜻입니다. 이때 주문 내역을 확인해 보니

현재 주문한 PCB가 제작이 들어갔다고 하는군요. 드디어 PCB 주문이 끝이 났습니다.
자 드디어 직접 그리고 설계한 PCB 제작 완료 및 주문이 완료되었습니다. 이 과정을 직접 혼자서 해보다니 감회가 새롭군요. 개발 인생 처음으로 직접 만든 PCB 1호가 될거 같습니다.
이제 대략 2주 정도 기다리면 주문한 PCB가 집으로 도착하겠지요? 제작한 PCB을 받고 나서 잘 동작하는지 여부를 확인해 봐야 겠습니다.
이후 동작 여부 및 실습은 별도의 글로 올려 보도록 하겠습니다. 저 스스로 수고가 많았네요 ㅎㅎ

