クイックスタートプラットフォームによりセンサからクラウドへの接続を短時間で実現

DigiKeyの北米担当編集者の提供

センサはモノのインターネット(IoT)の目や耳にあたるもので、分析およびビッグデータアプリケーションがユーザーのインテリジェントな決定に役立つには、センサが提供する情報が必要です。 複数のワイヤレスセンサを接続して、この分析を行う方法は数多く存在しますが、クラウドへの接続は現在でも難しい方法です。 これは容積、電力、コスト、およびすべてのセンサのプロビジョニングと管理を考慮し、同時に堅牢なセキュリティを保証する必要がある場合には特に困難となります。

開発サイクルを短縮するため、センサノード開発とクラウドコネクティビティを組み合わせる開発キットが存在します。 クラウドサービスをエンドユーザー向け環境へ統合する方法についてのアーキテクチャ的な決定(システムがどのようなアクションを実行するか、デバイスの特定の機能について何がトリガとなるか、なども含まれます)を行う代わりに、開発者はこれらのキットを初期設定のまま使用し、センサ対応の設計を比較的迅速に作成できます。

この記事では、STMicroelectronics製のSTM32 Nucleoボード、およびX-NUCLEO拡張ボードを紹介します。これらの組み合わせにより、選択したアプリケーションに特化した機能を実装するため必要なコンポーネントを統合できます。 また、FP-CLD-BLUEMIX1拡張ソフトウェアパッケージを使用し、いくつかの単純な手順でNucleoセンサノードをフラッシュし、NucleoボードをIBM Watson IoTクラウドプラットフォームへ接続する方法も示します。1

Nucleoプラットフォームとソフトウェア

STM32 Nucleoボードを使用すると、技術者はSTMicroelectronics製のSTM32マイクロコントローラで新しい概念を柔軟にテストし、プロトタイプを構築できます。 このボードには拡張ヘッダがあり、すべてのNucleoについて共通なため、拡張モジュールを簡単に追加できます。

Nucleoボードはオープンなエコシステム手法の一部としてArduinoをサポートしており、ST-LINK/V2-1デバッガ/プログラマが組み込まれているため、別のプローブは必要ありません。 このボードにはSTM32ソフトウェアライブラリと、各種のパッケージ化されたサンプルソフトウェアが付属しています。

Arduinoを含めて、多くの種類のシールドを使用できます。 STMicroelectronicsのMorphoヘッダを使用するボードでは、あらゆる種類のアプリケーションにわたってシールドが拡張可能であり、RF、産業用、およびホームオートメーション用のシールドにも対応できます。 さらに、Bluetooth LE、Wi-Fi、視聴覚アプリケーション向けのシールドも利用可能です。

STM32用の標準ライブラリに加えて、ARM®の無料オンラインmbedがサポートされています。これはIoTデバイスプラットフォームで、オペレーティングシステム、ツール、開発者エコシステムを提供しているため、設計者はNucleoボードを評価して作業を開始できます。

センサからクラウドへの接続を補助するため、STMicroelectronicsはFP-CLD-BLUEMIX1も用意しています。これはSTM32マイクロコントローラ上で実行される、STM32CubeのIoTノード拡張用ソフトウェアパッケージで、STMicroelectronicsのウェブサイトから入手できます。2 STM32Cubeは、アプリケーションの開発プロセスを簡単にすることを主な目的としています。 この目的のため、STM32CubeMXとSTM32Cube組み込みソフトウェアライブラリが含まれています(図1)。

STMicroelectronicsのFP-CLD-BLUEMIX1ミドルウェアセットの画像

図1:FP-CLD-BLUEMIX1は、Wi-Fiコネクティビティを基礎とするアプリケーションを構築し、STM32Nucleoボードをクラウドベースのサービスとリンクするための、完全なミドルウェアを提供します。 (画像提供:STMicroelectronics)

