본문 바로가기
게임기 만들기

8x8 RGB 픽셀 매트릭스를 이용한 복고풍 포켓 게이머 제작

by 모빌리티키즈 2025. 4. 11.
728x90
반응형

RGB LED의 화려함을 활용하여 Snake와 Flappy Bird 같은 클래식 게임을 8x8 RGB 매트릭스에서 구동하는 포켓 사이즈 게이머를 만들었습니다. 프로그래밍과 납땜 작업을 통해 간단하면서도 강력한 디자인을 완성했고, 최소한의 부품으로 게임 경험을 구현했습니다.

 

필요한 도구 및 재료

도구

  • 110V 850W 납땜 핫 플레이트 (작은 것도 가능)
  • 솔더 페이스트 및 플럭스
  • UPDI 프로그래머
  • 스텐실 스퀴지 (케이크 장식 도구로 대체 가능)

부품

부품명가격(USD)
ATTINY1616 (칩) $0.90
0.1uF & 10uF 0603 커패시터 $0.16
10k 저항기 0603 (6개) $0.60
6x6mm 버튼 (4개) $0.48
표면 실장 버튼 (1개) $0.48
P 채널 MOSFET $0.42
전원 스위치 $0.72
CR123A 배터리 케이스 $2.25
Adafruit DotStar 고밀도 8x8 매트릭스 $25.00

참고: 전해 커패시터 대신 고품질 MLCC를 선택해 작업했습니다.

공급

1단계: 보드 준비 및 프로그래밍

준비 작업

  1. 보드: ATtiny1616 기반 보드를 설계하거나 브레드보드로 테스트합니다.
  2. UPDI 프로그래머 세팅:
    • Arduino IDE에서 보드 관리자 URL 추가: http://drazzy.com/package_drazzy.com_index.json
    • megaTinyCore 설치 후, 다음 설정 선택:
      • 보드: ATtiny1616
      • 클럭: 10 MHz
      • 프로그래머: SerialUPDI - SLOW
    • 빈 스케치를 업로드해 보드를 테스트합니다.

2단계: 납땜 및 조립

납땜 팁

  1. 솔더 페이스트 적용:
    • 스텐실을 보드 위에 정렬하고 솔더 페이스트를 적용.
    • ATtiny1616 칩의 솔더 연결이 충분한지 확인.
  2. 조립:
    • 핫 플레이트를 사용하여 약 215°C에서 모든 부품 납땜.
    • 솔더 브리지가 발생한 경우 플럭스를 바르고 납땜 인두로 다리를 정리.
  3. LED 매트릭스 연결:
    • 매트릭스의 데이터/클럭 패드를 보드의 MOSI/SCK에 연결.
    • 핫 플레이트에서 매트릭스를 부착.

1단계: 보드와 프로그래머

 

 

이 프로젝트는 강력하고 프로그래밍하기 쉬운 베어 칩의 좋은 예입니다. 이 최종 보드에는 5개의 버튼이 있으며, 4개는 게임 플레이용이고 1개는 게임 간 전환용입니다.

여기에서 보드를 주문할 수 있습니다. 스텐실도 가져와야 합니다. 또는 빵 보드로 디자인하십시오.

이 블랭크 칩은 Arduino IDE 환경에서 UPDI 프로그래머를 사용하여 프로그래밍할 수 있습니다. Adafruit에서 제공하는 훌륭한 단계를 따르십시오.

이 보드의 뒷면에는 Vin, Gnd 및 UPDI 프로그래머의 세 가지 패드가 있습니다. 나는 이 패드에 세 개의 개별 수 헤더를 납땜합니다. 납땜할 때 헤더를 정렬하는 데 도움이 되도록 점토를 사용합니다. 위의 사진을보십시오. 납땜 및 조립 단계는 아래 단계에서 자세한 빌드 지침을 확인하십시오.

 

프로그래밍

 

