ACCONEER社のワンチップミリ波レーダXB112/XM112を動かす

ACCONEER社のワンチップミリ波レーダXB112/XM112を動かす
 
Digikeyで売っている
ACCONEER社ミリ波センサXM112/XB112を動作させたので、その概要を記す。
 
 
■製品概要
・XM112
ワンチップ60GHzミリ波レーダであるA111というチップと、CortexM7プロセッサを同一基板にマウントしたもの。
A111はアンテナを内蔵しているので、高周波設計が不要である。
電源電圧は1.8V。出力は1mW以下と思われる。
用途は液面検出、駐車場での自動車検出などを想定しているらしい。
A111から出力されるデータは低レベルなので、従来はラズパイを外部につないで距離データなどに変換する必要があった(旧型製品XC112/XR112)が、XM112では搭載されたCortexM7プロセッサにてに距離データなどに変換し、出力してくれるので、ラズパイは不要になった。
出力インタフェイスはUART/SPI。
・XB112
XM112から情報を読み出し、USBシリアル変換してPCに接続するブレイクアウトボード。
XM112用の1.8V電源も搭載している。
 
 
テスト手順
■PCへの接続
XB112にXC112を挿入する。
PCにUSBでXB112をつなぐ。
 

 
 
バイスマネージャーでCOMポートとして認識されていることを確認する。
今回はCOM8になっている。
これを控えておく。
 

 
 
・ACCONEER社のデベロッパーにアカウントを作りログインする
 
 
基本的に個々のPDFに従って行う。
 
■acconer ツールをダウンロード
acconeerのツール(pythonで書かれている)をダウンロードする

 
 
■ファイームウェアバイナリのダウンロード
ACCONEERのHPからXM112用の最新ファームをダウンロードする
 

 
 
ファームウェア書き込みツールのダウンロード
BOSSAというATMELのマイコンフラッシュ書き込みツールをダウンロードし、インストールする。

 
ファームウェアの書き換え
以下の手順でBOOTモードに入る。
1.ERASEボタンを押し続ける
2.NRSTボタンを押し続ける
3.NRSTボタンを離す
4.ERASEボタンを離す
 

 
 
BOSSAでxm112ファームウェア*.binファイルを指定し、COMポートを指定。
Erase allとBoot to flashにチェックして、Writeボタンを押す。

 

 
 
 
下記お見が終わったら、基板のNRSTボタンを1秒押す
これで、XM112のマイコンが再起動し、測定可能となる。
 
 
 
 
pythonを入れる

 
 
インストールのときはadd PATHにチェックを入れる。

 
 
 
■必要なpythonモジュールをインストールする
cmd.exeを開いて、
cd xx\acconeer-pyton-exporation-master
pip -install --user –r requirements.txt
python setup.py install --user
 

 

 
 
 
■サンプルプログラムを実行する。
example以下に様々なサンプルがある。XC112のときより大幅に強化されている。
実行するときは、[port id]にCOM番号を入れる。
 
例:python examples/services/envelope.py –uart [port id]
 
 
・Envelope example
最も基本的な動作。距離vs反射波強度をプロットする。
C:\Users\k\Desktop\acconeer-python-exploration-master>python examples/services/envelope.py --uart COM8
 

 
 
・PyQTGraph
C:\Users\k\Desktop\acconeer-python-exploration-master\examples\plotting>python plot_with_pyqtgraph.py --uart COM8
下のグラフが時系列の反射強度を表しているらしい。

 
・Plot_With_mathplotlib
C:\Users\k\Desktop\acconeer-python-exploration-master\examples\plotting>python plot_with_matplotlib.py --uart COM8
上のグラフは距離VS反射強度だが、上記2点と比較して少し違う。
下のPhaseは反射波の位相を表しているらしく、手をかざして数ミリ動かすと-πからπに移動する。高分解能ではかるときなどにつかえるかも。
スクリーンショットを取るのを忘れた。
 
