빅토리아 시대 시계 디스플레이: 350개의 LED와 하나의 제어판으로 전체를 제어
이전 블로그 '21세그먼트 빅토리아 시대 디스플레이의 재창조'에서는 저와 DIY(Do-it-Yourself) 작업을 즐기는 친구이자 뛰어난 제작자인 Steve Manley이 함께 21세그먼트 빅토리아 시대 디스플레이를 현대적으로 해석해 가는 과정을 설명해 드렸습니다. 기존 디스플레이를 비추는 작은 백열등 전구를 사용하는 대신, Adafruit Industries LLC의 4684와 같은 3색 WS2812B LED를 사용합니다.
또한, '당시'에는 최첨단 기술이었을, 모든 기능을 제어하기 위해 복잡한 전기 기계 스위치를 사용하는 대신, 우리는 빅토리아 시대의 엔지니어와 발명가에게 미스터리였을 현대적인 마이크로 컨트롤러 장치(MCU)를 사용합니다.
Steve와 제가 만들 디스플레이는 모두 10자 디스플레이입니다. 이러한 디스플레이가 어떻게 표현되는지에 대한 아이디어를 제공하기 위해, 그림 1에서는 황동색 페인트를 뿌린 3D 인쇄 전면 패널을 통해 Steve가 초기에 구현한 디스플레이를 보여줍니다. 여기에서 Steve는 모든 LED가 작동하는지 확인하기 위해 간단한 테스트 패턴을 실행하고 있습니다.
그림 1: 21세그먼트 빅토리아 시대 디스플레이에 대한 현대적 해석의 초기 10자 구현. (이미지 출처: Steve Manley)
Steve의 3D 프린터가 디스플레이의 전체 20인치 범위를 처리할 수 없기 때문에 유사 황동 패널이 두 부분으로 분리된 것을 보게 됩니다. 또한 Steve는 캐릭터의 바깥쪽 가장자리를 둘러싸고 있는 전면 패널에 10개의 커다란 '구멍'을 내는 것을 택했습니다. 반면에, 제 전면 패널은 황동 마감 처리된 단일 아크릴 조각을 레이저로 절단했습니다(그림 2).
그림 2: 10자 디스플레이의 주요 요소. 전면에는 레이저컷된 아크릴 유사 황동 패널이 보입니다. 이 패널 뒤에는 각각 높이가 64mm, 너비가 50mm, 두께가 10mm인 10개의 3D 인쇄 셸이 있습니다. 상단에는 뒤에서 보이는 10개의 LED 기판이 있으며 2개의 기판 하위 조립품 다섯 개로 결합됩니다. (이미지 출처: Max Maxfield)
각 회로 기판은 너비가 50mm이고 높이가 64mm입니다. 이 기판은 2개의 기판 하위 조립품 다섯 개로 결합됩니다. 기판과 크기가 같고 두께가 10mm인 3D 인쇄 셸도 10개 있습니다. 저의 레이저컷된 유사 황동 패널의 경우에는, 레이저를 통해 각 문자를 형성하는 21개의 세그먼트를 절단할 수 있었고 이 과정에서 세그먼트 사이마다 얇은 0.7mm 스트립이 남겨졌습니다.
Steve와 저는 선의의 경쟁을 하면서 여러 유사 프로젝트를 수행해 왔는데, 몇 년 전에 만든 스마트 크로노그래프를 예로 들어 보겠습니다(Arduino로 스마트 크로노그래프 만들기 참조). 문제는 우리가 이전에는 LED의 수 및 상대적 위치와 같은 기본 규칙에는 동의했지만 일반적으로 MCU, 실시간 클록(RTC) 등과 관련하여 각각 자신의 방법을 취했다는 것입니다. 이 접근 방식의 문제는 코드를 공유하고 교환하는 것이 거의 불가능하다는 것입니다.
또한 새로운 프로젝트를 시작할 때마다 둘 다 '쓸데없는 데 힘을 쏟게' 되므로 시간과 노력이 낭비됩니다. 그래서 이번에는 디스플레이를 구동하는 데 함께 사용할 단일 제어 기판을 만들기로 결정했습니다. 또한, 앞으로 몇 년 동안 미래의 프로젝트를 지원하는 데 필요한 모든 '부가 기능'을 갖춘 기판을 만들기로 했습니다.
Victorian 디스플레이 제어 기판 소개
오랜 의논, 협상 그리고 타협 끝에 우리의 모든 요구 사항을 충족하는 설계가 완성되었습니다. 이를 가장 효율적으로 설명하기 위해, 기판(그림 3)을 보여드리면서 다양한 부분을 간략하게 살펴보겠습니다.
왼쪽 중앙에는 SparkFun Electronics의 DEV-14058 형태의 주 프로세서인 Teensy 3.6이 있습니다. 1Mbyte 플래시, 256Kbyte SRAM 및 4Kbyte EEPROM과 함께 180MHz(240MHz로 오버클록 될 수 있음)에서 실행되는 32비트 Arm Cortex-M4F 프로세서가 특징입니다.
그림 3: 왼쪽의 DEV-14058 Teensy 3.6 프로세서 기판(Arm Cortex-M4F 코어 기반)으로 시작하는 제어 기판의 첫 번째 버전입니다. (이미지 출처: Steve Manley)
기판 뒷면의 Teensy 뒤에는 디스플레이의 밝기나 소리에 대한 감도를 조정할 수 있는 두 개의 전위차계가 있습니다. Teensy의 오른쪽에는 MCU의 정의되지 않은 입출력(I/O) 핀에 대한 액세스를 제공하는 헤더가 있습니다.
Teensy 앞에는 시스템에서 주 전력이 제거될 때 RTC를 유지하는 데 사용되는 CR2032 동전형 전지 배터리가 있습니다. 오른쪽의 CR2032 앞에는 I2C 기반 센서와 액추에이터를 추가로 기판에 연결할 수 있는 헤더가 있습니다. 왼쪽의 CR2032 앞에는 각각 0V 핀, 5V 핀 및 데이터 핀으로 구성된 8개의 3핀 헤더 그룹이 있습니다. 이들 각각은 WS2812 LED 스트링을 구동할 수 있습니다. 또한 Teensy에는 8개의 문자열을 동시에 구동할 수 있는 관련 Octo LED 라이브러리가 있습니다.
21개 세그먼트 디스플레이의 경우, 7개의 더 짧은 세그먼트에는 각각 단일 LED가 있고, 14개의 더 긴 세그먼트에는 각각 2개의 LED가 있어 문자당 35개의 LED가 생성되어 10자 디스플레이에 총 350개의 LED를 제공합니다. 각 LED에는 24비트의 데이터가 필요하며 LED를 로드하는 데 사용되는 클록은 800kHz에서 실행됩니다. 즉, 단일 MCU 핀에서 모든 LED를 구동하는 경우 체인을 로드하는 데 ((35 x 10) x 24)/800,000 = 10.5ms가 걸립니다.
이에 비해 Teensy의 Octo 라이브러리를 사용하고 10자를 5개의 두 문자 쌍으로 분할하면 이 시간을 ((35 x 2) x 24)/800,000 = 2.1ms로 줄일 수 있습니다. 더욱이 Octo 라이브러리는 Teensy의 직접 메모리 액세스(DMA) 엔진을 사용하여 백그라운드에서 이 업로드를 수행할 수 있으므로 주 프로세서가 놀랍도록 정교한 조명 효과 계산과 같은 다른 작업을 수행할 수 있습니다.
기판 중앙에 있는 5개의 순간 푸시 버튼 스위치는 메뉴에 액세스하고, 모드 및 효과를 선택하며, 값(예: 날짜 및 시간)을 입력하는 데 사용됩니다. 기판 가장자리에 장착된 녹색 나사 블록 터미널을 사용하여 5개의 캐비닛 장착 스위치를 병렬로 연결할 수도 있습니다. 또한 푸시 버튼과 동일한 작업을 수행하는 데 사용할 수 있는 적외선(IR) 제어 기능을 포함하기로 결정했습니다. IR 감지기는 가운데 버튼 아래에 있습니다. 이 버튼 위에는 주변광에 따라 디스플레이의 휘도를 제어하는 데 사용할 수 있는 광 의존 저항기(LDR)가 있습니다. LDR 위에는 디스플레이가 소리에 반응하도록 하는 데 사용할 수 있는 일렉트릿 마이크가 있습니다. 이러한 모든 장치는 기판에서 제거할 수 있고 캐비닛에 장착될 수 있으며 녹색 나사 블록 터미널을 사용하여 기판에 연결할 수 있습니다.
기판의 오른쪽에는 Seeed Technology의102010328 Seeeduino XIAO가 있습니다. XIAO는 우표 크기에 불과하지만, 256KB 플래시 메모리 및 64KB SRAM과 함께 48MHz에서 실행되는 ATSAMD21G18 32비트 Arm Cortex-M0+ 프로세서 코어를 탑재했습니다. XIAO는 IR 제어 신호를 처리하고 Teensy로 전달하는 데 사용됩니다. 과하다고 생각될 수도 있지만(Teensy를 사용하여 IR을 직접 처리할 수 있기 때문에) 우리는 '분할 및 정복' 접근 방식이 장기적으로 훨씬 더 나은 선택이 될 것으로 확신했습니다.
모든 표면 실장 장치(SMD)는 기판 아래에 있습니다. 여기에는 Maxim Integrated의 DS3231SN#RTC, NXP의 SGTL5000XNAA3R2 저전력 스테레오 오디오 코덱, LogiSwitch의 LS119-S 스위치 디바운스 칩, Toshiba Electronic Devices and Storage Corp의 전압 레벨 시프터 역할을 하는 74HCT245 8진 버스 트랜시버가 포함됩니다.
그림 4에서 보이는 바와 같이 빨간색 제어 기판은 내 디스플레이 뒷면에 장착되어 있습니다. 또한 필요한 경우 추가 3.3V 센서를 구동하는 데 사용할 수 있는 강력한 3.3V 조정기를 포함하는 녹색 배전판도 있습니다.
그림 4: 10자 디스플레이 조립. 이미지 오른쪽에 빨간색 제어 기판이 있습니다. 왼쪽의 초록색 기판은 기판과 디스플레이에 전원을 분배하는 데 사용됩니다. (이미지 출처: Max Maxfield)
여기에서 보여지지는 않지만, 디스플레이의 오른쪽에는 파란색 시제품 제작 기판이 있습니다. 이 모두는 '우리의 유머 감각을 자극했던' 빨간색, 초록색 및 파란색(RGB) 기판이 있음을 의미합니다. 이상적으로는 배전판이 빨간색이고 제어판이 녹색이어야 하지만, 알 수 없는 이유로 기판 공장에서는 빨간색 기판의 전력 분배에 필요한 더 두꺼운 구리에 대해 상당한 가격을 부과하므로, 저희는 비용을 절감하기 위한 방법을 취했습니다.
제어판 프로그래밍
진짜 흥미로운 일은 다음 단계에서 시작됩니다. 디스플레이를 구동하기 위한 코드를 작성해야 하기 때문입니다. 우리가 사용하고자 하는 한 가지 접근 방식은 배경색, 전경색 및 마스크의 개념입니다. 마스크 비트가 0으로 설정되면 해당 세그먼트는 배경색을 표시합니다. 동일한 마스크 비트가 1로 설정되면 세그먼트는 전경색을 나타냅니다. 전경색과 배경색이 모두 검정, 흰색 또는 기타 몇몇 색상과 같은 정적 색상일 수 있다는 점이 흥미롭습니다. 또는 전경색과 배경색 모두 디스플레이를 가로질러 뻗어 있는 무지개 줄무늬 형태와 같이 동적일 수 있습니다.
결론
이러한 재조명된 빅토리아 시대 시계 디스플레이를 사용하여 수행하고자 하는 다른 실험이 많이 있습니다. 예를 들어 마이크와 오디오 코덱 칩을 사용하여 오디오 반응 모드를 취할 수 있습니다(Audio-Reactive Artifact with Arduino 1부 및 2부 참조). 또한 스크롤 텍스트를 왼쪽이나 오른쪽으로 기울여 디스플레이를 가로질러 '슬라이드'하는 기능을 추가해 보려고 합니다(취미 프로젝트에 동작 및 방향 센서 추가하기 참조).
끝으로, 저는 지금으로부터 123년 전인 1898년에 오리지널 21세그먼트 디스플레이에 대한 특허를 신청한 George Lafayette Mason에 대해 계속 생각하게 됩니다. George가 우리가 그의 아이디어를 활용하여 최신 기술을 통해 수행하는 작업들을 본다면 어떻게 생각했을지가 궁금합니다.
Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum


