Amazon、IoTマイコンへFreeRTOS提供

Amazon:アマゾンがFreeRTOSをカーネルにして、IoT端末とのクラウド接続、セキュリティ確保、将来的にOTA:Over The Airによるアップデート機能をライブラリで提供というニュースが入りました。

嬉しいのは、「FreeRTOS」と「OTA機能がRTOSで提供」されることです。

Amazon FreeRTOS

IoT端末とクラウドを接続するには、IoT通信プロトコルが必要です。BLE:Bluetooth Low EnergyやThreadが有力ですが、国内外の網側事情が異なるため、実質的なIoTプロトコル実装は間違いなく大変です。

もしこのIoT通信機能が、最大手アマゾンの無償ライブラリで提供され、マイコンUARTと同様にIoT Communication APIを使え、しかもセキュリティ対策済みであるならば、IoT端末は爆発的に普及するでしょう。普及の足かせとなっているIoT通信とセキュリティ問題が解決されるからです。

Amazon FreeRTOS
Amazon FreeRTOS利用イメージ (出典:記事、AWS)

現在Amazon FreeRTOSのハードウエアパートナーは、テキサス・インスツルメンツ:TI、マイクロチップ、NXP、STマイクロエレクトロニクスの4社で、NXPは、LPC54018 IoT Module、STMは、STM32L4 Discovery Kit IoT Node評価ボードでサポートするそうです。

NXP、STMいずれもかなり高性能MCU評価ボードを使っていますが、これは高機能IoTエンド端末(≒簡易スマホ)を想定しているからだと思います。FreeRTOSカーネルなので、ROM/RAMが少ない低価格IoTエンド端末にも実装できるハズです。

弊社ブログでも紹介してきたFreeRTOS自身は、様々なベンダの低価格MCUにも実装実績があります。

残念ながら弊社のFreeRTOSサンプルソフトは、NXPのLPCXpresso824-MAX上で完全動作しているとは言えませんが、近いうちにSTMのSTM32F103RB(Cortex-M3:64MHz、ROM/RAM:128KB/20KB)で再チャレンジし、新たにFreeRTOS版のテンプレートを開発できないか検討中です。
※FreeRTOSサンプルソフトは、2020年版に更新しました。LPCXpresso824-MAXサンプルソフトは削除しました。

OTA機能

出荷後の組込みソフトを更新したいことは良くあります。但し、Windows更新でも失敗があるように、技術的にハイリスクで、また更新費用を顧客が負担してくれないこと(ノーリターン)も多いので、悩ましい事柄です。

Amazon FreeRTOSのOTAがRTOS関連のみか、または、RTOSにとってのアプリ、つまり開発ソフトも含むかは不明ですが、たとえRTOSのみであってもOTAが提供されれば好都合です。セキュリティ起因の不具合解消に役立つからです。

従来のベアメタル開発でもOTA関連の資料は、英語版で難解な記事はあります。しかし、私の場合は、結局現地でIDE書き換えの経験が多いです。リクスを少しでも下げたいのもあります。RTOSが機能提供してくれれば、責任転嫁(?)ですが助かります。

弊社FreeRTOSへの取組み

IoTクラウドサービスは、アマゾンのAmazon Web Services IoT:「AWS IoT」が先行し、マイクロソフトの「Azure IoT」、これらを追いかけるグーグルの「Weave」とアップルの「HomeKit」、その後ろにARMの「mbed Cloud」という状況だそうです。アマゾンは最先端を走っているのです。

先行アマゾンが2017年末に発表したAmazon FreeRTOSの詳細は不明ですが、IoT MCUのRTOSにFreeRTOSが有力であるのは、確実になりそうです。

FreeRTOSソフト開発の場合、タスク自体は簡単で単純な初期設定+無限ループ構成です。タスク同期やタスク通信にRTOS APIが使えれば、それ程難しくはないと(今は)考えています。この考え方が、タスクが増えたりプライオリティを変えたりしても正しいか、間違っているかは、実践経験あるのみです。

個人で実践できるFreeRTOS動作環境の構築が、弊社FreeRTOS版テンプレートの目標となりそうです。

レスポンシブサイトと説明資料

HappyTechサイトを年内完成目標に、レスポンシブ対応:Responsive Web Designへ改良します。

数年前にサイトを開発した時は、1ページ表示が流行っていたので、これに倣って(ならって)開発しました。しかし、スマホやタブレットなどのモバイルデバイスが増え状況が変わりました。

サイト内容のコンテンツ追加・削除もしにくい構成でしたので、流行のレスポンシブサイトに変更します。

Responsive Web Design
Responsive Web Design

レスポンシブテンプレートを探す

手っ取り早くレスポンシブサイトを開発する方法は、ネットに溢れるレスポンシブテンプレートを利用することです。

