マイコンボード利用のおすすめ


プログラムの授業では,コマンドライン上で動作するソフトウェアの開発しかしていないので,プログラミングにより何かを動作させるという印象が薄いかも知れません.
シミュレーションにより,精緻な解析を行うことは可能であるものの,グラフを見ても現象を実感しにくい場合もあり,また,実機ならではの制約が反映できていないこともあるため,やはり実物を動かしたくなるのではないでしょうか.
マイコンを使って何かを動かせば,コーディングの効果を実感できるというメリットがあります.

昔話

35年くらい前でしたら,自作のインターフェイスボードを製作してPCに装着して制御したり,その後も高価なインターフェイスBOXとサーボドライバと通信して動作させたりするような時代が続きましたが,25年くらい前にH8マイコンが入手できるようになってから様子が変わってきました.その後,安価なPIC,AVRなどでも制御ボードを作れるようになりましたが,頻繁にプログラムを書き換えたりするには適しておらず,PC上のエミュレータで充分検討してから,専用のハードウェアを要するプログラムの書き込みをする必要があるなど,初学者には決して簡単とは言いがたい開発環境でした.15年前からmbedやArduinoのような手軽で高性能なマイコンが使えるようになってきたのです.安価であり,プログラム開発環境のセットアップも簡単なので,画期的でした.

マイコンの種類

年配者らしい表現となりますが,マイコン制御,メカトロニクスを愉しむには,いい時代になったということは間違いありません.
10年前くらいから小さなPCと言えるRasberry Piの初代が使えるようになりました.セットアップが大変で,簡単に使えるとは言いがたい面あるのですが,現在はその後継のRasberry Pi 3(4)というのもあります.
できることは多いのですが,やはり,初めのセットアップがなかなか大変ですので,マイコンから始める方が敷居が低いかも知れません.それでも,次のステップとしては,ぜひ使いこなせればいいものであることは間違いありません.

どのマイコンを選べばいいのか

Arduinoとmbedの仕様を以下に書きます.

Arduino Uno R3 NXP LPC1768 MCU NXP LPC11U24 MCU
CPU ATmega328P 8bit 16MHz ARM Corrtex M3 Core 32bit 96MHz ARM Corrtex M0 Core 32bit 48MHz
RAM 2kB 32kB 8kB
FLASH 32kB 512kB 32kB
EPROM 1kB
I/O GPIO 20ch(内PWMout 6ch, UART, SPIに割り当て可能)
ADC 6ch(10bit)
I2C
Ethernet(独立)
USB Host/Device(独立)
SPI x 2
I2C x 2
UART x 3
CAN
PWM x 6
ADC x 6
GPIO(残り,上記を使わなければ26まで)
USB Device(独立)
SPI x 2
I2C
UART
ADC x 6
GPIO(残り,上記を使わなければ30まで)
解説 小規模なシステム向きですが,ソフトウェア開発が簡単なので,実験して試しながら開発ができるのが魅力です.確実にデータを保持しておけるEPROMを備えているので,起動・停止を繰り返すようなものであっても,停止前の状態から再度動作を始めるような運用も可能です.
プログラム開発は簡素化されており楽なのですが,独自のものであり,授業でやった基礎をそのまま使うには,はじめだけ頭を切り替える必要があります.
マイコンとしてはメモリも大きく,インターフェイスも多種,CPUも十分な能力であることが魅力です.既存の装置を有線通信でつないで制御するような用途にも使えますし,リアルタイム性を持ったOSを実装することもできるので,所謂IoT化された装置・システムにすることも可能です.
スペックを見ると左記の下位機種に見えますが違います.処理能力は十分であり,PWM出力は8chも使え,汎用インターフェイスも多く,省電力,あるいはサスペンドするような機能も持っているため,単独で動かすような装置の高機能化に役立てられると思います.

互換品について
オープンハードウェアなので,他社から同様のマイコンボードが多種類発売されています.
お値段が安いので,検討対象になると思います.
Wi-Fiや他のI/Oが実装されていたり,チャンネル数が多く実装されているもの,より小型など特色を持たせた製品もあります.
プロフラム開発環境の中にターゲット(ボードの種類)に表示されていれば,問題なく選ぶことができます.
しかしながら,純正品では使えるピンが認識されなかったりするなど,ある意味で玄人向けの製品も少なからずあるので,値段の安さと引き換えに,原因究明のための工数が掛かる危険性もあるのです.

