Experts.jp日本に、もっとエキスパートを。(2)この記事では、「IoT」という言葉には少し関心があるけど、ハードウェアを作るなんてハードルが高そう...と感じていらっしゃる方々(特にWebデザイナー/エンジニア)に向けて、低価格で簡単にハードウェア制御を学べる「Arduino」(アルデュイーノ)という電子工作キットの使い方をお伝えします。電子工作でできることではそもそも「電子工作」とは何でしょうか?インターネットで検索すると「電子部品を使った工作のこと」、「様々な部品で電子回路を作ること」などとでてきます。「電子部品って何?」「電子回路?」と疑問が増えていきます。Wikipediaで電子部品の項目を見てみると「電子部品とは、電気製品に使用される部品のことである」と書いてあり、難しそうな部品の名前が書かれています。はじめから詳細に踏み込むと難しそうなので、まずは、電子部品を使うとどのようなことが実現できるかを、具体例で見てみましょう。自分でスイッチのON/OFFを行わなくても、人の出入りに合わせて点灯/消灯するライトがあります。ライトが必要なときのみにONになり、省エネにも効果的です。この仕組みを実現するためには「センサーで人が近づいたことを検知する」、「ライトのON/OFFを制御する」という機能が必要です。この「人を検知するセンサー部品」や「ライトを制御するプログラムを処理する」といった部分が、電子部品を組み合わせることによって実現されています。他に、「部屋の温度を自動的に設定温度どおりに維持する」というエアコンの機能を考えてみましょう。センサーライトの例のセンサーや制御の部分が、「センサーで温度を測る」、「エアコンの冷風/温風の温度を制御する」と置き換わると実現できそうです。Arduinoでできること先ほどの例と似たようなことを、一から自分で試してみようとすると大変です。センサーなどの部品をつなげるだけでなく、「センサーで検知した内容に合わせて、何か制御を行う」という、プログラムを処理する部分や、プログラムを書き込む方法の用意などノウハウが必要です。このように気軽には試せなかった「電子部品を使った工作」を、より身近にしてくれるものが「Arduino」です。「センサーなどの部品をつなげる部分」や、「プログラムを開発し、部品へ書き込むための開発用ソフトウェア」などが用意されています。PCとArduino、そして、ちょっとした部品があれば電子工作を試すことができ、工作を始める際の敷居が大幅に下がります。ところで、Arduinoを使うとどんなものを作ることができるのか、工作例を見てみましょう。動画へのリンク)郵便受けに手紙が届いたら携帯電話へお知らせゼリーを触って演奏するユニークな楽器Twitterで特定のつぶやきがあったらお知らせ:サルのぬいぐるみこれらは、先ほどの例にあった「センサーによる検知、検知した内容にあわせた制御」を、Arduinoと部品を使って実現しています。Arduinoでは、例えば下記のような機能を実現できます。光や温度、音、物との距離など周囲の状態を知る光や音をだす、モーターなどの部品や他の機械を動かす、他の機械に情報を送る最初の一歩:Lチカ部品を組み合わせるといろいろなことができるArduinoですが、まずは基本的な内容を試すことにしましょう。Arduinoを試す最初の一歩に「Lチカ(LEDを点滅させるプログラム)」があります。Lチカに必要な部品、部品のつなぎ方、LEDの制御方法などを説明していきます。手軽に部品を揃えるLチカに必要な部品がいくつかありますが、自分で個別に揃えるのは大変です。部品の種類が複数あり「どれを組み合わせれば良いかが分からない」ということがおこりえます。そのため、最初は、基本的な部品がセットになった「キット」を利用することをオススメします。キット」とキーワード検索するといくつかでてきますが、4000円程度のものを一例として挙げておきます。Amazon.co.jpでも購入が可能ですまた、キットには説明書が付属されていないため、部品のつなぎ方は自分で調べる必要があります。インターネットで調べてもよいですが、調べるのが大変という方は書籍を購入することで手間を省けます。前述の2つのキットに関しては、販売ページの商品説明に、オススメの書籍の例がそれぞれ記載されています。部品をつないでみる前に、Lチカでに必要になるもの一式を紹介します。各部品の説明は後述していきます。抵抗もいくつか種類がありますが、今回は利用するLEDに合わせて330Ω(オーム)のものを使います。抵抗の種類については、後で補足します。キットを購入すると、よく利用する複数の種類の抵抗が付属されています。Lチカやそれ以外の工作を楽に進めることができます。A-Bタイプ」などと呼ばれるものになります。接続部分の形が下の写真のようなものになります。スマートフォンの充電に使うケーブルなどとは異なりますので注意しましょう。【Arduinoボードに関する補足】Arduinoボード上の接続部などについて、一部補足します。今回のLチカでは、下の写真の上部にある接続部を使います。記載があることを確認しておいてください。下側にある接続部は上部にある接続部と異なる役割を持っていますが、詳細は割愛します。写真で示したLEDを見ることで、Arduinoボードに電源供給がされているかを確認できます。部品をつなぐそれでは、Lチカ用の部品をつないでみましょう。手順1)ブレッドボードにLEDと抵抗を差し込む上の写真の赤矢印で示した部分のように、LEDと抵抗を、ブレッドボードに差し込んでいきます。ブレッドボードとは、部品を差し込むための穴がたくさん空いた板状のものです。LEDやセンサーなどの部品のつなぎ替えを、簡単に行うことができるようになり、試行錯誤をする段階では非常に便利です。以下の手順でブレッドボードにLEDと抵抗を差し込んでみましょう。LEDは電気が流れる方向が決まっています。写真にあるように、方向は足の長さの違いで区別します。つなぐ方向を逆にしないように注意しましょう。抵抗はつなぐ際の方向は関係ありません。【ブレッドボードに関する補足】ブレッドボードにLEDと抵抗を差し込みましたが、部品はどのようにつながっているのでしょうか?それを理解するために、ブレッドボードの中身について補足します。ブレッドボードのそれぞれの穴は、一部が中でつながっています。下の写真で、緑の線を描いた部分が、内部でつながっている穴になります。このため、先ほどつないだ部品は、LEDのマイナス側と抵抗の片側とが接続された状態になっています。【抵抗に関する補足】LEDなどの部品には流してもよい電流の大きさが決められており、過剰に電流を流すと部品が壊れてしまします。それを防ぐために使うのが抵抗です。抵抗を組み込むことで、部品に流れる電流を抑えられます。ここで、抵抗の種類などについて少し補足します。今回、330Ωの抵抗を使いましたが、抵抗には種類があります。上の写真にあるように、抵抗についている色の並びが、抵抗の大きさを示しています。計算方法はここでは割愛しますが、最初のうちはよく利用するものはある程度限られます。そのため主なものの「抵抗値と色の並び」をメモしておくとよいでしょう。それには、オームの法則を使って計算します。計算には、部品がどのようにつながっているかも考慮する必要があります。そのため、最初は書籍やインターネットで情報を調べるなどして、自分が試したい内容に関して「どの種類の部品と抵抗を、どのようにつなげばよいか」を参照したほうが楽に行えます。Lチカのつなぎ方の場合で、使う抵抗の大きさを計算してみます。「LEDに流す電流」となります。LEDによって決まっているものです。V(ボルト)前後であることが多いようです。Arduinoボードの電圧になりますが、0~13番の接続部でかかる電圧は5Vです。LEDに決められた流してよい電流の最大値でひとまず計算します。これが10mA(ミリアンペア)の場合、抵抗値の計算は下記になります。300この場合、利用する抵抗の大きさは300Ω(オーム)となりましたが、同じ大きさの抵抗があるとは限りません。その場合は、計算結果より大きく数字が近いものを選びます。すると、流れる電流が少し小さめになり、LEDに流してよい電流の最大値を超えることはありません。手順2)Arduinoボードとつなぐ先ほどの部品とArduinoボードをつなぎます。Arduinoボードを使う際、ボードの裏側は金属部分がそのままでているため、金属などの電気を通す素材の上に置くのは避けてください。下の写真にあるように、Arduinoボードとブレッドボードの間を、ジャンバーワイヤーでつないでみましょう。GNDの接続部につながれる形になります。ジャンパーワイヤーは、Arduinoボードやブレッドボードへつなぐためのピンが、導線でつながれたものです。抵抗と同じで、つなぐ方向は特に関係ありません。部品の準備は整いました。次に、PCからArduinoボードへプログラムを書き込むための準備を進めていきましょう。Arduinoでは、プログラムのことを「スケッチ」と言いますが、本記事では「プログラム」と記載しています。今回は、LEDを点滅させるためのプログラムを書き込みます。IDE」を準備します。IDEのページ」からダウンロードしてください(※2015年1月3日時点では、最新バージョンは1.0.6)。一緒にドライバもインストールされます。Macの場合は、ZIPファイルを解凍するとArduino.appが展開されます。これで開発環境の準備ができました。手順4)PCとArduinoボードをつなぐArduinoボードをPCにUSBケーブルでつないでみましょう。USBケーブルをつなぐと、PCからArduinoボードに電気が供給されるため、Arduinoボード上の小さなLEDが点灯します。USBケーブルを抜いて電気の供給を止めることになります。IDEを起動してください。すると、下の写真のようなウィンドウが表示されると思います(※以下、基本的にはMac版の画面で説明を進めます)。ここで、つないだArduinoボードの設定と、シリアルポートの設定を行います。シリアルポートの詳細の説明は、今の時点では割愛します。ArduinoボードをPCに認識させるために必要な設定、と覚えておきましょう。Uno」を選択します。次にシリアルポートの設定です。Macに関しては、メニューの「ツール」⇒「シリアルポート」の中の「/dev/tty.usbmodemという名前が含まれる項目」を選択すればOKです。Windowsの場合、「COMという名前が含まれる項目」を選択するのですが、それが複数表示されている場合があります。そのため、Arduinoボードに該当するものを確認する方法を記載します。「スタートメニュー」から、「コントロールパネル」⇒「ハードウェアとサウンド」⇒「デバイスマネージャー」とたどります。名前に含む項目」を見ます。Arduinoボードのシリアルポートになります。これで、PCとArduinoボードの接続と設定は完了です。手順5)Lチカのプログラムを試すこれでLチカの準備が整いました。Lチカを試してみましょう。IDEに下記のプログラムを入力してみてください。LOW);delay(500);}そして、下の画像で示したボタンを押してみましょう。この操作で、Arduinoボードにプログラムが書き込まれます。IDEの下部に「マイコンボードへの書き込みが完了しました」というメッセージが表示され、ブレッドボードにつないだLEDが点滅します。下の画像のようなエラーが表示された状態になった場合は、プログラムの入力ミスがないかを確認してみてください。プログラムについて補足します。}の部分は最初に1度だけ実行される部分です。OUTPUT)と、11番の接続部分を出力用に設定しています。ジャンパーワイヤーが接続された11番から、LEDに電流を流したり止めたりするためのものです。}の部分は繰り返し実行される部分です。LOW)は、11番の電流を止めるものです。delay(500)という部分があります。このため、LEDが0.5秒ごとに点いたり消えたりすることなります。この数字を1000にすると変化が1秒ごとになりますし、もっと小さな数字にするとより短い時間で点滅を繰り返すことになります。ArduinoボードやLEDに電流は流れなくなります。Arduinoボードに書き込んだプログラムはそのまま残っているので、再度USBケーブルをつなぐなど電気を供給した際には、今回書き込んだプログラムが実行される状態になっています。おわりにArduinoを使った電子工作はいかがだったでしょうか?LEDを点滅させる以外にも、センサーの情報を取得したり、モーターを制御したりなど、Arduinoを使ってできることはたくさんあります。他の部品を使った電子工作を試してみてください。