라즈베리파이

감성 넘치는 로봇 만들기: 16x16 LED 매트릭스 기반 DIY 프로젝트

모빌리티키즈 2025. 5. 15. 10:57
728x90
반응형

로봇이 단순한 기계적 동작을 넘어 감성을 표현할 수 있다면 어떨까요? 이번 프로젝트에서는 16x16 도트 매트릭스 디스플레이, 서보 모터, 라우드스피커를 활용해 로봇이 시각·청각적으로 더 많은 정보를 제공하고, 개성을 부여하는 방법을 소개합니다. 특히 아이들에게 흥미를 유발하는 요소가 많아 교육적인 활용 가능성도 높습니다.

🛠️ 로봇의 기본 기능

이 로봇은 독립적으로 실행되거나 기존 로봇 디자인에 추가 기능으로 적용할 수 있습니다. 다음과 같은 요소를 통해 감성 표현이 가능합니다:

16x16 도트 매트릭스 디스플레이: 로봇의 감정을 그림과 애니메이션으로 표현

서보 모터 2개: 팔을 흔들어 웨이브 신호 추가

라우드스피커: 사운드 출력을 통해 의사소통

이러한 기능을 통해 사용자가 간단한 코드를 작성하여 원하는 대로 표현을 조작할 수 있으며, 별도의 로봇이나 직렬 인터페이스를 통해 다른 컴퓨터의 명령을 표시할 수도 있습니다.

🖥️ 핵심 기술: Raspberry Pi Pico와 MAX7219 기반 LED 매트릭스

이 프로젝트는 Micropython을 실행하는 Raspberry Pi Pico를 기반으로 하며, 4개의 MAX7219 구동 8x8 LED 매트릭스를 사용해 16x16 배열을 구성합니다.

Python을 활용한 제어가 가능하기 때문에, 프로그래밍을 배우는 초보자나 학생에게도 적합합니다. Python을 사용하면 현재 많은 교육 강의 계획서와 연계 가능하다는 장점도 있습니다.

 

# Waving Example
# Basic syntax of file
# At the beginning of a line a # sign, blank or anything not a reserved control is ignored
# Display lines are numbered 0-F (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) and can be in any order
# but are only displayed when line F is updated
# '.' or 'X' means start of LED data '.' means OFF, 'X' is ON
# LEFTxxx moves left servo to position xxx
# RIGHTyyy moves right servo to position yyy
# DELAYxxx pauses file read for xxx tenths of a second
# AGAIN closes the file and reopens it, typically the last statement
# CLEAR clears the display of an image
# QUIT exits the running program, mainly for testing
# FILEaaaaa loads display from a file aaaaaa
#
# This example flashes a checkerboard display and waves the arms alternately
# Clear display
CLEAR
# Move left arm to 160 degrees
LEFT160
# Move right arm to 140 degrees
RIGHT140
# Paint display with a checkerboard pattern
#123456789ABCDEF
0.X.X.X.X.X.X.X.X
1X.X.X.X.X.X.X.X.
2.X.X.X.X.X.X.X.X
3X.X.X.X.X.X.X.X.
4.X.X.X.X.X.X.X.X
5X.X.X.X.X.X.X.X.
6.X.X.X.X.X.X.X.X
7X.X.X.X.X.X.X.X.
8.X.X.X.X.X.X.X.X
9X.X.X.X.X.X.X.X.
A.X.X.X.X.X.X.X.X
BX.X.X.X.X.X.X.X.
C.X.X.X.X.X.X.X.X
DX.X.X.X.X.X.X.X.
E.X.X.X.X.X.X.X.X
FX.X.X.X.X.X.X.X.
# wait for 1 second ( 10 x 0.1 seconds)
DELAY10
# Move left arm to 140 degrees
LEFT140
# Move right arm to 160 degrees
RIGHT160
# Invert the display
INVERT
# wait for 1 second ( 10 x 0.1 seconds)
DELAY10
# repeat the file from the beginning
AGAIN

Personality-main.zip
0.02MB

 

🏗️ 제작 단계: 하드웨어 구성

1️⃣ 3D 프린팅 부품 제작

프로젝트의 팔, 귀, 다리 및 기타 부품3D 프린터로 제작할 수 있습니다. 설계 파일은 TinkerCAD에서 디자인되었으며, 제작자는 원하는 케이스를 자유롭게 조정할 수도 있습니다.

 