私は、HTML5 UPというサイトのテンプレートを利用しました。テンプレート説明資料はありませんので、開発には、多少のHTML、CSSの解読技術とベース知識が必要です。

レスポンシブテンプレートメリット

記載内容はそのままに、ユーザが使う画面大小に合わせて自動的に表示レイアウトを変えるのがレスポンシブサイトです。ご覧のブログはWordPressを使っていますので、利用テーマをレスポンシブ版に変えればそれで出来上がりますが、サイトの場合は、自分でHTMLとCSSを使って作り直す必要があります。

基本部分が出来上がったHTML5 UPテンプレートに、修正を加え動作を確認しながら、短期にサイトを開発できるのがテンプレート利用のメリットです。

マイコンテンプレートメリット

このメリットは、弊社マイコンテンプレートでも全く同じです。

サイト開発と同様、マイコンも動き出すまでに手間がかかります。また、動き出した後も、修正や変更が生じます。テンプレートを使うと、この動き出しまでの時間を、殆ど0に短縮できます。

マイコンAD変換:ADCを例に説明します。

ADCは、サンプルソフトも多く使い方も良く知られています。しかし、実際にセンサを接続して動作させると、複数回ADCの平均を計測値とするか、あるいは、1回のADCを計測値とするかは、アプリにより異なります。

通常は、ノイズ対策として平均値を用いる場合が多いです。それでも、測定間隔や何回の計算で平均を求めるかについては、センサとマイコンを接続し、実際に動作させカット&トライ:試行錯誤で決めるのがBestです。

この試行錯誤に適したソース構成が初めから出来上がっていれば、試行も容易でスパゲッティーコード(!?)にもなりません。

つまり、立ち上げを早くし、実動作に近い環境でプログラミングでき、しかもスパゲッティー化を避けられるのがマイコンテンプレートのメリットです。

マイコンテンプレート説明資料

説明資料があると、テンプレート修正や変更が容易になります。テンプレート開発者の考え方、指針が解るからです。最近のソースコードは、数行に渡るほどの多くの英語コメントが付いていますが、コメント文だけでは、これら考え方、指針は表現できません。

説明資料が無い場合は、どこを修正・変更すれば良いがが不明で、この場所を探すのに余分な時間が必要になります。マイコンソースコードは、その傾向が特に強く修正や変更で直にスパゲッティーコードになります。

標準的な決まりが多くあるHTMLやCSSと異なり、マイコンソースは比較的自由に記述できるからです。その結果たとえ同じ職場でも、他人が開発したマイコンソースは解読が難しいのが現状です。標準的な知識レベルがバラバラなのも原因の1つでしょう。デサインレビューの結果が反映され難いのです。

そこで、マイコンテンプレートには説明資料を添付し、標準的と思う私の考え方や開発指針を多く記載しています。テンプレートソースコードにも豊富な(冗長な!?)日本語コメントが付いています。

勿論、これら考え方や指針は、あくまでご購入者様のテンプレート理解が目的で、押付けではありません。テンプレート版権は、ご購入者様個人に帰属しますので、ご自分の考え方を反映した改良も自由です。

ご購入者様のご質問にも丁寧にお答えします。

マイコンテンプレートは、初心者~中級者向けです。しかし、全ての方のレベルに合わせた説明は、不可能です。それぞれの方でご質問は、異なります。広いレベルの方に参考になると思ったご質問に関しては、テンプレート改版時、説明資料へ付け加えています。

以上の方針で、マイコンテンプレート説明資料やソースコードを作成しています。

マイコンテンプレートご購入者は、または購入検討中の方であっても、いつでも、どのようなご質問でも、大歓迎です。お気軽にinfo@happytech.jpまでお寄せください。

SPI/I2Cバスの特徴と最新表示デバイス

IoT MCUは、従来の2×16文字のLCDから、SPIバス接続でよりリッチな表示ができるものへと変わりつつあると前投稿で述べました。

SPIバスは、従来MCUでも実装しています。ただし、多くの場合I2Cとポート共用で、センサやEEPROMとI2C接続するサンプルソフトが多数派でした。IoT MCUでは、センサ接続とリッチ表示を同時にサポートするので、I2C/SPIポートを2個以上装備するMCUが多くなりました。

本稿は、SPI/I2Cバスの特徴と、SPI接続の最新表示デバイスを示します。

SPIバスとI2Cバスの特徴

SPI Bus vs. I2C Bus (Source: Wikipedia)
SPI Bus vs. I2C Bus (Source: Wikipedia)

SPI(3線式)とI2C(2線式)は、どちらも制御ボード内で使うシリアル通信インタフェースです。少ない線数で複数デバイスを接続できますので、制御ピン数を少なくしたいMCUには適しています。
※SPI:Serial Peripheral Interface
※I2C:Inter-Integrated Circuit

仕様の解説などは、ネット内に数多くありますので省略します。

