ちょうど、仕事で STマイクロの ToF型測距センサ VL53L0Xをつかう機会が
あったので、その報告をば。
昨年ETのときかな?にSTマイクロのブースでみつけて
いいなー、と思っていたデバイスなんで、
ことしのET Westで、これのNUCLEO Packをもらってきたん。
たしかに、応答性がよくて、取り回しも便利。
自分で実装できるパッケージじゃないのと、内部用に2.8Vが必要という
めんどくささ、も我慢できるかなーー、というのはあったんだけど
問題は、I2Cデバイスであるにも関わらず、利用するための
内部のアドレス情報がまーーーったく開示されておらず
STM32のNUCLEO用のサンプルから自分用にポーティングしないとどうしようもない
というイケてないデバイスで、つかうのを躊躇してたんですよね。
今年のETで、STの担当者にこの件、きいてみたら
『これの前のデバイスで、アドレス情報など、サポートにじゃんじゃん質問がきたから
データシートへの記載、やめてるんですよねー』
とか。
それ、あかんやろ(>_<)
で、躊躇してたんだけど、Pololuで、このデバイスボードを発見!
https://www.pololu.com/product/2490
しかも、だいぶ簡素化された状態で、Arduino用のライブラリもgitに上がっているという
なんとまぁ、うれしい状態。
で、これをPSoCでつかいたいので、これをCの形式に変換しなおしてつかってみた。
PSoCもGCCをつかっているので、本来C++が使えるはずなんだけど
現状ではCオンリーなので、しかたない。
ソースはここ。
VL53L0X.C
VL53L0X.H
[<====ソース抜粋====>]
[<==== ここまで ====>]
VL53L0Xの先頭部でI2Cへのアクセス関数部を別名定義してる。
PSoCの場合 PSoC5やPSoC4で、I2Cへのアクセス関数名がそれなりに変化しちゃって
固定してると、結構めんどくさい感じになりやすいので
VL53L0XでつかうI2Cの関数を、指定できるようにしてみた。
ほんとはClassがつかえれば、いいだろうし、Cであっても
関数ポインタつかえばできるのも理解してるけど、
なんとなく可読性がおちちゃうのが気になって、こういうベタなやり方にしてみた。
あと、タイムアウトを判定するために外部で
uint32_t timeout_start_ms ; // 経過時間の観測変数
を減算してやる必要があります。
main.cなどでタイマーを利用してるソースの先頭に
extern uint32_t timeout_start_ms ;
を定義して、1msのタイマーの中で
if ( timeout_start_ms ) timeout_start_ms--;
としてください。
[<====ソースサンプル====>]
[<==== ここまで ====>]
みたいなかんじかな。
標準状態だとサンプルが30ms間隔で行われるので、
それ以上は待ってやったほうが、いい、ってかんじですね。
観測早いし確実なのはいいなぁ。
超音波はつかいにくいし。
2016年12月9日金曜日
2016年11月30日水曜日
PSoC4 BLE について(PSoC Advent Calender)
あー、もう1年もほったらかし。
ごめんなさい m( _ _ )m
なんだか無線系も結構いろいろやったし、USBもいろいろでてきたけど
決定的なのはルネサス系の石の採用レートが下がってきたかなぁ、って。
PSoC押しなので、仕方ないけど、あんまり無理強いもしてないけれど、
やっぱり、じり貧なかんじは否めないなぁ。
TOCOS MonoWireless も単体のファームだとなかなか小難しいかんじで
使いにくいけど、省電力行くなら仕方ない!って続けてるけどね。
そろそろ出力増強版がでてくるらしいので、それを機に、
サイトも含めてきちんと整理して、わかりやすくしてほしいなぁ。
閑話休題。
Advent Calender for PSoC が立ち上がっちゃったので
仕方なく、なんか書かなくちゃ、ってことで。
ちょうど、仲間うちでの簡易ワークショップの資料をつくっていたので
それを公開。
BLE以前に、PSoC、っていう知名度のなさもあって、最初の部分の
つまづくのを回避できれば、っていう意図で、何回か、ワークショップも
開いてきたんだけど。まぁ、BLEの資料って案外ないし、
『どうだかなぁ。。。』
って躊躇してる人も多いかもしれず、ってわけで、書いてみた。
最後の肝心のBLE周りは端折ってる(笑
具体的にはコード、みてね!
実際、この後、そのままだと、硬直しちゃうので、いろいろあるで!
ってのはあるので、好評なら次回もやるかも。
ダウンロード用の PDFファイル本体とサンプルは、ここ(Advend-PSoC)に公開。
で、実際ワークショップをやってみたんだけど、やっぱりいろいろあったわ。
1.ボードが認識しない
ボード買ってきたら、まず、つないでみたいよね!
ってわけで、つないだら、イミフなメッセージがでて、
PSoC Createrから認識できない、という状態が発生。
CY8CKITなどのpioneer Kitだと、書き込み&デバッガ用の KitProg が
ついてて、USB接続すると、そのままデバッグとかできるで!というのが
ウリなはずなんだが、一瞬焦る状況になる。
これ、KitProgのファームバージョンとPSoC Createrが要求するファームバージョンが
異なるから、ちゃんと合わせてね!っていうメッセージなんだけど
『じゃ、どしたらええねん。。。orz』
ってなる。
で、解決法は簡単。
PSoC Createrをインストールしたら、自動的に
PSoC Programer
も、インストールされているはずなので、これを起動する。
Start メニューのCypressのなかに
こんなふうにあるはず。
起動して、
Utilities の タブ を選択したら
左のリストに表示されている KitProg を選択したうえで
Upgrade Firmware
ボタンを押せば、アップデートが開始される。
ただしく完了したら下欄に、こんなふうにメッセージがでる。
これで、新版に更新完了したので、安心できる。
2.ボード違い
をベースに書いてるけれど、参加者のボードは
CY8CKIT-042-BLE
だった。orz
これも基本構成がおなじだし、複雑なことをやらなければ
問題ないんだけど、リソースが違うので、ちゃんと合わせてやらないとダメ。
プロジェクトを開いたら
左端のワークスペースのなかの
Project 'Design01' [CY8C4248L..]
みたいなところを右クリック。
でてきた、Device Selecter を選択すると、デバイスを変更できる。
この手順は、作成したプロジェクトのCPUを変更する場合にも
つかうので、要チェック! ですな。
今回のデバイス変更は
BLE-A : CY8C4248LQI-BL583
BLE : CY8C4247LQI-BL483
ということなので、これを選べばOK。
あと、Work03 では、実際にBLEからLEDをいじれるように
しているけれど、BLEチップの対応の違いが一部あって、
BLE のダイアログの GAP Setting - Security 部で
Enable Link Layer Privacy
のチェックを外す必要があります。
こんだけやれば、なんとか動くかんじ。
あとはいろいろBLEとは!みたいなことを勉強しないと、
先には進めないけれど、楽しくはあるよね。
あと、WindowsでBLEやろうとすると、結構ハードル高いことかな。
肝心のPRoCのドングルも一応 .NET Frameworkの資料がやっとでてきたけれど、
関数だけ、だらだら~って説明されてもつかえへん気がする。
Windows10の Linux for Windowsで bluez つかえへんかな?
使えたららくちんなのに。
まぁ、ドングルのほうはのんびりつかってみるか。。。
ごめんなさい m( _ _ )m
なんだか無線系も結構いろいろやったし、USBもいろいろでてきたけど
決定的なのはルネサス系の石の採用レートが下がってきたかなぁ、って。
PSoC押しなので、仕方ないけど、あんまり無理強いもしてないけれど、
やっぱり、じり貧なかんじは否めないなぁ。
使いにくいけど、省電力行くなら仕方ない!って続けてるけどね。
そろそろ出力増強版がでてくるらしいので、それを機に、
サイトも含めてきちんと整理して、わかりやすくしてほしいなぁ。
閑話休題。
Advent Calender for PSoC が立ち上がっちゃったので
仕方なく、なんか書かなくちゃ、ってことで。
ちょうど、仲間うちでの簡易ワークショップの資料をつくっていたので
それを公開。
BLE以前に、PSoC、っていう知名度のなさもあって、最初の部分の
つまづくのを回避できれば、っていう意図で、何回か、ワークショップも
開いてきたんだけど。まぁ、BLEの資料って案外ないし、
『どうだかなぁ。。。』
って躊躇してる人も多いかもしれず、ってわけで、書いてみた。
最後の肝心のBLE周りは端折ってる(笑
具体的にはコード、みてね!
実際、この後、そのままだと、硬直しちゃうので、いろいろあるで!
ってのはあるので、好評なら次回もやるかも。
ダウンロード用の PDFファイル本体とサンプルは、ここ(Advend-PSoC)に公開。
で、実際ワークショップをやってみたんだけど、やっぱりいろいろあったわ。
1.ボードが認識しない
ボード買ってきたら、まず、つないでみたいよね!
ってわけで、つないだら、イミフなメッセージがでて、
PSoC Createrから認識できない、という状態が発生。
CY8CKITなどのpioneer Kitだと、書き込み&デバッガ用の KitProg が
ついてて、USB接続すると、そのままデバッグとかできるで!というのが
ウリなはずなんだが、一瞬焦る状況になる。
これ、KitProgのファームバージョンとPSoC Createrが要求するファームバージョンが
異なるから、ちゃんと合わせてね!っていうメッセージなんだけど
『じゃ、どしたらええねん。。。orz』
ってなる。
で、解決法は簡単。
PSoC Createrをインストールしたら、自動的に
PSoC Programer
も、インストールされているはずなので、これを起動する。
Start メニューのCypressのなかに
こんなふうにあるはず。
起動して、
Utilities の タブ を選択したら
左のリストに表示されている KitProg を選択したうえで
Upgrade Firmware
ボタンを押せば、アップデートが開始される。
ただしく完了したら下欄に、こんなふうにメッセージがでる。
これで、新版に更新完了したので、安心できる。
2.ボード違い
今回のワークショップ、サイプレスの
CY8CKIT-042-BLE-Aをベースに書いてるけれど、参加者のボードは
CY8CKIT-042-BLE
だった。orz
これも基本構成がおなじだし、複雑なことをやらなければ
問題ないんだけど、リソースが違うので、ちゃんと合わせてやらないとダメ。
プロジェクトを開いたら
左端のワークスペースのなかの
Project 'Design01' [CY8C4248L..]
みたいなところを右クリック。
でてきた、Device Selecter を選択すると、デバイスを変更できる。
この手順は、作成したプロジェクトのCPUを変更する場合にも
つかうので、要チェック! ですな。
今回のデバイス変更は
BLE-A : CY8C4248LQI-BL583
BLE : CY8C4247LQI-BL483
ということなので、これを選べばOK。
あと、Work03 では、実際にBLEからLEDをいじれるように
しているけれど、BLEチップの対応の違いが一部あって、
BLE のダイアログの GAP Setting - Security 部で
Enable Link Layer Privacy
のチェックを外す必要があります。
こんだけやれば、なんとか動くかんじ。
あとはいろいろBLEとは!みたいなことを勉強しないと、
先には進めないけれど、楽しくはあるよね。
あと、WindowsでBLEやろうとすると、結構ハードル高いことかな。
肝心のPRoCのドングルも一応 .NET Frameworkの資料がやっとでてきたけれど、
関数だけ、だらだら~って説明されてもつかえへん気がする。
Windows10の Linux for Windowsで bluez つかえへんかな?
使えたららくちんなのに。
まぁ、ドングルのほうはのんびりつかってみるか。。。
ラベル:
Advent Calender,
BLE,
Bluetooth,
PSoC
登録:
投稿 (Atom)