๋งคํฌ๋ก ํคํจ๋
์๋ฆฌ์ต์คํ๋ ์ค์์ 5์ฒ์๋ง ์ฃผ๋ฉด ์๋์ ๊ฐ์ ๋งคํฌ๋ก ํคํจ๋๋ฅผ ์ด ์ ์๋ค.
์๋ฆฌ์ต์คํ๋ ์ค ์ํ ํ์ด์ง - ์ด๊ฒ ์ฌ๋๋ง๋ค ๋ค๋ฅด๊ฒ ๊ฐ๊ฒฉ์ด ํ์๋๋ ๊ฒ ๊ฐ๋ค. ์ํฌ๋ฆฟ ํญ์์ ํ์ธํด๋ณด๋ ์ต์ ๊ฐ๊ฐ 2,860์์ด๋ผ๊ณ ํ์๋๋ ์ค์ด๋ค.
์ค์ ๋ก ๋ฐ์์ ์จ๋ณด๋ฉด ์๊ฐ๋ณด๋ค ์ ์๋ํ๋ค. ์ค์์น๋ ๊ต์ฒด ๊ฐ๋ฅํ๊ณ ๋ ธ๋ธ๋ ๋ถ๋๋ฌ์์ ๋์์ง ์๋ค. ๋๋ ์ด ํคํจ๋์ ๋ฏธ๋์ด ์ปจํธ๋กค ํค๋ฅผ ํ ๋นํ์ฌ ์ฌ์ฉ ์ค์ด๋ค. 3๊ฐ์ ํค์ ์ด์ ๊ณก, ์ฌ์/์ผ์์ ์ง, ๋ค์ ๊ณก ๊ธฐ๋ฅ์ ํ ๋นํ๊ณ , ๋ ธ๋ธ์ ์๋ ์กฐ์ ๊ธฐ๋ฅ์, ๋ ธ๋ธ๊ฐ ํด๋ฆญ๋ ๋๋ ์์๊ฑฐ๋๋๋ก ๊ธฐ๋ฅ์ ํ ๋นํ๋๋ฐ ์ ๋ง ์ ์๋ํ๋ค.
๋ฌธ์ ๋ ๋งคํฌ๋ก ํคํจ๋๋ฅผ ์ค์ ํ๋ ๋ฐ์์ ์จ๋ค.
- ๋งคํฌ๋ก ํคํจ๋๋ฅผ ์ฒ์ ๋ฐ๊ณ ์ค์ ํ๋ ค๋ฉด ์ค์ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ฐ์ ์ค์ ์ ์งํํด์ผ ํ๋๋ฐ, ์ด ์ค์ ํ๋ก๊ทธ๋จ์ด EXE๋ก๋ง ์ ๊ณต๋๋ค. ์ฆ, ๋ฆฌ๋ ์ค ํ๊ฒฝ ๋๋ ๋งฅ๋ถ์์๋ ์ค์ ์ด ๋ถ๊ฐํ๊ณ ๋ฌด์กฐ๊ฑด ์๋์ฐ PC์์ ์งํํด์ผ ํ๋ค.
- ์ค์ ํ๋ก๊ทธ๋จ ์์ฒด๋ ์ข ์์ฌ์ค๋ฝ๋ค. ๋ฐ์ด๋ฌ์ค๊ฐ ๋ค์ด์์ง ์์์ง ํ์ ํ ์ ์๋ค.
- ๋ณต์กํ ๋งคํฌ๋ก๋ฅผ ์ค์ ํ๋ค๋๊ฐ ํ๋ ๊ฑด ๊ธฐ๋ํ ์ ์๋ค.
์ด๋ฐ ์ ์ ํด๊ฒฐํ๋ ค๊ณ ๋๋ ์ด ํคํจ๋์ ์ปค์คํ ํ์จ์ด๋ฅผ ์ค์นํ๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค.
ํคํจ๋ ํ๋์จ์ด ๋ถ์
์ด ํคํจ๋๋ ์๋ฆฌ์ต์คํ๋ ์ค์์ ๊ฝค ์ธ๊ธฐ์๋ ์ํ์ธ ํธ์ด๋ค. ์๋ง ๋ฎ์ ๊ฐ๊ฒฉ ๋๋ฌธ์ผ ๊ฒ์ด๋ค. ์ด๋ฏธ ํด์ธ์ ๋ง์ ์ ์ ๋ค์ด ์ฌ์ฉํ๊ณ ์์๊ณ , ์ด๋ฃจ์ด์ง ์ฐ๊ตฌ๋ ์๋ ํธ์ด์๋ค.
์ง์ ์์๋ธ ์ ๋ณด๋ ์๋์ ๊ฐ๋ค.
- ์นฉ: CH552G
- ๋ถํธ๋ก๋ ํ์จ์ด: 2.40
-
์ฌ์ฉ๋ ํ
- LED (NeoPixel) - P3.4
- ์ฒซ๋ฒ์งธ ํค (๋ ธ๋ธ์์ ๊ฐ์ฅ ๋จผ ํค) - P1.1
- ๋๋ฒ์งธ ํค - P1.7
- ์ธ๋ฒ์งธ ํค - P1.6
- ๋ ธ๋ธ ํด๋ฆญ - P3.3
- ๋ ธ๋ธ A - P3.1
- ๋ ธ๋ธ B - P3.0
ํคํจ๋ ์ํํธ์จ์ด ๋ถ์
์ฌ์ค ๋ง์ด ์งํํ ๋ฐ๋ ์๋ค. ํคํจ๋์ ๋ด์ฅ๋ ํ์จ์ด๋ฅผ ์ฝ์ด์ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ ํด๋ณด๋ ค๊ณ ํ๋๋ฐ, ํ์ฌ ์ค์น๋ ๋ถํธ๋ก๋ ํ์จ์ด๋ก๋ ์ด ๋ฐฉ๋ฒ์ด ๋ถ๊ฐํ ๊ฒ ๊ฐ๋ค. ๋ํ ์ค์ ํ๋ก๊ทธ๋จ์ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋งํด๋ณด๋ ๊ฒ๋ ๊ณ ๋ คํ์๋ค. ํ๋ก๊ทธ๋จ์ด .Net ํ๋ ์์ํฌ ๊ธฐ๋ฐ ์๋์ฐ ์ฑ์ผ๋ก ๋ณด์๋๋ฐ, ๋๋ฒ๊ทธ ์ ๋ณด๋ ๊ฐ์ด ๋ฐฐํฌ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์๋ค. ํ์ง๋ง ๋ .Net ํ๋ ์์ํฌ ๊ฐ๋ฐ์ ์งํํด๋ณธ ์ ์ด ์์์ด์ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ ํ ์ ์์๋ค.
์ค์ ํ๋ก๊ทธ๋จ์ ์ฌ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฅธ ์ฌ๋์ด ์ด๋ฏธ ์งํํ ๋ฐ ์๋ค. ๋ค์ ๋งํฌ์์ ํ์ธ ๊ฐ๋ฅํ๋ค. reddit.com - I wrote a new app for chinese macro keypads
๋๋ ์ด ์ค์ ํ๋ก๊ทธ๋จ์ ์ฌ๊ตฌํํ๋ ๋์ , ํคํจ๋์ ํ์จ์ด๋ฅผ ์ฒ์๋ถํฐ ์๋ก ์์ฑํ๊ณ ์ ๋ง์๋จน์๋ค.
์ปค์คํ ํ์จ์ด
ํ์จ์ด๋ ์ฅ์น์ ๋ด์ฅ๋๋ ํ๋ก๊ทธ๋จ์ ๋ปํ๋ค. ์ด ๋งคํฌ๋ก ํคํจ๋์ ๊ฒฝ์ฐ์, ๊ฐ ํค/๋ ธ๋ธ๊ฐ ๋๋ฆฌ๊ณ ์์ง์์ ๋ ์ด๋ป๊ฒ ์๋ํ ์ง๋ฅผ ์ ์ํ๋ ๊ฒ์ด ํ์จ์ด์ด์.
์ฐ์ ์ด๋ฏธ ๊ตฌํ๋ ์ปค์คํ ํ์จ์ด๊ฐ ์๋์ง ์กฐ์ฌํ๋ค. ๋คํํ๋ biemster๋ผ๋ ์ฌ๋์ด ์ง์ ์ปค์คํ ํ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ฉฐ ๋จ๊ธด ๊ธฐ๋ก์ ํ์ธํ ์ ์์๋ค. Hackaday - RGB macropad custom firmware ๋๋ "์ด๊ฑฐ๋ค" ์ถ์๋ค.
GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๊ทธ ์ฌ๋์ด ์์ฑํ ์ปค์คํ ํ์จ์ด ์์ค์ฝ๋๋ฅผ ํ์ธํ ์ ์์๋ค. ๋๋ ์ด ์ฝ๋๋ก ๋ด ๋ฒ์ ์ ์ปค์คํ ํ์จ์ด๋ฅผ ์์ฑํ๊ธฐ๋ก ํ๋ค.
ํด์ฒด์ธ
๊ทธ ํ์จ์ด๋ฅผ ๋ฐ๋ก ํคํจ๋์ ์ ๋ก๋ํด๋ณด๋ ค๊ณ ํ๋๋ฐ, ์๋ฌด๋๋ ๋ด ์ปดํจํฐ์ ์ด๋ฐ ์๋ฒ ๋๋ ๊ฐ๋ฐ ํ๊ฒฝ์ด ๊ตฌ์ถ๋์ด ์์ง ์๋ค ๋ณด๋ ํด์ฒด์ธ์ ๊ตฌ์ฑํด์ผ ํ๋ค.
์น๊ฐ๋ฐ์์ธ ๋๋ก์จ๋ ์ฒ์ ๋ณด๋ ํด๋ค์ ์ ํ๋ค. macOS ํ๊ฒฝ์์ ์๊ตฌ๋๋ ํด์ฒด์ธ์ ์๋์ ๊ฐ๋ค.
- Python 3 - ๊ทธ๋ฅ ์ ๋ฐ์ ์ผ๋ก ํ์.
- binutils - C๋ก ์์ฑ๋ ์ปค์คํ ํ์จ์ด๋ฅผ ๋น๋ํ๊ธฐ ์ํด ํ์ํ๋ค.
- ch55xtool - ํคํจ๋์ EEPROM์ ์ปดํจํฐ์์ ์ฝ๊ณ ์ฐ๋ ๋ฐ ํ์ํ๋ค.
- libusb - USB์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ปค์คํ ํ์จ์ด๋ฅผ ๋น๋ํ๊ธฐ ์ํด ํ์ํ๋ค.
- EEPROM ๋ฐ์ดํฐ ์์ ์ ์ํด์๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ํธ์ง ํด์ด ํ์ํ๋ค. ๋๋ VSCode ํ์ฅ ํ๋ก๊ทธ๋จ์ธ Hex Editor๋ฅผ ์ฌ์ฉํ๋ค.
๋น๋ & ์ ๋ก๋
์ฐ์ ํคํจ๋๋ฅผ ๋ถํธ๋ก๋์ ์ง์ ์์ผ์ผ ํ์จ์ด ์ ๋ก๋๊ฐ ๊ฐ๋ฅํ๋ค. ํคํจ๋์ ๋์ฌ๋ฅผ ํผ ํ, ๋ทํ์ ์ ํญ&์บํผ์ํฐ๊ฐ ๋ฐฐ์น๋ ๋ถ๋ถ์ ๋ณด๋ฉด ๋น ํจ๋ 2๊ฐ๊ฐ ์์ ๊ฒ์ด๋ค. ์ด ํจ๋ 2๊ฐ๋ฅผ ํด๋ฆฝ ๊ฐ์ ๊ฒ์ผ๋ก ์ฐ๊ฒฐ์ํจ ํ ์ปดํจํฐ์ ์ฐ๊ฒฐํ๋ฉด ๋ถํธ๋ก๋์ ์ง์ ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ปค์คํ ํ์จ์ด๋ฅผ ๋น๋ํด์ผ ํ๋ค. ๋ด๊ฐ ์์ฑํ ์ปค์คํ ํ์จ์ด ์์ค์ฝ๋๋ฅผ ํด๋ก ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ์ ํ๋ ์์ฑํ ํ, pyusb ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.
์ปค์คํ ํ์จ์ด ๋น๋๋ `make bin`, ์ ๋ก๋๋ `make build`๋ก ์งํํ๋ค. ๋ง์ฝ libusb, binutils, pyusb ๋ชจ๋ ์ค๋น๋ ์ํ๋ผ๋ฉด ์๋ฌด ๋ฌธ์ ์์ด ์ ๋ก๋๊น์ง ์งํ๋ ๊ฒ์ด๋ค.
๊ธฐ๋ฅ
์นฉ์ ๋ด์ฅ๋ EEPROM์ ๊ฐ ํค/๋ ธ๋ธ์ ๊ธฐ๋ฅ์ ์ ์ฅํ๋๋ก ํ๋ค. ๊ฐ ํค/๋ ธ๋ธ ์ ๋ณด๋ 3๋ฐ์ดํธ์ ๊ฑธ์ณ ์ ์ฅ๋๋๋ฐ, ์ฒซ ๋ฐ์ดํธ๋ Modifier ํค๊ฐ, ๋๋ฒ์งธ ํค๋ ๋ฏธ๋์ด ํค ์ฌ๋ถ, ์ธ๋ฒ์งธ ํค๋ ์ค์ ์ ๋ ฅํ ํค์ ์ฝ๋์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด 6๊ฐ์ ์ ๋ ฅ์ด ์กด์ฌํ๋ฏ๋ก 18๋ฐ์ดํธ์ EEPROM์ด ์ฌ์ฉ๋๋ ์ ์ด๋ค.
EEPROM ํธ์ง์ ch55xtool๋ฅผ ์ฌ์ฉํ์ฌ ์งํํ ์ ์๋ค. `ch55xtool -d` ๋ช ๋ น์ด๋ก EEPROM์ ๋ฎ์ด์ฐ๊ณ , `ch55xtool -g` ๋ช ๋ น์ด๋ก EEPROM์ ์ฝ์ด์ฌ ์ ์๋ค. ์ฝ์ด์จ EEPROM์ VSCode Hex Editor ํ์ฅ ํ๋ก๊ทธ๋จ์ ํตํด ํ ์ ์๋ค.
3๊ฐ์ ํค ์์ ์ฅ์ฐฉ๋ RGB LED๋ ํ๋ก๊ทธ๋จํ ์ ์์๋๋ฐ, LED๊ฐ ๋๋ฌด ๋ฐ์์ ๋ ๊ทธ๋ฅ ์ปดํจํฐ์ ์ฐ๊ฒฐ๋์ ๋๋ง ๋น๋๊ฒ ํ๊ณ , ๊ทธ ํ์๋ ๊บผ์ ธ ์๋๋ก ์์ฑํ๋ค.
๋ ๋จ์ ๊ฒ
์ฐ์ GUI๋ก ์ค์ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์ถ๋ค. EEPROM์ ์ ๋ก๋ํ๋ ๊ฒ๋ง ๊ตฌํํ๋ฉด ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ปค์คํ ํ์จ์ด๋ฅผ ์ค์นํ๋ ๊ณผ์ ์ ๋ ์ฝ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค. ์ง๊ธ์ ํ์จ์ด๋ฅผ ์ง์ ๋น๋ํ๊ณ ์ ๋ก๋๊น์ง CLI๋ฅผ ํตํด ์งํํด์ผ ํ๋๋ฐ, ์๊ตฌ๋๋ ํด์ฒด์ธ์ด ๋๋ฌด ๋ณต์กํ๋ค๋ ์๊ฐ์ด ๋ ๋ค. ์ด ์ปค์คํ ํ์จ์ด ์ ๋ก๋ ์์ ๋ํ GUI ์ค์ ํ๋ก๊ทธ๋จ์ ๋ด์ฅ๋์ด ์์ผ๋ฉด ์ต๊ณ ์ผ ๊ฒ์ด๋ค.
๋ง์ฝ ๊ทธ๋ ๊ฒ๊น์ง ๋๋ค๋ฉด, ์ด ์๋ฆฌ์ต์คํ๋ ์ค์ฐ ๋งคํฌ๋ก ํคํจ๋๋ฅผ ๊ตฌ๋งคํ๋ ์ฌ๋๋ค์ ๋ ์์ ๋กญ๊ณ ํธ๋ฆฌํ๊ฒ ๊ธฐ๋ฅ์ ์ปค์คํฐ๋ง์ด์งํ๊ณ ์ฌ์ฉํ ์ ์์ ๊ฒ์ด๋ค.
์ดํ
๋๋ฌด ์ ๋ ดํ ์ ํ์ด๋ผ ๋ ํธํ ๋ง์์ผ๋ก ์ปค์คํ ํ์จ์ด ์ ์์ ๋์ ํ ์ ์์๋ ๊ฒ ๊ฐ๋ค. ์ฅ์น๊ฐ ๋ ๋น์๋ค๋ฉด ๋ ์ด๋ ค์ ์ ๊ฒ์ด๋ค (์๊น์์). ์๋ฒ ๋๋ ํ๋ก๊ทธ๋จ์ ๋น๋ํด๋ณธ ๊ฒ๋ ์ฒ์์ด๋ผ ์ ์ ํ๋ค. ์ง๊ธ์ ์ด ์ ๋์์ ๋ง์น์ง๋ง ๋ ๋ฐ์ ์ํจ ํ์ ๊ธฐ๋ฅ์ด ๋ ์ถ๊ฐ๋ ์ปค์คํ ํ์จ์ด๋ฅผ ๊ณต์ ํ ์ ์์ผ๋ฉด ์ข๊ฒ ๋ค.