前投稿のNXP Swiss Army Knife Multi toolのWebinarで示されたSPIとI2Cの特徴に、MCU使用例を加筆したのが下表です。

SPI vs. I2C (Source: NXP Swiss Army Knife Multi tool Webinar)
  SPIバス I2Cバス
長所

・高速

・5V/3.3V デバイス混在可能

・2線でバス接続可能
短所

・デバイス毎にチップセレクト必要

・4動作モードがあるためバス接続時面倒

・低速

・同一Vddでデバイスプルアップ

使用例 リッチ液晶ディスプレイ, SD/MMCカードなど EEPROM, 加速度センサ, 気圧センサなど

※NXPは、当初I2Cバスで液晶ディスプレイ接続を試みたが、結局SPIバス接続になったそうです。Webinarだと、アプリケーションノートに記載されないこのような貴重な情報が入手できます。

SPI接続の最新表示デバイス

検討の結果NXPは、128×64ドット1.3“のOLED: Organic LED(有機LED)ディスプレイをMicro SDカードとSPIバス接続しています(前回投稿Swiss Army Knife Multi tool Block図参照)。
※有機LEDは、輝度や視野角、消費電力などの面で優れた特性を持つLEDです。

SPI OLED Display
SPI OLED Display

*  *  *

一方CypressのCY8CKIT-062-BLE Webinarでは、264×176ドットのE-INKディスプレイシールドが使われました。E-INKディスプレイは、電源OFFでも表示が残る画期的な表示デバイスです。しかもシールド基板なので、Arduinoコネクタを持つMCU評価ボードへの装着も可能です。

E-INK Display Shield
E-INK Display Shield

記載インタフェース信号名から、このE-INKディスプレイもSPI接続であることが解ります。

