ARMで電子工作しながら学習するのにお勧めNucleo開発ボード

STM32マイコン搭載のNucleoボードを教材に使用する理由

めかのとろ

マイコンの学習にあたって、一番の近道は自分で実際にマイコンを操作して、動作を確認しながら行うことです。当サイトで解説しているものと同じ動作環境であれば、特に初心者が最も苦労し、時間を要する実装への試行錯誤の行程を大幅に短縮できすぐにでも実機にて学習を開始できますので、マイコンの操作は最短期間で身につけることができるようになっています。

めかのとろ

当サイトで教材として使用するボードはARM Cortex-M3コアSTM32F103RBを搭載したNUCLEO-F103RBで行います。これ以外のSTM32シリーズのマイコンでもよいのですが、マイコンの仕様に合わせてカスタマイズする必要があり、初心者の場合はそこで挫折してしまいかねません。特に、マイコンを初めて扱うひとには当サイトで紹介する教材ボードを使用して学習することをお勧めします。教材のマイコン操作に慣れたころには、他の仕様のSTM32マイコンへは容易に移植できるスキルが身についているでしょう。

めかのとろ

NUCLEO-F103RB以外のSTM32マイコンが搭載されているボードでは、特にSTM32F1シリーズマイコンの場合は、互換性があるため同じSPL(Standard Peripheral Library)が使用でき、プロジェクト作成時に相当のMPUを選定して、SPL内で指定するシンボル動作クロックなどの設定をボードに合わせて多少カスタマイズする必要はありますが、比較的簡単に使用できるようになります。

めかのとろ

STM32マイコンでもSTM32F1シリーズでない場合、例えばCortex-M4コア搭載のSTM32F4シリーズではF4シリーズ専用SPLを使用する必要があり、当サイトで使用しているF1シリーズのSPLとは互換性がありませんので、そのままでは使用できません。STM32F1シリーズのマイコンで基本を理解したあとでは、移植もそんなに難しいものではありませんので使えるようになりますが、慣れないうちはF1シリーズで、特に当サイトと同じ環境のNUCLEO-F103RBを使用することをおすすめします。

めかのとろ

STM32F4などはCortex-M4を搭載していて、STM32F1(Cortex-M3)の上位機種となり、動作クロックも高く、浮動小数点演算機能をハードウェアで実現できたり高性能・高機能ではありますが、初心者の学習目的ではSTM32F1で過不足はまったくありません。また、STM32F4は当サイトで学習用として奨励しているSPLでも機能させることはできるのですが、性能・機能を活かすためにはできるだけ最新のライブラリであるHAL(Hardware Abstruction Layer)ライブラリを使うほうがよいため、F1シリーズで慣れてから上位機種を選ぶことをおすすめします。

めかのとろ

教材ボードにはターゲットマイコンとしてSTM32F103RBが搭載されています。外部クロック発振源として水晶振動子8MHzを搭載しており、システムクロックは72MHzとしています。通常のアプリケーションでは十分な処理速度です。

めかのとろ

このボードはSTエレクトロニクス社のNUCLEOシリーズでSTM32F1マイコンを搭載したものです。NUCLEOシリーズの特徴はARM Mbed開発環境に対応した基板であることに加えて、電子工作で大人気のArduino Uno Rev.3と互換のIOピンヘッダを搭載しているので電子工作でArduinono対応の数多い資産を利用することができます。

教材ボードNUCLEO-F103RB

マイコンボード仕様

めかのとろ

以下に、教材マイコンボードの仕様を示します。
プログラム転送や学習のためのマイコン動作をちょっとした軽負荷で動作確認するだけであればボードに内蔵のST-LINKへUSBケーブルを介して電源が供給されますので外付け電源は不要です。

搭載マイコン仕様
めかのとろ

ボード上にはヘッダピンとソケットがありますが、外側のヘッダピン(CN7/CN10)がSTMマイコン直結のMorphoコネクタとよばれるものです。内側のソケット(CN8/CN9)はArduinoに互換なのでこのボード自体をArduinoの互換機として開発もできるし、Arduino用の外付けシールドなどを活用することもできます。当サイトではArduinoの開発のことは割愛します。

NUCLEO-F103RBレイアウト
めかのとろ

下記にSTM32F103RBのピン番号をそれに対応する機能をまとめました。このピン番号はマイコン自体のものであってNulecoのMorphoコネクタの番号ではありませんのでご注意ください。例えば、CN7の1番目は”PC10″であるからSTM32F103RBのピン51に直結しています。

めかのとろ

下記のピン定義表からこのピンはデフォルトでは汎用入出力Cポートの10として入力か出力で使用することができますが、リマップするとUSART3_TXで使うこともできるようになります。

STM32F103RBピン定義表

ピンタイプ:I 入力 O 出力 I/O 入出力、S 供給電源
I/Oレベル:FT 5V耐圧 無記入 電源電圧

教材ボードを利用したプログラミング学習環境

めかのとろ

通常、C言語のプログラミングを学習するためには、
例えばWINDOS上で動作するC言語の開発環境として、Visual Studio等開発環境を構築してプログラミング学習を行います。

めかのとろ

プログラムの実行環境と開発環境が同じため、ちょっとした演算などの実行結果はprintf文を使ってモニター表示で確認しながら学習をおこなうことができます。

めかのとろ

この方法は学習目的がWindowsアプリの作成などはっきりとしている場合には有効で学習しながらスキルアップも図ることができるのですが、単にC言語学習だけが目的の場合では具体的なプログラミン学習のカリキュラムがないとモチベーションが持続しないかもしれません。

めかのとろ

