Arduino で電子工作を始めよう! その第一歩として、Arduino 向けの開発環境を構築し、Arduino で LED (発光ダイオード)を点灯(≠点滅)させてみます。
Arduino を使った電子工作の定番と言えば「L チカ」ですが、この記事では、さらにその手前、Arduino を使って LED をただ点灯させてみるところを解説しています。LED をただ点灯するだけであれば、Arduino は実際のところ不要なのですが、周辺知識なども含め、step by step てゆっくり目に進める予定なのでご容赦くださいm(_ _)m
この記事では、Arduino MICRO を例に、電子工作を始める第一歩として、必要な機材の準備と、それらを組み合わせて LED を点灯させるまでを解説をしています。
一言に Arduino と言っても様々なモデルがあって目移りしてしまいますが、とりあえず、初心者向けの製品を一つ購入しましょう。定番の Arduino UNO、または Arduino LEONARDO、そのブレッドボード向けの Arduino MICRO あたりがバランス、価格ともに良いと思います。製品ごとにデジタル入出力の数やアナログ入力の数、機能が少しづつ違いますが、まぁ、初学者のレベルでこれらを完全に使い切ることはまずないと思うので、値段や見た目、勘を頼りにこれからの相棒を決めましょう。
ちなみに、折角買うのならもっと高性能だったり汎用性の高い製品が良さそうに思えますが全く心配無用です。理由は簡単、あれを作ったり、これを作ったりと、初心者向け製品が物足りなくなる頃には、知らず知らずのうちに手持ちの Arduino がどんどん増えていくからです! ちなみに、私の手元にはモデル違いで既に 8 枚の Arduino があったりします(((;゚д゚)))
Arduino のプログラムを開発するための Arduino IDE が動作するパソコンが必要です。3D ゲームや複雑な計算をバリバリするわけでもないので、そこそこ古めのデスクトップ パソコンやノートパソコンで構いません。お父さんに余っているパソコンが転がっていないか聞いてみましょう。また、OS として Windows を使う人が多いと思いますが、Arduino IDE は各種 OS 向けにそれぞれ用意してあるので、Mac OS X や Linux 系 OS でも構いません。
もし機材に余裕があれば、マルチモニタ環境がおススメです。一つ目のモニタでマニュアルやインターネットのページを見ながら、二つ目のモニタでソースコードを編集できるので、作業効率が格段に上がります。
Arduino 本体とパソコンを接続するために必要です。Arduino 側の端子に合わせて USB ケーブルを用意してください。パソコンで作成したプログラムを Arduino に転送する他、多くの Arduino はパソコンからの電源供給だけで動作させることができます。専用品でも何でもないので、スマートホンの付属品や100円ショップで買ってきたもので OK。
自分で作ったプログラムが Arduino が動いてるよー! と実感するためにも、外付けの LED などの電子部品を用意しましょう。定番である LED はやはり外せません。赤/緑/青/白、大きさや形、様々な LED が販売されていますが、ひとまず、3mm径の赤色 LED と 緑色 LED あたりを買っておきましょう。100 個も要らない? 大丈夫です。絶対に足りなくなるから。
LED を破壊覚悟で点灯させることもできますが、いずれ必要になってくるので、抵抗器も併せて買っておきます。これまた様々な種類の抵抗器がありますが、とりあえず "1/4W(0.25W)" 品のうち「330Ω、1kΩ、10kΩ」あたりを買っておきます。これまた 100 個も要らない? 大丈夫です。これも絶対に足りなくなるから。→抵抗器の買い方
スイッチを押すと動作が変化するといったプログラミングの際、あると便利です。最悪、後述のジャンパ ワイヤをブレッドボード上で抜き差ししてスイッチの替わりにすることもできますが、完成品として仕上げる際も使えるので、あっても無駄にはなりません。ブレッド ボードや基盤で使えるタクト スイッチや基盤実装用のスイッチなどが良いでしょう。
電子工作で回路をあれこれ試行錯誤するのに必須です。ブレッドボードの大は小を兼ねますが、あまり大きすぎても邪魔になりますし、小さ過ぎると、ちょっと複雑な回路を組みたい時に途端に面積が足りなくなるので、中くらいの大きさのブレッドボードを数枚揃えておくと取回しが効きます。
ちなみに、「ブレッド」とは「パン; bread」のことで、その昔、パン生地をこねるための木の板に釘を打ちつけ、その釘を端子台にして配線したり、電子部品を取り付けたりして実験したという由来があるらしいです。
ジャンパ ワイヤと言ってもただの電線なんですが、両端がピン形状に加工された市販品を使うのが良いと思います。メーカー品だと 10本組500円と結構イイ値段を取られますので、自分の場合、中国製のリボン ケーブルで送られてくる商品を、裂きイカよろしく裂いて使っています。これなら40本200円と超破格。
Arduino に大量の LED やセンサを接続したり、模型モーターやサーボ モータを回すような電子工作をする場合、パソコンの USB コネクタからの電力では電力が不足することがあります。そのような場合には別途、AC-DC アダプタなどを用いて電源を供給する必要があります。逆にちょっとした実験や学習程度では必須ではありません。
使用できるAC-DCアダプタは、出力電圧が 7~12V とかなり融通が利きますが、DC ジャックの極性には注意が必要です。Arduino では、中心がプラス(センター プラス)の DC ジャックでなければなりませんが、一方、中心がマイナス(センター マイナス)のアダプタも存在します。もし、Arduino に間違ってセンター マイナスのアダプタを接続した場合、Arduino が一発で壊れますので、アダプタの表示を必ず確認しましょう。自宅で余っている AC-DC を使う場合には特に注意しましょう。
それでは、材料が揃ったところで、Arduino を使って LED を点灯させてみます。次の図のように、ブレッドボード上に Arduino MICRO、LED、330Ω抵抗などを配置し、ジャンパ ワイヤで結線してください(Fig.1 )。最後に、パソコンと Arduino を USB ケーブルで接続します*1。注意点としては;
無事に LED が点灯したと思います。では、ここで、点灯している LED をブレッドボードから抜き取り、アノード(リード線が長い方)を GND 側にして差し替えてみましょう(Fig.2 )。
LED は点灯しません。もしかしたら、点灯に成功する前に、LED のアノードとカソード(陰極)を間違えてしまった人が既に居たかもしれませんが、このことから、LED には、電源に対して接続方向(アノードとカソード)があり、これを反対に接続(逆接続)すると点灯しないことが判ります。これは、豆電球との大きな違いです。もし、期待した通りに LED が点灯しない場合には、正しい方向に接続(順接続)されているか真っ先に疑いましょう。
LED と直列に 330Ω の抵抗器が接続されていますが、このあたりのお話をします。例えば、秋月電子で販売している3mm 赤色 LED ですが、同じページからそのデータシート(仕様書)を見ることができるので、次の項目を確認します。英語で書かれていますが、頑張りましょう。
先ず、"Absolute Maximum Rating" と書かれた表の、"DC Forward Current" の項目を見ます。これは、LED に(定常で)流せる最大電流値で、これ以上の電流が流れると、素子の寿命が著しく短くなるか、素子が壊れてしまいます。そのため、LED は常にこの値以下の電流で使用しなければなりません。そこで、今回は相当安全を見て、LED を 10mA で点灯させることにします。
次に、"Electrical-Optical Characteristics" と書かれた表の、"DC Forward Voltage" の項目を見ます。これは、LED に 20mA の電流が流れた場合、最少 1.8V から最大 2.5V の電圧降下があるということです*4。これらの値から、LED に流れる電流を、目標の 10mA とするための抵抗値を計算すると、次のようになります。
少なくとも 150Ω の抵抗を使用すればよいことが判ります。本当ならここできっちり 150Ω の抵抗を使えばいいのですが、手持ちに無かったため、大よそそれくらい 330Ω の抵抗を使うことにしました。最後の最後でめちゃくちゃいい加減な感じですが、LED を流れる電流が減るので、それほど神経質になる必要もありません。もし、手持ちが無いからと言って、例えばこれを 100Ω の抵抗で試してみようとするのであれば、一応、最大定格を超えていないか再計算の一手間は掛けた方が良いでしょう。
実際、ブレッドボード上の実験や、電子工作の試作段階では、抵抗値などの計算や設計をした上で、手持ちパーツを使って適当に間に合わせることが多々ありますし、余程、制限が厳しい電子回路でない限りは、おおよそ問題なく動作することが多いです。しかし、これは「きっちり計算をした上で適当な部品を使っている」のであって、「見当もつかないまま適当な部品を使っている」のではない点に注意が必要です。「なぜ、この抵抗値は 330Ω なの?」と尋ねられた時、「よく判らないけれど、330Ω の抵抗にしたら動いた」というのではマズいのです。「細かい数値は覚えていないけれど、計算するとだいたいこれくらいの値になった」と答えられることが大切です。
LED を再び順接続に戻し、3.3V で正しく点灯することを確認します。次に、3V3 に接続してたジャンパ ワイヤを、Arduino の 5V に接続してみます(Fig.3 )。
この時、LED に流れる電流値は次の通りです。大丈夫そうですね。
さて、ここで、5V の電圧で LED を点灯させる実験では、LED を逆接続してはいけません。先に読んだデータシートにおいて、"Absolute Maximum Rating" と書かれた表の、"Reverse Voltage" の項目を見ると 5V とあります。逆接続では LED にほとんど電流が流れないため*5、抵抗における電圧降下はほとんどありませんから、LED には 5V の逆電圧がそのまま印加されることを意味します。実際のところ、これくらいで LED が壊れたことは経験上ありませんが、壊れても仕方ない、と頭の片隅に留めておく必要はあるでしょう。
LED の点灯回路を実験する場合、まず 5V 未満の電源で LED が正しく点灯する回路を作成した後、5V の電源に切り替えるのが安全であると云えます。
Arduino を使って LED を点灯させることができました。今回の例では、Arduino はただ電源を供給しているだけで、Arduino である必要が全くありませんが、次回以降の記事では、Arduino IDE でプログラミングを行い、作成したプログラムを Arduino 上で実行し、LED を点灯させるようステップアップしていく予定です。
もし、その際、LED が期待した通りに点灯しなかったら? 電子回路のバグでしょうか? それともプログラムのバグでしょうか? その切り分けを可能とするためにも、石橋を叩いて壊す渡るくらいの手順を踏んだ方が、結果的には安全かつ早道なことが多いです*6。また、ソフトウェア単体のバグでは、高々画面表示が乱れたり、プログラムが無限ループに嵌る程度で済みますが、ハードウェアの絡むバグの場合、電子部品が壊れたり、下手をすると回路が火を噴くことさえあり、危険度や被害の大きさが違います。
今回、LED が点灯することを確認できたので、次回、LED や抵抗の回路は触らず、5V の電源に繋がっているジャンパワイヤをデジタル出力ポートに繋ぎ変え、プログラミングを行うことになります。その際、もし LED が期待通りに点灯しなくても、ブレッドボード上の電子回路の間違いを心配する必要はありませんから、プログラミングだけにより専念できるというわけです。