레고 마인드스톰 NXT 초음파 센서를 라즈베리 파이에 직접 연결하기
요약
레고 마인드스톰 NXT 초음파 센서를 라즈베리 파이에 직접 연결합니다. 이 솔루션은 TCA9517 I²C 버퍼와 SCL용 추가 GPIO를 사용하며, 거리를 읽기 위한 간결한 C++ 코드 조각을 포함합니다.
소개
라즈베리 파이는 방대한 커뮤니티와 문서로 유명하지만, 레고 마인드스톰 키트는 여전히 빠른 로봇 프로토타이핑의 표준 플랫폼입니다. NXT 시리즈는 기본 로봇틱스에 충분한 ARM 기반 마이크로컨트롤러를 탑재했지만, 컴퓨터 비전 같은 고급 작업에는 부족합니다. 최신 EV3 시리즈는 더 강력한 리눅스 기반 브레인을 제공하지만, 여전히 합리적인 속도로 고해상도 이미지 처리에 어려움을 겪습니다.
라즈베리 파이의 연산 능력과 레고의 유연한 하드웨어를 결합하면 강력한 하이브리드 시스템을 만들 수 있습니다. 브릭피(BrickPi) 같은 기존 브리지는 구형 I²C 센서만 지원하고, 중간 마이크로컨트롤러에 의존하며, 전류 구동 모터 제어에 한계가 있습니다. 이 글에서는 마이크로컨트롤러 없이 NXT 초음파 센서를 라즈베리 파이에 직접 연결하는 깔끔한 방법을 보여줍니다.
도전 과제
첫 번째 장애물은 하드웨어였습니다. 두 개의 n-FET를 사용한 단순한 레벨 시프터로는 센서의 5V 로직과 라즈베리 파이의 3.3V I²C 버스 간의 불일치를 해결할 수 없었습니다. 센서 데이터시트에는 약한 82kΩ 풀업과 강한 4.7kΩ 직렬 저항이 명시되어 있어, 파이의 1.8kΩ 풀업으로는 라인을 낮출 수 없었습니다. 결과적으로 센서는 파이의 신호를 응답하지 않았습니다.
이를 극복하기 위해 TCA9517 양방향 I²C 버퍼를 사용했습니다. 이는 적절한 레벨 시프팅을 제공하고 직렬 저항 문제를 해결합니다.
두 번째 펌웨어 레벨 이슈는 센서 레지스터를 쓰고 데이터를 읽기 사이에 추가 클록 사이클이 필요했습니다. 표준 리눅스 I²C 드라이버는 이 사이클을 삽입할 수 없어, SCL 라인의 추가 GPIO를 토글해 센서의 타이밍 특성을 만족시켰습니다.
하드웨어
프로토타입에 필요한 부품:
- 레고 마인드스톰 NXT 초음파 센서
- 마인드스톰 케이블(절단 또는 소켓 포함)
- TCA9517 및 SO-8 → DIP-8 어댑터(또는 커스텀 브레이크아웃)
- 라즈베리 파이(모든 모델; Pi A 사용)
- 브레드보드, 점퍼 와이어, 납땜 키트
최소한의 브레이크아웃 보드는 선택적인 9V 스위칭이나 직렬 저항 없이 9V 제어, 5V 전원, I²C 신호를 공급해 연결을 단순화합니다. 핀아웃 세부사항은 레고 HDK를 참조하세요.