STM32CubeMXは、グラフィカルユーザーインターフェースからSTM32 MCU用の初期化Cコードを生成できます。 STM32MXはIDE対応プロジェクトも生成し、消費電力計算器が含まれており、STM32Cubeの組み込みソフトウェアライブラリをst.comから直接インポートできます。

STM32製品のシリーズごとに、STM32Cube組み込みソフトウェアパッケージが1つ存在します。 この組み込みソフトウェアライブラリは、ハードウェア抽象化レイヤ(HAL)と、STM32周辺機器用の低位レイヤ(LL)アプリケーションプログラミングインターフェース(API)に加えて、STMicroelectronicsが開発したものか、またはオープンソースのコンポーネントに基づくミドルウェア(RTOS、USB、TCP/IP、グラフィツクなど)のセットで構成されます。 初期化コード、ミドルウェアコンポーネント、HAL、LL APIは、すべてのSTM32コンパイラと互換性があります。

この部分について、FP-CLD-BLUEMIX1パッケージはWi-Fi、NFC、センサ拡張ボード用のボードサポートパッケージ(BSP)を提供し、STM32Cubeを拡張します。 IBM Bluemixクラウドへの接続を可能にしてセンサのデータを送信し、クラウドアプリケーションからのコマンドを受信するために使用されます。 これによって、エンドツーエンドのIoT開発を一気に開始できるため、開発者は設計の差別化に労力を集中できます。

センサの接続

Nucleoボードの温湿度センサ(HTS221)、圧力センサ(LPS25HB)、モーションセンサ(LIS3MDLおよびLSM6DS0)にアクセスし、RFID/NFCタグを読み書きするためのソフトウェアインターフェースが用意されています。 X-NUCLEO-IKS01A1には、これらのセンサがすべて組み込まれています(図2)。

STMicroelectronics製のX-NUCLEO-IKS01A1 MEMSおよび環境センサ評価ボードの画像

図2:X-NUCLEO-IKS01A1はモーションMEMSおよび環境センサの評価ボードシステムです (画像提供:STMicroelectronics)

IKS01A1はArduino UNO R3のコネクタレイアウトと互換性があり、STMicroelectronics製のLSM6DS0 3軸加速度計 + 3軸ジャイロスコープ、LIS3MDL 3軸地磁気センサ、HTS221温湿度計、LPS25HB圧力センサを中心として設計されています。

また、ミドルウェアパッケージが含まれており、MQテレメトリトランスポート(MQTT)プロトコルが実装されているため、STM32 NucleoボードとIBMのBluemixクラウドサービスとの連携を推進できます。 ソフトウェアには、センサデータの視覚化と、IBM Bluemixでデバイスをコントロールする方法の例が含まれています。

ミドルウェアスタックの最上部でIBM Watson IoTプラットフォームへの接続を実験するための、サンプルアプリケーションも含まれています。 このサンプルは、エンドツーエンドのIoTアプリケーションの試作に使用できます。 STM32 Nucleo microsystemをIBM Bluemixクラウドサービスに登録した後で、リアルタイムのセンサデータを送信するために使用できます。 また、ユーザーはNFCのダイナミックタグを使用して、IBMにより提供されるテスト用ウェブページを自動的に開き、STM32 Nucleoボードのすべてのセンサによって生成されたデータを視覚化できます。

STM32 Nucleo microsystemとIBMのBluemixクラウドを接続するため、STMicroelectronicsはMQTTのアプリケーションレベルネットワークプロトコルのオープンソース実装を移植しました。 MQTTはマシン間(M2M)のIoTコネクティビティプロトコルで、少量のコードでリモートデバイスを接続するのに便利であり、ネットワーク帯域幅が制限されているときには特に有効です。 メッセージングプロトコルが軽量なので消費電力を削減でき、センサデータのテレメトリや、組み込みシステムへの実装に特に適しています。 FP-CLD-BLUEMIX1では、MQTTがミドルウェアライブラリとしてSTM32パッケージに統合されています。

