WS2812B를 이용해서 RGB LED 하트 만들기
led-heart-ws2812b.ino
1.9K 6 8년전
Created Date: 2016.11.07 Modified Date: 2016.11.08 revision 1.0 키워드 : 코딩교육, SW교육, 네오픽셀, 아두이노, LED, RGB, WS2812B, VU미터, VU-Meter, Arduino, DIY
들어가며.. 안녕하세요 버섯돌이 유재성입니다. 코딩 교육을 위한 LED 하트의 소개 및 목차는 점점 더 멀어지는군요...^^;;;
오늘 살펴볼 내용은 기존 시간에 만들었던 코딩 교육용 H/W 도구인 LED 하트의 연장선상에 있는 작품으로서... 좀 더 코딩 난이도를 높이며 창의력을 키우기 위해 다양한 연계 작업이 가능하도록 준비한 RGB 하트입니다.^^
RGB LED 하트 만들기의 최종 외형이 완성된 상태는 아니라 나중에 정리해서 포스팅하려다... 요즘 알리의 11.11 행사도 코앞이라 필요했었던 제품들을 파악해서 구매 목록도 정리해야 하고... 개인 사정상 미루면 언제 포스팅할지 알 수 없기에 현 상태에서도 참고하기에 무리 없을 것 같아서 포스팅합니다.^^
작업 과정을 잡담 반 공유 반으로 블로그에 몇 번 포스팅했었으니 세부 내용은 블로그 내용들을 참고하시기 바라며, 작업하는데 큰 어려움이 없도록 기존에 작성했던 내용 중 참고할 만한 내용이나 링크는 이 글에 일부 포함해 놓겠습니다.
그래도 저처럼 쓸데없이 고생하는 노가다를 조금은 줄일 수 있을지 모르니 도움 안 되는 사족을 달아 드리겠습니다.^^;;
**주의** 항상 그렇듯 저는 전자 지식이 무지한 초보라서 실험적이므로 제 글은 단순히 참고만 하시기 바라며, 조금이라도 정확한 정보를 공유할 수 있도록 잘 못된 점이 있으면 고수님들께서 알려 주시면 감사하겠습니다.^^
::오늘의 작품 감상하기:: 어떤 것을 만들지 미리 살펴보는게 글을 이해하기 쉽겠죠^^ 아직은 코딩을 완성한 형태는 아니지만 외형과 동작 방식을 보면 대략적인 파악은 가능하리라 봅니다.^^
시험 삼아 첨부된 기본 소스에 간단하게 퍼포먼스 두 개를 추가해 봤습니다.^^;;
::준비물:: - 포맥스 or 두꺼운 박스 & 하트 그림
저는 칼로 자르기 편하려고 포맥스 1T 제품을 사용했는데... 나중에 분해가 쉽도록 케이스를 나사 등으로 고정하실 분들은 2T나 3T 제품이 좋을 것 같습니다. 포맥스는 1년 전쯤 국내 쇼핑몰에서 1T 300*450mm 제품을 900원 정도에 여러 장 미리 구매해 놨었습니다.^^ 지금도 인터파크나 11번가 등 대형 쇼핑몰에서 비슷한 가격에 판매 중이며 2T도 1,100원 전후에 판매 중입니다. 개인적으로는 재활용을 위해 일상생활에서 쉽게 구할 수 있는 두꺼운 종이 상자를 더 좋아합니다.^^;;;
- WS2812B LED 18개
WS2812B 제품은 9월 말에 일주일 남짓 알리 제품을 전부 살펴서 http://s.click.aliexpress.com/e/vzZzfMbmq 에서 구매했습니다. 며칠 전에 테스트 강좌 올리면서 가격을 살펴봤을 때에는 항공 등기 우편 배송비 포함 60 개짜리 제품이 5.5$로 더 떨어져서 11.11 할인 행사 때 몇 개 더 주문하려 했더니 지금은 약 10$로 다른 제품들과 비슷한 가격으로 올랐네요.ㅜㅜ 조삼모사도 아니고 11.11 당일에 가격이 다시 떨어지지만 요즘 11.11 행사 당일 할인 가격이 붙어있는 몇몇 찜했던 제품들의 조기 품절 및 가격 상승이 간간이 목격되어서 아쉽군요.
- 아두이노 ( Arduino ) 사용하시는 라이브러리에서 지원하는 제품이면 상관없으리라 보며 저는 Arduino Pro Mini 5v 제품으로 작업했습니다.
- 칼 & 자 & 글루건(Or 접착제)
- 그 외... WS2812B의 납땜이 필요한 분들은 그에 해당하는 준비물이~ 그렇지 않고 납땜이 어려운 학생들은 WS2812B 커넥터 등 적절하게 준비하세요~
::하트 외형 만들기:: LED 하트 모양 작업을 위한 이미지 파일과 세부적인 설명은 아래 링크의 글을 참고하시기 바라며, 링크 타고 방문하기 귀찮은 분들을 위해 타공을 위한 이미지 파일은 이 글에도 파일로 첨부했습니다. http://blog.naver.com/dev4unet/220854566127 사용할 포맥스가 300*450mm 제품이라 30Cm를 사용하기 위해서 패널은 가로*세로 15Cm로 맞췄습니다. LED 홀 사이즈는 SMD 5050 사이즈에 맞게 5mm로 했으며 대략 5~6mm 정도 되니 참고하셔서 구멍을 뚫기 바랍니다. WS2812B가 아닌 기존처럼 5파이 동그란 LED를 사용하고 싶은 분들은 원형을 뚫으시면 되겠습니다.^^;;
하트 이미지를 출력하신 후 포맥스를 가로*세로 15Cm로 자르세요. 포맥스가 30Cm 넓이라서 15Cm 폭으로 자르고 반으로 쪼개면 15*15Cm의 패널이 두 개 만들어집니다.(하나는 뒷면용) 구멍을 뚫기 위해 출력한 종이를 포맥스 위에 붙이고 칼로 구멍을 뚫으면 되겠습니다. 남들은 1~20분이면 끝나는 포맥스 타공 작업을 무려 5~6시간 정도에 걸려서 힘들게 구멍을 다 뚫었네요...ㅠㅠ;; 절반 정도 뚫고 나니 한동안 손이 너무 아파서... 처음에 골랐었던 비타포유 박스에 구멍을 뚫는 게 좋았을 것 같다는 생각이..ㅜㅜ
눈이 안 좋으니 겨우 구멍 18칸을 뚫기 위해 칼질만 대략 1천 번 가까이 한 것 같군요... -_-;; 처음으로 포맥스 삽질하면서 느낀점은... 처음에는 오차를 줄이기 위해 한쪽 면씩 칼로 4~8번씩 그으며 사각형 모양을 죽어라 칼질하면서 뚫었는데... 눈이 안 좋아서 정확하게 모서리까지 칼질이 잘 안되니 엉뚱한 곳으로 칼질이 되고 칼질만 엄청나게 한 것 같습니다.^^;;; LED 크기에 딱 맞도록 5mm를 정확하게 도려내려고 했지만, 역시나 저는 지그재그로 제멋대로 칼질이 되더군요.^^
포맥스는 두께가 얇아서 칼로 한쪽 구멍을 먼저 뚫고 나서 슥슥~ 톱질하듯이 도려내는 게 가장 빠를 것 같습니다. 다음에는 편하게 드릴로 원형 구멍을 먼저 뚫고 나서 칼로 사각형 모양으로 만드는 게 압도적으로 빠를 것 같다는 생각도 들더군요.^^;; 다들, 알아서 편하게 구멍을 뚫으시기 바랍니다.*^^*
TIP)
아이들과 함께 작업하거나 포맥스 절단이 귀찮은 분들은 쉽게 구할 수 있는 비타 포유같이 딱딱한 박스에 작업하시면 좋습니다. 제가 처음에 사용하려고 준비했었던 박스라서 첨부된 이미지로 작업하기에 여백도 충분하고 좋습니다. 손쉽게 아두이노를 내장할 수 있으며 보조 배터리 등도 함께 넣을 수 있어서 아이들 교육용으로는 딱 좋은데.. 처음으로 포맥스를 사용해 볼 겸 만든 작품을 벽에 걸거나 다양한 용도를 고려하느라 포맥스로 바꿨네요.^^;; (마음 한편에서는 부품을 보관할 만한 상자가 필요했다고 얘기할 수는.. 쿨럭...)
::WS2812B 18개 준비하기:: 제가 구매한 가성비가 가장 좋은 1미터에 60개짜리 스트립은 간격 문제로 제가 사용한 하트 모양에 맞출 수 없습니다.^^ 절취선을 따라서 18개로 자른 후 아래처럼 다시 전선으로 이어주시기 바랍니다. 끊어진 부분을 전선을 이용해서 원하는 형태로 휠 수 있도록 다시 붙이는 작업이라 굳이 설명이 필요 없습니다.^^;;; 워낙 간단한 작업이라 보다 자세한 설명은 기존의 글을 참고하시기 바랍니다. 18개의 LED를 납땜했으면 정상적으로 납땜이 되었는지 아래 글을 참고해서 테스트하시기 바랍니다.
TIP 1) 지난번에 잠깐 언급했듯이 아래와 같은 제품을 이용하면 납땜 없이 작업은 가능할 것 같습니다만.. 케이블이 너무 길고 두꺼워 어떨지는 모르겠네요. http://s.click.aliexpress.com/e/3fmAMZZFI
WS2812B가 잘 휘어지기 때문에 5050 LED 양측면을 조금 꺾어서 패널에 고정하면 될 것 같은데... 아무래도 희소성 때문에 가격이 무시 못 할 금액이라 편한 방법을 사용하시기 바랍니다.
TIP 2) 모든 게 귀찮다면... 직접 해 보지 않아서 결과를 보장할 수는 없지만... 최후의 방법으로..-_-;; LED 간격이 넓은 스트립 제품은 사각형 각도를 잘 맞춰서 구부리시면 가능할 것 같지만 제가 제품이 없으니 확실치 않습니다. 특히나, 별 탈 없을 것 같지만 LED 스트립을 평평한 상태를 유지하지 않고 휘어도 되는지는 의문입니다.^^
LED 스트립 제품은 손으로 손쉽게 구부려지므로 LED와 LED 사이가 충분히 넓은 스트립 제품을 구매하신 후 하트 모양에 맞게 가급적 일직선상으로 배치하면서 구부리시면 크게 휘지 않고도 가능할 것 같습니다. 음.. 글보다는 그림이 이해하기 훨씬 좋겠지만 그럴 수는 없으니 대충 양옆에서 서로 밀면서 위로 치솟게 한다는 느낌으로~^^;;; 하트 구멍 간격 보다는 충분히 LED 간의 폭이 넓은 스트립 제품이라면... 하트 간격에 맞게 LED의 사이를 줄이려면 남는 길이만큼을 중간 지점에서 세로로 길게 세워 주시면 간격은 맞을 것입니다. 그 상태에서 LED 하트 구멍에 맞게 살짝만 비틀어서 접착하시면 손쉽게 원하는 형태를 유지할 수 있으리라 봅니다. 다만, 이때는 제가 드린 사각형의 방향보다는 사용하는 스트립의 방향에 맞게 사각형의 각도를 조금씩 바꿔야 수월하리라 봅니다. 아니면 스트립을 심하게 비틀어야 하는 경우가 발생하니 사각형 대신 원형으로 구멍을 뚫는 것이 좋을지도 모르겠네요. 제가 한 방식과 Tip1, Tip2 중 어떤 게 더 편할지는 모르겠네요..^^
::하트 패널에 LED 장착:: 가장 어려운 작업은 전부 끝났으니.. 그냥 편하게 하트 구멍에 맞게 WS2812B의 LED를 끼워 넣으면 됩니다. 저는 기존에 만들었던 LED 하트 작품과 비슷한 퍼포먼스를 위해서 하트의 가장 하단을 1번으로 했습니다. 기존에는 구현할 수 없었던 맨 밑에서부터 시계 방향으로 회전하는 것을 구현하기 위해 1번부터 시계 방향으로 배치했습니다.
이때, WS2812B를 접착하는 방법은 5050 LED 측면의 WS2812B의 철판에 글루를 살짝 묻혀서 눌러주면 깔끔하게 잘 붙습니다.
즉, 사진에 표시한 부분에 글루를 묻혀서 패널에 붙이시면 됩니다. LED 18개로는 발열이 없을 것 같지만 발열이나 부품 위에 묻히는 게 살짝 걱정되면 WS2812B 뒷면에서 글루로 살짝 고정해주세요.^^ (모든 LED가 정상 동작하는지 확인 후에 WS2812B 뒷면에서 완벽하게 고정하시기 바랍니다.)
::아두이노 연결 및 테스트:: WS2812B는 총 3핀으로 되어있으면 가운데의 데이터 핀을 저는 아두이노 프로 미니의 6번 핀에 연결했습니다.
http://blog.naver.com/dev4unet/220852108752
세부 내용은 위 글과 위 글에 나온 링크의 글을 참고하시기 바라며, 네오픽셀 테스트는 간단하기 때문에 요약하면, https://github.com/adafruit/Adafruit_NeoPixel GitHub 사이트에서 Adafruit NeoPixel Library를 다운 받아서 폴더 이름을 Adafruit_NeoPixel로 변경해서 아두이노의 라이브러리 폴더에 복사하거나 스케치의 라이브러리 추가 기능을 이용하세요.
네오픽셀 라이브러리를 설치 후 아두이노를 재실행하시고 예제에서 Adafruit NeoPixel의 Simple 예제를 불러옵니다. 그리고 아두이노와 연결된 핀 번호와 사용할 LED 수를 선택해주면 간단히 테스트할 수 있습니다. 즉, 아래 두 부분만 변경하면 간단하게 테스트할 수 있습니다. #define PIN 6 // 아두이노와 연결된 핀 번호 #define NUMPIXELS 18 // RGB 하트는 총 18개의 LED를 사용합니다.
다만, 제 경우 각 LED마다 매번 색상을 랜덤하게 가져오도록 소스를 조금 수정했었습니다. 링크에 사용된 소스 그대로지만 테스트에 사용한 소스 파일도 본 강좌에 첨부했습니다.
정적으로 잘 동작하는군요.*^^*V
그 외의 퍼포먼스는 기존 강좌를 참고해서 직접 다양하게 구현해 보세요.^^
동작 확인 후에 글루로 고정된 최종 형태입니다. 참고로, 제 경우에는 아직 박스 형태를 어떻게 조립할지 결정을 못 했기에 위 사진의 좌측 중단의 9시 방향처럼... WS2812B를 편하게 배치할 경우 배선이 패널 측면으로 휘어야 할 경우에는... 가급적 배선의 방향을 바꿔서 패널 측면이 아니라 다른 곳을 향하도록 돌렸기에 겹치는 부분들이 많습니다.ㅜㅜ
그리고, 제 경우 아이들과 갖고 놀다 보니 혹시나 싶어서 배선도 패널에 붙여놓고... 배선과 WS2812B 모두 글루로 도배했습니다.^^;; 나중에 하트 정중앙에 액정이나 도트 매트릭스를 넣어야 해서 혹시 모를 사태를 미연에 방지할 목적도 있었습니다.^^;;
무엇보다 기존 글을 보셨으면 아시겠지만.... WS2812B의 LED를 최대한 패널에 밀착해서 붙이려고 너무 얇은 전선을 사용한 것이 마음에 걸려서 글루로 도배를....^^:;
배치 TIP) 만약, 기존의 배스킨라빈스 케이스로 만들었던 LED 하트와 동일한 퍼포먼스를 손쉽게 구현하려면... 1번과 10번의 LED를 지금처럼 1개로 하지 말고 기존과 동일하게 2개로 맞추는 게 가장 쉽습니다. 그렇게 해서 LED를 기존처럼 20개로 만들고 WS2812B를 10개씩 2세트로 만드세요.
WS2812B는 아두이노에 여러 세트를 연결할 수 있으므로 2세트를 만들어서 가장 하단의 1번을 기준으로 좌측과 우측을 각각 담당할 수 있도록 하나는 시계 방향으로, 다른 하나는 1번을 기준으로 반 시계 방향으로 배치하면 됩니다.
장점으로는, 아두이노는 WS2812B 두 개를 동시에 제어할 수 있기 때문에... 기존 소스를 그대로 사용하면서 두 개를 동시에 제어하면 똑같은 퍼포먼스를 손쉽게 구현할 수 있어서 아이들의 경우 기존 소스에서 자연스럽게 응용된 소스로 넘어올 수 있기에 많은 도움이 되리라 봅니다.
WS2812B가 두 개로 분리되었기에 좌측은 아래에서부터 우측은 위에서부터 시작되는 등의 다양한 퍼포먼스를 보다 쉽게 제어가 가능하며, 개별적으로 제어하면 지금처럼 단순히 한 사이클을 하나씩 제어하는 기능도 가능합니다.
필요하다면 나중에 두 개의 WS2812B를 커넥터를 사용해서 연결하면 하나로 만들 수 있기 때문에... for 문과 조건 문의 다양한 심화 학습이 가능하리라 봅니다.^^
::동작 영상:: 영상이 아니라 직접 육안으로 보면 꽤 예쁩니다.^^
::마치며:: 케이스를 박스 형태로 만들기 위해 포맥스의 폭을 5Cm로 해서 4개의 측면은 잘라놨는데.. 아직 작품의 최종 형상이 완성된 형태가 아니라 아이들과 놀면서 가끔씩 열어야 할 것 같더군요.^^ (기존처럼 블루투스나 적외선 기능도 그렇고.. 외부 전원 단자와 아두이노 포트 등의 구멍도 뚫어야 해서...) 포맥스를 1T가 아닌 2T나 3T 정도를 사용했으면 나사로 고정하면 될 것 같은데 집에 얇은 나사도 없고... 현재는 나사 고정 위치에 포맥스를 덧붙이거나 가드레일 형태로 위에서 아래로 내려 꽂는 형태도 고민중입니다.ㅠㅠ 역시 저한테는 재활용을 위한 두꺼운 종이박스가 최고인듯 ..^^ 모쪼록 조금이라도 도움이 되었길 바랍니다.^^ 본문 수정 시 가급적 공유한 곳의 글 들도 함께 수정하려고 노력합니다만 누락되는 경우가 많습니다.^^;;; 작성한지 오래된 강좌는 가급적 원본 글도 함께 참고 하시기 바랍니다. [참고 자료] RGB LED 하트용 1차 이미지 RGB LED 하트를 만들기 위한 삽질 중 - WS2812B 18개 납땜하기 WS2812B 네오픽셀 스트립 수령 및 간단한 테스트 구매한 WS2812B 스트립 제품 Adafruit NeoPixel Librar Adafruit - Arduino Library Use https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library
RGB BAR ( WS2812 , WS2812B , WS2813 ) 정리 - Adafruit Neopixel RGB 스트립 & 최저가 정보 코딩 교육용 밤톨이 장난감 만들기2 - LED 하트 |
최신댓글