・obstacle_detection
移動ロボットなどに乗せて障害物検出をするためのサンプル
C:\Users\k\Desktop\acconeer-python-exploration-master\examples\processing>python obstacle_detection.py --uart COM8
上のグラフは反射強度と、FFT値のmaxを表している。FFT値は反射強度よりも感度がかなり高い。
下の色のついたグラフが、縦軸が距離、横軸が移動速度となっている。かなり感度は高い感じだが、ご動作しそう。
詳しい原理などははここにのっている。
 
 
 

 
・breathing
呼吸を検出する。
C:\Users\k\Desktop\acconeer-python-exploration-master\examples\processing>python breathing.py --uart COM8
呼吸検出。センサに正対して40cmぐらいのところで椅子に座って背もたれに持たれて計測。
Envelope and deltaのところでenvelobの高いところ(またはdeltaの大きいところ)に注目してIQを検出して、微小距離を出し、
それをBreathing movementのところに表示していると思われる。
呼吸と、よく見ると心拍も取れているが、少し体動があると埋もれてしまう。
 

 
■その他気づいたこと
thnkad x250 windows 7 64bitで動かしたが、グラフ表示をさせるととても重い。
数分で固まることもある。
ファームの書き換え以外はLinuxで行ったほうがいいかも。
 

デジカメを改造して非接触充電Qiに対応させる。

デジカメを改造して非接触充電Qiに対応させる。
 
最近はミラーレスデジカメでもUSB充電に対応したものがあるが、毎回MicroUSBコネクタを本体につなぐのは面倒である。
一方、一部のスマホでは非接触充電に対応したものがあり、充電台の上に置くだけで充電できるので大変便利である。
この機能を既存のデジカメで実現できないかトライした。
結果うまく行ったので記事としてまとめる。
なお、タイトルでは改造とあるが、デジカメ本体には手を加えていないので、もとに戻すこともできる。
 
 
対象デジカメ Panasonic Lumix DMC-GF7
 
使用電気回路
・TP5100 リチウムイオンバッテリチャージャー 2セル対応品
・MT3608 昇降圧DCDC
価格は合計で1000円以下。
 
Qi受電モジュールからの5V出力をMT3608で12Vぐらいまで昇圧し、それをTP5100に入力する。
(データシートによるとTP5100は5V~18Vの間で動作するとあるが、実験したところバッテリ電圧より高い10V程度から出ないと動作しなかった。)
 
TP5100はモジュールは、下の図の抵抗を0.2オーム→1オームとして、充電電流を100mAにしておく。
充電電流はQiモジュールの受電能力によって決まる。
Qi規格では5V500mA=2.5Wであるので、7.2Vのバッテリに充電する場合、300mA程度までは可能なはずであるが、今回は安全を見て100mAとした。

 
 
TP5100からの出力は、デジカメバッテリーの端子にはんだ付けする。(カメラ側の端子が接触する部分を避けてはんだ付けする)
はんだ付けしたラッピング線をバッテリふたと本体の隙間からカメラ外に出す。
 
電気回路

 
 
カメラへの取り付け
 
Qi受電部は底面に取り付ける。
MT3608とTP5100モジュールは基板を重ねて側面に取り付けた。

 
回路は側面のBOXに収め、一応完成した。

 
2017/11/14 11:47
グリップ内に回路を収めることを検討する。
部品を3Dプリンタで作る。

Qi充電モジュールは底辺に設置。
グリップ内にMT3608とTP5100基板を収めた。

 
各部品のカメラへの取り付けは強力両面テープにて行っている。

 
 
作ってみての感想
 
撮影が終わったら充電台の上においておくだけで満充電になるので、とても使い勝手が良くなった。
 
なお、この改造をするとカメラ底面のフタが開かなくなってしまうので、SDカードが取り外せなくなってしまう。
そこで、Transferjet対応のSDカードを使用して、画像の取り出しも非接触で行うようにしている。