SPI E-INK Display
SPI E-INK Display (Source: PSoC® 6 BLE Pioneer Kit Guide, Doc. # 002-17040 Rev. *B, Table 1-3)

CY8CKIT-062-BLEは、このE-INKディスプレイのシールド基板付きで8,600円(Digi Key調べ)で入手可能なのでお得です。

しかし、E-INKディスプレイの制御方法が、PSoC Creatorの専用ライブラリ経由で、PSoC MCUファミリで使うには(多分)問題ありませんが、他社評価ボードでこのシールドを使う時は、専用ライブラリの詳細解析などが必要になると思います。

まとめ

SPIバスとI2Cバスの特徴と、SPI接続の最新表示デバイスを2つ示しました。

MCU評価ボードで使われた有機LEDディスプレイやE-INKディスプレイには、I2Cよりも高速なSPIバスが接続に使われています。

有機LEDディスプレイは、輝度や視野角、消費電力などの面で従来LEDディスプレイよりも優れています。

E-INKディスプレイシールドは、電源OFFでも表示が残りArduinoコネクタを持つ他社評価ボードにも装着可能ですが、Cypress制御ライブラリの解析が必要になります。

そこで、SPIバス接続を使ったArduinoシールド基板で、リッチ表示可能、サンプルソフトなどの情報多数、入手性が良く低価格、という条件で調べたところ、Adafruit(エイダフルート)の1.8“カラーTFTシールド(128×160ドット)、microSDカードスロットとジョイスティック搭載(秋月電子3,680円)を見つけました。

1.8" TFT Shield Schematic
1.8″ TFT Shield Schematic

TFT コントローラICのST7735Rのデータシートも開示されていますので、OLEDやE-INKシールドよりも使いやすいと思います。

しかも、メニュー表示した画面に、付属ジョイスティックを使ってユーザが処理選択することもできるので、お勧めのSPI接続表示シールド基板です。

評価ボードから読む最新マイコン技術動向

最新マイコンの評価ボードから、IoT向けMCU技術動向を考察します。参考にしたのは2017年後半開発の下記2種評価ボードです。

つい最近、2ボードはWebinarで解説されており充実内容でした。興味がある方は、上記リンクから探せばOn Demandでも見られると思います。英語ですが非常に参考になります。

CY8CKIT-062-BLE
CY8CKIT-062-BLE

私は、「ベンダ製評価ボードは、ハード/ソフト両方の早期開発レファレンスとすべきだ」と何度か説明してきました。この認識に基づき最新評価ボードから今後のIoT MCU技術動向を抽出したのが下記です。

リッチ表示、タッチパッド、大容量ストレージ、IoT無線通信、FreeRTOS

IoTマイコンには、以下5項目が現状MCU技術に加わると思います。

IoT MCU技術動向(2017年11月)
追加技術 概要
リッチ表示出力 2×16文字程度のLCD表示から、128×160ドットカラーTFTディスプレイなどよりリッチ表示が可能な出力。
タッチパッド入力 従来タクトスイッチから、タッチパッドなどのより柔軟なユーザインタフェース入力。
大容量ストレージ 小容量EEPROM or RAMから、ロギングデータ等の保存も可能なSDカードなどの大容量ストレージ。
IoT無線通信 UART/SCIから、IoTプロトコルに応じた間欠動作で低電力志向の無線通信。
FreeRTOS ベアメタル開発から、複雑なリアルタイム処理実現のためのRTOS開発。

※IoT通信は様々なプロトコルが乱立状態ですが、BLE/Thread両方サポートに集約されそうな気配です。
※RTOSもCMSIS_RTOS/mbed OS 5/FreeRTOSと様々ですが、FreeRTOS利用例が多いです。

5項目全てが追加される訳ではなく、現状MCUにIoT通信処理のみを追加したコスト重視IoT MCUと、全て追加した高機能IoT MCUの2タイプに分かれそうです。

2タイプのIoTエンド端末

IoT MCUで開発するデバイスを、ここではIoTエンド端末と呼びます。端末の方がイメージし易いからです。コスト重視IoT MCUは、低価格IoTエンド端末へ、高機能IoT MCUは、IoTの申し子となる高機能IoTエンド端末へ搭載されます。

IoT端末の多くはこの低価格タイプになると思います。

ADCなど従来MCUのアナログ入力にセンサを接続し、IoT通信でクラウドへセンサデータを定期的に送信します。低電力処理重視のためリッチ表示などは不要で、数年~10年程度はバッテリー動作可能です。

IoT通信機能は現状未実装ですが、ルネサスエレクトロニクスのOktoberfestコースターなどが実例です。通信機能搭載で、店員のスマホから飲み物の有無や温度が解るなどの使い方が想定できます。

Oktoberfestコースター
Oktoberfestコースター

つまり、IoTクラウドの5感センシング(視覚、聴覚、触覚、味覚、嗅覚)が主機能で、クラウド処理結果やユーザへのアクション指示は、スマホなどの別端末が行うのがこのタイプです。

*  *  *

高機能IoTエンド端末は、低価格端末機能に加え、リッチ表示ディスプレイでユーザに端末やクラウド解析結果なども表示可能で、ユーザが状況に応じて判断するためのタッチパッド入力なども備わっています。

端末データをローカルなSDカードなどのストレージへ蓄積し、一括してクラウド送信することや、ディスプレイ表示を状況に応じて変更するための画像データをローカル保存することもなどもできます。

IoT普及時の高機能端末がこれで、言わば簡易スマホ機能も備えた端末と言えます。最新評価ボードは、このタイプの開発レファレンスに使えるように設計されています。

実時間で複雑な並列動作が要求されるので、RTOS(FreeRTOS)が用いられます。

NXPのSwiss Army Knife Multi toolなどが実例です。

Swiss Army Knife Multi tool Block Diagram
Swiss Army Knife Multi tool Block Diagram

まとめ

最新MCU評価ボードから、現状MCUへの技術追加(強化)5項目を抽出しました。追加項目により低価格IoT MCUと高機能IoT MCUの2つに分け、IoTエンド端末イメージを示しました。

現状MCUにIoT無線通信を追加した低価格IoTエンド端末は、IoTセンサとして機能し通信プロトコルが確定すれば、現状技術でも実現性は高そうです。

簡易スマホ機能も備えた高機能IoTエンド端末は、新技術(IoT無線通信、FreeRTOS)や、従来MCUであまり使われなかったリッチ表示出力、パッチパッド入力、大容量ストレージ技術が強化されそうです。

リッチ表示出力や大容量ストレージには、高速大容量向きのSerial Peripheral Interface:SPIバス接続が有力です。センサ接続には、従来同様低速なInter Integrated Circuit:I2Cバスを使い続けるでしょう。

タッチパッド入力は、ベンダ提供の独自ライブラリを利用する形態になります。ベンダ毎にセンス能力やウエット耐性などに性能差が生じる可能性があります。

IoT通信処理とRTOSは、様々な仕様が混在中ですが、BLEとThread両用、FreeRTOSに収束しそうな気配があります。

Broadcom、Qualcomm、NXP買収戦略

半導体の業界動向についての最新記事を3つ紹介します。

パックマン(古い!)とBroadcom、Qualcomm、NXPでこの状況を表すとこんな感じでしょうか?

Broadcom、Qualcomm、NXP買収戦略
Broadcom、Qualcomm、NXP買収戦略

企業買収は、巨大な初期投資が必要な半導体業界での生き残り、かつ主要技術確保のための戦略の1つです。BroadcomがQualcommを買収すれば、Intel、Samsungに次ぐ3番手の半導体メーカとなり、スマホ向け半導体では業界最大手になるそうです。

QualcommによるNXP買収は、NXPのMCU競合他社(例えば、STエレクトロニクス、Cypress、我ら日本勢のルネサスエレクトロニクスなど)が嫌がり、また不安を抱く事柄(戦略)だと言うことは、つまり、この買収がMCUソフト/ハードの開発者である我々にも直接影響が大きいと言うことです。

NEC、日立、三菱各社のマイコンが、ルネサスになった時のことを思い出しましょう。

目先の開発案件だけに囚われず、大きなMCU技術動向、業界動向も把握しておかないと、ガラパゴス技術者になりかねません。

 

動きが早く激しい外国勢に対して、メモリー事業を売却して生き残った東芝は、

東芝の自動車用パワー半導体戦略
東芝の自動車用パワー半導体戦略

東芝やルネサスなどの日本半導体メーカには、我々日本MCU技術者がガラパゴス化しないためにも、生き残るだけでなく、例えば、マツダのSKYACTIV-Xのような、業界を引っ張っていく光る技術力を示してほしいと思います。

マイコンデータシートの見かた(その2)

現役STマイクロエレクトロニクスの「メーカエンジニアの立場」から記載された、ユーザ質問の多かった事項を中心にマイコンデータシートの見かたを解説する記事(連載2回目)を紹介します。

全3回の連載記事内容

第1回:凡例、絶対最大定格、一般動作条件、電源電圧立上り/立下り(2017年10月1日投稿済み
第2回:消費電流、低消費電力モードからの復帰時間、発振回路特性(← 今回の投稿)
第3回:フラッシュメモリ特性、ラッチアップ/EMS/EMI/ESD、汎用IO、リセット回路

記事タイトル:データシート数値の “裏の条件” とは

先入観を与える前に、記事を読んでください。消費電流、復帰時間、発振回路特性の留意点が記述されています。記事タイトルの “裏の条件” とは何でしょうか?

私は、データシート数値は、理想的動作環境のマイコン単体の最高数値、これが裏の条件と理解しています。
例えば、車の性能を燃費で比較する方は、普通の運転では絶対に達成できないカタログ燃費で車を評価します。マイコンも同じです。データシート数値は、このカタログ燃費相当だと思います。

カタログ燃費(出典:日本自動車工業会)
カタログ燃費(出典:日本自動車工業会)

実際は、この最高数値にマージンを入れて考える必要があります。どの程度のマージンを入れるかが問題で、安全側評価ならデューティ50%、つまり性能半分位が良いと思います。

但し、これもマイコン単体の話で、マイコン:MCUと電源、発信器や必須周辺回路を含めた制御系で考えると、どの程度マージンを入れるかは複雑怪奇になります。

そこで、ベンダ開発の評価ボードを手本とする考え、つまり、10月1日投稿で示した評価ボードをハードウエアテンプレートとして用いる考え方を、私は提案しています。

10月15日記事のように、評価ボードでもWi-Fi起動時電流に電源部品の余裕が(短時間ですが)少ないものもありますが、大方のベンダ評価ボードは、実用に耐えられる厳選部品が実装済みです。そこで、プロトタイピング時には、この評価ボードで制御系を作り、実装部品のマージンが十分かを評価するのです。

マージンが足りない場合には、同じ評価ボードへ、より高性能な部品を載せ替えるなどの対策が簡単にできます。制御される側もこのようなモジュールで開発しておけば、モジュール単位の設計、変更が可能です。

ソフトウエアも同様です。評価ボードを使えば、少なくとも最低限のソフト動作環境は整いますので、プロトタイピングのソフトをなるべく早く開発し、動作マージンを確認しておきましょう。

完成・出荷時には、ソフトへ様々な機能が後追加されるので、プロトタイピング時はハード同様デューティ50%、つまりROM/RAMの残りに50%位は残しておくと安心です。

ソフトウエアのプロトタイピング開発には、弊社マイコンテンプレートが最適です。

連載第2回範囲のデータシートの見かたまとめ

  • 水晶振動子のMCUクロック供給は、発振波形が正弦波に近いため貫通電流が増え消費電流大となる。
  • 未使用GPIO端子は、外来ノイズ対策に10k~100kプルアップorダウンし、電位固定が望ましい。
  • データシート低消費電力復帰時間がクロックサイクル規定の場合はそのまま使え、㎲規定の場合は参考値。
  • 外付け水晶振動子の利用時は、ベンダ推薦部品を使う。
  • 内蔵発振回路の利用時に、MCU温度変化やリフローによる機械的応力による周波数変動が無視できない場合は、周波数トリミングソフトを組込む。
  • PLL動作最低/最高周波数の設定ミスは多いが、マージンがありそのまま動作するので注意。

ESP-WROOM-32と評価ボードESP32-DevKitC

トランジスタ技術2017年11月号特集のWi-FiとBLE4.2両方搭載のIoTマイコン:ESP-WROOM-32(秋月電子550円)とその評価ボード:ESP32-DevKitC(秋月電子1480円)の記事をまとめます。

ESP32-DevKitC and ESPWROOM-32
ESP32-DevKitC and ESPWROOM-32

無線通信Wi-FiとBluetooth 4.2搭載で単価550円のマイコン

Wi-Fiは、802.11b/g/nの2.4GHzのみ、通信中の消費電流実測値は、起動時800mA、定常時200mAなのでマイコン電源にある程度の余裕が必要です。評価ボードは、1A出力のNCP1117(ONセミコンダクタ)を使っていますが、50%デューティで考えると、もう少し余裕が必要かもしれません。Bluetoothは、BLE4.2です。アンテナも内蔵です。

Tensilica製80MHz~240MHz動作32ビットディアル(!)コア、ROM: 448KB、RAM: 520KB、NXP)LPC8xxシリーズのスイッチマトリクス相当のGPIO_matrixを実装しており、デジタル周辺回路入出力を34本あるGPIOへ割り付け可能です。AD/DAなどのアナログ周辺回路は、ピン固定です。

製造は中国Espressif Systems社、従業員数約120人のファブレスメーカで、2016年米ガードナーが「IoT産業における最もクールな企業」に選出しました。Cortex-M系コアでありませんが、確かに機能/価格:コスパは凄いです。マイコン単体、評価ボードどちらも秋月電子からの入手性が良いので、人気が出るかもしれません。

プログラミングはArduino IDEとCLIのESP-IDFの2種

評価ボードESP32-DevKitCのプログラミングは、Arduino IDEのスケッチベースと、コマンド ライン インターフェース:CLIを使うEspressif Systems社提供ESP-IDF(IoT Development Framework)の2通りがあります。イーサネット、BLE4.2やI2Sを使う場合は、ESP-IDFでの開発が必要です。

評価ボードは、前述の1A電源とUSBシリアル変換デバイスのみ実装ですので、LEDやSWなどをブレッドボードなどで追加し、開発プログラムの動作確認をします。記事4章では、I2C接続で2種類の加速度センサー、1000円台で購入できるMMA8451Q(NXP)、または、20ビット高分解能のADXL355(アナデバ)を使い、簡易IoT地震計を開発しています。I2C経由の加速度データ取得方法は、他のマイコン制御時にも参考になります。

ディアルコア超高性能マイコンですので、評価ボードに1.8インチのSPIカラー液晶モジュール:M-Z18SPI-2PB(aitendo、950円)を接続し、動画を再生しているのが5章です。7章は、AD/DAを使って、今はやりのスマートスピーカーを開発しています。

11月号は、10ドルコンピュータのラズベリーパイZero Wを使った記事も記載されていますが、本ブログはマイコンが対象ですので割愛します。

マイコン開発のポイントは、ライブラリ活用/流用

コマンドラインインターフェース:CLIを使ったソフト開発は、慣れが必要です。しかし、これは慣れの問題です。例えArduino IDEでも、初めての人には戸惑う部分もあるでしょう。Arduino IDEが隠して(見えなくして)いる部分が他に比べて多いので、比較的簡単に慣れるようになるだけの話です。

慣れた後はどちらの開発環境も、豊富なライブラリや、サンプル・プログラム、サンプルソフトを使ってソフト開発をします。個人が1からソフトを全部開発するのではなく、既にあるソフト資産を活用/流用する、これが全てのマイコン共通の現代的なマイコンソフト開発方法です。

これはソフトウエアに限ったことではありません。ハードウエア開発でも、評価ボードやArduinoソケットは、1種のライブラリとも言えます。ソフト、ハードともに使える資産は活用し、これで得た(得をした)開発時間は、独自性を活かす部分に使います。

ライブラリ活用/流用には、ライブラリを使う側の骨格:スケルトンを理解していることが前提条件です。記事P48のArduinoスケッチの書き方で言えば、図Aのsetup()やloop()関数のようにマクロ的にソフト構造を捉えた後に、ミクロな問題へと詳細化することです。

骨格:スケルトンを理解していれば、後は必要な機能をライブラリの中から選び、必要に応じてライブラリを修正し、骨格に付け加えれば、動くモノが完成します(完成度で言えば65~79%:良判定)。

マイコン開発はこの動くものから、完成・出荷段階(完成度80%以上:優判定)にするのに結構な手間と時間が掛かります。

従って、ライブラリを上手く使ってなるべく早い段階で良段階へ到達し、ここからは腰を落ち着けて80%以上の完成度になるように開発時間の配分をしましょう。
また、骨格理解や習得にも十分な時間を割きましょう。

弊社マイコンテンプレートは、様々なサンプルソフトを流用/活用した早期ソフト完成、いわゆるプロトタイピング開発に役立ちます。是非ご活用ください。

マイコンデータシートの見かた(その1)

現役STマイクロエレクトロニクスの「メーカエンジニアの立場」から記載された、ユーザ質問の多かった事項を中心にSTM32マイコンデータシートの見かたを解説する記事(連載1回目)を紹介します。

全3回の連載記事内容

予定されている第2回、第3回の解説内容が下記です。

第1回:凡例、絶対最大定格、一般動作条件、電源電圧立上り/立下り(← 今回の記事)
第2回:消費電流、低消費電力モードからの復帰時間、発振回路特性
第3回:フラッシュメモリ特性、ラッチアップ/EMS/EMI/ESD、汎用IO、リセット回路

今回の第1回を読むと、データシートの読み誤り易いポイントが説明されており、興味深いです。ハードウエアに興味がある、または、ハードも自分で設計するソフトウエア開発者は、読むことをお勧めします。

マイコンハード開発を数回経験すると、おおよその感触とデータシートの見る箇所が解ってきます。私も新人の頃は、網羅されたデータシートの、”どこの何を見れば良いかが判らず”困惑したものでした。

ハードウエアテンプレートは評価ボードがお勧め

私は、使用するマイコンの評価ボードを、ハードウエアのテンプレートとして使います。
例えば、STM32F072RB(=NUCLEO STM32F072RB)は、配線パターン(=gerber files)や使用部品リスト(=BOM)もサイトに公開されています。

これらのデータは、「短納期を要求される開発者の立場」なら、網羅的記載のデータシートよりも、効率よく回路設計をする手助けとなります。

データシートを見ることは、間違いなく重要です。

しかし、具体的にハードウエア設計をする時は、評価ボードのような既に設計済みの「ブツ」を参考にしながら、なぜこの部分はこうなっているのか?などの疑問を持ってデータシートを見る方が、効率が良く、しかも、分厚いデータシートのポイントを理解するのにも役立ちます。

アナログとデジタル電源の1点接地や、パスコン実装位置などは、文字で注意書きをいくらされても解り難くいものです。この点、実物は、文字に勝ります。

ソフトウエアテンプレートはマイコンテンプレートがお勧め

ソフトウエア開発は、マイコンテンプレートの宣伝をするな!と思われた、勘のいい読者の方は、コチラのサイトを参照してください。

サンプルソフトは、”メーカ立場での提供ブツですが、”開発者の立場からの実物として、STM32ファミリ、サイプレスPSoC、NXPのLPC8xx/LPC111x/Kinetis、ルネサスRL78/G1xの各種マイコンテンプレートを、ソフトウエア開発者様向けに提供中です。

連載第1回範囲のデータシートの見かたまとめ

第1回記事の範囲で、マイコンハード開発ノウハウをまとめると、以下になります。

  • マイコン外部接続ハード駆動能力は、I2C、USART、数点のLED直接駆動可能端子を除いては極小で基本的には直接駆動はしない。
  • 外部接続ハードの駆動と接続方法は、Baseboard(mbed – Xpresso Baseboard)や、各種Arduinoシールドを参考にする。
  • マイコン電源は、評価ボードのパターン、実装部品も含めてまねる。
  • 開発製品版の未使用(空き)端子処理は悩ましいが、ソフトはデフォルト、ハードはソルダーブリッジ経由で接地。

私は、今後の連載を読んで、未使用(空き)端子処理の見識などを深めたいと思っています。

半導体メーカM&Aと技術シナジー

本ブログでも関心があったFreescaleをNXPが買収し、そのNXPをQualcommが買収するという半導体メーカのM&Aは、終息に向かうようです。Runesasもアナログ、ミックスドシグナル半導体を得意とするIntersil(インターシル)の買収を完了しました。
※QualcommのNXP買収は、未だに決着がついていない買収案件だそうです。

一方で、AtmelとMicrochipに見る、半導体企業M&Aの難しさという記事を読むと、M&A完了後も企業の技術的シナジーが生まれるには時間がかかりそうです。

以前記載しましたが、NXP)LPC8xxのLPCOpenライブラリv3.01の状況を観ると、この記事内容は頷けるものがあります。MCU部門だけを比較すると、実はNXPよりもFreescaleの方が規模は大きく、また、Cortex-M0/M0+ MCUで比較すると、2社で重複する製品があるので、既成製品(LPC8xx、LPC111xやKinetisシリーズ)の将来は、明確には判らないのが現状だと思います。

