"์ด? ํด๋ฆญ ํ๋ฒ์ ๋ช ๋ น์ด ์์ฑ?" ๋ง๋ง ํ๋ฉด ์ปดํจํฐ๊ฐ ์์ง์ด๋ ๋ฏธ์น ๋น๋ฐ ํด
์๋์ด๋ ธ(Arduino)๋ก ์ ์๊ณต์์ด๋ ๊ฐ๋จํ ๋ก๋ด์ ๋ง๋ค๋ค ๋ณด๋ฉด ํ๊ณ์ ๋ถ๋ชํ๋ ์๊ฐ์ด ์ต๋๋ค. "๋ชจํฐ๋ฅผ ๋ ์ ๋ฐํ๊ฒ ์ ์ดํ๊ณ ์ถ๊ณ , ์ผ์ ๋ฐ์ดํฐ๋ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋๋ฐ ์ฐ์ฐ ์๋๊ฐ ์ ์ด๋ ๊ฒ ๋๋ฆฌ์ง?"
์ด๋ ์ ์ธ๊ณ ๋ฉ์ด์ปค๋ค๊ณผ ์์ง๋์ด๋ค์ด ์ ์ ๋ชจ์ ์ถ์ฒํ๋ ๋ํ์ ์นฉ์ด ๋ฐ๋ก STM32์ ๋๋ค. ๋๋ก , 3D ํ๋ฆฐํฐ, 6๊ด์ ๋ก๋ดํ, ์ค๋งํธํ ๊ฐ์ ๊น์ง ์ ๋ค์ด๊ฐ๋ ๊ณณ์ด ์๋ ์ด ์นฉ, ๋์ฒด ๋ฌด์์ด ๊ทธ๋ ๊ฒ ๋๋จํ ๊น์?
์ฒ์ ์ ํ๋ ์ด๋ณด์๋ ๋๋์ด์ ๋ง์ถฐ ํต์ฌ ๊ธฐ๋ฅ(CPU·GPIO·PWM·ADC)๋ถํฐ ์ค์ ํ๋ก๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ๊น์ง ํ ๋ฐฉ์ ์ ๋ฆฌํด ๋๋ฆฝ๋๋ค!
STM32๋ ํ๋์ค ๋ฐ๋์ฒด ํ์ฌ์ธ STMicroelectronics์ฌ์์ ๋ง๋ 32๋นํธ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ(MCU)์ ๋๋ค.
์๋์ด๋ ธ(์: ์ฐ๋ ธ): 8๋นํธ ์นฉ(ATmega328P)์ ์จ์ ๋๊ฐ ์กฐ๊ธ ๋จ์ํฉ๋๋ค. ๊ฐ๋จํ LED ์ผ๊ธฐ๋ ์ค์์น ์ฝ๊ธฐ์ ์ข์ง๋ง ๋ณต์กํ ์ฐ์ฐ์ ๋ฒ๊ฑฐ์ํฉ๋๋ค.
STM32: ์ค๋งํธํฐ์ด๋ ๊ณ ์ฑ๋ฅ ์ฅ๋น์ ์ฐ๋ ARM Cortex-M ์ฝ์ด๋ฅผ ํ์ฌํ์ฌ, ์๋์ด๋ ธ๋ณด๋ค ์์ญ ๋ฐฐ ๋น ๋ฅธ ์๋(์์ญ~์๋ฐฑ MHz)๋ก ๋ง๋ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด์๋ ๊ฐ๊ฒฉ์ ๋ช ์ฒ ์~๋ช ๋ง ์๋๋ก ์ ๋ ดํด ๊ฐ์ฑ๋น๊ฐ ํญ๋ฐํฉ๋๋ค.
๋ก๋ด์ด๋ ์ ์๊ธฐ๊ธฐ๋ฅผ ๋ง๋ค ๋ STM32 ๋ด๋ถ์ ๋ค์ 4๊ฐ์ง ๊ธฐ๋ฅ์ ์ฃผ๋ก ํ์ฉํ๊ฒ ๋ฉ๋๋ค.
① CPU (์ค์์ฒ๋ฆฌ์ฅ์น): ๋ชจ๋ ๋ช ๋ น์ ๊ณ์ฐํ๊ณ ํ๋จํ๋ ์นฉ์ '๋'์ ๋๋ค. ์๋์ด๋ ธ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ๋ก๋ด์ ์์ง์์ ์ ์ดํฉ๋๋ค.
② GPIO (General Purpose Input/Output - ๋ฒ์ฉ ์ ์ถ๋ ฅ): ์นฉ์ '์๊ณผ ๋ฐ'์ ๋๋ค. ์ผ์์ ์ ํธ๋ฅผ ์ฝ์ด์ค๊ฑฐ๋(์ ๋ ฅ), LED๋ฅผ ์ผ๊ณ ๋ฆด๋ ์ด๋ฅผ ๋์์ํค๋(์ถ๋ ฅ) ๋์งํธ ํ ์ญํ ์ ํฉ๋๋ค.
③ PWM (Pulse Width Modulation - ํ์ค ํญ ๋ณ์กฐ): ๋ชจํฐ์ ์๋๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ์๋ณด๋ชจํฐ์ ๊ฐ๋๋ฅผ ์ ๋ฐํ๊ฒ ์ ์ดํ ๋ ์ฐ๋ ํ์ ๊ธฐ๋ฅ์ ๋๋ค. ๋ก๋ดํ์ ๋ถ๋๋ฝ๊ฒ ์์ง์ด๋ ค๋ฉด PWM ์ ์ด๊ฐ ํ์์ ์ ๋๋ค.
④ ADC (Analog-to-Digital Converter - ์๋ ๋ก๊ทธ-๋์งํธ ๋ณํ๊ธฐ): ์ธ์์ ์๋ ๋ก๊ทธ ์ ํธ(์จ๋, ์กฐ๋, ๊ฐ๋ณ์ ํญ์ ์ ์ ๋ณํ ๋ฑ)๋ฅผ ์นฉ์ด ์ดํดํ ์ ์๋ ๋์งํธ ์ซ์๋ก ๋ฐ๊ฟ์ฃผ๋ '๋ฒ์ญ๊ฐ'์ ๋๋ค.
์์ ํ ๊ฐ๋ฐ ๋ณด๋(Blue Pill ๋ฑ)๋ฅผ ์ฐ๋ ๊ฒ๋ ์ข์ง๋ง, ์ง์ ์ปค์คํ PCB๋ฅผ ๋ง๋ค๊ฑฐ๋ ์นฉ์ ์ฌ์ ๋ ๋ฐ๋์ ๋ค์ด๊ฐ์ผ ํ๋ '์ต์ ํ๋ก ๊ตฌ์ฑ์์'๊ฐ ์์ต๋๋ค.
STM32๋ ๋ณดํต 3.3V ์ ์์ผ๋ก ์๋ํฉ๋๋ค.
์ธ๋ถ 5V๋ 12V๋ฅผ ๋ฐ์ 3.3V๋ก ๋ฎ์ถฐ์ฃผ๋ ๋ ๊ทค๋ ์ดํฐ(์: AMS1117-3.3)์ ์ ์ ๋ ธ์ด์ฆ๋ฅผ ์ก์์ค ๋์ปคํ๋ง ์ปคํจ์ํฐ(0.1ยตF)๋ฅผ VCC์ GND ์ฌ์ด์ ๋ฐ๋์ ์ด์ดํ ๋ฐฐ์นํด์ผ ์นฉ์ด ๋ค์ด๋์ง ์๊ณ ์์ ์ ์ผ๋ก ๊ตฌ๋๋ฉ๋๋ค.
์นฉ์ ๊ฐ์ ๋ก ์ฌ๋ถํ ํ ์ ์๋ ์ค์์น์ 10kโฆ ํ์ ์ ํญ, 0.1ยตF ์ปคํจ์ํฐ๋ฅผ NRST ํ์ ์ฐ๊ฒฐํฉ๋๋ค.
์ธ๋ถ ํฌ๋ฆฌ์คํ(HSE)์ ๋ฌ์ ์ ํํ ์๊ฐ ๊ธฐ์ค์ ์ก์์ค๋๋ค.
ํ๋ก๊ทธ๋จ์ ๋ฃ๊ณ ๋๋ฒ๊น ํ ๋๋ UART๋ SWD(Serial Wire Debug) ๋ฐฉ์(DIO, CLK, GND, VCC 4๊ฐ๋ฅ)์ ์ฌ์ฉํ๋ฏ๋ก, ์ด ํ๋ค์ ์ธ๋ถ ์ปค๋ฅํฐ๋ก ๋นผ๋๋ ๊ฒ์ด ํ๋ก ์ค๊ณ์ ํต์ฌ์ ๋๋ค.
๐ก PCB ์ ์ ํ: ์ด ํ๋ก๋ค์ ์ง์ ๊ทธ๋ฆฌ๊ธฐ ๋ฒ๊ฑฐ๋กญ๋ค๋ฉด, ์ด๊ธฐ์๋ EasyEDA๋ KiCad ๊ฐ์ ํด์์ STM32 ์ต์ ํ๋ก ์คํ์์ค ๋ ํผ๋ฐ์ค ๋์์ธ์ ์ฐธ๊ณ ํด ๋ฐฐ์ (Routing)์ ์์ํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค. ๊ฑฐ๋ฒ ํ์ผ ์ถ์ถ ํ JLCPCB๋ PCBWay ๊ฐ์ ์ ๋ฌธ ๊ฐ์ฑ๋น ์ ์ฒด์ ๋งก๊ธฐ๋ฉด ๋ช ๋ฌ๋ฌ์ ๊ธฐํ์ ๋ฐ์๋ณผ ์ ์์ต๋๋ค.
์ฒ์์๋ ๋ ์ง์คํฐ ์ค์ ์ด๋ ๋ณต์กํ ํ๋งต ๋๋ฌธ์ ์ง์ ์ฅ๋ฒฝ์ด ๋๊ปด์ง ์ ์์ง๋ง, STM32CubeIDE ๊ฐ์ ๊ณต์ ํด์ ์ฌ์ฉํ๋ฉด ๋ง์ฐ์ค ํด๋ฆญ ๋ช ๋ฒ์ผ๋ก ํ ๊ธฐ๋ฅ์ ์ค์ (Pinout & Configuration)ํ ์ ์์ด ์๊ฐ๋ณด๋ค ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
์๋์ด๋ ธ์ ๋ต๋ตํจ์์ ๋ฒ์ด๋ ์ง์ง '๋ง๋๋ ์ฌ๋ฏธ'์ ๊ณ ์ฑ๋ฅ ๋ก๋ณดํฑ์ค์ ์ธ๊ณ๋ก ์ ๋ฌธํ๊ณ ์ถ๋ค๋ฉด, ์ค๋ ๋ฐ๋ก STM32 ํ๋ก์ ํธ์ ๋์ ํด ๋ณด์ธ์!
์ฌ๋ฌ๋ถ์ ํ์์ด ํฐ ํ์ด ๋ฉ๋๋ค!
ํ์ํ๋ฌ ๊ฐ๊ธฐ