개발자의 생활

ESP32_S2_WROVER 개발보드 제작 본문

개인 프로젝트

ESP32_S2_WROVER 개발보드 제작

Developer성현 2024. 2. 13. 00:44

안녕하세요 저번에 Atmega328p 를 사용해서 자작아두이노 개발보드를 제작했는데 이번에는 성능이 더 좋은 ESP32_S2_WROVER 마이크로컨트롤러를 이용해서 저만의 개발보드를 만들어 보았습니다.

 

제가 이 보드를 제작하기 전에 자작보드인 만큼 다른 보드들과 어느정도 차별성을 두고 싶어서 몇 가지 편리한 기능을 넣어봤습니다.

각각의 기능들은 회로도를 보면서 소개시켜드리겠습니다.

ESP32_S2_WROVER개발보드 회로도

이게 전체적인 회로입니다. 차별성을 둔다느니 기능을 추가했다고 했지만 회로도 자체는 별거 없습니다.ㅎㅎ

그래도 각각의 파트별로 간단히 어떤 기능을 담당하는지와 왜 이렇게 설계했는지 등을 소개해드리겠습니다.

참고로 회로 및 PCB설계는 취미이며 독학으로 공부했기 때문에

잘못된 회로와 설명이 있을 수 있다는 점은 가만해주세요

 

 

USB전원 입력 회로

이 부분은 USB포트를 통해 전원을 입력받는 회로입니다.

사실 이 회로는 기존의 아두이노에서 사용되는 회로와 거의 유사합니다.

다만 일반적인 아두이노보드에는 lp2985-33dbvr 레귤레이터를 사용해서 3.3V로 전압을 낮추었지만 저는 AZ1117 을 사용하였습니다. 제가 AZ1117을 사용한 이유는 출력전류 때문입니다. lp2985-33dbvr는 최대 출력전류가 150mA인 반면 AZ1117는 1A로 훨씬 높은 전류를 출력할 수 있기 때문입니다. 일반적으로 아두이노에서 사용하는 Atmega시리즈 칩은 입출력 전압이 5V이고 3.3V는 많이 사용하지 않고 일부 센서를 사용할 때만 연결하기 때문에 많은 양의 전류가 필요하지 않습니다. 하지만 제가 선택한 ESP칩은 입출력 전압이 3.3V이기 때문에 MCU의 모든 핀을 안정적으로 출력할 수 있으려면 충분한 전류가 공급될 수 있어야 하기 때문에 AZ1117 를 사용하였습니다.

 

그 외 LM358(OpAmp)와 MOSFET(IRLML6402 TR)은 PC와 외부 전원을 동시에 연결했을 경우 역전압으로 인해 PC가 손상되는 걸 방지하기 위해 외부전원이 들어오면 USB포트로는 전압이 들어가지 못하도록 차단하는 회로입니다.

추가적으로 아두이노에서 사용한 MOSFET  은 fdn340p이지만 IRLML6402 TR가 구하기 쉬워서 변경하였습니다. 하지만 기본 특성은 동일하기 때문에 동작하는 데는 전혀 지장은 없습니다. 

 

추가적으로 큰 영향은 없지만 3.3V의 전압을 안정시키기 위해 47uF커페시터를 사용하였습니다.

 

 

외부전원 입력회로

이 회로도 아두이노에서 사용하는 회로와 거의 동일하지만 5V레귤레이터를 ncp1117st50t3g 에서 LM7805으로 변경하였습니다. 이유는 단순이 비용절감을 위해 집에 LM7805 칩이 있어어 사용하였습니다.

그리고 회로도에 외부전원 포트에서 입력된 전원에서 바로 POWER핀으로 뽑아놓은 것이 있는데 이것은 보드 자체에서 입력된 전압을 그대로 사용할 수 있도록 설계하였습니다.

 

USB포트

이 부분은 USB포트들을 모놓은 것입니다. 저는 이 보드에 USB_C타입 포트 2개와 B타입 포트 1개를 구성하였는데요 이렇게 구성한 이유는 기능과 편의성 때문 입니다. 먼저 USB_C타입을 2개를 연결한 이유는 업로드용 포트용과 주로HID기능을 사용하기 위한 포트입니다. ESP32_S2_WROVER MCU에는 자체적으로 USB와 연결할 수 있는 핀을 내장하고 있습니다. 이 핀을통해 업로드와 UART통신 그리고 HID기능을 지원하기 때문에 좀더 편하게 사용할 수 있도록 포트를 추가하였습니다. 그리고 USB_B는 순수히 업로드용 입니다. USB_C로 업로드 할 수 있지만 2가지 타입의 포트를 만들어 놓으면 설령 하나의 포트가 만가지거나 케이블 유형으로 인한 사용의 어려움이 없도록 추가한것입니다. 또한 만약 2개 이상의 케이블을 연결하여 서로 각 포트의 전위차로 인해 역전압 문제가 생기지 않도록 다이오드를 연결하였으며 다이오드 중에서 전압강하가 적은 쇼트키베리어 다이오드를 이용하였습니다. 그리고 중요한것은 USB_C포트는 C to C 케이블을 사용하여 전원을 인가할 경우 CC1, CC2핀에 5.1K저항을 GND와 연결을 해줘야지만 기본으로 5V전압을 입력받을 수 있습니다.

 

