ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
I Built a Retro Gaming Console Using ESP32 and OLED Display ๐ŸŽฎ
Dev.toDev.to
Infrastructure

ESP32์™€ I2C OLED ๊ธฐ๋ฐ˜์˜ ์ €์ „๋ ฅ Retro Gaming Console ๊ตฌํ˜„

I Built a Retro Gaming Console Using ESP32 and OLED Display ๐ŸŽฎ

Karthick Nagarajan2026๋…„ 5์›” 27์ผ3๋ถ„beginner

Context

๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ Embedded ํ™˜๊ฒฝ์—์„œ ๋‹ค์ˆ˜์˜ ๊ฒŒ์ž„ ์—”์ง„์„ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ํ•„์š”์„ฑ ์ œ๊ธฐ. ํ•˜๋“œ์›จ์–ด ๋น„์šฉ ์ตœ์†Œํ™”์™€ ์‹ค์‹œ๊ฐ„ ์ž…๋ ฅ ๋ฐ˜์‘์„ฑ ํ™•๋ณด๋ฅผ ํ†ตํ•œ ๋…๋ฆฝํ˜• ๊ฒŒ์ž„ ๋จธ์‹  ๊ตฌํ˜„ ๋ชฉํ‘œ.

Technical Solution

  • I2C ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜์˜ OLED Display ์—ฐ๊ฒฐ์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก ํšจ์œจ ์ตœ์ ํ™”
  • GPIO ์ง์ ‘ ์ œ์–ด๋ฅผ ํ†ตํ•œ Push Button ์ž…๋ ฅ์˜ Low-latency ๋ฐ˜์‘์„ฑ ํ™•๋ณด
  • ์ƒํƒœ ๋จธ์‹ (State Management) ์„ค๊ณ„๋ฅผ ํ†ตํ•œ ๋ฉ”๋‰ด ์‹œ์Šคํ…œ๊ณผ ๊ฒŒ์ž„ ๋Ÿฐํƒ€์ž„ ๊ฐ„์˜ ์ปจํ…์ŠคํŠธ ์ „ํ™˜ ๊ตฌํ˜„
  • Pixel Drawing ๋ฐ Sprite ๋ Œ๋”๋ง ๋กœ์ง ๊ตฌํ˜„์œผ๋กœ ์ œํ•œ๋œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์ตœ์ ํ™”
  • Event-driven ๋ฐฉ์‹์˜ Collision Detection ๋ฐ Scoring ์‹œ์Šคํ…œ ์ ์šฉ์œผ๋กœ ๊ฒŒ์ž„ ๋กœ์ง์˜ ๋…๋ฆฝ์„ฑ ํ™•๋ณด
  • Buzzer ์ถœ๋ ฅ์„ ํ™œ์šฉํ•œ ๋‹จ์ˆœ ํŽ„์Šค ์ œ์–ด ๊ธฐ๋ฐ˜์˜ ์‚ฌ์šด๋“œ ํ”ผ๋“œ๋ฐฑ ์‹œ์Šคํ…œ ํ†ตํ•ฉ

1. I2C ํ†ต์‹  ์†๋„์™€ ๋””์Šคํ”Œ๋ ˆ์ด ๊ฐฑ์‹  ์ฃผ๊ธฐ(Refresh Rate) ๊ฐ„์˜ ๋ณ‘๋ชฉ ์ง€์  ํ™•์ธ

2. GPIO ์ž…๋ ฅ ์‹œ ๋””๋ฐ”์šด์‹ฑ(Debouncing) ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ์ž…๋ ฅ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ

3. ์ž„๋ฒ ๋””๋“œ ํ™˜๊ฒฝ์˜ ์ œํ•œ๋œ Heap ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ „๋žต ๊ฒ€ํ† 

4. ๊ฒŒ์ž„๋ณ„ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜๋ฅผ ํ†ตํ•œ ์ƒˆ๋กœ์šด ๊ฒŒ์ž„ ๋ชจ๋“ˆ์˜ ํ™•์žฅ์„ฑ ํ™•๋ณด

์›๋ฌธ ์ฝ๊ธฐ