フェーズ3:I2Cセンサ(IMU準備)(入口)

フェーズ3は、センサをつないで値を読むためのフェーズです。
I2Cで「見つける→読める→連続で取れる」までを確実にして、最終的に 姿勢(傾き)→異常判定→安全停止へつなげます。

このフェーズで得るもの

  • I2Cでセンサを接続し、アドレス検出(スキャン)→レジスタ読みができる
  • センサ値を周期的に取得してログに出せる
  • IMUで「それっぽい姿勢」を作り、倒れそう判定→停止まで体験できる

実験一覧(E3)

※記事を作ったらリンクに差し替え。

  • E3-00 I2C配線の“詰まりどころ”を先に潰す(電圧/プルアップ/GND)(作成中)
    目的:I2Cで一番多い「つながらない」原因(電圧/配線/GND/プルアップ)を事前に回避する。
  • E3-01 I2Cスキャン(接続確認)(作成中)
    目的:I2Cデバイスを見つけて、配線・電源・アドレスが合っていることを確認する。
  • E3-02 1レジスタ読み(最小)(作成中)
    目的:WHO_AM_I等を読み、「通信できている」を確信する(成功判定を明確にする)。
  • E3-03 連続読み(複数バイト)(作成中)
    目的:複数バイト読み(符号付き等の扱いの入口)を体験し、センサ値の取り方に慣れる。
  • E3-04 “成功体験センサ”を1個読む(温湿度等)(作成中)
    目的:IMUより簡単なセンサでデータ取得を成功させ、I2Cの達成感を作ってからIMUへ進む。
  • E3-05 IMU生値取得(加速度/ジャイロ)(作成中)
    目的:IMUの生値を周期取得し、ログで「動く値」が見える状態にする。
  • E3-06 オフセット補正(簡易)(作成中)
    目的:静止時の偏りを引くなど、最小の補正で値を扱いやすくする。
  • E3-07 ピッチ/ロール推定(最小)(作成中)
    目的:加速度から傾き(ピッチ/ロール)を“それっぽく”算出し、姿勢の数値化を体験する。
  • E3-08 異常姿勢判定→安全停止(作成中)
    目的:閾値で倒れそう判定を作り、状態遷移(RUN→ERROR/STOP)と停止動作へつなぐ。
  • E3-09 センサ値を“軽く”なめらかにする(移動平均など)[任意](作成中)
    目的:揺れる値を見やすくし、ノイズで迷子にならず次へ進めるようにする。

先に読む(基礎シリーズ)

  • (必須)I2Cとは(SDA/SCL、アドレス、プルアップ)(作成中)
  • (必須)プルアップ抵抗とは(なぜ必要?どこで入る?)(作成中)
  • (推奨)GNDとは(なぜ共通が必要?)(作成中)
  • (推奨)電圧・電流・抵抗の超要点(作成中)
  • (推奨)フェーズ2:時間管理(ミリ秒の時計/周期処理/状態で整理)(作成中)

よくあるつまずき TOP3

  1. I2Cスキャンで何も出ない(GND未共通/電圧違い/SDA/SCL逆/プルアップ無し)
  2. アドレスは出るが読み出しが失敗(レジスタアドレス違い/初期化不足/転送サイズ)
  3. 値が変・揺れすぎて不安(符号/スケール誤り/ノイズ/まずは“見える化”と簡易平滑化)

ゴール(このフェーズを終えた状態)

  • I2Cでセンサの存在確認(スキャン)ができる
  • レジスタ読み(1バイト/複数バイト)ができる
  • センサ値を周期取得してログに出せる
  • IMUから姿勢(傾き)を最小で出せる
  • 異常姿勢を判定し、安全停止(状態遷移)につなげられる

次に進む

  • 次:フェーズ4(PWMサーボ:1軸→4軸)(作成中)