X-NUCLEO-IKS01A1X-NUCLEO-IDW01M1XNUCLEO-NFC01A1拡張ボードとNUCLEO-F401REボードを使用したサンプルアプリケーションが、機能パックに含まれています。 このアプリケーションは、温度、湿度、圧力、加速度、地磁気、ジャイロスコープのセンサからデータ値を読み取り、Wi-Fi経由でIBM Bluemixへ送信します。

デフォルトでは、アプリケーションはデータ視覚化のみのクイックスタートモードで実行するよう構成されています。 ただし、IBM Bluemixにデバイスを登録して制御するよう簡単に変更できます(IBM Bluemixのアカウントが必要です)。

IBM Bluemixへの登録

STM32 Nucleo microsystemをIBM Bluemixクラウドサービスへ登録すると、エンドツーエンドのIoTアプリケーションを試作し、リアルタイムのセンサデータの送信を開始できます。

最初に、Bluemixにサインインしてアカウントを作成します(完全な手順についてはリファレンス1をご覧ください)。 登録手順では、次のようないくつかのプロパティとパラメータを入力する必要があります。

組織ID(ここでは「1w8a05」)

デバイスタイプ(ここでは「stm32_nucleo」)

UM2007 FP-CLD-BLUEMIX1ソフトウェアの説明

DocID028875 Rev 2 13/23

認証方法(「use-token-auth」のみがサポートされています)

認証トークン(ここでは「uUURNRbeQQaX+Fvi&8」)

デバイスのプロパティを、ソースコードファイルIBM_Bluemix_Config.cにあるConfig_MQTT_IBM関数へコピーします。 このファイルは、FP-CLD-BLUEMIX1ソフトウェアパッケージのProjects/Multi/Applications/MQTT_IBM/Srcフォルダにあります。

その後で、次に示すようにibm_mode変数を「REGISTERED」に設定する必要があります(コードリスト)。

Void Config_MQTT_IBM (MQTT_vars * mqtt_ibm_setup , uint8_t  *macadd):

/* QUICKSTART用のデフォルト構成。 REGISTEREDモードにはBluemixアカウントが必要です */

mqtt_ibm_setup->ibm_mode = REGISTERED

その後で、IBM Bluemixから提供されたデバイスプロパティを、IBM_Bluemix_Config.cという名前のソースコードファイルにあるConfig_MQTT_IBM関数にコピーする必要があります。 このファイルは、Projects/Multi/Applications/MQTT_IBM/Srcフォルダにあります。

コードの途中に、次の行があります。

Copy

/* REGISTERED DEVICE */

/* Need to be customized */

The fourth through eighth line will look like this when completed:

strcpy ((char*)mqtt_ibm_setup->username,”use-token-auth); //customize

strcpy ((char*)mqtt_ibm_setup->password,” uUURNRbeQQax+Fvit&8”);

strcpy ((char*)mqtt_ibm_setup->hostname,”1w8a05.messaging.internetofthings.ibmcloud.com);

strcpy ((char*)mqtt_ibm_setup->device_type, “stm32_nucleo”);

strcpy ((char*)mqtt_ibm_setup->org_id, “1w8a05”);

コードリスト:IBMのデバイス登録およびプロパティ挿入の要件。 登録されると、STM32 Nucleoベースのmicrosystemは、BM Watson IoTアプリケーションとの間で情報の送受信を行えるようになります。 (情報ソース:STMicroelectronics)

FP-CLD-BLUEMIX1パッケージのサンプルアプリケーションには、IBMクイックスタートウェブページ3上で、デバイスのMACアドレスに従ってセンサのデータを表示する、デフォルト構成が含まれています。 このURLページは、NFCタグにも書き込まれています。 STM32 NucleoボードがWi-Fiアクセスポイントに接続されると、IBM Bluemixと自動的に連携して、センサデータの送信を開始します。 Wi-Fi拡張ボードのMACアドレスと、IBMクイックスタートURLは、シリアル端子インターフェースに印刷されています。

