Jetson nanoとPCA9685でサーボを動かそうとするときのI2Cエラー対処法!

はてなブックマーク - Jetson nanoとPCA9685でサーボを動かそうとするときのI2Cエラー対処法!
LINEで送る
Pocket

Jetson nanoとPCA9685でサーボを動かそうとするときのI2Cエラー対処法!をご紹介します!

デフォルトのI2Cのbusはどこなのか特定できませんでした

これで、ハマる人がこれから増えると思います。

簡単なハックをすれば解決しますが、わからないと、なかなかハマります!

ここで一旦宣伝

私の著書「今すぐ試したい!機械学習・深層学習(ディープラーニング)プログラミングレシピ」がアマゾンで予約開始しました! 初心者向けなので、是非買って読んでみてください!(^O^)/

背景

さて、まずこの記事の背景を申し上げます。最近、Jetson nanoやDonkey Carなどが流行っていて、私も色々実験したいと思っています。

まさきに、確認したいのは、やはりJetson nanoからサーボ、ステップモーター、DCモーターの動かし方です。そこで、今までやっていたRaspberry PiとPCA9685のをJetsonでできないかと思ったわけです。しかし、一連の作業をして、「Could not determine default I2C bus for platform.」と言うエラーに遭遇しました。

 

Could not determine default I2C bus for platform.

これですね!

このマシン(platform)のデフォルトのI2Cのbusはどこなのか特定できませんでした!と言うことですね!

PCA9685を動かすための設定

本題に入る前に、そもそもPCA9685を動かすための準備をしなければいけません!

まずは必要なPythonソフトウェアの準備をします。

NvidiaのGPIO libraryをインストール

この部分の手順は下記のリンクを参照して、その通りに実施してください。

https://github.com/NVIDIA/jetson-gpio

PCA9685のパッケージをインストール

配線(Jetson nano とPCA9685と接続)

配線は、簡単です。合わせて、以前のRaspberry PiとPCA9685の記事も参照してください。

RaspberryPi+Python+PCA9685で複数のサーボを制御する!簡単!

接続ができたら、下記の写真のようになります。もちろんサーボとサーボ駆動用の電源(バッテリー)も接続します。

接続の確認

下記のような結果になれば、問題ないです。

プログラムは以前の記事に使ったものと全く同じプログラムとなります。

念のために、下に掲載しておきます。これ適切に名前をつけて保存します。(例えば、pca9685_sample.py)

Terminalで下記のコマンドを実行します。

そうすると、今回のテーマになっているエラーになります。

I2C.pyプログラムの修正(workaround)

写真のようにPCA9685のPythonパッケージにあるI2C.pyプログラムを修正します。

~/.local/lib/python3.6/site-packages/Adafruit_GPIO/I2C.py

 

これは、pip3 install Adafruit_PCA9685 –userでインストールした時に、インストールされたファイルです。

このプログラムで、get_default_bus()の部分が何らかの原因(これはまたじっくり調査します。先に分かった人は教えてください。)で、うまくJetson nanoのdefaultのI2Cバス番号を取得できなかったのです。

ここでは、ハードコーディングになってしまいますが、直接に、”1”と設定します。

その理由は、今回、使っているのはJetson nanoの1番のI2C バスです。

Jetson nanoのピンアウトの配置も確認できました。

 

上のPinoutの引用先はこちらです。ありがとうございます!

NVIDIA Jetson Nano J41 Header Pinout

従いまして、実際の接続に合わせて、プログラムを修正します。

 

正常に動作しました!

上のプログラムを保存して、もう一回下記のコマンドを実行すれば、サーボは動くはずです!

 

まとめ

いかがですか!これは、最初はなかなか意味が分からなくて、悩んでいました!

でも、流石にできないことはないですよね!一晩寝かして

今日はなんとかソリューションにたどり着けました!

皆さんもJetson nanoとPCA9685でサーボやステップモーターを動かそうとしてこのエラーに遭遇したら、この方法でやってみてください。

他のTensoFlowのセットアップや、最初の物体認識は、下記の記事をご参照ください。

Jetson nano 購入から物体認識(リンゴとミカン)までの手順

では、御機嫌よう!

はてなブックマーク - Jetson nanoとPCA9685でサーボを動かそうとするときのI2Cエラー対処法!
LINEで送る
Pocket

4 Comments
  1. アバター
    • カワシマ
  2. アバター
  3. アバター

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close