統合開発環境:IDEは、旧FreescaleのKinetis Design Studio+Processor Expertと旧NXPのLPCXpresso+LPCOpenライブラリが、新NXPではMCUXpresso+SDK+Config Toolsとなり、一見、新しい開発環境に統合されたように見えます。

しかし、買収完了後の新発売MCU開発以外は、個人的には旧開発環境の方がどちらの既成製品開発にも適している気がします。

9月28日現在、LPC8xx用のLPCOpenライブラリv3.01は、残念ながら更新されていません

BLEとThreadソフト開発者必見動画

IoT通信規格のBLE 4.2とThread(802.15.4)両方をサポートするNXP)Kinetis KW41Z搭載の評価ボードを使ったBEL4.2とThreadメッシュ接続の開発Video(タイトルが以下Lesson 1~10)を紹介します。

Kinetis KW41Z Video Lesson Contents
Kinetis KW41Z Video Lesson Contents

BLEやThreadソフト開発者必見のLessons

内容、質ともに優れたVideoでMCUXpressoとSDKの使い方も良く解ります。特に興味深い内容とその出所が以下です。

  1. Bluetooth ClassicとBluetooth Low Energyの本質的な違い(Lesson 3、3分ごろ)
  2. Bluetooth ClassicとBLE間を接続するBluetooth Smart Ready(Lesson 3、6分ごろ)
  3. BLE接続の具体例(Lesson 3、19分ごろ)
  4. BLE/Thread接続に必要な知識(Lesson 3, 6)
  5. Threadが生まれた背景(Lesson 6、2分ごろ)
  6. Cortex-M0+/48MHz、512MB ROM、128KB RAM、FreeRTOSで実現するBLE/Thread IoT端末(Lesson  5, 9, 10)