MCU

이 부분은 MCU에 각 핀번호에 맞게 연결하기 위해 네트라벨을 연결해 놓은 것입니다. 파란색 글씨는 단순히 제가 설계하면서 알아보기 편하게 연결 붙여놓은것입니다. 우측 하단에는 보드에 전원이 인가되었다는걸 확인할 수 있도록 LED를 연결해 놓은것입니다.

참고로 저항값은 10K로 높게 잡았지만 저는 제작비 절감을 위해 예전에 많이 사놓은 10K 저항을 사용한 것입니다. 실제로 전원을 인가하면 LED밝기가 많이 약하게 나옵니다. LED의 특성에 따라 달라지겠지만 2K 정도를 사용하는 것이 좋을 듯합니다.

 

업로드 회로

이 부분은 USB를 통해 MCU에 업로드를 하기 위해 필요한 회로입니다.

일반적인 아두이노에는 atmega32u2 칩을 사용하고 호환보드 및 다양한 보드에서 CH340 칩을 사용하고 있습니다. 하지만 CH340 칩은 PC에 별도로 드라이버를 설치해야 하지만 저는 별도의 드라이버 없이 고속통신도 지원하는 CH343p칩을 사용하였습니다. 또한 회로는 아두이노와는 달리 RESET뿐 아니라 BOOT도 연결되어 있는데 ESP칩은 업로드 타이밍에 맞춰 BOOT버튼과 RESET버튼을 눌러줘야 하는 보드들도 있지만 상당히 번거롭기 때문에 업로드할 때마다 자동으로 눌러줄 수 있도록 설계하였습니다. 이 회로는 조금 복잡한 과정이 있기 때문에 다음에 시간 나면 자세히 포스팅하겠습니다.

 

 

 

이 부분은 제가 있으면 편할 거 같아서 추가한 회로입니다.

제가 ESP32를 사용하면서 아두이노는 5V가 기본 전압이고 ESP는 3.3V가 기본전압이라 두 보드사이에 통신을 할 때나 아두이노에 특화된 모듈을 사용할 때 레벨시프터를 이용해야 해서 불편한 점이 있었습니다. 그래서 이 보드에는 8비트 레벨시프터 2개를 내장시키고 5V출력과 다른 보드의 전압레벨을 맞출 수 있도록 설계하였습니다. 두 가지 모드는 쇼트 커넥터를 연결하여 선택할 수 있도록 핀으로 만들었습니다.

 

테스트 핀

아두이노에는 기본 테스트 LED가 13번 핀으로 하나 연결돼있지만 저는 LED와 버튼 각각 2개씩 연결하고 사용 유무에 따라 스위치로 활성비활성으로 변환할 수 있도록 설계하였습니다.

 

해더 핀

 

MCU와 연결된 핀들을 해더핀으로 연결해 놓은 것입니다.

일단 모든 GPIO핀들을 모두 연결해서 해더핀으로 내보내고 추가적으로 레벨시프터 16핀, 전원핀, 오디오출력포트, 카메라 해더핀으로 나누었습니다.

카메라해더핀은 추후에 카메라 모듈을 만들어서 연결할 수 있도록 할 계획입니다.

 

===회로도 소개는 여기까지입니다. 만약 잘못된 부분이 있다면 알려주시면 감사하겠습니다.===

 

다음은 설계한 PCB를 소개해드리겠습니다.

 

혼자서 독학하다 보니 PCB설계 부분에서 제가 봐도 부족한 부분이 많이 보이네요

기판 사이즈는 130*80mm 사이즈로 기본 사이즈인 100*100mm에서 30mm 넘어서 생산비용이 조금 더 만이 나왔지만 저의 실력으로는 더 작게 만들기는 어려웠습니다. 그래도 개발보드는 클수록 좀 있어 보여서 나쁘진 않은것 같습니다.ㅎㅎ

하단에 납땜하지 안은 해더핀은 7열짜리 해더핀을 찾을 수 없어서 일단 남겨놓고 8열을 잘라서 사용할지 gnd하나를 포기하고 6열짜리로 연결할지 고민 중입니다. 

 

PCB중간중간에 뚫은 홀은 아크릴케이스를 입히기 위해 뚫어놓았습니다. 그냥 이대로 사용해도 좋지만 케이스를 만들면 뒷면의 뾰족한 핀들에 찔릴 수도 있고 사실 조금 더 있어 보이게 만들고 싶었습니다.^^

 

 

아크릴 설계는 FreeCad프로그램을 사용하였습니다.

 

 

최종 완성된 모습입니다!!!

 

어떤가요? 이쁘죠 적어도 제 눈에는 이쁘게 보이네요ㅎㅎ

 

앞으로 이 보드를 사용해서 다양한 프로젝트와 실험들을 할 수 있을 거 같습니다.

다음 학기 캡스톤디자인 시간에 이 보드를 활용해서 프로젝트를 진행하면 좋을 거 같네요

 

이상으로 ESP32_S2_WROVER 개발보드 제작 포스팅을 마치겠습니다.

끝까지 봐주셔서 감사드립니다.