プログラミング忘備録

プログラミングやゲームに関することをつらつらと

マイコンと和解せよ ~マイコンやIDEとは何なのかをLチカしながら学ぶ~

マイコンについて書かれた記事はネット上に色々とありますが、どれもこれも敷居高い(前提や背景が細かく書いてあって難しい)ものが多く、私の知りたい情報がコンパクトにまとまっている記事が見つかりませんでした。そこで、本記事で自分が調べたことや経験をまとめて、アウトプットすることで理解を深めようと思います。

本記事では、

  • 0章:マイコンを使うために必要なものの解説
  • 1章:初心者へのおススメマイコンやちょっとした注意点
  • 2章:マイコンを使うためのソフトについて
  • 3章:Arduino IDEを用いたLチカ

マイコンの参考書やその他諸々について解説しています。マイコンの記事はネット上にあふれていますが、私と同じような悩みを持つ人の助けになれば幸いです。

背景(本題とは無関係な私事のため、飛ばしても良い)

私は興味の関係上、マイコンについて勉強することが多いです。
マイコンを使えば、監視カメラや温湿度計、侵入者探知等が実装できます。自分が部屋に入ったら自動でライトをつける等、遊ぶ対象としては非常に面白いです。

また、プログラマーの観点でもマイコンの性能に適した低電力・高速処理が可能な実装をする必要があり、奥が深いです。

このように、マイコンとプログラミングは奥が深く、突き詰めるのは職人みたいで楽しいのですが、ネット上の記事は1つのものに特化したやつが多かったり、複数の記事にわたって長文で書いていたりして、個人的にハードルが高いと感じます。

そこで、自分で勉強したことの復習もかねて、マイコンについてのまとめを記載します。マイコンの詳細(CPUやメモリがどうのこうの)や回路図の読み方、応用技術については一切書かず、マイコンの基本的な使い方に焦点を当てています。

マイコンとは何か

まず第一にカレーとはマイコンとはなにか」という定義の話をします。
他サイトから引用します。

マイコンとは、最近のほとんどの冷蔵庫や洗濯機など電気機器に組み込まれた、その電気機器を制御するための電子部品です。簡単に言えば電気機器を制御するための小さなコンピュータです。マイクロコントローラやMCU(Micro Controller Unit)、マイクロコンピュータとも呼ばれています。

マイコンとは? | マイコンとは? | エレクトロニクス豆知識 | ローム株式会社 - ROHM Semiconductor

要は小さなコンピュータという認識で良いと思います。ただし、小さなコンピュータだと何でもいいのかというとそうでもなく、サイズが小さくても機能が豊富なラズパイはマイコンに含まれないことが多いです(広義にはマイコンらしい)。

ラズパイの大きさ比較。キャップボトルやUSBと比較するとわかりやすいのかも?
OSがあり、モニターにつなぐことでデスクトップ等のGUIも表示できるため、低性能・サイズ小のPCといった感じ。

マイコンと和解せよ ~マイコンを使ってみよう~

ここからは実際に手を動かして、マイコンを使ってみましょう。
最初に述べた通り、応用技術については一切触れずに、超簡単な電子工作の初歩中の初歩、LEDの点滅(Lチカ)までとします難しいタスクの全手順をきちんとかける気がしない
また、「Lチカの実行前」の導入部分は自分の知識や経験に基づいて書きますが、「Lチカの実行」は良い会社が出したチュートリアルに説明を全部ぶん投げます。

0章・マイコンを使うのに必要なもの

今回のLチカで最低限必要なものは以下の通りです。なお、もしもLチカ以外もやってみたいとかなら、センサ等も必要です。

このうち、PCはもう持っているものとします。おそらく普段使いのやつで問題ないでしょう。

1章・マイコンを買ってみよう

マイコンを使うため、通販サイトなどで実際に買ってみましょう。秋月電子さんは電子工作の通販サイトとして非常に有名です。
秋月電子通商 トップページ