リアルタイムのセンサデータを表示するため、このクイックスタートURLをコピーし、ウェブブラウザへ貼り付けることができます。 NFC対応のモバイルデバイスが利用可能なら、デバイスをNFCタグの近くに置くだけで、より簡単にウェブページを開くことができます。 コネクティビティ状態を視覚的に表示するため、STM32 NucleoボードがIBM Bluemixに接続されると、ボードの緑色のLED2が「オン」になります。 このLEDは、センサのデータサンプルが送信されるたびに点滅します。

FP-CLD-BLUEMIX1パッケージには、それ自体にSTM32レイヤがあります。 このレイヤは単純な汎用のマルチインスタンスAPIのセットで構成され、上位レイヤのアプリケーション、ライブラリ、スタックと連携します。 これらの汎用および拡張APIは、共通のフレームワークを基盤としています。 これによって、ミドルウェアレイヤなど、その上に構築されるすべてのレイヤは、与えられたMCUに固有のハードウェア情報を必要とせずに機能を実装できます。 この構造によりライブラリコードの再利用性が促進され、他のデバイスにも簡単に移植可能となります。

APIの関数とパラメータについての完全な記述を含む、詳細な技術情報は、パッケージの「Documentation」フォルダに、コンパイル済みHTMLファイルとして含まれています。

IBMのサンプルで使用されている主要なAPIは次のとおりです。

  • void Config_MQTT_IBM(MQTT_vars * mqtt_ibm_setup , uint8_t * macadd); Wi-Fi拡張ボード用のMACアドレスが指定されたとき、IBMクラウドへ接続するためのMQTTパラメータを構成します。
  • int spwf_socket_create(Network* net, uint8_t * hostname, uint32_t port_number,uint8_t * protocol); 指定されたhostname、ポート番号、プロトコルタイプ(TCPまたはTLS)についてソケットを開きます。 この関数は、成功または失敗の結果と、ネットワーク構造内のソケットidを返します。
  • void MQTTClient(Client* c, Network* network, unsigned intcommand_timeout_ms, unsigned char* buf, size_tbuf_size, unsigned char* readbuf, size_treadbuf_size); 指定された入力パラメータについて、Client構造体を構成します。
  • int MQTTConnect(Client* c, MQTTPacket_connectData* options); ClientおよびMQTTPacket_connectデータ構造体のパラメータで指定されたIBM MQTTブローカーと接続します。 成功または失敗の結果が返されます。
  • int MQTTSubscribe(Client* c, const char* topicFilter, enumQoSqos, messageHandlermessageHandler); データ構造体Clientで定義されているMQTTトピックにサブスクライブします。 成功または失敗の結果が返されます。

結論

分析データへの要求の増大と、組織からそれらのデータへのアクセスを効率化する必要性から、ワイヤレスセンサおよび関連するMCUがクラウドへ接続する必要性が強調されるようになってきました。

この記事では、特定の実装オプションを紹介し、最近リリースされたハードウェア開発キット、および関連するソフトウェアを使用して、センサを簡単にクラウドへ接続する方法について説明しました。 ここから、ユーザーは対象のオブジェクトやパラメータの現在の状態を監視できるだけでなく、クラウドサービスを使用して、予測的な分析への見通しを得ることもできます。

リファレンス

  1. IBM Watsonのモノのインターネットについて(Explore IBM Watson Internet of Things)
  2. IoTノード用のFP-CLD-BLUEMIX1 STM32 ODE機能パック(FP-CLD-BLUEMIX1 STM32 ODE function pack for IoT node)
  3. IBM Watson IoTクイックスタート(IBM Watson IoT Quickstart)
DigiKey logo

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。

出版者について

DigiKeyの北米担当編集者