以下のように回路を組みます。動作検証ですので、ブレッドボードを利用します。
globally-remote-controllable-bulldozer
ACM1602NI と Grove I2C モータードライバモジュールの動作電圧が 3.3v および 5v と異なるため、厳密に作るならば I2C の電圧レベルを変換する必要がありますが、今回のような簡単な回路ではあまり気にせずにそのまま接続しても動きます。
Connecting the 5V Arduino directly to a single 3.3V-powered I2C chip usually works, even though it violates official specifications in multiple ways.
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter
ピン配置の参考資料
制御プログラムを動作させるための Raspberry Pi 設定を事前に行います。
無線 LAN 接続の設定を行ったら「Raspberry Pi 無線接続時の IP 固定」を参考に IP を固定しておきます。
Raspberry Pi 3 より前のモデルで無線 LAN 接続を行うためには USB 無線 LAN 子機が必要でした。この方法の場合、通信が途中で切れてしまう現象が発生します。「Raspberry Pi で ssh 通信が切れる場合の対応例」等、何らかの対策を行っておきます。
「Raspberry Pi パッケージ管理コマンド (NOOBS)」にも記載の apt-get
コマンドでパッケージの管理情報を最新にしておきます。
sudo apt-get update
「Raspberry Pi で I2C を利用するための設定」を参考に I2C 設定を有効にしておきます。
先程のページの後半に記載のあるサンプルコードを用いて ACM1602NI の動作検証を行っておきます。
以下のコマンドで、モータードライバの出力電圧が制御できることを確認します。
参考資料
注意事項
出力電圧 0V
i2cset -y 1 0x0f 0x82 0x00 0x00 i
出力電圧 2.5V (9V 電源の場合。M1、M2、両方)
i2cset -y 1 0x0f 0x82 0x46 0x00 i
i2cset -y 1 0x0f 0x82 0x00 0x46 i
i2cset -y 1 0x0f 0x82 0x46 0x46 i
電圧の向きが左右同じ (前進、後退)
i2cset -y 1 0x0f 0xaa 0x0a 0x01 i
i2cset -y 1 0x0f 0xaa 0x05 0x01 i
電圧の向きが左右逆 (右回転、左回転)
i2cset -y 1 0x0f 0xaa 0x09 0x01 i
i2cset -y 1 0x0f 0xaa 0x06 0x01 i