겉보기엔 별것 아닐 수 있지만, 이것은 제가 아두이노로 만든 것 중 가장 유용한 도구일 것입니다. 제가 판매하는 '파워 블러-R(Power Blough-R)'이라는 제품을 자동으로 테스트하는 장치입니다. 이 테스터 덕분에 상당한 시간을 절약할 수 있었고(현재까지 최소 4시간 이상), 제품을 출고하기 전에 100% 정상 작동한다는 확신을 가질 수 있게 되었습니다.
파워 블러-R이란?
'파워 블러-R'은 '파워 블로커(Power Blocker)'로 발음하며(제 성인 'Blough'가 의외로 'Lock'으로 발음됩니다!), 옥토프린트(OctoPrint)와 3D 프린터를 사용할 때 자주 발생하는 역전류 문제를 해결하기 위한 장치입니다.
사용 방법은 간단합니다. 파워 블러-R을 USB 헤더에 꽂고 아두이노 나노의 리셋 버튼을 누르기만 하면 됩니다. 테스터가 일련의 테스트를 수행한 후, 내장 LED로 결과를 표시합니다(점등: 통과, 점멸: 실패).
대량으로 제품을 테스트해야 할 때, 단위당 테스트 시간을 줄이는 것은 엄청난 영향을 미칩니다. 이 테스터를 사용해 테스트 시간이 약 30초에서 5초로 단축되었습니다. 25초 차이가 작아 보일 수 있지만, 수백 개를 테스트하면 엄청난 시간 절약이 됩니다.
가장 인상적인 점은 이 도구를 사용하면 파워 블러-R을 두 번 테스트하는 시간이 정전기 방지 봉투를 그저 여는 시간보다 짧다는 것입니다!
여러분이 정확히 이 장치를 만들 필요는 없겠지만, 제가 사용한 방법 중 일부가 도움이 되길 바랍니다.
동영상 확인하기
이 글에서 다루는 대부분의 내용은 동영상에서도 확인할 수 있습니다. 동영상을 선호하신다면 시청해 보세요.
파워 블러-R 상세
파워 블러-R이 무엇이고 어떤 역할을 할까요?
옥토프린트로 3D 프린터를 사용해 본 분이라면, 프린터 전원이 꺼져 있는데도 라즈베리파이의 USB 전원 때문에 프린터 화면이 켜져 있는 현상을 경험해 보셨을 겁니다. 큰 문제는 아니지만, 어두운 방에서는 꽤 성가신 일입니다.
파워 블러-R은 수컷과 암컷 USB 커넥터가 달린 단순한 PCB지만, 5V 라인을 연결하지 않습니다.
이 문제를 해결하는 다른 방법들도 있습니다. USB 케이블의 5V 선을 자르거나 5V 핀에 테이프를 붙이는 식이죠. 하지만 저는 USB 케이블을 손상시키지 않으면서 간단하고 견고하게 같은 결과를 얻는 방법을 원했습니다.
파워 블러-R 구매를 원하시면 다음에서 구입 가능합니다:
내 틴디(Tindie) 스토어 (키트 또는 조립품)
TH3dstudio.com (조립품)
(참고: 이 글은 스폰서 글이 아니며, TH3D와는 파워 블러-R 공급 외에 아무런 관계도 없습니다. 링크 게재에 대한 추가 보상을 받은 적도 없으며, 원본 계약의 일부로 글/영상 제작이 논의된 적도 없습니다.)
배경: 대량 주문
틴디 스토어에서 파워 블러-R을 주로 키트로 판매했지만, 조립품 주문도 있었습니다. 조립품은 멀티미터로 테스트했는데, 입력과 출력 간의 그라운드, D-, D+ 연결 상태와 5V가 차단되었는지, 쇼트가 없는지 확인하는 과정이었습니다.
이 과정은 약 30초 정도 걸렸고, 아주 조심하지 않으면 실수하기 쉬웠습니다. 하지만 조립품 판매량이 적을 때는 큰 부담이 아니었습니다.
그런데 3D 프린팅 서브레딧에 파워 블러-R 사진을 올렸더니, TH3DStudio.com의 팀(Tim)이 연락해와 자사 스토어에 입점 시켜보고 싶다며 수량을 물었습니다. 10~20개 정도 예상했는데, "100개로 시작하자"고 하더군요.
멀티미터로 100개를 자신 있게 테스트하는 건 거의 불가능했습니다. 뭔가 대책이 필요했습니다!
하드웨어 구성
시간이 촉박해 가장 간단한 조립 방식을 택했습니다. 비용도 매우 저렴했습니다(전체 약 5달러 미만).
아두이노 나노 (마이크로 USB 버전 사용, 아무 버전이나 상관없음)
나노 스크류 터미널 브레이크아웃 보드
수컷 USB 브레이크아웃 보드
암컷 USB 브레이크아웃 보드
전선 몇 가닥
조립은 매우 간단합니다. 나노에 헤더 핀을 납땜(이미 되어 있지 않은 경우)하고 스크류 터미널 브레이크아웃에 꽂습니다.
수컷/암컷 USB 브레이크아웃 각각에 전선 5가닥을 납땜합니다. 실드선의 경우 암컷 브레이크아웃에 패드가 없어 커넥터 측면에 납땜했습니다. 반대쪽 끝은 피복을 벗겨 스크류 터미널에 고정합니다(장착/탈착을 쉽게 하기 위해 약간의 여유를 둡니다).
수컷 커넥터 핀 연결:
GND → 2번 핀
D+ → 3번 핀
D- → 4번 핀
VCC → 5번 핀
Shield → 10번 핀
암컷 커넥터 핀 연결:
GND → 6번 핀
D+ → 7번 핀
D- → 8번 핀
VCC → 9번 핀
Shield → 11번 핀
소프트웨어
먼저 아두이노 IDE를 다운로드해 설치합니다.
제 깃허브(GitHub)에서 스케치를 다운로드해 보드에 업로드하면 바로 사용 가능합니다.
시작 시 스케치는 테스트 스위트를 실행합니다. 모든 테스트를 통과하면 내장 LED가 켜지고(점등), 실패 시 LED가 깜빡입니다. 실패 사유는 시리얼 모니터로도 출력되지만, 저는 이 기능은 사용하지 않습니다.
수행하는 테스트는 다음과 같습니다:
초기 테스트
수컷 핀을 무시한 상태에서 암컷 핀이 예상대로 읽히는지 확인합니다. 자세한 내용은 '트라이스테이트 로직' 섹션을 참조하세요.
메인 테스트
GND, D+, D-, 실드가 연결되고 5V 라인이 차단되었는지 확인합니다. 파워 블러-R의 핵심 기능(5V 제외한 모든 라인 통과)을 검증합니다.
브리지 테스트
어떤 핀도 서로 브리지(단락)되지 않았는지 확인합니다. 각 핀에 출력을 주고 나머지 핀들에 영향을 주지 않는지 검사합니다.
INPUT_PULLUP 활용
프로젝트에서 핀당 저항 하나씩을 절약할 수 있는 매우 유용한 기능입니다. 특히 버튼을 사용할 때 유용합니다.
핀을 INPUT_PULLUP으로 설정하면, 내부적으로 10kΩ 저항을 통해 VCC에 연결됩니다. 풀업(또는 풀다운) 저항이 없으면 핀의 기본 상태는 '부유(floating)' 상태가 되어 읽을 때마다 값이 일정하지 않습니다. 이 저항값이 꽤 높기 때문에, 버튼을 눌러 핀을 그라운드에 연결하면 핀 상태가 쉽게 LOW로 바뀝니다.
저는 암컷 핀들의 핀 모드를 INPUT_PULLUP으로 설정해, 외부 힘이 가해지지 않는 한 HIGH로 읽히도록 기준점을 만들었습니다. 테스트 내내 수컷 핀들은 LOW로 설정했고, 두 핀이 연결되어야 할 때는 암컷 핀이 LOW로 읽히기를 기대했습니다.
트라이스테이트 로직(Tri-state Logic)
초기 테스트에서 수컷 핀을 사실상 '무시'하면서 암컷 핀의 로직 레벨을 확인하고 싶었습니다.
수컷 핀도 어떤 로직 레벨을 가져야 하니 문제가 될 것 같지만, 사실 대부분의 마이크로컨트롤러 핀은 '트라이스테이트 로직'을 지원합니다. 즉, HIGH, LOW, 하이 임피던스(High-Impedance) 세 가지 상태를 가질 수 있습니다.
하이 임피던스 상태는 핀을 INPUT으로 설정해 달성합니다. 이는 핀 앞에 100MΩ 저항을 연결한 것과 같아 회로에서 효과적으로 분리됩니다.
트라이스테이트 로직은 찰리플렉싱(Charlie-plexing)의 핵심 기능 중 하나로, 적은 핀으로 개별 LED를 제어하는 일종의 '마법' 같은 기법입니다. 관심이 있다면 관련 영상을 찾아보세요.
테스터 검증하기
이 단계는 정말 중요합니다. 테스터가 불량품을 제대로 걸러내는지 확인하지 못하면, 테스트 통과 시 제품이 정상이라는 확신을 가질 수 없습니다.
소프트웨어 개발의 단위 테스트에서 '음성 테스트 시나리오(negative test scenarios)'를 만드는 것과 같습니다.
검증을 위해 의도적으로 결함이 있는 보드들을 만들었습니다:
USB 헤더를 보드 잘못된 면에 납땜한 보드. 헤더는 잘 맞지만 그라운드 라인이 연결되지 않고 5V 라인이 연결됨 (이건 실수로 만든 건데, 테스터의 필요성을 입증해 줍니다!)
두 핀을 의도적으로 브리지해 브리지 테스트 코드 검증용으로 만든 보드
결론
글 처음에 말했듯, 이것은 아두이노로 만든 것 중 가장 유용한 도구입니다.
이후 팀이 파워 블러-R 200개를 추가 주문했습니다. 시간 절약도 고맙지만, 제품이 완벽하게 작동한다는 확신을 준다는 점이 가장 큰 장점입니다.
사실 200개 주문 때는 아내가 거의 모든 테스트를 담당했습니다. 사용이 얼마나 빠르고 간단한지, 합격/불합격 표시가 얼마나 직관적인지 아주 좋아했습니다.