ただし、秋月電子さんは選択肢が豊富過ぎて、使いづらいマイコンを選んでしまう可能性もあり、初心者にはおススメしにくいです...
種類は全然ありませんが、Amazon楽天市場などで初心者向けのマイコンを買うのが一番良いと思います。

おススメのやつ

先ほど述べたように、秋月電子さんは豊富過ぎるので、Amazon楽天で全部入りの簡単なセットを買います。使い方の分からない安いやつよりも、わかりやすさ優先です。このセットにはマイコンとつなぐ用のケーブル、LED等が一通り含まれています。また、USB給電なので、「充電用ケーブルついてないじゃん!」などと泣きを見ることもありません(一敗)楽天市場よりもAmazonの方が1000円安いようです。


ELEGOO UNO R3基本部品 初心者スターター 互換キット チュートリアル Arduino用

アフィリエイト

なお、このURLから直接買う必要はありません。良い感じのやつを秋月電子さんなどから買ってもいいです。もちろん、このマイコン以外のもっと安いやつでも、豊富な種類のキットがついているやつでも、ロボットカー中心のやつでも、己が心が「これだ!」と思ったやつを買いましょう。ただし、古くて安いものは使えない(使いにくい)ことがあるのでダメなのと、今回はLチカなので最低限LEDが必要なことに注意。

購入して無事に届いたら、残りは書き込むためのソフトのみです。

ちょっと寄り道 ~拡張ボード・マイコンボード拡張・シールドって何~

これはネットに詳しい情報が書いてなくて、私がつまづいたので、軽くマイコンと関連する部品についても触れておきます。マイコンについて色々調べたり、通販サイト等を見たりしていると、たまに拡張ボードといったものがでてきます。シールドという言葉は日本人にはわかりにくいですが、拡張ボード・マイコンボード拡張・シールドとは、マイコンの機能を拡張するためのものです。基本的に単体で使うことはできず、マイコンと接続することで、ネット接続ができたり、センサ機能を追加したりと、文字通りの機能拡張ができます。

使うためには、マイコンにケーブル使ってつなぐ又はピンヘッダなどを使ってマイコンと物理的に接続することで、あたかも一体化したように動作させることができます。

一体化の例を写真で示します。この例では、マイコンボードの背面にwifiボードを接続することで、wifi機能が使えるようになります使ったことないけど

マイコンの表面。こちらは関係ないですが一応写真だけ。マイコンの背面で一体化させます。


マイコンの背面・合体前。右の青いやつがwifiカードを含んだボードで、左がマイコンボードです。wifiカードのボードの見えない裏側はピンヘッダーがあります。

ピンヘッダー 1×40 (40P): ケーブル・コネクター 秋月電子通商-電子部品・ネット通販


マイコンの背面・合体後。黒いピンソケットのところにwifiの青いやつのピンを刺しました。これでマイコンwifi機能を使えるようになります。

2章・マイコンを使うためのソフト

私がマイコンの第一歩を踏み出した頃、「マイコン 使い方」で調べても、多くの記事は「特定のマイコンの使い方」にフォーカスしていて、「なぜそのソフトなのか?」が書かれていませんでした。
私の、「このソフト使わなくても、こっち使っちゃダメなの?どのソフトを使ったらいいのか商品説明とかに書いてないけど、どこを見ればわかるの?」という疑問が解消できなかったのです。
先に解答を言うと、マイコンを使う(プログラムを書き込む)には、そのマイコンに対応したソフトを使わなければならず、他のソフトは使えません。また、マイコンの名前から概ね使うソフトはわかります。

マイコンを使うには、プログラムを書き込むためのソフトをPCにインストールする必要があります。大体は購入したとき、マイコンと一緒にソフトのインストール説明書みたいなのがついてきます。
ただし、全部ではないですが、購入前であっても、マイコンの名前や商品説明からどんなソフトを使うかはわかります。

どんなソフトがあるのか

