提供2019-10-30マルツ掲載日:2020-01-27IoTの登場は、大注目されるものを次につなげようとする多くの革新的な新興企業の意欲を刺激してきました。そのような新興企業の多くは、小規模に切り詰められた設計チームしかなく、市場投入までの厳しいスケジュールに迫られている現実もあります。結果的に、個々の設計者はアナログ、デジタル、無線周波数(RF)、ワイヤレス/有線ネットワークなど、さまざまな設計分野で作業を掛け持ちすることになります。そのため自ずと、IC、センサ、ペリフェラルの評価をどうしたら迅速化できるか、またそのコストをどのように削減できるかを常に模索しています。選択肢の一つは、ICベンダーが提供する評価/開発キットを使用して、各自のソリューションを堅持することです。サポートをしっかり受けられれば、この方法は完璧に通用するでしょう。一つの選択肢は、Arduinoのエコシステムを検討してみることです。Arduinoは、趣味として楽しむシステムから、本格的な設計/サポートのエコシステムに進化しました。この記事では、設計者がArduinoを使用して、設計サイクルの早い段階でICやペリフェラル、センサの評価を開始する方法をご紹介します。ここで使用するのは、センサやペリフェラルのブレイクアウトボード(BOB)といったオープンソースハードウェアとライブラリやサンプルプログラムといったオープンソースソフトウェアの組み合わせです。IndustriesのBOBを使用します。IoTの出現IoTの最初の実例の一つは、1980年代初頭にカーネギーメロン大学でCoca-Cola自動販売機が接続されたケースです。プログラマはインターネットを駆使して、自販機のドリンクが空でないか、冷えているかを自販機に赴く前に確認できるようになりました。概念としてIoTと名付けられたのは、1999年になってからです。IoTが本格的に登場した正確な時期については、今も議論の的です。私たちが知っているIoTが生まれた瞬間の最も相応しい定義は、「人よりも多くの『モノ』や『オブジェクト』がインターネットに接続された時点」ではないでしょうか。それを踏まえると、IoTが誕生したのは2008年から2009年の間の時期で、モノ/人の比率の推移を見ると2003年の0.08から2010年には1.84に増加しています。Arduinoの出現IoTの胎動は、2000年代初旬から顕著になったメイカームーブメントと一致しています。Faire(メイカーフェア)が開催されるわずか1年前です。Arduinoは登場以来、高度なオープンソースソフトウェアとハードウェアのエコシステムを進化させてきました。求められたのは、サポートの行き届いたArduinoのエコシステムを専門的な設計者の領域にもたらし、設計者の仕事を簡素化して市場投入までの時間を短縮することでした。実際、ソリューションは有機的に浸透し始めました。Arduinoを中心に広がった大きなエコシステムは、予期しない副産物として、専門的な設計者がArduinoを使用してセンサやペリフェラルを各自の設計に展開する前に評価する、という状況を生み出しています。その中にはRTCなど多くの例が見られます。RTCを使用したペリフェラル評価の例すべての最新32ビットマイクロコントローラには、多くの16ビット/8ビットマイクロコントローラと同様に、RTCが組み込まれています。これにより、基板の面積が縮小されて部品点数(BOM)も減り、最終製品のコストが低下しますが、内蔵RTCを使用する場合には短所もあります。短所の一つは、マイクロコントローラの内部RTCをソフトウェアにより有効や無効にする必要がある点です。そのため、電源障害など何らかの不測の事態が発生し、マイクロコントローラがフリーズしたりコードが迷走したりする場合、RTCが無効になる可能性があります。これに対して、外付けのRTCはより安定度が高いと考えられます。独立した電源レールと水晶振動子があり、マイクロコントローラで実行するコードにより誤ってオフになる可能性が低くなるからです。外付けRTCでは多くの場合、マイクロコントローラよりも大きなチップ製造プロセスノードを使用して実装され、シリコンフットプリントが大きいため、ビットフリップ、つまり宇宙線などの放射線によるシングルイベントアップセット(SEU)の影響をあまり受けなくなります。IntegratedのDS1307とDS3231があります。情報を追跡し、31日間未満の月を自動で調整し、うるう年にも対応します。24時間または12時間モードがサポートされます。両デバイスともシリアルI2Cバスを介してホストマイクロコントローラと通信し、センス回路を備えていることで電源障害を検出してバックアップ電源(通常はバッテリ)に自動で切り替えますが、その場合でもタイムキーピング動作を維持できます(図1)。図1:DS1307は外付けRTCの代表的な例です。このデバイスには、独自のローカル水晶振動子と電源レールがあるほか、コードの不具合に影響されないという長所があります。I2Cインターフェースを介してホストマイクロコントローラと通信します。Integrated)もちろん、データシートを確認してこれらのデバイスの違いを判断することも大切です。DS1307では5V電源と外部の水晶振動子が必要です。(TCXO)と水晶振動子が統合されています。場合によっては、これらの部品の違いがわかりにくいかもしれません。両方のデバイスともSQW(矩形波)を出力し、ソフトウェア制御でそれがアクティブになると、外付けプルアップ抵抗が必要になります。DS1307は、1Hz、4.096kHz、8.192kHz、32.768kHzの信号を生成するようにSQW出力をプログラムできます。対照的にDS3231では、1Hz、1.024kHz、4.096kHz、8.192kHzの信号を生成するようにこの出力をプログラムできます。DS1307では、クロックの精度は水晶振動子の精度、および発振回路の容量性負荷と水晶振動子がトリミングされた容量性負荷との一致精度に依存します。これに対して、温度補償されたDS3231には、-40°C~+85°Cの温度範囲で年間±2分以内という具体的な精度値があります(図2)。その精度は-40°C~+85°Cの温度範囲で年間±2分です。Integrated)それでは、これら2つのデバイスのデータシートを比べてもどちらかを却下するような違いが見当たらない場合、現実的にどのように評価すればよいでしょうか?一つの解決法として考えられるのが、カスタムのブレイクアウトボード(BOB)を設計して作成し、デバイスを始めから駆動するコードを開発する方法です。Arduinoハードウェアとソフトウェアのエコシステムの一環として開発されたすぐに使えるBOBとコードを使用すれば、より迅速でコスト効率の良いソリューションとなるでしょう。BOB(図4)があります。