BLEやThreadに関する情報は多くありますが、ソフト開発者の立場からは、本Lessonsが最も要領よくポイントをまとめています。

Kinetis KW41Z

KINETIS KW MCU FAMILY BLOCK DIAGRAM
KINETIS KW MCU FAMILY BLOCK DIAGRAM

Kinetis KW41Zの評価ボードは、以下の2種(Digi-Key価格)です。

低価格で有名なFRDM評価ボードですが、さすがに両プロトコル対応のKW41Z搭載ボードとなると$100以上します。Videoで使っているR41Z-EVALは、約$60と安く入手できます。但し、Lesson 10のBLEとThreadメッシュ切り替え接続の動作確認を行うには、同時に3台の評価ボードが必要です。

ThreadのみサポートのKW21、BLEのみのKW31もありますが、無線規格が乱立していて、どれが本命かを見極めるのが困難な現状では、両プロトコルサポートのKW41が安全でしょう。

API for IoT

MCUXpressoとSDKを使って、BLEまたはThread通信機能を持つIoT端末を開発する際に、プロトコルのどの部分の変更/修正が必要で、それがソース上のどこにあるか、全体の開発手順などはVideoを観ると良く解ります。

BLE Protocol Stack
BLE Protocol Stack

また、LEDなどのGPIO制御を行うSDKデモソフトとIoT通信の並列処理は、FreeRTOSを使って実現していることも解ります。簡単なIoT端末なら、このデモソフトに、外部センサ値をAD変換し、その変換データをクラウドのサーバーへIoT経由で送信する機能を追加しさえすれば、直ぐに開発できそうです。
※簡単なIoT端末は後述

