Raspberry Pi USB IP 表示デバイス (rpi_usb_ip_display)
概要
小型マイクロコントローラ(READMEではRP2350と表記)向けのArduinoスケッチで、Waveshare製1.47インチLCDと組み合わせて、接続したRaspberry Piホストのホスト名とIPv4アドレスをUSB経由で取得して表示するプロジェクトです。実装はUSBのComposite機能(HIDでホストにキー入力を送り端末を開き、CDCでコマンド実行結果を受け取る)を利用。Raspberry Pi OS(trixie)上での動作確認がされており、3Dプリント用ケースなどハードウェア周りのファイルも含まれています。
リポジトリの統計情報
- スター数: 3
- フォーク数: 0
- ウォッチャー数: 3
- コミット数: 7
- ファイル数: 21
- メインの言語: C++
主な特徴
- USB Composite(HID + CDC)を使ってホスト上でコマンド実行し、結果を取得・表示する
- Waveshare 1.47” LCDにホスト名とIPv4アドレスを表示
- 小型マイクロコントローラ向けのArduinoスケッチ(.ino)で実装
- 3Dプリント用ケースなどハードウェア周辺のファイルを同梱
技術的なポイント
このプロジェクトは「マイクロコントローラがホストを能動的に操作して情報を得る」点が特徴です。具体的にはUSBのCompositeデバイス機能を利用し、HID(キーボード)としてCtrl+Alt+T等のキーシーケンスを送ることでホスト上にターミナルを開かせ、ホスト側で hostname と ip -o -4 addr show を実行させます。コマンド出力はCDC(仮想シリアル)経由でマイコンへ返され、スケッチ内部でホスト名とIPv4アドレスをパースしてLCDにレンダリングします。実装はArduinoスケッチ(CompositeIpFetcher.ino)で、DEV_Config.*やDebug.hといった設定・デバッグ用ファイルを備えています。READMEではRP2350と書かれている点があり、一般にはRP2040系(Raspberry Pi Pico互換)で利用されることが想定されますが、実際のボード互換性はハードウェアUSBサポートとライブラリ依存性に左右されます。ホスト側はRaspberry Pi OS(デスクトップ環境)での動作を想定しており、Ctrl+Alt+Tで端末が起動する設定が前提です。そのためヘッドレス環境やキーボードショートカットが異なる環境では動作しない可能性や、HIDによるキー送信はセキュリティ上の注意が必要である点も押さえておく必要があります。
プロジェクトの構成
主要なファイルとディレクトリ:
- 3d printed shell: dir
- CompositeIpFetcher.ino: file
- DEV_Config.cpp: file
- DEV_Config.h: file
- Debug.h: file
…他 16 ファイル
(主な役割)
- CompositeIpFetcher.ino: メインのArduinoスケッチ。USB初期化、HIDでのキー送信、CDC受信、パース、LCD描画を担う。
- DEV_Config.*: デバイス固有の設定(ピン割当、LCD初期化パラメータ等)。
- Debug.h: デバッグ用のログ出力や定義。
- 3d printed shell: デバイスを収めるための3Dプリント用データ/設計図。
使い方と注意点
- 動作検証はRaspberry Pi OS(trixie)上で行われています。ホスト側でショートカットが有効であること、コマンド実行に必要なパーミッションがあることが前提です。
- HIDでのキー送信は強力ですが、誤動作やセキュリティリスク(意図しないコマンド実行)を孕みます。公開環境や不特定多数が使う端末での利用は避けた方が安全です。
- ハードウェア(LCD接続、配線)やボードのUSB機能に依存するため、対応ボードやピン配置をDEV_Configで適切に設定してください。
- 改良案としては、Desktop側で専用の小さな受け口デーモン(UDSやsystemdサービス)を立てて安全に情報を返す方法や、IPv6対応や複数インターフェースの扱い、GUI環境非依存のコマンド発行手法の導入が考えられます。
まとめ
シンプルで実用的なUSB接続型IP表示デバイス。デスクトップ上のRaspberry Piに簡単に接続してIP情報を確認する用途に向く。
リポジトリ情報:
- 名前: rpi_usb_ip_display
- 説明: small usb micro controller with built-in LCD, designed to query a host rpi system and retrieve the ip address(es) and hostname of the system
- スター数: 3
- 言語: C++
- URL: https://github.com/C4KEW4LK/rpi_usb_ip_display
- オーナー: C4KEW4LK
- アバター: https://avatars.githubusercontent.com/u/22594242?v=4
READMEの抜粋:
IP address display for RP2350 + Waveshare 1.47” LCD
Only tested on a RPi running Raspberry pi OS trixie.
Small Arduino sketch for RP2350 boards that:
- Opens a terminal on the host via USB HID (Ctrl+Alt+T), runs
hostnameandip -o -4 addr show, and sends the output back over CDC. - Parses the hostname and IPv4 addresses, displays them on the 1.47” LCD, and shows a status line (connectin…