前回、新日本無線製24GHz帯ドップラーセンサモジュール単体にLED接続した程度で動作させてみたのですが、今回ようやくマイコンボード(テスト用に毎回使用のST Nucleo-F072RBボード)からUART制御する形に接続し、その操作方法を確認してみました。まだ途中ではあるのですが、忘れないうちにプログレスを書き留めておきます。
※「IoT何をいまさら」投稿順Indexはこちら
まずは、マイコンボードに取り付けられたNJR4265Jセンサモジュールの写真をご覧いただきましょう。
一番下が、Nucleo-F072RBマイコンボードです。このボード上のマイコンのUARTポートをNJR4265のUARTに接続してセンサを制御しています。
センサ電源(5V)は、ボード上のものをそのまま取り出して使っていますので、マイコンボードをUSB経由でPCに接続して動かしている場合には、USBの+5Vそのままです。
2番目がArduinoシールド互換のユニバーサルボードで工作した部分です。このボードでUARTポートをどのピンから取り出すかということについては、別の投稿で検討したので、そちらをご覧ください。一応、手持ち2枚のNucleoボード間で互換がとれる接続としてみました。しかし、別稿の通り、本家Arduino Unoボードにも「刺して」電源を貰って単体センサとして動作させることは可能だと思うのですが、マイコンとUART通信は不可です。
なお、単なる失敗談ですが、下手くそな半田付けでセンサとArduino互換ピンヘッダを配線しているときに
UARTのTXとRXを逆につないでいたと勘違いしました
センサのTXとマイコンのTX、RXとRXどうしを間違って結線してしまったと思いこんでしまったのです。通信できないじゃん!と直ぐに配線を切ってやりなおし始めたのですが、まさか、
元々の結線、ちゃんとTXにはRXがつながっている接続だった
です。勘違い。手遅れ。結局せっかく綺麗?に結線したところを汚くやり直す感じになってしまいました。早合点は失敗のもと。
そして3段目、最上階がNJR4265Jです。もともとは1.27mmピッチで端子が出ているので、秋月電子の1.27mmピッチから2.54mmピッチに変換する基板でピッチを変換してArduinoシールド用ボードに載せています。しかし変換後は2.54mmピッチとは言え、2列になってしまうので「ブレッドボードに刺せない」というのが、半田付けをせざるを得なかった理由の一つです。
前回、仮組みで使用した部品をそのままボードに乗せたので、電源さえ与えれば、シールドボードから上だけでもセンサは単体動作します。さて、センサとマイコン間のUARTポートでハードウエア接続してみたのですが、また一個失敗をしてしまいました。通信エラーが出るので調べていて気付いたのですが(資料を良く読まないからいけない)NJR4265J
UART ボーレートは9600だけれどもODDパリティ
センサはODDパリティなのです。NucleoボードもパソコンもNoneがデフォルトなので設定を変更すればOK。しかしやらかしました。おおぼけなことにPCの仮想シリアル端末側をODD設定にしてオカシイ?オカシイ?と。
センサー>マイコンのSerial1=>マイコンのSerial2ー>USB-UARTー>パソコンの仮想COMポート
センサのUARTが直接パソコンの仮想COMポートに接続しているわけではなく、マイコン上の書き込んだソフトウエアで「中継と色々加工」をしていたのです。ODDパリティにしなければならないのは、マイコンのSerial1であって、パソコンの仮想COMポートではありませぬ。なにか、直結しているように勘違いしてまたやらかしました。注意力散漫!
ようやく、センサと接続できたので、センサに聞きたいことをいろいろ尋ねてみることにします。まずは、「バージョン」。センサとしてのバージョンなのか、センサ内蔵のマイコンファームのバージョンなのかは判然としないですが、バージョンを問いかければ、センサは答えます
V0.01
今のところ、特段の改版履歴などは見当たらなかったですが、今後、また同じセンサを買ったときにはチェック必要でしょう。
次に調べたかったのは閾値の制御です。「遠ざかる」「近づく」ドップラーセンサの作動位置を制御する閾値は、外側からアナログ的に与えることも、UARTからコマンドで与えることも可能です。今回、外側からも制御できるように結構精密にネジで増減できる50kΩの可変抵抗を外部に取り付けて閾値電圧を制御しています。この値は内部からどう見えてくるのか?
外部で可変抵抗を制御すると内部で認識している閾値も変化した
起動時に値をとりこんで、後は変わらないなどということはありませんでした。外部から与える値を変更すれば、内部で認識されている値も変わるようです。フルで999までの値をとり、これが最長の10m設定に相当すると私は認識しています。ほぼ25kΩほどの設定値で500程度の値を付けており、可変抵抗のネジをほぼ1回転ちょっと回すと30何がしか値が増えました。フルで30回転くらいできる可変抵抗なので、そんなものかな、という感じです。ただし、スレッショルド端子は一つしかないのですが、「近づく」と「遠ざかる」で異なる値として認識されています。内部では別々のタイミングでサンプリングしているようです。UARTからは、当然別々の値として設定可能です。
いろいろ閾値など変えて、どのくらいの距離でどう認識されるのか実験してみようと思っているのですが、本日は時間の関係でここまで。設定用のマイコンに書き込んだプログラム(MbedOS使用)がデバッグ用に仮想COMポートに送ってくる出力を最後に添付しておきます。(見やすくするためにマイコン側で生成しているメッセージは水色、センサのロウレベルの出力をそのまま中継している部分は白色になるようにしてあります。)