Adafruit의 지시 사항을 따르지만 요약하겠습니다.

  1. Arduino에서 보드 관리자 기본 설정에 다음 URL을 추가합니다 http://drazzy.com/package_drazzy.com_index.json
  2. 보드 관리자에서 megaTinyCore를 설치합니다.
  3. Tools(도구)에서 다음을 선택합니다.
  4. 보드: megaTinyCore: ATtiny1616
  5. 칩: ATtiny1616
  6. 클럭: 10 MHz
  7. 프로그래머: SerialUPDI - SLOW: 57600 baud
  8. 마지막으로 Sketch > Upload Using Programmer로 이동합니다. 빈 스케치를 업로드하여 작동하는지 확인합니다.

 

UPDI 친구가 깜박이고 코드가 보드에 성공적으로 업로드되는 것을 볼 수 있습니다. 업로드되지 않으면 가장 가능성이 높은 원인은 칩이 제대로 납땜되지 않았기 때문입니다. 아래 납땜 팁.

 

 

2 단계 : 납땜 및 조립

이 "지혜"는 안락의자 연구와 실습의 조합에서 비롯됩니다. 아직 배우는 중이므로 이 보드를 만드는 더 좋은 방법이 있을 수 있습니다.

상식을 사용하고 인내심을 가지십시오!

 

  1. 먼저 스텐실을 보드 위에 정렬합니다. 구멍 위에 솔더 페이스트를 바르고 스퀴지를 사용하여 솔더를 밀어 넣습니다. 모든 것이 평평하고 깨끗한지 확인하십시오.

 

  1. 온라인 의견(사람들이 솔더 페이스트를 너무 많이 사용함)과 달리 실제로 ATtiny1616 보드와 설치 공간에 솔더가 충분하지 않다는 것을 알았습니다. 칩의 패드에 더 많은 솔더를 바르기 위해 핫 플레이트를 준비하는 것처럼 ATtiny1616을 솔더 페이스트에 눌렀습니다. 그런 다음 스텐실을 사용하여 보드에 솔더 페이스트를 다시 바르고 다시 정말 잘 짜냈습니다. 나는 내 칩 바닥에 약간의 솔더 페이스트와 보드에 새 페이스트로 끝났습니다.

 

  1. 다른 구성 요소는 비교적 쉽습니다. 핀셋으로 땜납에 조각을 놓습니다. 내가 가장 좋아하는 핀셋은 팁이 플라스틱입니다.

 

