지난시간에 STM32개발보드 제작에 관해서 말씀드렸는데, 이번에는 역시 비슷한 mcu인 ESP32에 대해서 얘기해 보려고 합니다.

 

ESP32는 Espressif사에서 제작하고 판매하는 microcontroller로 가장 큰 특징은 무선 통신 기능이 기본적으로 내장되어 있다는 것입니다. 모델에 따라 조금씩 다르지만 대부분의 모델들이 블루투스와 와이파이 통신기능을 내장하고 있으며, 소비전력을 아끼기위해서 잠자기(sleep) 기능이 있습니다. 따라서 ESP32는 사물인터넷(Internet of Things, IOT) 프로젝트에 아주 좋습니다. 아래의 두 링크는 Espressif사의 ESP32 소개 사이트 그리고 위키피디아의 관련 문서입니다.

 

https://www.espressif.com/en/products/socs/esp32

특히 위키피디아 문서에는 각 모델별 ESP32에 대한 소개와 특징이 모두 설명되어 있어, 각 모델별로 어떤 차이가 있는지 알 수 있습니다.

 

제가 생각하기에 다른 점보다 ESP32가 좋은 점은 아두이노 개발환경을 그대로 이용해서 ESP32의 firmware를 코딩하고 바로 보드에 다운로드할 수 있다는 점입니다. STM의 경우 전용 개발환경을 사용해야하지만, ESP32는 그럴 필요없이 아두이노 환경에서 바로 작업이 가능합니다. 이점은 아두이노에 익순한 분들은 바로 쉽게 ESP32 firmware 코딩도 가능하다는 이야기 입니다.

 

사용자 입장에서 ESP32를 사용하는 방법은 2가지가 있습니다. ESP32는 칩형태로, 모듈 형태로, 그리고 개발보드 형태로 구입해서 사용할 수 있습니다. 아래의 사진은 ESP32의 칩 사진입니다.

물론 이 상태로 구입해서 사용할수는 있지만 칩을 구동하는데 필요한 다른 요소 (안테나, 메모리 등등)들이 없어서 전문가가 아니면 쉽게 사용할 수 없습니다. 그래서 저처럼 초심자는 모듈을 사용하거나 이미 제품으로 나와있는 개발보드를 구매하면 됩니다. 아래는 어떤 한 종류의 모듈의 사진입니다.

위의 사진은 ESP32-WROOM-32-N4라는 모듈의 사진인데, chip이 메탈케이스에 들어 있으며, 작은 크기의 pcb에 납땜이 되어 있고, pcb의 윗부분에 구불구불한 형태의 pcb 안테나가 있는 것을 볼수 있습니다. 또한 pcb의 가장자리에는 다른 pcb에 납땜할 수 있도록 전극들이 나와있는 것을 볼수 있습니다. (잘 보면 KC인증마크도 있습니다.)

 

개발보드를 직접 제작하는 경우, 위의 모듈을 구입하여 제작하는 pcb에 납땝하여 보드를 제작합니다. 만일 직접 제작할 수 없으면, 이미 제품으로 판매하는 보드를 구입하여 사용할 수도 있습니다. 아래는 그런 보드 중 하나의 사진입니다.

위의 사진에서 보이듯이 각종 입출력핀들이 가장자리에 배치되어 필요시에 연결하여 사용할 수 있고, 전원은 보드 아래의 usb 단자로 제공하며, 역시 이 단자로 firmware를 다운로드 해 줄 수도 있습니다.

 

이제 그럼 모듈을 이용해서 직접 보드를 제작하는 동영상을 소개하겠습니다. 아래는 유튜브의 Robert Feranec 채널에서 업로드한 ESP32 개발보드를 제작하는 방법에 대해서 설명하는 동영상입니다. 동영상에서 하는 그대로 따라하시면서 제작방법을 배울 수 있습니다.

 

https://www.youtube.com/watch?v=S_p0YV-JlfU&list=PL-eoiE4G_DA7a8Fubnn4zBhd4_ik25HWU&index=138&t=10s

 

자 그럼 위의 동영상을 따라서 보드를 직접 제작해보고, 앱이나 서버에 직접 통신하는 IOT 기기를 만들어 보세요.

 

 

이번 시간에는 Microcontroller unit(줄여서 mcu)가 들어간 개발보드를 제작하는 방법에 대해서 소개하겠습니다.

 

보통 개발보드라고 하면 mcu가 포함이 되어 있어서, 어떤 입력 신호를 어떻게 처리하여 출력하는 firmware가 내장된 회로를 말합니다. 여기서 firmware는 제작자가 직접 개발환경을 이용해서 작성한 코드를 말하며, STM32와 같은 mcu를 사용할 경우, 전용 개발환경인 STMCubeIDE(https://www.st.com/en/development-tools/stm32cubeide.html)

같은 것을 설치하여 C언어로 작성합니다. firmware 작성이 다 되었으면 usb 선을 통해서 개발보드에 다운로드하여 보드를 동작합니다.

 

입력과 출력은 제작자가 원하는 대로 선택할 수 있습니다. 가장 간단하게는 디지털 입력(0또는 1)에서 부터 아날로그 입력(전압, 보통 0 ~ 5 V사이 혹은 0 ~ 3.3V사이)이거나 좀 더 복잡하게는 I2C, SPI와 같은 통신 규격을 이용하기도 합니다. I2C의 경우는 디지털로 출력하는 센서 등에서 사용하는 규격입니다.

 

유튜브에는 다양한 개발보드 제작 강의가 있는데 그 중 제가 선택하여 배운 것은 아래의 동영상입니다. 이 동영상은 Phil's Lab이라는 유튜브 채널에서 올린 것인데요, STM32라는 mcu를 포함하는 개발보드 제작에 관한 영상입니다.

 

KiCad STM32 + USB + Buck Converter PCB Design and JLCPCB Assembly (Update) - Phil's Lab #11

https://www.youtube.com/watch?v=C7-8nUU6e3E&list=PL-eoiE4G_DA7a8Fubnn4zBhd4_ik25HWU&index=187&t=7399s

 
 

동영상은 약 2시간반 정도로 상당히 길며, 초심자의 경우 동영상의 강의를 그대로 따라해서 배우면 됩니다. 사용한 pcb 개발을 위해서 사용한 소프트웨어는 KiCAD라는 무료 프로그램이며 동영상에서는 KiCAD7을 사용하였으나 현재 KiCAD의 버전은 9입니다.

 

동영상의 내용은 회로도(schematic)작성, pcb 배선(routing), 부품선정, 제작 등의 순서로 이어지며, 제작은 JLCPCB라는 pcb전문 제작업체에 맡깁니다. (JLCPCB 외주 제작방법에 대해서 다른 시간에 따로 설명하겠습니다.)

 

아래의 동영상은 역시 같은 채널의 동영상으로 STM32의 firmware 작성에 대해서 좀더 자세히 다루고 있습니다.

 

STM32 Programming Tutorial for Custom Hardware | SWD, PWM, USB, SPI - Phil's Lab #13

https://www.youtube.com/watch?v=x_5rYfAyqq0&list=PL-eoiE4G_DA7a8Fubnn4zBhd4_ik25HWU&index=183

 

이 외에도 다양한 주제에 대해서 많은 동영상이 있으니 아래의 채널에 한번 들려보시기 바랍니다.

https://www.youtube.com/@PhilsLab/videos

또한 저자인 Phil은 udemy와 fedevel에도 강의를 올려두었습니다.

https://www.udemy.com/course/learn-kicad-v6-and-stm32-hardware-design/learn/lecture/30606692?start=120#overview

 

 

+ Recent posts