Robot+Personality+Umbrella+Arm.stl
0.05MB
Robot+Personality+Sun+Arm.stl
0.02MB
Robot+Personality+R+small+ear.stl
0.02MB
Robot+Personality+R+servo.stl
0.02MB
Robot+Personality+R+leg.stl
0.03MB
Robot+Personality+R+hand+3.stl
0.05MB
Robot+Personality+R+large+ear.stl
0.02MB
Robot+Personality+R+hand+2.stl
0.05MB
Robot+Personality+R+hand+1.stl
0.05MB
Robot+Personality+L+small+ear.stl
0.02MB
Robot+Personality+L+servo.stl
0.02MB
Robot+Personality+L+leg.stl
0.03MB
Robot+Personality+L+large+ear.stl
0.02MB
Robot+Personality+L+hand+2.stl
0.05MB
Robot+Personality+L+hand+3.stl
0.05MB
Robot+Personality+L+hand+1.stl
0.05MB
Robot+Personality+Case.stl
0.17MB

 

2️⃣ 제어 보드 조립

스트립보드 기반의 제어 보드는 2개의 서보 모터와 MAX7219 IC를 구동할 수 있는 기능을 제공하며, 직렬 입력을 받아 다양한 프로세서로 이식 가능합니다.

 

 
 
 
 
 
 
 
 

 

3️⃣ 디스플레이 및 서보 부착

✅ MAX7219 기반 LED 매트릭스를 조립 ✅ PCB 핀과 케이스에 LED 매트릭스를 고정 ✅ 서보 모터를 부착하여 팔의 움직임을 구현

 
 
 
 
 

4️⃣ 배선 및 전원 연결

제어 보드와 디스플레이, 서보 모터를 연결할 때는 SPI 인터페이스를 활용합니다. 벅 전원 변환기를 사용해 전력 효율을 높이고 안정적인 구동이 가능하도록 설정해야 합니다.

 

2단계: 제어 보드 만들기

이 프로젝트를 위해 설계된 제어 보드는 스트립보드에 조립되지만 메인 디스플레이에 쉽게 장착할 수 없더라도 상업용 보드를 대신 사용할 수 있습니다. 보드는 3핀 SPI 인터페이스를 통해 2개의 서보 모터와 MAX7219 IC를 구동할 수 있는 기능을 제공할 수 있어야 합니다. 여기에는 Pico가 사용되지만 ESP32 및 Arduino를 사용할 수 있으며 이러한 솔루션에 대한 코드가 여기에 제공됩니다. 소형 확성기를 위한 준비도 이루어집니다.

설명된 제어 카드는 외부 5V 전원으로 직접 전원을 공급하거나 내장된 벅 컨버터를 통해 7V-12V로 전원을 공급받을 수 있습니다. 5V 전원을 사용하는 경우 벅 컨버터 소켓을 우회할 수 있습니다.

보드는 Pico의 USB 소켓을 통해 USB 전원 공급 장치로 테스트되었으며 정상적으로 작동하는 것으로 확인되었지만 서보는 제한된 전력으로 올바르게 작동하는 데 어려움을 겪을 수 있습니다.

3단계: 디스플레이 조립

MAX7219 구동 디스플레이 매트릭스는 설계된 케이스에 맞아야 하며 진행하기 전에 테스트하는 것이 좋습니다.

매트릭스/PCB 방향이 아닌 PCB에서 LED 매트릭스를 분리하고 PCB를 케이스에 끼우고 작은 M3 너트와 볼트로 부착합니다.

4단계: 서보 확장 추가

이들은 메인 디스플레이의 측면에 나사로 고정하거나 내부에 너트로 추가로 고정할 수 있지만 부착하기가 매우 까다로울 수 있습니다.

5단계: LED 매트릭스 삽입

핀이 구부러지지 않도록 주의하면서 LED 매트릭스를 PCB 핀 홀더에 끼웁니다. 시작하기 전에 모든 핀이 똑바로 있는지 확인하는 것이 좋습니다.

6단계: 서보 추가

서보를 지지대에 추가하고 함께 제공된 나사로 제자리에 나사로 고정합니다. 암은 그림과 같이 절단된 서보 혼 중 하나를 사용하여 부착되고 제공된 나사로 제자리에 고정됩니다.

암을 부착하기 전에 서보를 제어 보드에 연결하고 github에 제공된 Zeroarm.py 프로그램을 실행하여 서보를 암이 똑바로 아래를 향하는 제로 위치로 회전합니다. 그런 다음 암의 위치가 디스플레이 파일에 정확하게 반영되도록 암을 똑바로 아래를 향하게 부착할 수 있습니다.

 

7단계: 배선

배선은 몇 가지 주요 연결을 통해 작업하는 경우이며 다방향 듀퐁 케이블을 사용하면 이를 더 쉽고 안정적으로 수행할 수 있습니다. 위 사진에서 내 배선은 다음과 같습니다.