これらのマイコンでできること

ADCが6chあって,PWMが6chが使えるから,これだけでかなりの自由度を持った装置を動かせます.
I2C通信ができるので高機能なセンサモジュールの信号を取得して,自動的に動かすような制御も可能です.
シリアル通信ができるので,外部に通信モジュールを接続して,遠隔で動作させることも可能です.そうすれはより高性能なPCで処理した情報(画像処理などの認識・知能)に基づいた制御もできます.周辺のセンサや通信モジュールも安くなっているので,思いのままのシステムを構築できるのです.

機械工学実験A(1)でも,DCモータのPID制御と応答の記録に使ったり,倒立振子車輌の制御に使ったり,遠隔操作性を確かめる模型車輛に使ったりと,マイコンを実は使っているのです.

どれくらいでシステムが組めるのか

ここで,複数のモータを動かすメカトロ機器の値段を考えてみましょう.

ケース1 RCサーボ6つを動かす.
マイコン本体(3500円〜7500円),RCサーボ(500円〜2000円),基板やブレッドボード(1000円),外部電源アダプタ(1000円),メカトロ模型用の材料(1000〜3000円)あれば,ちょっとしたロボットアームを作って動かすことが可能です.
マイコン本体で直接PWM信号を生成し,各サーボに指令を送ります.

ケース2 RCサーボ12個を動かす.
I2C通信で動作するインターフェイス基板(2500円)とRCサーボを追加すれば,小型の4足歩行ロボットを作ることができます.
マイコンでI2C通信を介してインターフェイス基板に繋げられた各サーボに指令を送ります.

ケース3 DCモータをモータドライバで動かす.
モータドライバIC(回転方向のロジックと指令電圧)(100〜500円)やモータドライバ(回転方向のロジックと指令電圧,あるいは回転方向のロジックとPWM信号)(1000円〜5000円)を組み合わせて6chくらいは動作させることが可能です.アナログポートを使って電流フィードバックを行うことも可能です.

ケース4 ブラシレスモータを動かす.
FETと電流センサがあれば原理的にはマイコンで直接回転させることも可能ですが,ESC(Electric Speed Controller)(1500円〜10000円)を使えばRCサーボ同様の速度制御が可能です.

いかがでしょうか.ちょっとした実験用の装置であれば10000円少々で複数軸の装置を開発することが可能です.
さらにどのように動かすかも考えてみましょう.

ケースA マイコン本体にシーケンスデータを入れておく
シンプルにはマイコンに動作のシーケンスを入れておくことで単体で動作します.スイッチやセンサの値を割り込ませて動作が変わるようにするのも面白いですね.

ケースB USBケーブルでPCにつないでシリアル通信
シリアル通信はこのような制御システムの基本とも言えるもので,Tera termのようなターミナルソフトがあればコマンドラインで文字列を送ることでコマンドを送ったり,現在の状態をモニタすることができます.PCソフトウェアを開発できれば,PCのソフトウェアで制御することが可能となります.
RS-232Cという昔からある規格を使うことも可能です.
今もハンドヘルドPCにはRS-232Cポートを持ったものが一部にあります.

ケースC アナログ電圧を入力
これらのマイコンはADCが6chあるので,ポテンショメータ(ボリウム,スライダ)で電圧を生成すれば操作による制御は簡単に実行できます.

ケースD Bluetoothなどの通信
Bluetoothのモジュールは3000円位で手に入りますので,スマホアプリを開発できる人は,スマホで制御なんてことができるかも知れません.

ケースE ラジコン装置やゲーム用コントローラ
ラジコンの受信器から出てくるPWM信号,ゲーム用のコントローラのプロトコルの仕様が分かればこれを使う手もあります.

いかがでしょうか.手軽とまでは言いませんが,昔々に比べるとはるかに簡単で安くシステムが組めるのです.

メモリの使われ方

PC上でのプログラム開発では,メモリの使われ方を意識することはあまりないと思います.計算処理能力も,メモリ能力も,メモリ容量も十分であるため,特段これを意識する必要はないからです.皆さんのPCにはどれ位のメモリ容量のものが付いているでしょうか.メインメモリが16GBと言えばとてつもない容量です.