saino.me (kaishuu0123)

都内でひっそりと生きる IT エンジニアの個人ブログです

いまさら Arduino を始めてみた(マイコンについて & Lチカまで)

はじめに

いまさら Arduino を始めてみようと思いました。

私は一応組み込み経験はあるとは言えど、ARM や MIPS などで割とリッチな環境でプログラミングとかをしてきたので、電子工作界隈で話題になっているArduino や PIC は本格的に触ったことがないので、改めて学んでみようと思った次第です。

Arduino とは

まずは Arduino 自体がどういったものかを調べてみました。

Arduino(アルデュイーノ もしくは アルドゥイーノ)とは、(ハードウェアの)「Arduinoボード」(=AVRマイコン入出力ポートを備えた基板)、および(ソフトウェアの)「Arduino IDE」(=C言語風の「Arduino言語」によってプログラムを制作・コンパイルデバッグ等し、それをArduinoボードに転送 等々するための「統合開発環境」と呼ばれる、PC上で作動させる一種のソフトウェア)から構成されるシステムである。また「Arduino」という名称は広義には、それらの開発・改良を行う一連のプロジェクト、またその多くの開発者らによるコミュニティまでも指すことがある。

https://ja.wikipedia.org/wiki/Arduino

タイプに応じて様々な CPU があるようです(2019/06/17 現在)

  • Atmel AVR (8-bit)
  • ARM Cortex-M0+ (32-bit)
  • ARM Cortex-M3 (32-bit)
  • Intel Quark (x86) (32-bit)

今回は Arduino UNO R3 を買ってみようと思っているので、Atmel AVR に該当します。

Ateml AVR というものは何なのかも調べてみます。

Atmel AVR(アトメル AVR)は、Atmel社が製造している、RISCベースの8ビットマイクロコントローラ(制御用IC)製品群の総称である。1996年に開発された。

https://ja.wikipedia.org/wiki/Atmel_AVR

RISC ベースの 8ビットマイクロコントローラとのことで、いわゆる「マイコン」ってやつですね。では、マイコンと、ふつーに私達が PC で利用している CPU の違いってなんでしょうか。

マイクロコントローラ(マイコン)とは

マイクロコントローラ(microcontroller)は、コンピュータシステムをひとつの集積回路に組み込んだものである。

https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9

これだとちょっとイマイチピンとこないので、もう少し掘り下げて調べてみます。私達が PC で使っている高性能な CPU はいわゆるなんて呼ばれるのでしょうか。調べてみると MPU(Micro Processor Unit) と MCU(Micro Controller Unit) という単語に行き着きました。

一般的に、MCU(Micro Controller Unit)は汎用向けで、それよりも高機能・高性能向けがMPU(Micro Processor Unit)とされています。

https://ednjapan.com/edn/articles/1601/26/news018.html

これだとしっくり来ます。また海外のサイトでも分かりやすい図があったので、こちらも引用します。

https://electronicsforu.com/resources/difference-between-microprocessor-and-microcontroller

https://electronicsforu.com/resources/difference-between-microprocessor-and-microcontroller

これらを見てみると、具体的な定義があるわけではないが、演算処理に特化したものをMPU、ハードウェア制御などの IO(Input/Output) に特化したものを MCU と「なんとな〜く」理解できます。こちらの書籍も大いに参考にさせていただきました。

電子工作入門以前

マイコンの代表的な製品

一応名前だけでも知っておこうということで、調べてみたところ、下記のマイコンが割とメジャーなんじゃないかなと。

  • Microchip PIC
  • ルネサスエレクトロニクス H8
  • ザイログ Z80

wikipedia の主なマイクロコントローラから完全に主観で引っ張ってきましたが、もっとベテランの方だと語るところがありそうなものが多そう。色々ありますねぇ。今となっては全面的に出てこないですが、実はどこかでマイコンが大活躍しているのかもしれませんね。

Arduino UNO R3 購入

