卒論も提出し終わったにもかかわらず,研究室にこもって何かしている中の人です.研究室ので使っているマシンでデータセット作成とかをやっているのですが,メモリを大量に使い果たすのでVPNでつなげず,結局来ないといけなくなっています.OTL
さて,今回は秋月で売っているToFセンサの話です.ToFセンサといえばSTMicroelectronicsのこちらが有名?ですが,少しお高めかつ情報が出回っているのでパスです.(レジスタマップは果たして公開されたのだろうか)
1.仕様的なもの
センサ裏面 |
今回使用するモジュールはFOXCONNが製造しており,SHARP製GP2AP01VT10F ToFセンサと謎マイコンが載っています.Arduino UNO向けサンプルコードとモジュールのアプリケーションノートが公開されています.
アプリケーションノートによれば,距離レンジ10cm-120cm(白壁),10cm-70cm(灰色壁)で,120cm±4%,70cm±7%となっています.
通信方式は,UART/I2Cですが,I2Cで通信する際には電源,SCL,SDAのほかにCS代わりにTXDピン(センサ側の)を使用します(アプリケーションノートだと,RXDにつなげって書いてあるが,マイコン側って意味なのか?).今回はI2Cの方のみテストしました.
モジュールのピンアサインは,
モジュール付属のケーブル.一回装着すると取りにくいらしい |
モジュールのピンアサインは,
- VDD(赤)
- GND(黒)
- TXD(白)
- RXD(茶)
- SCL(緑)
- SDA(黄色)
となっています.注意点として,付属のケーブルをモジュールにつけると抜けにくいらしく,無理やり抜こうとしてモジュールごと破損する可能性があるらしいです.
2.I2Cでおしゃべり
距離測定の図.M5StickVはただの壁 |
ESP32でMTOF171000C0を使ってみましょう.何も考えずにピンを割り当てました.
- VDD(赤) <-> 3V3
- GND(黒) <-> GND
- TXD(白) <-> IO25
- RXD(茶) <-> 未接続
- SCL(緑) <-> IO21
- SDA(黄) <-> IO22
アプリケーションノートに従うと,通信の流れは以下のようになります.
- TXD(CS)をLowにする
- センサのアドレスを送る(0x52)
- 距離データのはいっているレジスタを指定する(0xD3)
- センサのアドレスからデータが送られてくるのを待つ(2Bytes,上位8bitから送信)
- CSをHighにする
距離が測定できない場合には,出力結果が"8888"になります.そうでない場合は,レジスタの値がそのまま距離(mm)になります.コードはこちらに上げておきました.
3.まとめ
モジュール内でmmに直してくれるのはありがたい...のだろうか.マイナス点はSTMicroelectronicsのToFシリーズより性能が低いこととセンサ自体のデータシートが出回っていないことでしょうか.(未公開コマンドで精度や速度に関する設定ができるのかも)
VL53L0Xに対しては,秋月価格で\2-300安いので少しお手軽です.(\1080->\780)
何も考えずにcmオーダで正確に測れることを考えると,こっちでもいいかもしれないです.
4.その他
- データシートが英語・中国語(繁体字)併記.繁体字なので,雰囲気はつかめる.
- SHARPからではなくFOXCONNから出ているのはなんでだろ(親会社一緒だけど)
- UARTではオフセットの設定もできるらしい.I2Cは知らないけど,同じレジスタにアクセスすれば設定できる気がする.
- 精度はまあまあ.20cmぐらいなら±3mm切ってくるレベル.
- 距離が8888になる現象は,距離が遠すぎる場合にもなる.
- センサ自体のレジスタマップはこちらも未公開.公開してほしい.
©2020 shts All Right Reserved.
0 件のコメント:
コメントを投稿