![見出し画像](https://assets.st-note.com/production/uploads/images/137417513/rectangle_large_type_2_01eed155755fd952136f13dadb7a8244.png?width=800)
【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. マイコンをどう選ぶか?
では、マイコンの特徴を比較表にして整理します。まずは、「開発言語と用途」という評価軸で比較しました。下図をご覧ください。
![](https://assets.st-note.com/img/1710662634426-lun1qb5tEa.jpg?width=800)
開発言語に関しては、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データを取得したい場合は、マイコンを選ぶ必要があります。
次に、「通信モジュール」という評価軸で比較します。下図をご覧ください。
![](https://assets.st-note.com/img/1710663281928-RnmkeJm2Cj.jpg?width=800)
*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デバイスにおけるマイコンをどのように選べば良いのかを、開発言語/用途/通信モジュールを評価軸とし、深堀りしました。マイコン選びの参考に頂けばと思います。
次の記事では、選んだマイコンを如何に長期稼働させるか、についてまとめます。
この記事が気に入ったらサポートをしてみませんか?