組み込み研修向けマイコンボード
ベルーフの研修の中に組み込みC/C++研修があります。この研修は実際のマイコンボード上にLEDや温度センサーのような入出力機器を接続して、CやC++言語を使ってこれらの機器を制御するアプリケーション製作を学ぶ研修です。マイコンボードにはSTマイクロシステムのNucleo-F410というボードを使用しています。このボードは電子工作ではメジャーなArduino様式で作られたボードです。シールドと呼ばれる子ボードを使って様々な入出力機器を接続することができます。この研修ではその1つのマルチファンクションボードを使用しています。
今回は、このような組み込みアプリケーションを学ぶのに有用なマイコンボードやモジュールを整理してその特徴を紹介します。
組み込みアプリケーションを製作する言語として、以前はメモリ容量やCPUスペックの低いマイコンでも動くC言語が主流でしたが、近年、高性能なマイコンが低価格で入手できるようになったため、C++やPythonのような高機能な言語で組み込みアプリケーションを作ることが可能となってきています。さらに、OSを利用したアプリケーションも多く作られるようになっています。また、初心者の教育用にスクラッチのようなタイルを使ったプログラミングツールでのアプリケーション作りも可能となってきています。
スクラッチ
マイコンボード様々なものが市販されていますが、ここでは大きく分けて下記の4つのタイプに分類しました。
- Arduino系
- M5Stack系
- ESP32系
- RaspberryPi Pico系
Arduino系
ベルーフの研修でも使用しているArduino様式のマイコンボードです。イタリアのxxxxが作ったArduinoを起源として初心者が、はんだ付けなどできなくても組み込み機器を作れるように考えられたマイコンボードです。Arduino Unoが原型ですが、現在はそれを小型化した。Arduino MicroやArduino Nanoのようにブレッドボード上に実装して使用するものもあります。最新はArduino Uno R4で日本のルネサステクノロジーのマイコンが使われています。またWiFiやBlutoothに接続できるようにネットワーク用のチップを搭載したものもあります。また、セカンドーソースのボードも多数出回っており、非常に安価に入手することができます。
開発環境はArduino IDEで動作するArduino言語です。Arduino言語はC言語にGPIOやAD変換、シリアル通信などの組み込みで良く使われるハードウェアを手軽に使えるようにするためのライブラリを追加したものです。これによって面倒なハードウェアの仕組みを知らなくても簡単にアプリケーションを製作することができるようになっています。
Arduino IDE
M5Stack系
M5Stack社が開発したディスプレイや加速度センサ、ブザー,SDカードソケット等、組み込みで良く使われるIO機器を標準搭載し、またバッテリも組み込んでスタンドアロン使用できるように約5cm×5cmの正方形のケースに収めたモジュールです。使用しているマイコンはEspressif SystemsのESP32マイコンです。WiFiやBluetoothも使えるので、IOT機器もこれ単体で製作することができます。またM5stampのようにボード単体のシリーズもあり安価にM5stackのアプリケーションを作ることができます。
アプリケーションの開発環境は、Arduino IDEとUIFlowが使用できます。UI FlowはM5Stack社が開発したブロックを組み合わせることでプログラミングできる開発環境でC言語でのコーディングに慣れていない人でも、プログラミングを始めることができます。UI Flowのコーディング結果はMicro Pythonのソースに変換されて実行されます。もちろんMicro Pythonで直接コーディングすることも可能です。
UIFlow
ESP32系
ESP32マイコンは、M5Stack系でも紹介したマイコンですが、WiFiやBluetooth搭載、240MHzディアルCPU、RAM 520KB ROM 4MBのマイコンモジュールを500円以下の価格で提供された画期的なマイコンです。大容量のRAMを生かしてPython等のインタプリタを動かすにも最適で、広いプログラミングエリアやデータエリアを確保することができます。もちろんC言語やC++言語でアプリケーションも作ることも可能です。Free RTOSのようなマイコン専用のOSを使い高度なマルチタスクアプリケーションを製作することもできます。
Espressif Systemsから提供されているESP32-DevkitCが有名ですが、Arduino様式のボードに組み込んだESP-Duinoのようなマイコンボードもあり、多くのメーカが互換品や独自のマイコンボードを提供しています。
私も10年程前に電子工作雑誌の付録用にこのマイコンを使ったマイコンボードを設計したことがあります。
アプリケーションの開発環境は、Espressif Systemsが提供しているESP-IDFがありますが、ArduinoIDEやMicropythonでもアプリケーション製作が可能です。
RaspberryPi Pico系
RaspberryPiは、LinuxベースのOSが搭載出来て、このOS上でLinux上で開発されたアプリケーションと連携して組み込み機器の制御ができるようにした。イギリスのRaspberry Pi 財団とRaspberry Pi Ltdが開発したシングルボードコンピューの部類に入るマイコンボードです、ここで紹介するRaspberryPi Picoは、RP2040/RP2050マイコンを使ったRaspberryPiの下位機種の位置づけですが、LinuxのようなOSを動かすことはできません。
RaspberryPi Pico2に搭載されているRP2050 2つのディアルCPU RAM 520KB ROM 4MBのマイコンです。PIO(プログラマブルIO)と呼ばれる高速で動作する4つのRISCプロセッサを搭載しており、マイコン内のハードウェアに無い(SDIO、I2S、DVI等)機能をプログラミングで追加することができます。
また、WiFiやBluetoothを接続するためのネットワークチップを追加したモデルも提供されています。
アプリケーションの開発環境は、ESP32と同様にArduinoIDEとMicroPythonでアプリケーション製作が可能です。
RaspberryPi Picoは、あまり特徴のないボードでしたがネットワークチップが搭載され、1000円前半の価格で販売されていることから広く普及するようになりました。ベルーフの組み込み研修に今後ネットワークアプリケーション作りを追加するときはぜひ使ってみたいと考えています。