上のリンクのマイコンArduino IDEを使います。IDEとは総合開発環境の意味で、ざっくり説明すると、色々便利なツールを含んだプログラムを書き込むためのインターフェイス(ソフトを起動してその中でいろいろできるやつ)です。
私が知っているIDE・ソフトの一覧を記載します。一応マイコンではないですが、ラズパイも一緒に。

ただし、ルネサスエレクトロニクス社系の初心者向けマイコンはe² studioではなく、Arduino IDEに対応している場合もあり、一概には言えません。
また、ルネサスエレクトロニクス社系の一部のマイコンはCS+からe² studioへ移行できるといった例外はありますが、基本的にマイコンIDEは1対1対応であり、ほとんどのマイコンIDEの変更・移行ができないようです。

自分のマイコンIDEを確認しよう

上のリンクのマイコンArduino IDEです。
他のマイコンの場合、秋月電子なら商品ページの「IDE」と書かれた欄に書いてあります。IDEの欄がなくて「C/C++」とかしか記述がない場合は、CDとコマンドベースを駆使して頑張ってインストールするしかないようです。
Amazon楽天市場などの通販サイトは書いてないことが多いのですが、主なラインナップはArduino系なのでArduino IDEの可能性が高いです。マイコンと同封の説明書に何のIDEを使うかが記載されているはずなので、それを見ながらインストールするのが一番良いです。

2.5章・各ソフトの特徴

私の主観ですが、各ソフトの使い勝手を記載します。

ArduinoIDE

まず、Arduino IDEは一番使いやすいです。コードテンプレートもあるので、私のような初心者でもLチカを実行できました。細かい操作等も必要なく、目に見えるボタンも少ない(どれを押せばいいか迷うことが少ない)ので、初心者が最初にやるならこれが良いと思います。

STM32CubeIDE

続いて、STM32CubeIDE。これは自分の使っているマイコンを検索・選択して、ピンの設定などをしないといけません。プログラムを書くときもC/C++の関数の所定の位置に処理を書く必要があり、ハードルが高く、玄人向けといった感じです。ただ、仕事で使うような高度な処理の場合はSMT32系のマイコンを使うことが多く、回路図を読みながら設定する必要があるので、一番マイコンをいじってる感・仕事している感があります。

ロスコンパイラ環境

古いマイコンの場合はコマンドベース(黒い画面でカタカタ打ち込むやつ)でクロスコンパイラ環境※をインストールする必要があり、IDEと呼べるようなインターフェイスがありません。実行できるようになるまでに結構な手順が必要ですし、OSとの相性によってはエラーでインストールできない場合もあります。
私の場合は、「半日かけてインストール出来たけど、マイコンにプログラムを書き込む時にエラーを吐く」なんてことがしょっちゅうでした。クロスコンパイラ環境のバージョン違いが原因だったので、エラーの度に別のバージョンの環境を何度もインストールする羽目になり、結局一日以上かかりました。
よって、何か特別な理由がない限りはおススメできません。どうしてもという場合、Windowsはバージョン毎の違いが結構面倒(Windows7しか対応してない等)なので、PCのOSはLinuxがおススメです。

※クロスコンパイラ環境とは、「自分のPCとは違う種類のCPUを持つマイコン向けに、プログラムを変換(コンパイル)するための環境」のことです。

ラズパイ

最後に、ソフトでもマイコンでもないですが、一応、RasberryPi(ラズベリーパイ・ラズパイ)についても。
ラズパイはマイコンというよりは我々が使っているPCに近いもので、マイコンと呼んでいいかは微妙な立ち位置です(広義にはマイコン、狭義にはマイコンじゃない)。ラズパイ自体、使えるようになるまでの手順がちょっと大変ですが、ネット上に一連のやり方は載っています。また、Lチカを行うためのプログラミング言語Pythonで、初心者でも非常に学びやすい言語のため、プログラミングの入門用PCとして相応しい一品です。
モニターやマウス・キーボードは必要ですが、プログラミング学習用のコスパの良いPCとして使えるので、1台買ってみるのは面白いかもしれません。私もRedmineのローカルサーバーをラズパイ上に作って、スケジュール管理できるようにしており、非常に役立っております。
ただ、何度も言及していますが、ラズパイはマイコンとは呼べず、これでLチカができても、「マイコンでLチカできた」の実績にはならないと思います。