나는 아직 LED 매트릭스를 착용하지 않을 것입니다. 저렴한 물건이 먼저 작동하는지 확인하십시오.

 

  1. 나는 조각과 땜납이 있는 보드를 핫 플레이트가 꺼져 있는 동안 핫 플레이트에 놓습니다. 핫플레이트를 켜고 215°C에 도달할 때까지 기다립니다. 솔더가 약 200°C에서 녹는 것을 볼 수 있습니다. 다시 말하지만, 이것이 내가 찾은 작품입니다. 215°C에 도달하자마자 플레이트를 끄고 바늘 노즈 플라이어로 보드를 조심스럽게 잡고 보드를 냉각 금속 트레이(예: 쿠키 시트)로 옮깁니다.

 

  1. ATtiny1616에 솔더 브리지가 있었습니다. 개인적으로, 나는 땜납이 충분하지 않은 것보다 땜납 브리지를 갖는 것이 낫습니다. 다리에 약간의 플럭스를 바르고 뜨거운 납땜 인두를 잡고 다리를 가로질러 다리를 부드럽게 끕니다. 나는 칩의 측면을 가이드로 사용합니다. 다리가 멋진 패드 연결로 바뀌는 것을 보십시오. 알코올과 Q-tip으로 플럭스를 청소하십시오. 탄 플럭스는 끈적하고 황갈색입니다. 또한 납땜 인두 끝을 땜납과 젖은 스폰지로 청소하십시오.

 

  1. ATtiny1616 측면을 매우 자세히 살펴보면 패드가 연결되었는지 실제로 확인할 수 있습니다. 첫 번째 보드에서 ATtiny의 UPDI 핀이 연결되지 않아 프로그래밍할 수 없었습니다. 위의 사진을 보십시오. 다행히도 저는 아직 LED 매트릭스를 납땜하지 않았기 때문에 다시 시작할 수 있는 것은 1달러 또는 2달러였습니다.

 

  1. 나는 또한 전압계로 연속성을 확인합니다. 연결이 있을 때 신호음이 울리는 테스트입니다. 나는 항상 Gnd와 Vin이 연결되어 있지 않은지 확인합니다, 물건이 연기가 나고 타버릴 것이기 때문에:)

 

  1. 보드를 프로그래밍할 수 있으면(위 단계 참조) LED 매트릭스를 사용할 차례입니다. LED 매트릭스의 측면 탭을 분리하고 보드의 빈 패드에 약간의 땜납을 넣었습니다. 보드 전면을 보고 왼쪽에서 오른쪽으로 이동하면 패드는 SCK(클럭), MOSI(데이터 입력), GND  VIN입니다. 저는 이 패드가 Adafruit의 매트릭스와 잘 맞도록 보드를 설계했습니다.

 

  1. **매트릭스의 데이터를 사용하고 보드의 MOSI 및 SCK와 함께 패드를 클럭해야 합니다**. 데이터를 사용하고 클럭 아웃하면 작동하지 않을 것이라고 생각합니다.

 

  1. 땜납으로 패드에 매트릭스를 놓고 핫 플레이트에 다시 놓습니다. 약 215°C에서 이륙합니다.

3단계: 코드

저에게 코드는 어셈블리만큼 재미있습니다. 나는 Snake와 Flappy Bird의 버전을 썼다. 제가 가장 좋아하는 부분은 Flappy Bird의 중력 시뮬레이션입니다. 방금 215°C로 폭발시킨 이 90센트 칩이 중력 시뮬레이션을 하고 Flappy Bird를 실행하고 있다는 것이 얼마나 멋진가요! 자신만의 게임을 만들고 프로그래머를 통해 업로드해 보세요. Chrome의 Dino 게임 버전을 시작했습니다. Pong과 Frogger도 작동할 수 있습니다.

 

코드는 따라하기가 그리 어렵지 않으며 간단한 C++ 클래스를 사용합니다.

 

이것들은 내가 사용한 라이브러리이며 아마도 이것은 25 달러의 LED 매트릭스를 정당화하는 데 도움이 될 것입니다. 평판이 좋은 회사의 테스트를 거친 전체 그래픽 라이브러리를 사용하여 LED(픽셀?) 에 쓸 수 있습니다. 4개의 공통 라이브러리만 있으면 픽셀을 켜는 것은 다음과 같이 간단합니다: matrix.drawPixel(x, y, color);

#include <SPI.h>

#include <Adafruit_GFX.h>

#include <Adafruit_DotStarMatrix.h>

#include <Adafruit_DotStar.h>

#include <글꼴/TomThumb.h>

 

작업 코드는 또한 ATTiny1616의 성능을 보여줍니다. 빈 칩이었던 것이 이제 adafruit의 그래픽 코드를 실행할 수 있습니다!

4단계: 피날레

스루홀 버튼, 배터리 홀더를 납땜하고 cr123a 배터리를 끼우고 재생하세요!

 

결론 및 확장 계획

이번 작업을 통해 스네이크와 플래피 버드 같은 고전 게임을 작은 기기에서 구현할 수 있었습니다. 앞으로는 다색, 저전력 LED 매트릭스를 직접 설계하는 도전도 해볼 예정입니다!

이 블로그 글이 작업을 계획 중인 독자들에게 유용하기를 바랍니다! 납땜과 프로그래밍을 즐기며 창의적인 제품을 제작해 보세요. 😊

728x90
반응형