ESP32×Infineon 60GHzミリ波レーダー奮闘記 — PSoC6移植に挑戦してみた
はじめに
今回は、ESP32とInfineonの60GHzミリ波レーダーICを組み合わせる取り組みについて紹介します。
これは現在受けている案件の実現可能性を確認するために作った試作品です。
動作確認ができて「やりたいことは実現可能だ」と分かったので分解しようと思っていたのですが、
せっかくなので記録に残しておくことにしました。
きっかけ:PSoC6向けキットをESP32で動かしたい
もともとInfineonからは、PSoC6というマイコンボードと、それに接続する60GHzミリ波レーダーICを搭載したウイング基板がセットになったセンサーキットが販売されています。
このミリ波レーダーを制御するためのサンプルコードやライブラリはInfineon側で一通り提供されており、PSoC6上で使う分には簡単に動かすことができます。
しかし今回使いたかったのはESP32の方でした。
PSoC6はModusToolboxという開発環境を、ESP32はESP-IDFという開発環境を使うため、両者はまったく別物です。
そのためPSoC6用のコードをそのままESP32に持ってくることはできません。
そこで、ESP32でもこのミリ波ICを動かせるのか、必要なデータを取得できるのかを確かめるために作ったのが今回の試作品です。
配線について
線がたくさん伸びていますが、配線自体はそれほど複雑ではありません。内訳は以下の通りです。
- 電源線(5V・3.3V・グラウンド):3本
- SPI通信線(MOSI・MISO・クロック・チップセレクト):4本
- ミリ波ICがデータ取得時に割り込みを出すためのピン:1本
- ミリ波ICをリセットするピン:1本
- イネーブルピン:1本
合計で10本の配線です。
電源・SPI・GPIO3本という構成なので、配線難易度自体はそこまで高くありません。
そもそも60GHzミリ波レーダーとは
少し脱線しますが、この60GHzミリ波が何に使われているかというと、医療関係でよく使われているイメージがあります。
カメラを使った人検知が一般的な手法としてよく使われますが、データ量が多かったりプライバシーの面で扱いづらかったりする場合があり、そうしたケースでミリ波が使われることがあります。
また、暗い場所でも検知できるという点も、ミリ波を利用する価値の一つです。
なぜPSoC6ではなくESP32なのか
今回PSoC6を使わずにESP32を使っている理由は、簡単に言うとコスト削減です。案件の詳細に関わる部分なので詳しくは言えませんが、コストが大きな理由の一つだとご理解いただければと思います。
結果:問題なく動作することを確認
結論から言うと、すべて問題なく動作することが確認できました。
移植をどう実現したか:自分でゼロから作らない
ここで「電源とSPIをつないで、PSoC6のコードをESP32用に書き換えればいいのでは」と思うかもしれませんが、これは実際にはかなり大変です。
1から自分で作るのはなかなか骨が折れる作業です。
こうした移植をしたいときは、基本的にはまず元になるPSoC6のコードを読んでミリ波の動作原理を理解するところから始めます。
ただし、ESP32への移植という次の段階に進むときに、自分で一からPSoC6のコードをESP32向けに置き換えようとするのは、あまりお勧めできません。
代わりにまずやるべきことは、インターネット上に自分のやりたいことを実現している事例がないかを探すことです。
今回は幸い、Infineonのコミュニティに同じような事例が掲載されており、これをもとに試作品を作成することができました。
Infineonコミュニティで見つけた情報
そのコミュニティの記事には、先ほど触れたPSoC6マイコンボードとミリ波ウイングが組み合わさったキットの紹介、ミリ波の動作原理、必要なピン配線についての説明が載っていました。
さらにESP32に組み込む際の手順や、実際に動かしたときの表示結果まで詳しく解説されていました。
ありがたいことに、記事を読み進めるとESP32で動かすためのソースコードも提供されており、それを実際に動かしてみるという流れで進めることができました。
つまり、この記事がほぼ大元の情報源であり、必要な機材の購入方法から実装方法まで、Infineonからの情報としてすべて載っていたので、非常に助けられました。
Deepaさんへの感謝
この記事には多くのコメントが寄せられていましたが、その中でも特に感謝を伝えたいのが、この記事を公開してくださったDeepaさんです。
記事には様々な質問が寄せられており、私も4月頃にコメントをさせていただき、「このソースコードは本当に素晴らしい、ありがとうございます」とお伝えしました。
実は今回使用したミリ波ICは、評価ボードに搭載されているモデルとは異なる、後発のモデルでした。
そのためソースコードにはそのモデル向けの実装がなく、自分で追加実装する必要がありました。
その追加方法について、後日改めてコメントでやり取りをさせていただきました。
時系列としては、4月半ばから5月末までの約1ヶ月半をかけて、コードが動かない状態から実際に動作確認ができるところまで進めることができました。
動作確認ができてからは基板を作成し、そちらで実際に動かしながらプロジェクトを進めていく形になります。
Deepaさんには本当に感謝してもしきれないほどお世話になりました。
まとめ
今回、ESP32とInfineonのミリ波ICを使い、ESP32で60GHzミリ波ICを制御する試作品を作成することができました。何かご質問やコメントがあれば、ぜひお寄せいただければと思います。

