A Study of GPIO Expansion Through Multiplexers and Shift Registers
본 연구는 74HC4051 멀티플렉서와 직렬 연결된 74HC595 시프트 레지스터를 아두이노 우노(Arduino Uno) 및 ESP32와 같은 마이크로컨트롤러와 함께 활용하는 것이 실행 속도, 전력 소비 및 확장성 측면에서 발생하는 트레이드오프를 정량화하는 동시에, IoT 애플리케이션을 위해 GPIO 용량을 대폭 확장할 수 있는 비용 효율적인 솔루션을 제공한다는 것을 입증한다.
원본 논문은 CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
스마트 온도 조절기부터 산업용 센서에 이르기까지 모든 것을 구동하는 작은 컴퓨터의 세계에는 지속적인 병목 현상이 존재합니다. 바로 연결 지점의 부족입니다. 마이크로컨트롤러라고 불리는 이 장치들은 현대 전자 기기의 두뇌 역할을 하지만, 외부 세계와 통신할 수 있는 물리적 포트, 즉 핀의 개수가 고정되어 있습니다. 엔지니어가 하나의 칩에 수십 개의 전등, 몇 개의 온도 센서, 그리고 몇 개의 버튼을 연결하고 싶을 때, 그들은 종-종 꽂을 곳이 부족해지는 상황에 직면합니다. 표준적인 해결책은 단순히 더 많은 포트를 가진 더 비싼 칩을 구매하는 것이지만, 이는 비용과 복잡성을 증가시킵니다. 더 우아한 접근 방식은 여러 장치가 단일 연결을 공유할 수 있도록 교통 정리 역할을 하는 단순하고 저렴한 보조 칩을 사용하는 것입니다. 이러한 보조 칩 중 두 가지는 아날로그 멀티플렉서와 시프트 레지스터입니다. 아날로그 멀티플렉서는 서로 다른 입력 라인을 단일 수신기로 라우팅하는 교환수처럼 작동하며, 시프트 레지스터는 데이터를 한 번에 하나씩 받아 한꺼번에 방출하여 많은 출력을 제어하는 컨베이어 벨트처럼 기능합니다. 과제는 항상 이 보조 칩들이 정확히 얼마나 절약하는지, 얼마나 빠르게 작동하는지, 그리고 시스템이 커질 때 전력을 너무 많이 소모하지는 않는지를 이해하는 것이었습니다.
최근 독립 연구자인 찬드라몰리 할다르(Chandramouli Haldar)는 이론을 넘어 이러한 구성 요소들이 실제 환경에서 어떻게 성능을 발휘하는지 확인하기 위해 정밀하게 측정하는 연구를 수행했습니다. 이 연구는 두 가지 특정 보조 칩, 즉 입력 신호를 관리하는 74HC4051과 출력 신호를 관리하는 74HC595에 초점을 맞췄습니다. 연구자는 취미 활동가와 전문가 모두가 널리 사용하는 두 가지 일반적인 유형의 마이크로컨트롤러 보드인 아두이노 우노(Arduino Uno)와 ESP32를 사용하여 이 구성 요소들을 테스트했습니다. 목표는 이 단순하고 저렴한 부품들이 작은 컴퓨터의 성능을 늦추거나 에너지를 너무 많이 소비하지 않으면서 효과적으로 능력을 확장할 수 있는지 결정하는 것이었습니다. 이 연구는 새로운 기술을 발명한 것이 아니라, 확립된 도구들이 한계에 부딪혔을 때 어떻게 작동하는지에 대한 엄격한 병렬 비교를 제공함으로써, 제한된 자원으로 복잡한 시스템을 구축하려는 모든 이들에게 명확한 가이드를 제공했습니다.
실험 결과, 이 보조 칩들은 마이크로컨트롤러의 능력을 확장하는 데 매우 효율적임이 드러났습니다. 연구자가 8개의 아날로그 센서를 컴퓨터에 직접 연결했을 때 8개의 별도 핀이 필요했습니다. 하지만 단 하나의 74HC4051 멀티플렉서를 사용함으로써, 동일한 8개의 센서를 단 4개의 핀만으로 읽을 수 있었고, 이는 하드웨어 요구 사항을 사실상 절반으로 줄였습니다. 디지털 출력, 예를 들어 전등이나 스위치를 제어하는 경우의 결과는 더욱 놀라웠습니다. 단 하나의 74HC595 시프트 레지스터는 단 3개의 핀만으로 8개의 장치를 제어할 수 있었습니다. 연구자가 이 칩 4개를 체인 형태로 연결했을 때, 동일한 3개의 핀만 사용하여 32개의 장치를 제어할 수 있었습니다. 8개의 칩을 체인으로 연결하면 메인 컴퓨터에 추가적인 연결 지점 없이도 64개의 출력을 관리할 수 있었습니다. 이는 시스템이 데이터를 한꺼번에 처리하는 대신 순차적으로 관리할 의사가 있다면, 적은 수의 고정된 핀으로도 방대한 수의 장치를 제어할 수 있음을 입증했습니다.
하지만 이러한 확장은 속도라는 대가를 수반하며, 연구는 이로 인해 시스템이 얼마나 느려지는지를 정량화했습니다. 연구자는 표준 소프트웨어 명령을 사용하여 이 칩들을 제어하는 것이 컴퓨터의 내부 하드웨어와 직접 통신하는 저수준 명령을 사용하는 것보다 현저히 느리다는 것을 발견했습니다. 아두이노 우노에서 단일 핀을 토글하는 표준 명령은 약 7.28마이크로초가 걸렸지만, 직접적인 하드웨어 명령은 그 시간을 0.125마이크로초로 줄여 해당 작업을 거의 60배 더 빠르게 만들었습니다. 이러한 차이는 대규모 그룹의 전등을 업데이트할 때 더욱 결정적이었습니다. 32개의 출력을 업데이트하는 데 표준 소프트웨어는 1.7밀리초 이상이 걸린 반면, 직접적인 방식은 동일한 작업을 단 30마이크로초 만에 완료했습니다. 본래 더 빠른 ESP32 보드 역시 유사한 개선을 보였으나, 표준 제어와 직접 제어 사이의 격차는 아두이노보다 작았습니다. 연구는 하드웨어 확장이 잘 작동하지만, 이를 제어하는 소프트웨어의 속도 또한 칩 자체만큼 중요하다는 결론을 내렸습니다.
전력 소비는 또 다른 핵심 요소였으며, 결과는 매우 안심할 만했습니다. 연구자는 확장 칩을 사용할 때와 사용하지 않을 때의 시스템 전력 사용량을 측정했습니다. 단 하나의 멀티플렉서를 추가했을 때 전력 사용량 증가는 1% 미만이었습니다. 심지어 64개의 장치를 제어하기 위해 8개의 시프트 레지스터를 연결했을 때도 총 전력 증가는 8% 미만이었습니다. 이는 보조 칩 자체가 매우 효율적이며 시스템의 배터리를 크게 소모하지 않는다는 것을 시사합니다. 다만 연구는 실제 전력 소모가 연결된 장치들이 무엇을 하느냐에 따라 크게 달라질 수 있다고 언급했습니다. 만약 64개의 전등이 모두 최대 밝기로 켜져 있다면, 전등 자체가 요구하는 전력이 제어 칩의 미미한 오버헤드를 훨씬 초과할 것입니다. 연구는 제어 부하가 적절히 관리된다면 이 확장 방식이 배터리로 구동되는 장치에도 실행 가능하다는 것을 확인했습니다.
연구는 또한 이 칩의 체인을 어디까지 확장할 수 있는지, 그리고 언제 신뢰성이 떨어지는지도 살펴보았습니다. 연구자는 8개의 칩 체인을 테스트하여 완벽하게 작동함을 확인했지만, 더 긴 체인의 경우 어떤 일이 벌어질지도 계산했습니다. 그들은 제어 가능한 장치의 수는 칩이 추가될 때마다 선형적으로 증가하지만, 체인의 끝까지 신호를 보내는 데 걸리는 시간 또한 증가한다는 것을 파악했습니다. 32개의 칩 체인의 경우, 신호가 전체 라인을 통과하는 데 시간이 더 오래 걸리므로 전등이나 스위치의 반응 속도가 늦어질 수 있습니다. 연구는 전등 한 줄을 제어하거나 센서 뱅크를 읽는 것과 같은 대부분의 실용적인 응용 분야에서는 이러한 지연이 무시할 만한 수준임을 보여주었습니다. 그러나 수백 개의 장치에 대해 즉각적이고 동시적인 변화가 필요한 시스템의 경우, 시프트 레지스터의 순차적인 특성이 제한 요인이 됩니다.
궁극적으로 이 연구는 많은 장치를 작은 컴퓨터에 연결해야 하는 엔지니어와 메이커들에게 명확하고 데이터에 기반한 로드맵을 제공합니다. 이 연구는 멀티플렉서와 시프트 레지스터를 사용하는 것이 전력에 대한 아주 작은 비용과 관리 가능한 속도의 트레이드오프를 통해 물리적 핀의 한계를 극복하는 매우 효과적인 방법임을 확인해 줍니다. 연구는 최상의 결과는 이러한 단순한 하드웨어 도구와 컴퓨터의 하드웨어에 직접 전달되는 최적화된 소프트웨어를 결합할 때 나온다는 점을 강조합니다. 이러한 구체적인 한계와 장점을 이해함으로써, 제작자들은 몇 개의 핀을 가진 작은 칩을 복잡한 센서 및 장치 네트워크를 관리할 수 있는 강력한 컨트롤러로 변모시켜, 확장성과 효율성을 모두 갖춘 시스템을 설계할 수 있습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.