このブログでは、工作の記録、実験の結果や考察が散逸しないように専ら備忘録に使ってます。プログラムのソースや設計データ等は載せていませんが、詳しく知りたい方がおりましたらコメントいただければ対応します。

所有する主な測定器はこちらです。


2017年11月30日木曜日

モーションセンサー評価ボード(ADZS-BF707-BLIP2)のデータ通信

前回までモーションセンサー評価ボードの設定を行ってきましたが、次はデータの通信部分について考えていきます。
IoTという枠組みの中でセンサーをネットワークに繋ぐことを考えた場合、センサーを無線ネットワークで接続するのが一般的解法ではありますが、その周波数が問題です。
誰でも考える2.4GHz帯は無線免許も不要で、マイコン等に接続可能な様々な無線デバイスがあり、最も導入が容易です。しかし飛距離がでません。

さて、この2.4GHz帯は、ISMバンドと言われ医療・産業・科学分野で用いられる周波数です。無線LAN、ブルーツース、コードレス電話などで利用されています。
一方、2012年に日本では920MHz帯が新たにISMバンドで使えるようになりました。サブギガと呼ばれるこの920MHz帯は、2.4GHz帯に比べて長距離通信が望める一方、帯域が狭いため大容量通信には向きません。 ですが、IoTの分野ではそもそも扱うデータ量は小さいため、飛距離が出る920MHz帯は非常に魅力的です。

今回は、STマイクロから提供されているサブギガ帯のトランシーバ開発ボード(STEVAL-FKI915V1)を入手したので使ってみようと思います。


STM32 Nucleo-64というSTマイクロの開発ボードの上に無線モジュールが載った状態で提供されます。この無線モジュールは出力用プリアンプも実装されており、+27dBm(約500mW)の高出力で通信可能です。(高出力で送信する場合は空中線も高利得にしたいところですが、付属のホイップアンテナを含めた状態で技適を取得しているので変更できません。)
次回はボードの開発環境整備、動作テストを行っていきましょう。

 ーーー
応援クリックをお願いします!

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村 電子工作ランキング

2017年9月17日日曜日

モーションセンサー評価ボード(ADZS-BF707-BLIP2)の設定

前回まで、モーションセンサー評価ボード(ADZS-BF707-BLIP2)の開発環境とファームウェア構築、そしてJTAGエミュレータICE1000を使用してボードへのファームウェア書き込みを行ってきました。

今回は、このモーションセンサーの詳細設定を行います。ADSP-BF707用のファームウェアは、VOS(Video Occupancy Sensor library)というアナデバ提供のライブラリです。
このライブラリの特徴は、センサーが取得した画像から動きのある物体の情報(矩形座標、重心)を数10バイトのBLOBデータとして出力できる点にあります。

typedef struct __Blob
{
    /*! X co-ord of Top Left Corner of Bounding Box of Blob */
    uint16_t nMinX;
    /*! Y co-ord of Top Left Corner of Bounding Box of Blob */
    uint16_t nMinY;
    /*! X co-ord of Bottom Right Corner of Bounding Box of Blob */
    uint16_t nMaxX;
    /*! Y co-ord of Bottom Right Corner of Bounding Box of Blob */
    uint16_t nMaxY;
    /*! Moment 1/Centroid X of Blob */
    uint32_t nCentroidX;
    /*! Moment 1/Centroid Y of Blob */
    uint32_t nCentroidY;
    /*! Moment 0/Size of Blob */
    uint32_t nArea;
}BLOB;

このBLOBデータはソースコード中ではこのように定義されています。矩形データの位置座標、重心が含まれています。

この矩形情報の抽出がどのようになるか、実際にやってみましょう。
いつもの通りADVisionSensorControllerを起動します。タブメニューの中からVOS Configuration を選択します。ここでは、モーションセンサーの詳細設定ができますが、プリセットのパラメータを呼び出します。ManageFilesボタンからdefaultoutdoor_parking_lotを右クリックしてセットします。
この状態で、VOSタブのEnableVOSボタンをクリックするとセンサー画像の左に青い升目調の画面が出現します。
センサーで手元にあったトミカのミニカーを映してみるとミニカーに合わせて矩形が表示されます。同時に矩形の中心に重心を表わす点も出現します。
通常こういう処理はOpenCVとか使用してゴリゴリやるものですが、DSPプロセッサを使ってデバイスの段階で軽いデータにしてしまうことで、メインCPU側の負荷を軽くできるのが大きな利点です。

さきほどはプリセットしたパラメータを使用しましたが、26個におよぶパラメータ(取り込み画像エリア、前景・背景の閾値や深度、学習係数など)をカスタマイズすることによって、実際のシチュエーションに沿った検出パターンを作ることが可能です。

