USB-I2Cインターフェースを使用して、ラップトップがSRF02センサーと通信できるようにします。私のラップトップにはDebian Jessieが動作しています。
質問:
実行中は、sudo i2cdetect -y 0
どのデバイスもまったく表示されません。これはポート1と同じですが、それ以外は多くのデバイスがランダムな場所に表示されます(たとえば、ポート4にはほぼ完全なテーブルが表示されます)。 EX70は、デバイスのデフォルト位置である3つ未満のポートを占有しません。
起動時にi2c-devを自動的にロードしようとしましたが、問題は解決しません。モジュール文書にはFTDI VCPドライバーが必要であることが示されていますが、これはLinuxカーネルに含める必要があります。
私はまったく同じデバイスと設定を使用してWindows 8を実行しているコンピュータからデータを取得できたので、これはソフトウェアの問題であると確信しています。
これに関する投稿はたくさんありましたが、どちらも特にRaspberry Piに基づいており、USBの代わりにRaspbianとGPIOピンを使用しています。
編集:以下は、デバイスを接続した後のdmesg出力へのリンクです。ログが大きすぎてここに投稿できません。 :P http://pasted.co/38dc9292
よろしくお願いします。
最高
答え1
関連する行はdmesg
次のとおりです。
[ 518.172735] usb 1-3: new full-speed USB device number 4 using xhci_hcd
[ 518.306677] usb 1-3: New USB device found, idVendor=0403, idProduct=6001
[ 518.306686] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 518.306689] usb 1-3: Product: FT232R USB UART
[ 518.306692] usb 1-3: Manufacturer: FTDI
[ 518.306695] usb 1-3: SerialNumber: AK04P01W
[ 518.309382] ftdi_sio 1-3:1.0: FTDI USB Serial Device converter detected
[ 518.309442] usb 1-3: Detected FT232RL
[ 518.309445] usb 1-3: Number of endpoints 2
[ 518.309448] usb 1-3: Endpoint 1 MaxPacketSize 64
[ 518.309450] usb 1-3: Endpoint 2 MaxPacketSize 64
[ 518.309453] usb 1-3: Setting MaxPacketSize 64
[ 518.309771] usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0
これは、デバイスが接続されたときに何が起こったかに応じて、タイムスタンプに基づいて一緒に属し、接続がないという開始メッセージの後に十分に長い間発生するため、関連する行です。
ご覧のように、新しいUSBデバイスが検出されると、デバイスの詳細を取得し、それに応答してftdi_sio
特別なデバイスファイルを提供するモジュールがロードされます/dev/ttyUSB0
。カーネルドライバがロードされていない場合は、grep
ベンダー/製品の組み合わせ(0403:6001
、にも表示されていますlsusb
)を検索(Googleやカーネルソースを使用)など、デバイス用のカーネルドライバを参照できます。
他の回答に記載されているドライバはbcm2708
まったく関係ありません。これはラップトップではなく、Raspberry PiのようなI2Cバス用のドライバです。
しかし、私たちはすでにシリアルインターフェイスのみを提供しており、カーネルI2Cインフラストラクチャへの接続は提供していない動作するドライバを持っています。だからlmsensors
ちょっとi2detect
待ってください。このうち何も機能しません(追加のドライバを作成または見つけない限り)。
これウェブサイトあなたのコメントで述べたUSB-I2Cコンバータは、シリアルリンクを介して使用されるプロトコルを説明します。つまり、一連のバイトを送信し、オプションで応答として一連のバイトを受け取ります。コマンドの順序は次のとおりです。
<command-byte> <address> <register (0-2 bytes)> <data byte count (0-1 bytes)> <write data>
そしてウェブページSRF 02センサーチップのレジスタがどのように見えるかを説明します。読み取ることができるレジスタ6個、書き込み可能なコマンドレジスタ1個。
たとえば、01
レジスタからバイトを読み取る必要があるバージョンを読み取るには、デフォルトのチップアドレスがあり、LSBはR / Wビットであるため、00
asアドレスを使用でき、USB-I2Cに必要なコマンドを使用できます。アダプタは。したがって、シリアルに送信されるシーケンス全体は、バイトを応答として読み取ることです。E0
E1
55
55 E1 00 01
コマンドラインからこれを行うことができます。
$ printf '\x55\xE1\x00\x01' > /dev/ttyUSB0
$ hexdump -n 1 -e '"%02x \n"' < /dev/ttyUSB0
あるいは、/dev/ttyUSB0
目的の言語で開き、その言語で提供されるコマンドを使用してバイトを読み書きできます。
答え2
i2c
2つのカーネルモジュールがあります:
i2c-bcm2708
そして
i2c-dev
両方を追加し/etc/modules
て再起動してください。