네트워크 시계(?) 자작기 1편
이사오면서 아트월에 무아스 LED 시계를 매립했다. 선을 숨기기 위해 전원선을 랜선으로 바꿔서 타일 틈에 밀어넣어서 예쁘게(?) 달아뒀다.
그런데 이놈의 시계가 좀 쓰다보면 시간이 틀어지는 것이다. 그래서 타임서버와 연동되는 LED 시계를 만들어보기로 했다. 시간이 맨날 틀어지는 것은 사실 핑계고 그냥 만들기가 하고 싶었다.
재료는 간단하다. ESP32 보드에 WS2812B LED 스트립을 쓰기로 했다. 자작의 가장 큰 문제는 하우징이다. 3D 프린터가 있으면 좋겠지만, 와이프가 허락하지 않는다. 그래서 현재 사용하고 있는 무아스 LED 시계를 개조하기로 했다. 물론 나중에 어마어마하게 후회하게 된다.
어쨌든 알리에서 WS2812B가 도착하기 전, 최대한 구상을 끝냈다. WS2812B를 7세그먼트 LED 시계로 쓸 땐, 어떤 순서로 개별 칩을 연결하느냐가 핵심이다. 아래와 같이 WS2812B를 배치하기로 했다.
그리고 여기를 참조해 esphome yaml 구문을 만들었다. 정확히 다 이해는 안되지만, 내 상황에 맞게 조금 바꿨다. 그리고 그냥 시계만 나오면 재미없으니까 미세먼지 등급에 따라 색깔이 바뀌는 LED 하나를 추가하기로 했다. yaml은 아래 파일 참조.
WS2812B가 도착했다. 대충 연결해 제대로 작동하는지 테스트해봤다. 특별한 문제 없이 잘 동작하는 것을 확인할 수 있었다.
시계를 뜯어보니, 이런 구조로 돼있었다. 저 기판을 들어내고, 새로 만든 기판을 이식하면 될 것 같았다. PCB를 뜨자니 일이 너무 커질 것 같았고, 아크릴은 내구성은 좋으나 가공하기가 힘들었다. 폼보드나 우드락 같은 건 가공성은 좋지만, WS2812B를 붙이고, 위에다 납땜을 해야하는 데 녹을 것만 같았다. 적당한 재료를 고민하다가 구형 태블릿을 전자 액자로 활용하기 위해서 샀다가 한참 남은 하드보드지를 이용하기로 했다.
뚜껑을 대고, 그림을 그린 다음, 하드보드지를 잘랐다.
그리고 WS2812B를 하나씩 잘라서 위와 같이 붙여줬다. 단, 그냥 붙여서는 안되고 하나 붙일 때마다 앞판을 갖다대서 제대로 맞는지 확인하면서 붙였다.
물론, LED 세그먼트의 폭이 좁아서 WS2812B에 붙은 LED가 밀착되지 않았다. 그래서 아래와 같이 생긴 손톱 정리 줄로 한참을 갈아냈다.
케이스 가공 작업의 전반부가 끝났고, 이제 배선에 들어갈 차례다. 그런데 케이스가 작아서 참 애매했다. 케이스가 크면 전선으로 배선을 하기가 어렵지 않겠지만, 포인트 사이가 1센티미터도 안되는 양쪽을 전선으로 연결하기엔 양쪽에 피복을 벗기고 땜질하기가 어려웠다. 집에 있는 직경 0.2mm까지 에나멜 동선으로 납땜을 할까 했지만, 허용전류 한계로 자칫 불이라도 날까봐 두려웠다.
WS2812B 하나가 최대 밝기 + 초록색 LED에서 50~60mA 정도의 전류를 소모한다는데, LED 가 30개니까 대충 2A정도 전류가 흐르니 여기에 나온 바로는 대충 90mA 정도 밖에 커버할 수 없기 때문이었다. 그래서 집에 굴러다니는 저항 다리를 이용해 배선하기로 했다. 저항 다리의 직경이 얼마나 되는지 모르겠지만, 에나멜 동선보다는 꽤 굵어보여서 그냥 해봤다.
아들이 깨어있는 동안엔 작업을 할 수 없었기 때문에 애를 재워놓고 밤 늦은 시간이나, 새벽에 일하려고 일어나서 일 끝난 후 아이가 일어나기 전 틈틈이 작업했다. 저항은 다리만 쓰였고, 몸통은 쓰레기통으로 갔다ㅠㅠ
LED 하나당 3개씩 배선해야 하니까, 29 곱하기 3, 총 87개... 허리가 끊어지는 줄 알았다. 수일에 걸쳐 결국 완성. 숫자와 가운데 점 두개를 구성하는 LED 사이의 거리가 멀어서 저항 다리로는 이을 수가 없었다. 전원은 최대한 근처에 연결하고, 제어선은 에나멜 동선(사진 빨간색 선)으로 배선했다. 당연한 얘기지만, WS2812B를 연결할 때 +, -선은 순서에 상관 없이 극성만 맞춰서 연결해주면 된다. 가운데 제어선만 순서에 맞게 연결해주면 된다.
불을 끄고, 테스트해보니 제대로 작동한다! 여기서 끝나면 좋겠지만, 케이스에 ESP32 보드와 버저에 자작 기판까지 우겨넣는건 더 어려운 일이다. 평소 쓰던 ESP32 보드는 길이가 길어 케이스에 들어가지 않는다. 그래서 잘 쓰지 않고 쳐박아뒀던 ESP32 lite 보드를 꺼내보니 딱 들어맞는다. 단, 이 보드는 usb 마이크로 포트 말고는 5v 입력을 받을 수 없었다. 5v to 3.3v 컨버터를 알리에 주문해놓고, 머릿속으로 한참을 고민하던 끝에 실행에 옮기려던 찰나... 중국산 납땜 인두가 '펑'하는 소리와 함께 사망해버렸다ㅠㅠ 결국 알리에 다시 인두를 주문했다. 인두가 도착하면 작업 후 2편을 올려보겠다.