この記事ではマイコン(マイクロコントローラ)を使用して、IoT環境を構築してみたい、マイコンについて知りたい方向けに、マイコンとはどういうものなのか、どこで使われるのか、どういうことができるかについて簡単に紹介します。
目次
マイコン(マイクロコントローラ)とは?
そもそもマイコン(マイクロコントローラ)とは、IC(集積回路)の一種であり、いわばプログラム可能な小型コンピュータです。ただ、小型コンピュータといってもWindowsやMacといったOSのように、画面として表示できるものではなく、作成したプログラムなどを送ることであらゆる機能を実現できる仕組みです。独自プログラムを作成しマイコンに組み込んで利用したり、そのマイコンの機能を活用したりと、様々な利用方法が存在します。何よりPCより安価な価格帯で組み込み開発ができるという事が、個人的には便利だと思っています。
・マイコン(マイクロコントローラ)の特徴
主な特徴としては次の通りです。
統合性 | CPU、メモリ、入出力ポート、タイマー機能、ADC/DAC変換器など多くの機能が1つのICチップに集積されている |
プログラム可能 | プログラミングにより様々な動作をさせることができる |
リアルタイム制御 | イベントやセンサーからの入力を即座に処理し、制御や応答を行うことができる |
低コスト、低消費電力 | 低電力で動作するため、バッテリー駆動の機器や省電力が要求されるデバイスに適している |
広範な応用可能 | 自動車、家電製品、医療機器、センサー、ロボット、IoTデバイスなど様々な分野で使用される |
マイコンはリアルタイム制御が可能で、電力を取らず独自のプログラムを送りシステムを構築することができるといった、便利な小型コンピュータというような役割をしてくれます。コストを抑え、ある機能に特化して利用したい場合など、様々な分野で利用されることが多いです。主に組み込み系の開発などによく利用されます。
・マイコン(マイクロコントローラ)の課題点
主な課題としては次の通りです。
リソースの制約 | 一般的にリソース(RAM,フラッシュメモリ,処理能力)が制限されている為、データ数が多い等の場合は制限がかかる |
演算能力の限界 | リアルタイム処理や重い処理を行う場合に高速な計算が要求されると処理能力が制限される可能性がある |
外部インタフェース連携 | マイコンの種類によってはEthernetに対応していない場合など外部インタフェースの制限がある |
拡張性の限界 | 特定のボードやチップに依存することが多く拡張する場合にハードウェアの変更が必要になる場合がある |
電源管理課題 | バッテリー駆動のアプリなどを開発する場合に電源管理が課題となってくる |
これらを理解したうえで、利用方法を考えることが大切です。また、マイクロコントローラの種類によって拡張性やインタフェース、演算能力等が変わるため、利用するマイクロコントローラをよく調べる必要があります。現在では安価で利用できるArduinoやESP32というマイコンが存在するため、とりあえずお試しで利用したい場合などは、安価なマイクロコントローラを触ってみることをおすすめします。
・マイコン(マイクロコントローラ)の活用事例
特徴でも挙げたように、マイコンの活用事例は以下のようなものがあります。
家電製品制御 | 家電製品などのタイマー機能、温度制御、センサーの読み取りと応答など様々な機能を実現する |
自動車組込システム | エンジン、ブレーキ制御といった安全性や快適性を向上させるためのものに利用される |
医療機器 | 心拍モニター、貯音波診断装置など画像処理やリアルタイム処理などに利用される |
産業機器 | ロボットアームなど、精密な動作制御、センサーなどを利用したモニタリングなどに利用される |
IoTデバイス | スマートホームなど遠隔操作で制御させたりすることに利用される |
ここに挙げたもの以外にも様々な分野で使用されています。最近ではArduinoや、ESP32と呼ばれる、安価で買うことができるマイコンが増えています。これらのマイコンを使用することで、様々な組み込みシステムの構築が可能となります。次は安価で買えるマイコンについて、比較しながら紹介します。
・安価なマイコン(マイクロコントローラ)で代表的なもの
安価なマイコン、個人でも利用しやすいようなマイクロコントローラについては以下の通りです。
Arduino | 初心者向けの設計、Arduino UnoやMega,Nanoなど様々なボードが存在する。シールドと呼ばれる拡張ボードを使って機能を追加することができる。サポートするプログラミング言語はC/C++で、ネット上でも多くのチュートリアルやライブラリが存在するため初心者からでも入りやすい。開発環境はArduino IDEを使用する。
ただ、一般的なボードが16MHzのため高度処理や通信には不向き。 |
ESP32 | デュアルコアプロセッサ(160MHz~240MHz)を搭載し、高速処理が可能、WiFiとBluetoothが搭載されている為無線通信を使いIoT開発でも利用可能、フラッシュメモリとSRAMが大容量という特徴がある。サポートするプログラミング言語はArduino同様C/C++。
ESP32は複数の開発環境に対応(Arduino IDE含め)可能だが、全機能を発揮させるためにはESP IDFを利用することがおすすめ。 ただArduinoと比べネットの記事や資料が少ない等のデメリットも存在する。 |
ここでは特に知名度が高い2つの安価なマイクロコントローラについて軽くどういうものかを記述してみました。ArduinoやESP32以外にも新しいマイクロコントローラや、商用目的の本格的なマイクロコントローラも存在します。目的に合わせ、マイクロコントローラそれぞれのメリットデメリットを調べつつ、利用することをおすすめします。
まとめ
ここまで大まかにマイコンとは何か、マイコンの特徴・課題・活用事例等々、マイクロコントローラに関する内容を簡易的に紹介しました。マイクロコントローラは医療機器や、自動車など幅広い分野で利用でき、低コストでの機能実装が可能です。次回はそのマイコンの中で安価で利用でき、拡張性や機能が豊富なESP32について詳しく紹介します。その際Arduinoについて記述しませんが、ArduinoについてはESP32よりもネットや参考書などでも情報が多く記述されているため、各々調べて頂ければと思います。