VOSのライブラリは、検出した物体のBLOBデータをSPIインターフェースで取得することが可能です。SPIインターフェースは大抵の組み込み系マイコンには実装されているので、非力なマイコンでは到底不可能な動体検出も、このDSPプロセッサと組み合わせることで可能になります。

ーーー
応援クリックをお願いします!

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村 電子工作ランキング

2017年9月14日木曜日

モーションセンサー評価ボード(ADZS-BF707-BLIP2)のファームビルド2

前回はSPIを有効化したデバッグ用ファームウェアを作ったところで終わりました。
今回はファームウェアを本体ボードに焼く前に、チェックのためにデバッガーを起動するところから開始します。

CrossCoreを立ち上げ、Run->Debug Configurationをクリックすると設定画面が出ます。右側のSelect Sessionボタンを押すと次のようなCPU選択画面になりますので、今回のボードのBlackfin DSP の型番"ADSP-BF707"を探すと一番下にありますので、それを選択します。
 Nextを押すと、何を使って接続するかの選択画面が出ますので、Emulatorを選択してNextを押します。
 対象機器の選択画面になるので、ICE-1000を選んでFinishします。
 次にデバッグ対象を選択します。一番上のBrowseボタン押してターゲットProjectを選択します。一覧からVOS_Outdoor_realtime_BLIP2を選択し、その下のアプリケーションも同様に選択してOKボタンを押します。
 さらに、CustomBoardSupportのTABから、CustomBoardSupport用xmlファイルを選択します。これは
C:\Analog Devices\SoftwareModules\ADZS_BF707_BLIP2_Board-Rel1.0.0\
Blackfin\Examples\ADZS-BF707-BLIP2-proc.xml
に該当ファイルがありますので、選択・設定します。

最後にDebugボタンを押すとデバッガーが起動し、必要なファイルのコンパイルとロードを行います。
OutputペインにLoad Completeと出ます。ここでF5を押すとコードが実行されます。
.
.
.
実行してみると、adi_pwr_setFreq failed と怪しい文字列が出現しました。
ソースコードを追っかけてみると、どうやらCPUの周波数設定で失敗しているようです。BF707のシステムクロックの最大周波数は192MHzですが、該当のソース(dsp.c)には216MHzと書かれていて、216MHzで設定しようとして失敗しています。
実際にはエラーは出ているけど最大周波数にセットされているので問題なく動きます。ですが、こーゆーのは気持ち悪いので直しましょう。
 dsp.cの中で216MHzとかかれている箇所を下図のように192MHzに修正し保存します。
 そして再びコンパイルを行い、再びデバッグしてみます。F5を押してバイナリを実行してもエラーが出なくなりました。
この状態で、ADVisionSensor Controller GUIを起動し、カメラボードと通信できるか確認します。問題無いようでしたらカメラボードに書き込むバイナリを作成しましょう。
ビルドタイプをDebugからReleaseに変更し、必要なインクルード・ライブラリのディレクトリをDebugビルド時と同様に設定して実行します。
C:\Analog Devices\SoftwareModules\VideoOccupancySensor-BF-Rel3.3.0\demo\outdoors\realtime\ADSP-BLIP2-CCES\Release
に、VOS_Outdoors_realtime_BLIP2.dxeというのが出来上がっています。
これをボードに書き込んで終了です。
ーーー
応援クリックをお願いします!

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村 電子工作ランキング

2017年9月11日月曜日

モーションセンサー評価ボード(ADZS-BF707-BLIP2)のファームビルド

前回、モーションセンサー評価ボード(ADZS-BF707-BLIP2)のファームを書き込みましたが、そもそものファームのビルドについては方法を省略していました。
今回は、前回予告したマイコン接続ではなくファームのビルド方法を紹介します。

まずは、CrossCoreを起動して、File->Importを選択します。
Generalの[Projects from Folder or Archive]を選んで次に進みます。
ここで、右上のDirectoryをクリックし、
C:\Analog Devices\SoftwareModules\VideoOccupancySensor-BF-Rel3.3.0\vos_lib_project
を選択してFinishを押します。
同様に、C:\Analog Devices\SoftwareModules\VideoOccupancySensor-BF-Rel3.3.0\demo\outdoors\realtime
もインポートすると、次の画面のように左側のペインに必要なファイルが追加されます。
次に左側のペインにある「VOS_Outdoors_realtime_BLIP2」を右クリックし、プロパティを参照します。
C/C++のsettingでINCLUDEライブラリとLIBサーチディレクトリの2つを設定します。
INCLUDEやLIBのディレクトリ設定エリアの右上にある+マークをクリックすると、ディレクトリ設定画面に遷移するので、USBドライバ(Vendor Specific Bulk IN/Bulk OUT Library)のパスを追加します。

