ATtiny1627 Curiosity Nanoを使ったモーション検出の効率化
DigiKeyの北米担当編集者の提供
2022-02-23
モーション検出(検知/センシング)のニーズは、多くの商工業用/家庭用/組み込み用アプリケーションで高まり続けています。しかし、モーション検出には、接続しにくい高価なデジタルセンサが必要であるという問題があります。また、データ受信後にモーションを検出するためのアルゴリズムを開発する必要がありますが、これは決して簡単なことではありません。
モーションを検出できるソリューションはいくつもありますが、赤外線(IR)ソリューションが最も一般的です。開発者は、多くのスタンドアロン型デジタルセンサ用に、一般的なアクティブソリューションを選択することもできますが、それらは導入に煩雑性と高いコストが伴います。これらに代わる解決策は、簡単に接続できて低コストなパッシブ赤外線センサ(PIR)を利用することです。PIRは、ほとんどのマイクロコントローラが接続可能なアナログインターフェースを備えています。
この記事では、モーション検出の基礎について説明した後、開発者がMicrochipのDM080104 ATtiny 1627 Curiosity Nanoに接続されたPIRを使ってモーション検出を使用し始める方法を説明します。その後で、複雑なアルゴリズム開発を必要としない、機械学習(ML)技術を活用したモーション検出の方法を紹介します。使用を開始するためのヒントやコツも説明します。
モーション検出の基礎
モーションを検出するセンサ技術は数多くありますが、最も広く使用されているのはIRです。IRセンサには、アクティブ型とパッシブ型があります。アクティブセンサは、IR LEDの送信部とフォトダイオードの受信部で構成されています。アクティブセンサは、対象物から反射された赤外線を検出し、受信した赤外線を使って対象物が動いたかどうかを検出します。アプリケーションによっては、アクティブセンサに、モーションの方向を認識するための複数のフォトダイオードが搭載されている場合があります。たとえば、遅れている、または進んでいる赤外線信号を検出することで、4つのフォトダイオードを使って、左、右、前、後、上、下といった方向のモーションを検出することができます。
パッシブ赤外線センサは、赤外線を送信することはできず、受信するだけです。PIRセンサは、対象物が発する赤外線を利用して、対象物の存在とモーションを検出します。たとえば、ホームセキュリティシステムには、人や動物が発する赤外線を検出して、視野内を移動しているかどうかを判定するモーションセンサが通常搭載されています。図1は、アナログPIRセンサがIRなし、IRあり、安定、終了(切断)などの様々な条件で検出する対象物を示しています。
図1:PIRセンサは、対象物が発する赤外線を利用して、その存在とモーションを検出します。IRなし、IRあり、安定、終了(切断)の各検出段階を示しています。(画像提供:Microchip Technology)
開発者がアプリケーションに最適なタイプのIRセンサを選定する場合、以下のパラメータとのトレードオフを慎重に検討する必要があります。
- センサのコスト
- パッケージング
- マイクロコントローラのインターフェース
- 検出アルゴリズムと計算スピード
- センサの検出範囲と消費電力
ここでは、ATtiny1627を使ったPIRモーション検出システムの例を見てみましょう。
ATtiny1627 Curiosity Nanoの紹介
ATtiny1627はMicrochip Technology製で、モーション検出用の興味深いマイクロコントローラ(MCU)ソリューションです。この8ビットMCUは、17ビットオーバーサンプリングが可能な12ビットのアナログ-デジタルコンバータ(ADC)を内蔵しています。また、感度を調整できるプログラマブルゲインアンプ(PGA)も搭載しています。この2つの機能を統合することで、多くのアプリケーションに適した低コストのモーション検出システムを実現しています。
低コストで使用を開始するには、開発ボード DM080104 ATtiny1627 Curiosity Nanoを使用するのが最適です(図2)。この開発ボードには、最大20メガヘルツ(MHz)で動作するAVR MCU、16キロバイト(Kbytes)のフラッシュ、2KバイトのSRAM、256バイトのEEPROMが搭載されています。このボードには、プログラミングツール、LED、ユーザースイッチなどが搭載されています。おそらく最も興味をそそられるのは、このボードがラピッドプロトタイピングのためにヘッダで簡単に接続できるように設計されていることや、プロトタイピングボードや生産ボードに直接ハンダ付けできることでしょう。
図2:ATtiny1627 Curiosity Nanoは、最大20MHzの周波数で動作するプログラマブルな8ビットAVR MCU、16Kバイトのフラッシュ、2KバイトのSRAM、256バイトのEEPROMを内蔵しています。この開発ボードは、プロトタイピングおよび生産システムを簡易化するために、より大きなベースボードに簡単にはんだ付けやジャンパ付けすることができます。(画像提供:Microchip)
また、このボードには、開発者にとって有用ないくつかの機能が追加されています。第一に、DGIとGPIOという2つのロジックアナライザチャンネルが追加されています。これらのチャンネルは、マイクロコントローラのデバッグや管理に使用できます。第二に、開発者は、オンボードの仮想COMポート(CDC)を活用して、メッセージのロギングやデバッグを行うことができます。最後に、ソフトウェアの作成と展開に使用できるいくつかのツールがあります。たとえば、GCCコンパイラであるMicrochip Studio 7.0や、GCCまたはXC8コンパイラを使用するMPLAB Xを使用することができます。
また、Microchipがサポートする約10個のコードリポジトリもあります。これには、ATtiny1627用の様々なサンプルが付属しています。これらのコードリポジトリには、PIRモーション検出、温度測定、アナログ変換など、様々なサンプルが含まれています。
モーション検出テストベンチの製造
モーション検出テストベンチの立ち上げは簡単で、コストもそれほどかかりません。テストベンチを製造するのに必要な部品は以下の通りです。
- DM080104のATtiny1627 Curiosity Nano
- AC164162T Curiosity Nanoアダプタ
- MikroElektronika製PIRセンサ MIKROE-3339
ATtiny1627 Curiosity Nanoについては既に見てきました。AC164162T Curiosity Nanoアダプタは、ラピッドプロトタイピングに使用できるATtiny1627 Curiosity Nano用のキャリアボードを提供します(図3)。さらに、MIKROE click board用の3つの拡張スロットと、信号を調べたりカスタムハードウェアを追加したりできるヘッダを備えています。
図3:AC164162T Curiosity Nanoアダプタは、MIKROE click board用の3つの拡張スロットと、信号にアクセスしたりカスタムハードウェアを追加したりできるヘッダを備えています。(画像提供:Microchip)
最後に、図4に示すMIKROE-3339 PIRセンサは、KEMETのPL-N823-01パッシブIRセンサをシンプルで拡張可能な形で実現しており、AC164162T Curiosity Nanoアダプタに直接接続することができます。注意すべき点は、MIKROE-3339をMicrochipサンプルのモーション検出に使用する場合、いくつかの変更が必要であるということです。これらの変更点については、MicrochipのアプリケーションノートAN3641「Low-Power, Cost-Efficient PIR Motion Detection using tinyAVR® 2 Family」の10ページをご覧ください。
図4:MIKROE-3339 click boardは、プロトタイピングしやすい形でKEMET PL-N823-01 PIRセンサを提供しています。(画像提供:MikroElektronika)
PIRモーション検出ソフトウェア
開発者がモーション検出用ソフトウェアソリューションを開発する方法は、いくつかあります。1つ目の方法は、MicrochipがAN3641で紹介しているサンプルマテリアルを使用することです。このサンプルのモーション検出ソフトのコードリポジトリはGithubにあります。
このアプリケーションは複数のフェーズで実行されます。1番目のフェーズでは、本アプリケーションがPIRセンサの初期化とウォームアップを行います。2番目のフェーズでは、ADCの割り込みサービスルーチンを使って、PIRセンサのデータを定期的にサンプリングします。3番目のフェーズでは、ADCデータの平均を算出します。最後の4番目のフェーズでは、検出アルゴリズムを用いて、モーションが検出されたかどうかを通知します。モーションが検出されると、オンボードのLEDが点滅し、シリアルポート経由で検出信号が送信されます。プログラム全体のフローチャートを図5に示します。
図5:Microchipモーション検出アプリケーションのソフトウェアフローを表した図です。(画像提供:Microchip)
2つ目のモーション検出方法は、Microchipのサンプルに含まれる初期化およびADC割り込みルーチンにおいて、それらサンプルの検出アルゴリズムの代わりにMLを利用することです。つまり、PIRデータを収集し、ニューラルネットワークに学習させるのです。学習を行ったMLモデルは、TensorFlow Lite for Microcontrollersを使用することで、8ビットの重みを持つ固定小数点演算を用いてマイクロコントローラ上で実行できるよう、変換できます。
このようにMLを利用することのメリットは、開発者が自身の作業に必要なアルゴリズムを設計しなくても済むようになることです。代わりに、アプリケーションに必要な前提条件やユースケースでセンサのデータをサンプリングすればよいのです。また、開発者は、新しいデータが利用可能になったときに、モデルを迅速に拡張・調整することができます。
ATtiny1627を使ったモーション検出のヒントとコツ
開発者がモーション検出に着手するには、いろいろなやり方があります。開発者が開発を効率化・加速するために留意すべき「ヒントとコツ」は以下の通りです。
- 既製の部品を使って、低コストのプロトタイピングプラットフォームを作成する
- GitHubで公開されているMicrochipのモーション検出サンプルを活用する
- 初期のプロトタイプを簡単に作成するため、まずATtiny1627 Curiosity Nanoボードのフットプリントでプロトタイプのハードウェアを設計し、次にそのハードウェアにATtiny1627ボードを直接はんだ付けする
- MicrochipのXC8コンパイラを使って、作成するコードを簡潔、高速、最適化する
- モーション検出アプリケーションの開発を始める前に、MicrochipのAN3641「Low-Power, Cost-Efficient PIR Motion Detection Using the tinyAVR® 2 Family」を参照する
- モーション検出のアルゴリズムにMLを使うことを真剣に検討する
これらの「ヒントとコツ」に従えば、アプリケーションをプロトタイピングする際に、大幅に時間を節約できるとともに悩み事も減るでしょう。
まとめ
モーション検出機能は、多くのアプリケーションで一般的な機能となっていますが、特にそのようなアプリケーションではモーション検出機能は修正しないことが望ましいとされています。開発者は、PIRセンサと低コストのMCUを活用することで、BOMコストを最小限に抑え、設計を効率化することができます。これまで見てきたように、ATtiny1627は有用な叩き台であり、Microchipでは開発者が作業を始めるのに役立つ様々なツールとアプリケーションノートを提供しています。また、モーションを検出するアルゴリズムを開発する際の煩雑性を最小限に抑えるために、MLを利用することもできます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


