見出し画像

【IoT基礎】#05 「マイコン」をどう選ぶか?

 自作IoTシステムにおけるマイコンには、どのような種類があり、どのように選べばよいのか、その指針をまとめます。


背景と目的

 IoT基礎シリーズでは、IoTデバイスを自作する上で必要となる知識の全体像を知るとともに、自作する上で必要となる各要素に関し、どのような選択肢があり、どのように選べばいいのかを、私自身の経験をもとに整理しています。
これまで、
#00 はじめに
#01 IoTシステムの全体構成を知る
#02 「電源」をどう選ぶか?
#03 「電池」をどう選ぶか?
#04 「通信」をどうえらぶか?
という記事を書きました。本記事では、IoTデバイスの心臓部であるマイコンについて考えます。マイコンの選択にあたり、通信と通信モジュールのことも考慮する必要があります。本記事では、マイコンにはどのような選択肢があり、どのように選べばよいのか整理します。

詳細

1. マイコンにはどのような選択肢があるのか?

IoT系のマイコンとして主に使用されているのは、
・Arduino系
・M5Stack系
・Raspberry Pi系
・Raspberry Pi Pico系
・SPRESENSE系
でしょうか。

あえて「系」という言葉を用いた理由は、数多くのシリーズやバージョンがあるからです。

乱暴にも、ざっくりと特徴をまとめると、
・Arduino系
歴史があり、ライブラリ/情報/拡張ボード等が豊富。使いやすい。

・M5Stack系
画面/Grove端子が搭載されている。センサーが豊富で非常に使いやすい。

・Raspberry Pi系
LinuxベースのOSを搭載。高い処理能力を持ち、デスクトップアプリケーションからサーバー、ネットワークデバイスまで幅広く利用できる。

・Raspberry Pi Pico系
RP2040チップを搭載し、低消費電力でありながら高い性能を持つ。安価。

・SPRESENSE系
ソニーが開発した高性能マイクロコントローラボード。GPS機能を内蔵し、高解像度オーディオ処理と低消費電力が特徴。

もちろんこれ以外にも選択肢がありますし、新しいマイコンも出てきているので、適宜調べて頂ければと思います。

2. マイコンをどう選ぶか?

では、マイコンの特徴を比較表にして整理します。まずは、「開発言語と用途」という評価軸で比較しました。下図をご覧ください。

開発言語に関しては、C/C++と、MicroPythonが主に用いられています。C/C++で開発したいのであれば、Arduino系、M5Stack系、SPRESENSE系。MicroPythonで開発したいのであれば、Raspberry Pi系、Raspberry Pi Pico系が良いと思います。私は大学時代にC言語を学んだこともあり、C言語で開発できるマイコンを好んで使っています。

電池駆動型IoTデバイスであれば、Arduino系、Raspberry Pi Pico系、SPRESENSE系が良いかもしれません。

UART接続やI2C接続のセンサーを選択するのであればどのマイコンでも可能です。一方、カメラ画像やGPSデータを取得したい場合は、マイコンを選ぶ必要があります。


次に、「通信モジュール」という評価軸で比較します。下図をご覧ください。

*1 M5Stack用 3G 拡張ボード
*2 ラズベリーパイ用4G(LTE)通信モジュール
*2 Soracom Onyx – LTE™ USB ドングル
*3 LTE-M Shield for Arduino
*4 SIM7080G CAT-M/NB-IoT Unit
*5 SPRESENSEメインボード + LTE拡張ボード スターターキット
*6 Sigfox Shield for Arduino
*7 LoRa通信モジュール(E220-900T22S)用評価ボード
*8 M5Stack用LoRaユニット JPバージョン アンテナ付(E220-900T22S)
*9 SPRESENSE用 LoRa Add-onボード E220-900T22S(JP)搭載

*1〜*9のように、汎用的なモジュールが売られているものを◎と表現しました。

私は、電池駆動型IoTデバイスにおいては、Sigfoxを好んでいますが、Sigfoxを使いたい場合はArduinoが最も使いやすいと感じています。
また、原則Sigfoxとするものの、Sigfoxの電波環境が悪い場所ではLTE-Mにするという開発の場合、Sigfox/LTE-Mとも通信モジュールが売られているという点でもArduinoが魅力的です。

カメラ画像を送信するようなIoTデバイスの場合、Raspberry Pi系やM5Stack系が良いかもしれません。

LoRaに関しては、記事執筆時点で積極的に商品展開がなされており、上述の全てのマイコンで使用可能です。

Wi-Fi/BLEを用いたデバイス間通信や、Wi-Fi環境下での通信をしたい場合は、Arduino系以外がおすすめです。Arduino系の場合は、Arduino UNO R4 WiFiであればWi-Fi/BLE可ですが、値段的にも別のマイコンが良いかもしれません。

このように、開発言語や用途に加え、入手性の高い通信モジュールを考慮市た上で、「マイコン」を選ぶとスムーズに選択できます。

まとめと今後の課題

IoTデバイスにおけるマイコンをどのように選べば良いのかを、開発言語/用途/通信モジュールを評価軸とし、深堀りしました。マイコン選びの参考に頂けばと思います。

次の記事では、選んだマイコンを如何に長期稼働させるか、についてまとめます。

この記事が気に入ったらサポートをしてみませんか?