トランジスタ技術2017年11月号特集のWi-FiとBLE4.2両方搭載のIoTマイコン:ESP-WROOM-32(秋月電子550円)とその評価ボード:ESP32-DevKitC(秋月電子1480円)の記事をまとめます。
無線通信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%以上の完成度になるように開発時間の配分をしましょう。
また、骨格理解や習得にも十分な時間を割きましょう。
弊社マイコンテンプレートは、様々なサンプルソフトを流用/活用した早期ソフト完成、いわゆるプロトタイピング開発に役立ちます。是非ご活用ください。