この方法の利点はPCだけでC言語を学習できることですが、コンパイラがマイコン用ではありませんので、マイコン用C言語コンパイラに適用する場合は変数の型など仕様変更が必要です。

C言語総合開発環境
めかのとろ

これに対して、教材ボードを使用したC言語学習を行う方法もありますので紹介します。

めかのとろ

教材ボードにPCとシリアル通信できる環境を構成すると、実際のマイコン内で動作するC言語によるプログラムをPCにモニター表示できるようになるので実践的なC言語プログラミングとマイコン操作の学習を同時に行うことができるようになります。プログラム実行環境(マイコン)と異なるシステム(PC)で開発をおこなうクロス環境と呼ばれるものです。

めかのとろ

環境構築に必要なものはPCの他に、教材ボード(マイコン)、USB-UART変換ケーブルおよびST-Linkデバッガと呼ばれるものです。PCだけではC言語学習ができないのはデメリットですが、これからマイコンを始める人にとってはマイコンを直接操作するC言語の動作を確認しながら学習できるのは大きなメリットとなります。また、C言語のコンパイラがSTM32マイコン用のものですので、学習して慣れたものがそのまま実践で使用できるのも大きなメリットです。

めかのとろ

STM32マイコン用プログラムを作成する総合開発環境STM32CubeIDEとST-Linkデバッガの組み合わせで、マイコンと通信してプログラムを動作させます。プログラムの動作をPC上でモニター確認するために、シリアル通信をおこないます。

めかのとろ

PC上にはターミナルソフト(端末エミュレータ)と呼ばれる通信ソフトを使用して、シリアル通信を行います。マイコンとの接続はUART-USB変換ケーブルを使用します。ST-Linkの接続からマイコン電源は供給されますのでC言語学習目的では外付け電源はなくても動作します。

めかのとろ

初心者にとっては環境構築をすべて理解しておこなうことは難しいのですが、とにかく、PCとシリアル通信ができる環境を整えるところから始まります。

クロス開発環境
ポイント

マイコン学習にあたって最低限必要な機材:
マイコンボード(STM32F1xx Cortex-M3搭載)
プログラム転送用デバッガST-LINK/V2
・信号入力用SW類(押しボタンSWなど)
・信号出力確認用ランプ類(LEDなど)
・電流制限用抵抗器やボリューム

あれば便利なツール:
USB-UART変換ケーブル(これがあれば入出力はPCモニターで確認できる!!)

 

市販のマイコンボード

めかのとろ

市販のマイコンボードでSTM32F1xx(Cortex-M3)シリーズが搭載されているものは当サイトの内容を一部実践で動作確認することに使用することができます。

めかのとろ

ただし、当サイトで使用するアプリケーションプログラムは指定の教材ボード (NUCLEO-F103RB) 用ですので搭載しているマイコンやクロックの仕様に合わせて変更することが必要です。

めかのとろ

市販の教材ボードを選ぶにはマイコンがSTM32F1xxシリーズが搭載されていることと、SWDデバッガ用ピンPA13とPA14が使えるものが条件です。

その他教材部品

めかのとろ

教材ボードの入出力用部品を接続するのにははんだ付け不要のブレッドボードジャンプワイヤを使用すると便利です。ジャンプワイヤのコネクタはブレッドボードには基本的にオスーオスタイプを使用しますが、ほかにオスーメス、メスーメスタイプもあります。

めかのとろ

入出力用パーツとしては押しボタンスイッチ、LED、抵抗器などがあればよいのですが、最近では電子工作入門キットとしてある程度まとめられたものが販売されています。抵抗器は330Ω程度のものと、1kΩ程度のものを使用します。詳細は「アプリケーションと実践」章の各アプリで使用する配線図にあります。

電源

めかのとろ

外付けの部品を使用しないでプログラムの動作を確認するだけであれば、プログラム転送用デバッガST-LINKから電源が供給されるので外付けの電源は不要です。通常はPCのUSBバスパワーからの電源で300mAまで供給でき、ST-Linkデバイス側で保護回路によりUSB電流を管理しています。

めかのとろ

電源電流が300mAを超える負荷のかかる入出力の部品を装着する場合は外付け電源(DC5/7-12V)が必要です。
例えば、WiFiモジュールでの通信を行う場合などUSBポートからの電源では不足気味の場合は外部から5V電源を供給すると安定します。

めかのとろ

Nucleoシリーズのボードへの電源供給はUSBポートからのUSBバスパワーの他に、外部電源を供給することができます。5V外部電源の場合(最大500mA)はE5V(CN7-6)へ、7~12V外部電源(最大800mA)の場合はVIN(CN7-24またはCN6-8)へ接続します。外部電源を使用する場合はボード上のジャンパピンJP5をE5V側に設定すると有効となります。

めかのとろ

ただし、ジャンパピンJP5をE5V側に設定するとUSBの電流保護回路が切断され機能しない状態となり最悪PCのUSBポートにダメージを与える恐れがあるため電源の投入順序を守ることが重要です。

外部電源使用時の設定
  1. JP5をEV5側に設定する
  2. 外部電源をE5V(5V)かVIN(7~12V)に接続し、電源を投入する
  3. 電源ランプLD3の点灯を確認
  4. USBを接続USBポートに接続するのは最後にすることが重要)
ポイン

Nucleoボードへの供給電源は3通り:
・USBから供給(JP5: U5V側)ST-Linkデバイス側でUSB電流を管理
・5VをE5Vへ供給(JP5: E5V側)
・7~12VをVINへ供給(JP5: E5V側)

(重要)外部電源を使う場合は先に外部電源を投入してから最後にUSBケーブルを接続すること!

 

外付け電源

Follow me!