Arduino(アルディーノ)は、プログラムでモーターやセンサーなどの電子部品を自由に制御できるワンボードマイコンで、IoT(Internet of Things)などで使われています。Arduinoと似た製品に、Raspberry Piがありますが、ArduinoはOSも搭載されていませんので、小規模なシステム向きです。
Arduinoには、いろいろな種類(エディション)が存在します。
中でも「Arduino UNO R3」が最も一般的ですので、書籍などは「Arduino UNO R3」を使っている場合がほとんどです。
「Arduino UNO R3」には、上位互換の「Arduino MEGA 2560」があり、メモリや入出力端子が大幅に増えています。
価格差は、ほとんどありませんので、私は「Arduino MEGA 2560」の互換機のスタータキットを、Amazonで6,000円程度で購入しました。
ただ、「Arduino UNO R3」互換の機能しか使っていませんし、ピン配置も、「Arduino UNO R3」互換のピンしか使っていません。
ですから、このWebページの内容は、「Arduino UNO R3」でも動くはずです。
Arduinoを購入する場合、ブレッドボードが入っているスタータキットがお勧めです。
ブレッドボードがあると、ハンダ付けをしなくても、簡単に電子回路が作れますし、センサーや電子パーツは単体で購入すると意外と高いので、セットで買っておいた方が得だと思います。
Arduinoを使うためには、パソコンでプログラムを作成して、Arduinoに転送する必要があります。 ここでは、Windows10上で、Scratchを使ってプログラミングする環境を構築する方法を紹介しています。
まず最初に、Arduinoが提供している「Arduino IDE」をインストールします。
「Arduino IDE」は、C++ライクな言語でプログラムを作成することができるソフトウェアです。
下記のWebページから、IDEをダウンロードしてインストールします。
インストールが完了すると、下記の様な画面で起動することができます。
起動したら、「ツール」メニューの「ボード」で、Arduinoの種類を選択します。
「Arduino UNO」や「Arduino MEGA」など、自分が持っているArduinoの種類を選択します。
次に、シリアルポートの選択を行います。
ArduinoをUSBで接続すると、「COM1」などのシリアルポートが自動的に割り当てられます。
Scratchを利用する場合は、Scratch用のファームウェアをインストールする必要があります。 Arduino IDEのプログラムは、スケッチと呼ばれていますので、「ファイル」メニューの「スケッチ例」から、「Firmata」「StandardFirmata」を選択し、画面上部の「→」アイコンの「マイコンボードに書き込む」機能で、Arduinoに書き込みます。
Scrattino3をインストールすることで、Scratchを使ってプログラムすることができます。
プログミングするのは、小学校4年生の息子なので、使い慣れたScratchが使えることは重要です。
ただし、Scrattino3を使った場合、Arduino単体で動作させることはできないため、常時、パソコンと接続した状態にしておく必要があります。
あと、Scrattino3は、「Arduino UNO」用ですので、「Arduino MEGA」の拡張端子を利用することもできません。
GitHubから、「scrattino_desktop-0_2_0-win.zip」をダウンロードし、「Program Files」の下に展開します。
展開が終わったら、「Program Files\scrattino3-desktop-v0.2.0\Scrattino Desktop.exe」上で右クリックして、「スタートメニューにピン留めする」を選択すれば、完了です。
最初に、LEDの表示を行ってみました。KOOVやEV3やMicro-bitなどで、LEDの表示は行ったことがありますが、Arduinoは電子回路から作成しなくてはいけないので、大変です。
LEDの動作電圧は2~3Vですので、+5Vの電源端子に直接接続してしまうと、LEDは切れてしまいます。
そこで、抵抗を使って電圧を下げる必要がありますが、その抵抗値は「E=I*R」の公式を使って計算しなければなりません。
今回は、Arduinoの動作確認がメインなので、抵抗値はスタータキットのサンプルの値を見て接続しました。
ただ、接続もコネクタを繋ぐだけではなく、LEDの接続には、極性を合わせる必要があります。
LEDには、カソードとアノードという2本の端子が出ているのですが、アノードを+側に接続する必要があります。
LEDを良く見ると、線が長さが違っていて、長い方がアノードとなっています。
ブレッドボードに、電子パーツを差し込み配線を行います。
赤色、黄色、緑色の3色のLEDを配線し、信号機を作ってみました。
ブレッドボードがあるとハンダ付けが不要なので、簡単に電子回路が作れます。
電子回路が完成したら、Scratchでプログラムを行います。
LEDを接続したデジタル出力ポートをHighにすると、電流が流れますようになっています。
そこで、D10、D11、D12のデジタル出力端子に、赤色、黄色、緑色の3色のLEDを接続して制御しています。
パソコンと接続して、信号機が切り替わることを確認しました。
Arduinoへの電源供給は、パソコンのUSB端子から行っています。
次に、Arduinoで電流の向きを変える実験をしてみました。
Arduinoで電流の向きを変える方法は、いろいろあると思いますが、スターターキットに入っていたL293Dを利用することにしました。
L293Dは、モータドライバとして利用できる汎用チップです。
双方向回転する2つのモータを制御できますし、単方向回転であれば4つのモータを制御できます。
L293Dには、電流アンプ機能があり、4.5Vから36Vの電圧で、最大600mAの電流が供給できます。
モータはPCよりも高電圧・高電流が必要なため、Arudinoから電流を供給することはできません。
また、L293Dには、ソレノイドやモータからのサージ電流を抑制するダイオードが付いています。
L293Dなどのチップを使うには、メーカから提供されているデータシートが必要です。
L293Dのデータシートは、Texas Instruments社のWebページからダウンロードできます。
英語で書かれていますが、ピン配置や回路図や使い方などが書いてあります。
今回は、電流の向きを変えたいので、「Bidirectional DC Motor Control」の使い方を参照します。
回路図を理解できなくても、ピン配置と使い方がわかれば、L293Dを使うことはできます。
L293Dの内部には、Hブリッジ回路が入っています。
Hブリッジ回路とは、下記の図のようなH型の配線にトランジスタスイッチを使って、電流の向きを変えるというチップです。
こんな機能が数10円で手に入るのですから、素晴らしいですね。
L293Dの機能と使い方が分かったので、Arduinoとの接続方法を決めます。
今回はモータが1台なので、左側の1から8番ピンのみ利用します。
私は、ArudinoのD5端子からD3端子を使いましたが、他のデジタル出力端子を使っても構いません。
ピンNo | ピン名 | 接続方法 |
---|---|---|
1 | EN | D5端子に接続 |
2 | 1A | D4端子に接続 |
3 | 1Y | モータの+端子に接続 |
4 | GND | GND端子に接続 |
5 | GND | |
6 | 2Y | モータの-端子に接続 |
7 | 2A | D3端子に接続 |
8 | Vcc | モータ用電源に接続 |
接続方法が決まったら、プログラムを作成します。 プログラムは、D5端子からD3端子の値をHighにするかLowにするかで、モータの回転方向を決められるので、簡単です。 HはHighに設定し、LはLowに設定します。 XはHighでもLowでも構いませんので、特に設定する必要はありません。
EN | 1A | 2A | 内容 |
---|---|---|---|
D5 | D4 | D3 | |
H | L | H | 左回転 |
H | H | L | 右回転 |
H | L | L | 停止(ブレーキ) |
H | H | H | 停止(ブレーキ) |
L | X | X | 停止(フリー) |
プログラムは、右矢印キーで右回転、左矢印キーで左回転、上矢印キーで停止(ブレーキ)、下矢印キーで停止(フリー)となるようにしました。
動作が分かりやすくなるのと、組み合わせて使いやすいように、処理をブロック化してあります。
プログラムが完成したら、実際に配線を行い、動かしてみると、ちゃんと動作してくれました。
パソコンのキーボードの矢印キーを押すと、モータが右回転したり、左回転したり、止まったりします。