VCC 오렌지

Gnd 옐로우

딘 그린

CS 블루

CLK 퍼플

LED 어레이를 먼저 연결한 다음 첫 번째 LED 어레이에서 제어 보드로 케이블을 배선합니다.

Vcc는 모든 빨간색 핀이 될 수 있습니다.

Gnd는 모든 녹색 핀이 될 수 있습니다.

딘 옐로우 핀 19

CS 옐로우 핀 17

Clk 옐로우 핀 18

직렬 및 공통 접지 핀은 물리적 핀 2와 3입니다.

왼쪽 및 오른쪽 서보 연결은 핀 21과 22에 장착되며 주황색/노란색 와이어는 노란색 핀 위에 있습니다.

전선을 장착하기 전에 벅 전원 공급 장치를 제거하면 이 작업이 더 쉬워집니다.

8단계: 코드 로드

이 프로젝트의 코드는 여기 github에 보관되어 있으며 몇 개의 라이브러리와 데모 파일 세트가 있는 Python 프로그램으로 구성됩니다.

프로그램 및 라이브러리는 Python 개발 환경을 사용하여 제어 보드의 Raspberry Pi Pico와 필요한 디스플레이 파일에 복사해야 합니다.

메인 프로그램의 이름을 main.py 로 바꾸면 Pico가 재부팅될 때마다 실행됩니다. 기본적으로 main.txt 파일의 내용을 표시하려고 시도하지만 코드에서 변경할 수 있습니다.

디스플레이는 AGAIN 함수를 사용하거나 FILE 루프를 생성하여 하나에서 다음으로 연결하여 계속 실행되도록 배열 할 수 있습니다.

새 디스플레이 파일을 생성하고 Pico에 저장할 수 있지만 디스플레이 프로그램이 실행되고 있지 않을 때만 Pico에 저장하기 전에 QUIT 명령을 사용하여 중지하십시오. 표시 파일은 텍스트 파일이며 모든 접미사를 가질 수 있으며, 모든 예제는 .txt를 사용하고, Python 개발 환경 또는 메모장과 같은 기본 텍스트 편집기에서 만들 수 있습니다.

디스플레이는 파일과 동일한 구문을 사용하여 직렬 인터페이스를 통해 완전히 제어할 수 있지만 명령 명령은 디스플레이 파일이 완료된 후에만 허용되므로 지연이 많은 경우 시간이 걸릴 수 있습니다.

라우드스피커가 디자인에 포함되어 있으며 이에 대한 파일은 나중에 추가됩니다.

💾 소프트웨어 및 프로그래밍

Python을 사용해 로봇의 동작을 제어할 수 있으며, GitHub에 프로젝트 코드가 제공됩니다.

디스플레이 파일은 텍스트 기반으로 저장되며, main.txt 파일에 정의된 대로 실행됩니다.

직렬 인터페이스를 활용해 실시간으로 명령을 내릴 수도 있습니다.

라우드스피커를 추가하여 사운드를 구현할 수도 있습니다.

 

Waving+Example.txt
0.00MB
Smiley.txt
0.00MB
Smiley+Anima.txt
0.00MB
Rain.txt
0.00MB
main.txt
0.00MB
Heart.txt
0.00MB
Hollow+Heart.txt
0.00MB
Cloud.txt
0.00MB
CheckerBoard.txt
0.00MB
Blank.txt
0.00MB

🚀 활용 가능성

이 로봇 프로젝트는 창의적인 인터랙티브 장치로 활용될 수 있으며, 다음과 같은 분야에서 유용합니다:

🔹 교육용 도구: 학생들이 코딩과 하드웨어 제작을 배우는 데 도움 🔹 로봇 개성 추가: 기존 로봇 디자인을 더욱 재미있고 친근하게 개선 🔹 예술 및 인터랙티브 디자인: 감성을 표현하는 다양한 프로젝트에 적용 가능

🎉 결론

이 프로젝트는 기본적인 프로그래밍 지식하드웨어 조립을 통해 누구나 쉽게 만들 수 있으며, 로봇의 개성을 극대화하는 데 중점을 둡니다.

여러분도 직접 제작하고 싶다면, Raspberry Pi Pico와 MAX7219 기반 디스플레이를 활용해 자신만의 로봇을 만들어보세요! 😊

👉 이 프로젝트를 시작하고 싶다면? GitHub의 코드 및 파일을 다운로드하여 직접 만들어 보세요. 추가적인 도움이 필요하시면 언제든지 질문해주세요! 🚀

728x90
반응형