今回は、USBドライバを、C:\Analog Devices\SoftwareModules\cld_bf70x_bulk_library_v1_4にインストールしたので、その場所を設定します。
これで必要な設定は完了したのでBuildを行うとエラーもなく終了します。

C:\Analog Devices\SoftwareModules\VideoOccupancySensor-BF-Rel3.3.0\demo\outdoors\realtime\ADSP-BLIP2-CCES\Debug
に、VOS_Outdoors_realtime_BLIP2.dxeというのが出来上がっています。
ーーー
応援クリックをお願いします!

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村 電子工作ランキング

2017年9月10日日曜日

モーションセンサー評価ボード(ADZS-BF707-BLIP2)の動作確認

前回に引き続き、アナデバさんのモーションセンサー評価ボード(ADZS-BF707-BLIP2)の動作確認をしていきます。

前回は統合開発環境であるCrossCoreをインストールしました。これだけではまだ十分ではないので、周辺ソフトをインストールしていきます。
評価ボードのページに周辺ソフトのリンクがあります。このうち、下記のソフトをインストールしていきます。ダウンロードにはアナデバさんのユーザー登録が必要です。

ADVisionSensor Controller GUI
BLIP2 Board Support Package
USB Libraries from Closed Loop Design
Image Processing Toolbox, Blackfin
Video Occupancy Sensor, Blackfin

さて、インストールが終わったらボードの動作確認をしていきます。
ボードにはUSBポートが2つあります。1つはUSBミニBコネクタ(USB To UART)で、もう1つはUSBマイクロBコネクタ(USB0) ですが、両方ともPCのUSBポートに接続します。
そして、ADVisionSensorControllerのGUIプログラムを起動させます。
 なぜか1回目は認識せず。ボードをリセットしプログラムを再起動させます。
 すると、カメラデバイスを選択してくれと表示されるので、Aptinaを選択してSubmitボタンを押します。
 するとカメラ画像が表示されます。とりあえず手元にあったドクターイエローの模型が映っていますw
ちゃんと動作しているようです。

さて、このボードのファームウェアをアップデートしないといけません。目的はSPI通信(シリアル・ペリフェラル・インターフェース)ポートの有効化です。このボードのデータをマイコン等に取り込むためのインターフェースとしてSPIを使用するつもりですが、デフォルトで載ってるファームウェアはSPIが使えません。そこでSPI対応のファームウェアに載せ替えることにします。

ファームウェアを書き換えるためには、ICE1000のJTAGエミュレータボードを接続します。
そして、ADVisionSensorControllerのGUIプログラムからファームウェアのタブを選択し、目的のファームウェアのバイナリファイルを選んで実行します。
すると、なんてことでしょう(笑)。
DOS窓でエラー発生。実行しようとしているコマンドのパスをよく見たら、CrossCore Embedded Studioのバージョン指定が違っています。つまり、ADVisionSensorControllerのGUIプログラムが想定してるバージョンより新しいものがインストールされているのですが、追従できず古いバージョンを呼ぼうとしていました。
---
インストール済のCrossCore Embedded Studioは、Ver.2.6.0
GUIプログラムが想定してるCrossCore Embedded Studioは、Ver.2.1.0
---
そこで、ADVisionSensorControllerのGUO\ConfigFiles\GeneralConfigurations.xmlを書き換えます。

差分はこんな感じ
C:\Analog Devices\SoftwareModules\ADVisionSensorController-PI-Rel1.0.2\GUI\ConfigFiles>
fc  GeneralConfigurations.OLD.xml GeneralConfigurations.xml
ファイル GeneralConfigurations.OLD.xml と GENERALCONFIGURATIONS.XML を比較しています
***** GeneralConfigurations.OLD.xml
  <DumpTargetMessages>0</DumpTargetMessages>
  <CCES_version>2.1.0</CCES_version>
  <SensorProfiles>
***** GENERALCONFIGURATIONS.XML
  <DumpTargetMessages>0</DumpTargetMessages>
  <CCES_version>2.6.0</CCES_version>
  <SensorProfiles>
*****

書き直した後、再びファームウェアのアップデートを実行します。
アップデートが無事進行しています。よかったよかった。
よく見たら、「ボードとのUSB接続が切れたので、プログラムを再起動させて再接続するよ」ってダイアログが出てます。これは、ファームのアップデートが終了したらOKを押しましょう。今押したらプログラムが落ちてしまいます。
無事完了しました。先ほどのダイアログのOKを押してプログラムを再起動します。

今回は動作確認とファームウェアのアップデートを行いました。
次回はマイコンと実際に接続してみようと思います。
すみません、まだ事前準備編が続きます。(追記9/14)
ーーー
応援クリックをお願いします!

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村 電子工作ランキング