3章・マイコンでLチカしよう

購入したマイコンが家に届いたら、PCにソフトをインストールして、実際にLチカをやってみます。

ソフトをインストール

マイコンにプログラム書き込むためのIDE又はコンパイル環境をPCにインストールしましょう。古いマイコンはエラー吐いたりして面倒ですが、それ以外の最新のIDE等は同封の説明書を読めば、つまづくことはないと思います。Arduino IDEやSTM32CubeIDEは公式サイトからもインストールできるので、購入したマイコンが届く前にインストールしておいても良いかもしれません。

Arduino IDEのインストールはここから。
https://www.arduino.cc/en/software/

STM32CubeIDEのインストールはここから。ちょっと面倒なユーザー登録が必要です。
STM32CubeIDE - STM32用統合開発環境 - STマイクロエレクトロニクス

インストール時に特に設定を変更していなければ、デスクトップに「Arduino IDE」や「STM32CubeIDE」といったショートカットが作成されていると思います。


ショートカットからIDEを起動します。
Ardino IDEはこんな感じの画面です。PCにUSB経由でマイコンをつなげば、自動でどんな種類のマイコンかを認識します。マイコンを認識してくれない場合は 、"Tools→Boards→Boards Manager"から選べるようです。まあ、大方、USBがきちんと認識されていなことが原因なので、わざわざ選ぶ必要はないかもしれません。


本記事ではSTM32CubeIDEを用いたLチカは行いませんが、一応、自分が覚えている範囲で使い方の説明を。
こちらは、使うマイコンを自分で設定しなければいけません。まず、左上の"File→New→STM32 Project"を開きます。画像はプロジェクトを開いた後の画面です。自分のマイコンを検索して、選択します。なお、下に色々な欄がありますが、マイコンの名前はPart No.に書かれており、基本そこだけ気にしておけばいいと思います。


選択して進み、プロジェクト名をつけると、ピンが図示されたマイコンの図がでてきます(ボード全体ではなく、あくまでマイコンの図)。


マイコンの図では各GPIOピン(入出力が自由に設定できる汎用端子)の設定が可能なので、Outputに設定します(マイコンの図の緑色がOutputに設定されたピン)。


そして、プログラムをmain.cの該当する場所に書いてやれば、LEDを光らせたりすることができます。なお、記載しているコードは大分前に書いたやつで、何をするコードかは忘れました(Lチカだったような気もする)。

プログラムを書いてLチカを実行

Arduino公式サイトには簡単でわかりやすい手順書があります。これを参考にLチカをやってみましょう。
"~ download link 1"とあるところからzipファイルをダウンロードすると、日本語というフォルダの中に日本語用チュートリアルpdfがあります。ちょっと日本語怪しかったりしますが、LEDの章をみて、その通りに配線することでLチカできます。なお、マイコンに同封の説明書もほとんど同じ内容だったと思います。
www.elegoo.com

このチュートリアル、単純なLチカ以外にも結構色々なことができます。動画のアップロードができなかったのと、GIFだと画像がガビガビだったので、Youtubeにアップロードしました。

RGB LEDの点灯
www.youtube.com

複数のLEDを順番に点灯
www.youtube.com

光センサで受け取る光の強さに応じて、複数のLEDをパラメータのように点灯させる
(センサを手で隠してみたり、ライト近づけたりすると、LEDの光る数が変わる)
www.youtube.com


といったことができます。チュートリアル後半の配線は結構大変ですが...
センサがあれば他にも色々出来るはずなので、遊んでみると良いかもしれません。

他のマイコンとかも使ってみたい

