Lego Mindstorms NXT超音波センサーをRaspberry Piに直接接続する
概要
Lego Mindstorms NXT超音波センサーをRaspberry Piに直接接続します。TCA9517 I²CバッファとSCL用の追加GPIOを使用し、距離を読み取る簡潔なC++スニペットで実現します。
はじめに
Raspberry Piは豊富なコミュニティとドキュメントで知られますが、Lego Mindstormsキットはラピッドロボットプロトタイピングの定番プラットフォームです。NXTシリーズはARMベースのマイコンを搭載し基本的なロボティクスには十分ですが、コンピュータビジョンなど高度なタスクには不向きです。新しいEV3シリーズはより強力なLinuxベースのブレインを持ちますが、高解像度画像処理を実用的な速度で行うにはまだ課題があります。
Piの演算能力とLegoの柔軟なハードウェアを統合すれば、強力なハイブリッドシステムが実現できます。BrickPiのような既存ブリッジもありますが、古いI²Cセンサーのみ対応、中間マイコンが必要、電流駆動モーターで苦戦するといった制限があります。本記事では、NXT超音波センサーをマイコンなしで直接Piに接続するクリーンな方法を紹介します。
課題
最初の障壁はハードウェアでした。センサーの5VロジックとPiの3.3V I²Cバスのミスマッチを、2つのn-FETを使ったシンプルなレベルシフターでは解決できませんでした。センサーのデータシートによると、弱い82kΩプルアップと強い4.7kΩシリーズ抵抗があり、Piの1.8kΩプルアップではラインをローに引き下げられません。結果としてセンサーはPiをACKしませんでした。
これを克服するため、双方向I²CバッファのTCA9517を採用。適切なレベルシフトとシリーズ抵抗問題の解決を同時に実現します。
2つ目のファームウェアレベルの課題は、センサーのレジスタ書き込みとデータ読み取りの間に追加のクロックサイクルが必要なことです。標準のLinux I²Cドライバではこのサイクルを挿入できないため、SCLラインで追加のGPIOをトグルさせてセンサーのタイミング要件を満たしました。
ハードウェア
プロトタイプに必要なもの:
- Lego Mindstorms NXT超音波センサー
- Mindstormsケーブル(切断済みまたはソケット付き)
- TCA9517とSO-8→DIP-8アダプタ(またはカスタムブレークアウト)
- Raspberry Pi(任意のモデル。Pi Aを使用)
- ブレッドボード、ジャンパーワイヤー、はんだ付けキット
最小限のブレークアウトボードで、9V制御、5V電源、I²C信号を供給し、オプションの9Vスイッチングやシリーズ抵抗を省いて接続を簡素化しています。ピンアウト詳細はLego HDKを参照してください。
製造プロセス
- Raspberry Pi & HDC2010:I2C温湿度センサー完全セットアップガイド
- 5ドルI2C温度センサーで作るRaspberry Pi温度ロガー
- Raspberry PiとDS18B20によるプロフェッショナルな温度監視
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- Raspberry Piで気象観測ステーションを構築し、日次天気データをメール送信
- センサーデータをRaspberry Piに統合:実践ガイド
- HC-SR04超音波距離センサーをRaspberry Pi 3に接続 – 完全ガイド
- Raspberry PiでPIRモーションセンサーとLEDを制御
- Raspberry Piで低コスト土壌水分センサーを構築 - スマート灌漑に活用
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry PiにTGS2600ガスセンサーを接続して有毒ガスを検知