何となく背景が理解できたところで、実際に購入してみました。私は秋葉原の秋月電子通商で購入しましたが、Amazon からも Arduino UNO R3 は購入できるようです。他にも取り扱っている店舗は多数あるので、適宜調べてみるとそれはそれで楽しいかもしれないですね。

では、実際に大きさの比較から。

f:id:kaishuu0123:20191129154032j:plain

写真から見た感じ結構大きいのかなと思っていたのですが、思ったよりコンパクトで手のひらよりちょっと小さいくらいのサイズでした。これくらいのサイズだと結構可愛らしいですね。

では開封してみましょう。

f:id:kaishuu0123:20191129154046j:plain

こんな感じでシールと説明書、本体がついています。接続端子としては USB Type-Bですね。接続した感じはこんな感じになります。

f:id:kaishuu0123:20191129154040j:plain

Macbook Pro と接続しているので、USB Type-C から A に変換して、USB Type-A からType-B のUSB を繋いでいます。

物理的な準備はこれで準備 OK になりました。では、Arduino に実際にプログラムを流し込むところのセットアップに入っていきます。

開発環境構築

公式サイトから IDE をダウンロードします。Windows/Mac/Linux とも全対応なところが凄い。ここまでお膳立てできるのはなかなかできないですね。

f:id:kaishuu0123:20191129153946p:plain

ダウンロードした zip を解凍すると Arduino.app というファイルがあるので、それをアプリケーションフォルダにコピーしておく。コピーが終わったら起動してみます

f:id:kaishuu0123:20191129154052p:plain

それぞれの IC や抵抗、コンデンサ?がキャラになっているのが可愛い(∩´∀`)∩

起動が終わるとこんな画面が出ます。

f:id:kaishuu0123:20191129154058p:plain

まずは利用するボードを選択します。[ツール] -> [ボード: ...] にて Arduino UNO が選択されていることを確認

f:id:kaishuu0123:20191129153951p:plain

次はシリアルポートの接続を確認します。Arduino が USB で接続されているとシリアルポートの欄に /dev/cu.usbmodem... と表示されているので、それを選択します。

f:id:kaishuu0123:20191129153959p:plain

ここまで終われば、後はサンプルを動かすのみです。

Lチカを試す

本当は 13番 pin と GND pin に直に LED を挿せば光るのですが、LED が明るすぎて目が辛かったので、下記のようにブレッドボードに結線して抵抗を繋ぐことにしました。

f:id:kaishuu0123:20191129154017p:plain

ちなみにこの図は Fritzing (http://fritzing.org/home/) というソフトで簡単に書くことができます。

[ファイル] からスケッチ例 Blink を選択します

f:id:kaishuu0123:20191129154006p:plain

エディタ左上にあるチェックマークが検証ボタン、その横にあるのが書き込みボタンになっています。お手軽でビックリ

f:id:kaishuu0123:20191129154013p:plain

これで [検証] ボタンを押下した後に [書き込み] ボタンを押すと、以下のように 接続先の LED が光りました。

これから

とりあえず色々な方のプロジェクトを見よう見まねで色々と試してみようと思います。LED の制御だけでなく、I2C を使った OLED ディスプレイ制御なども楽しそうですし、逆にスイッチを使って入力を検出することも楽しそうです。

シンプルなサンプルと共に、「実用っぽい」何かを公開していければいいなぁと思っています。

あとがき

今回は Arduino を試すという試みのついでに色々と記事作成のための実験をしてみました。

  • 画像を多めに使ってみたり
    • 割とサイトとか画面って変わっちゃうのでスクショを撮ること自体に抵抗があったのですが、いかにも「ブログ記事っぽい」感じを出すにはスクショの方がいいかなぁと思ったり
  • 動画公開に Youtube を使ってみたり
    • アップロードが意外とサクッと終わって、使いやすかった
  • 動画編集に Adobe Premiere Rush を使ってみたり
    • 3回まで保存が無料なんですね。

今回は Arduino をモチベに色々と知ることができたので、とりあえず満足でした。Arduino は Arduino でモクモク触っていこうと思います。

参考文献

lecture.nakayasu.com

omoroya.com