マイコンを一通り学んだら、他のマイコンも使ってみたくなるかもしれません。仕事で使う場合や更なる応用を求める場合は、回路図の解読やどのピンがどこに対応しているかを読み解くことも必要です。初心者がいきなりそこに飛ぶのは難しいですし、やりたいことが見つかっていない状態で手探りのまま進むのはモチベーションの減少にもつながります。
そこで、私は参考書を買うことをおススメします。例えば、CQ出版の本は基本的なことが書いてあっておススメです。

こちらの本はマイコン付属していませんが、基本が理解できます。でも、初版本でもねえのに、2^10バイトを210バイトって書くのは何とかしてほしい。


"絵解き マイコンCプログラミング教科書 CPU, I / Oからセンサ, LEDまで無駄なく確実に動かす トラ技ジュニア教科書" / 鹿取祐二 【本】

アフィリエイト


基盤(マイコン)付きのやつだとこの本。ただし、先ほどの本よりも薄く、必要最低限の内容です。


定番STM32で始めるIoT実験教室[特別版] マイコン基板&Wi-Fi基板付き (トライアルシリーズ) [ 白阪 一郎 ]

アフィリエイト


こちらの本はマイコンが付属してないものの、H8マイコンを用いて組み込みOSを作るといったものです。OSの仕組み等に興味がある人にはおススメですが、マイコン買ったり、必要なケーブル買ったり、PCをLinuxにして色々なソフトをインストールしたりと、ちょっと苦労する可能性が高いです。OSに興味がないなら、やめておきましょう。

中古品

【中古】12ステップで作る組込みOS自作入門 /カットシステム/坂井弘亮(単行本)

アフィリエイト

新品

12ステップで作る組込みOS自作入門/坂井弘亮【3000円以上送料無料】

アフィリエイト

もちろん、これ以外にも本は色々とありますし、持っているマイコンをさらに突き詰めるのもいいでしょう。上に張った各参考書へのリンクは気にせず、サイト内で色々と検索しながら、自分にあった参考書で勉強してみるのが一番だと思います。

余談 ~FPGAについて~

マイコンと似たやつでFPGAField Programmable Gate Array)というのがあります。
FPGAプログラマブル回路(回路をプログラムできる)であり、パソコンや回路の仕組みを学ぶといった点では悪くないように思えます。
一応、私も簡単に動かせるFPGAと本を買ってさわりだけ勉強しました。
しかし、以下の理由で、初心者がFPGAを買うのはお勧めできません。

  • お値段が高い(最悪)
  • 使うまでのハードルが高い
  • お値段が高すぎる(ゴミ)
  • 使うためのソフトが超重い
  • 値段が馬鹿みてえに高え(カス)
  • 学習コストも高い

何回も強調しましたが、値段が高いというのが致命的です
初心者が変に高いのを買って、動かないのはとても悲しいです(一敗)。
参考書もオススメはありますが、結構なページ数ですし、FPGAだけでも数万するのに本まで買うのはハードルが高い...
総じて、学習するのが難しい上に、かかる時間や費用を考えるとコスパが悪いです。

ネットだと、「出荷後も回路を変更できて汎用的に使える!」みたいなこと書いてありますが、頻繁に回路を変える必要性のある業務って、大体研究職や開発のプロトタイピングなんですよね。
出荷後に回路を頻繁に変えるなんてことあるのか...?
手間考えると、新しい機器作った方が早くない...?

以上の理由により、知識として持っとくのは良いと思いますが、「何も知らない初心者が個人の財力でFPGAを学ぶ」というのは個人的におススメできません。素直にマイコン買って勉強してからの方が良いと思います。

個人的に嫌い過ぎて、FPGAのトレンドなんて向こう1000年来ないで欲しい派ですが、初心者だけどどうしてもFPGAをやってみたいとか、業務で勉強しなきゃいけなくなったという場合は、ACRi ルームに登録してみるのはいかがでしょうか。私は使ったことないですが。
登録と審査が必要ですが、一応、FPGAが無料で使えるようです。
チュートリアルみたいなのもあったと思うので、連絡とってみると良いかもしれません。
gw.acri.c.titech.ac.jp