BLEやThreadは、IoT通信の有力な候補です。しかし、IoTの通信プロトコルが何になるにせよ、IoT通信向けのAPIが決まれば、あまり気にする必要がない、というのが全Lessonを通しての私の感想です。

その理由は、デモソフト実装済みのGPIO制御はそのまま使えますし、FreeRTOSを使っていますので、外部センサ入力を定期的にADCする処理(ADCスレッド)と、ADC変換データをIoT通信APIへ出力する処理(IoT出力スレッド)の2処理を追加開発すれば良いからです。

ADCスレッドは、IoT通信規格には無関係です。一方、IoT出力スレッドは、Uart出力と同様のIoT APIが使える(用意される)と思います。NXP)LPC8xxマイコンのUart APIの例で示すと、Chip_UART_SendBlocking()が、Chip_IoT_SendBlocking()に代わるイメージです。IoT API利用条件が初期設定で満たされれば、ユーザは、通信速度や、通信プロトコルを意識せずにIoT通信を使えるようになると思います。

*  *  *

IoT通信規格が不確定な状況で、少しでも早くIoTやRTOSに慣れるには、R41Z-EVALは良い評価ボードです。また、FreeRTOSを使えば、48MHz動作のCortex-M0+、512MB ROM、128KB RAMで簡単なIoT端末が開発できそうな見通しもこれらLessonは、与えてくれました。是非、ご自分でご覧になってください。

簡単なIoT端末のイメージ

データ入力とGPIO出力を行うMCU端末で、IoT無線通信機能を備える。通信セキュリティを確保できるAES-128などの機能も備え、対象機器から取得したデータを安全にクラウド内のサーバーへ送信する。
サーバーは、対象機器データを人工知能を使って予測分析し、結果を端末へ送信する。
端末は、受信結果を基にLEDなどのGPIO出力を行い、オペレータまたはロボットが対象機器メンテナンス作業の手助けをする。