遠隔操作の際、車体の向きを知ることはとても重要です。 ジャイロセンサーは相対的な向きですので、現在の方位を得るためにコンパスモジュールは搭載したいデバイスです。 また、応答速度や安定性が高ければ、旋回動作にもコンパスを使用することを検討したいと思います。
HMC6352 ディジタルコンパスモジュールは、磁気の測定値ではなく、方位として出力するデバイスですので、ホスト側の負荷も軽減できそうです。
接続はI2Cですので、4線でOKです。 電源は3.3Vを使用しました。
スレーブアドレスは、21hで認識しています。
HMC6352には、計測モードが3種類ありますが、デフォルトのStandbyモードで試してみます。
i2cset -y 1 0x21 0x57 //ウェイクアップ
i2cset -y 1 0x21 0x41 //読み出しコマンド”A”
i2cget -y 1 0x21 0x43 w //読み出し
あとは、コマンドA、読み出し を、繰り返す毎に数値が得られます。 PHPで、テストスクリプトを作成しました。
<?php //HMC6352 コンパスモジュール testプログラム exec("i2cset -y 1 0x21 0x57"); // ウェイクアップ exec("i2cset -y 1 0x21 0x43"); //キャリブレーション開始 echo "キャリブレーションを実施して下さい。\n"; $input = fgets(STDIN,4096); //キー入力待ち exec("i2cset -y 1 0x21 0x45"); //キャリブレーション終了 while (1){ exec("i2cset -y 1 0x21 0x41"); //読み出しコマンド"A" $cmp = exec("i2cget -y 1 0x21 0x43 w"); // 読み込み $cmp = hexdec(substr($cmp,-2).substr($cmp,2,2)) / 10; printf("方位 %.1f 度\n", $cmp); sleep(1); } ?>
キャリブレーション実施待ちのフローは、はじめはなっかたのですが、キャリブレーションを行わないと数値が全く安定しません。 データシートには、2回転を20秒以上実施とあります。 実際には、1回転行えば、ほぼ、安定した計測値が得られますが、サーボや走行用モーターの動作中は数値が不安定になります。
モジュールの取り付け位置を、サーボやモーターから、離す必要がありますね。 絶対方位の取得は魅力なのですが、現状ではモーター動作時に旋回制御センサーとしての役割を担うことは厳しそうです。
【Fire HD 10 第13世代用】Amazon純正 キッズ向け保護カバー (グリーン)
¥4,980 (2025-07-05 08:55 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)マキタ 18V バッテリー 充電器セット 6.0Ah BL1860B 互換 Waitley マキタバッテリー 18V 充電器 防火材料シェルと長寿命電池セル採用 DC18RC DC18RF DC18RDなど互換 製造物責任保険付 PSE認証済品 (18V/6.0Ah 2個 + 充電器 セット)
¥9,980 (2025-07-05 08:55 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)Amazon Fire TV Stick 4K | 映画館のような4K体験 | ストリーミングメディアプレイヤー
只今、価格を取得しています。
(2025-07-05 08:55 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)