巷ではGoogle HomeやAmazon echoなどのスマートスピーカーが大人気となっています。スマートスピーカーに話しかけるだけで直接手を触れることなく、電気の消灯・点灯やアラームを掛けたりと大変便利です。私もGoogle Homeを持っており、アラームの設定や天気予報をGoogle Assistantに教えてもらっています。
さて、そんな便利なGoogle Homeでもっと生活を面白くしたいと思いませんか?例えば、『お花に水やりやって』とGoogle Homeに話しかけると適正な水を与えたり、帰宅したら、Google Homeがエアコンをつけてくれたりなど。
これらを実現するには、Google Homeの他にArduino(マイコン)を使った電子回路やIFTTTなどのサービスがあれば出来てしまうのです。そこでまずは、Arduinoを使って簡単な電子回路を作っていきたいと思います。
Contents
Arduinoとは
Arduino(あるでぃの、あるどぅいーの)とは、『Arduinoボードと統合開発環境(IDE)で構成されるシステム』のことを指します。Arduinoを使った電子回路制作はまず、IDEというソフトウェアを使ってC言語でプログラミングを行い、コンパイルしたプログラムをArduinoボード[1]に転送します。そしてそのボードと予め作成した電子回路の基盤(フレッドボードなど)[2]を接続して電気を流します。
上図では、Arduinoボードとブレッドボードの他に様々な部品を使っています。
①LED ・・・順方向に電圧を加えると発光する半導体(発光ダイオード)
②ジャンパー線 ・・・電気を中継する線
③スイッチ ・・・ボタンのON/OFF
④抵抗 ・・・電圧を下げる端子(電流の流れを制限する)
⑤USBケーブル ・・・データ転送や電源供給をする
Arduinoボードを使って回路を作るには
Arduinoボードを使って電子回路を作るには次の二つの手順が必要です。
1. 統合開発環境で電気信号を制御するプログラムを作る
2.Arduinoを動作させる回路を作る
今回はタイトルにもあるように上記の手順を行い、LEDを点滅する電子回路を作ってみようと思います。作るにあたって必要なものは、以下の通りです。
・パソコン
・Aruduino(USBケーブルも必要)
・ブレッドボード
・LED、抵抗(10kΩ)、ジャンパー線
では、早速やってみましょう。
統合開発環境で電気信号を制御するプログラムを作る
まず、プログラミングをするにあってパソコンに統合開発環境を準備しなくてはいけません。公式ホームページからご自身のパソコンにダウンロードしてください。(https://www.arduino.cc/en/Main/Software)
統合開発環境の準備
ここでは、統合開発環境のインストーラのダウンロードとインストール作業を行います。予め、ご自身がお使いになっているOSを確認しておいてください。
インストーラのダウンロードを行う
公式ホームページへアクセスします。
画面をスクロールしてくと、 ダウンロード用のリンクがあるので、ご自身のOSのリンクを選択してください。
ページが遷移したら「Just Download」をクリックしてください。
インストールを行う
ダウンロードが完了したら、ダウンロード先フォルダに「arduino-1.8.10-windows.exe」のような名前のファイルがあるので、ダブルクリックをしてください。
「I Agree」をクリックします。
「Next」をクリックします。
「Install」をクリックします。
インストールが終わるまで1~2分かかります。
「Close」をクリックして完了です。
プログラミング
ArduinoではC言語(厳密には違います)を使ってプログラムを行います。インストールが完了するとデスクトップ上にArduinoのアイコンが作成されるので、クリックして起動してください。起動すると以下の画面が立ち上がります。
コードを書く
記述するものとしてはsetupとloopがあります。setupにはAruduinoボードに接続するLEDやスイッチのポートのモードなどの設定情報を記述し、loopには処理内容を記述します。setupで設定情報を読み込んだ後、電源供給がなくなるまで延々とloop内の処理を繰り返します。
早速以下のコードを入力してみましょう
const int LED = 13; //LEDの使用ポート:13
void setup() {
// put your setup code here, to run once:
pinMode(LED,OUTPUT); //LEDのポートを出力モードに設定
}
void loop() {
// put your main code here, to run repeatedly:
/* 1秒ごとにLEDに流す電圧を制御 */
digitalWrite(LED,HIGH);
delay(1000);
digitalWrite(LED,LOW);
delay(1000);
}
入力し終えたら、画面左上のチェックマーク(検証)をクリックし、エラーが出ないことを確認してください。もし、エラーが出たら打ち間違いの可能性がありますので、再度入力し直してください。
コードの簡単な解説
今回のコードはLEDを点滅させる内容となっています。まず、LEDがArduinoボードのどのポートを使うのかを定義してます。
const int LED = 13; //LEDの使用ポート:13
今回は、LED一つしか使わないので、これしか定義していません。LEDを複数使う場合やスイッチを使う場合となると定義する内容が増えます。
次にsetupの中で、LEDのポートを出力ポートとしています。
pinMode(LED,OUTPUT); //LEDのポートを出力モードに設定
今回、LEDを光らせるので”出力”としていますが、スイッチのようにボタンを押すことによって制御する場合は”入力”すなわちINPUTとなります。
loopの中では、digitalWriteを使ってLEDに送る電流を流れる(HIGH)と流れない(LOW)で制御し、LEDを点滅させています。
digitalWrite(LED,HIGH);
コンピュータは人の目では到底追いつけない速度で処理されるため、単純にdigitalWriteで切り替えるだけだと、LEDの点滅の判断がつきません。そこで、点灯と消灯の間に指定した時間だけ何も処理しないdelayを1000ms(=1秒)挟むことによって、点灯→1秒そのまま→消灯→1秒そのまま→…を繰り返し、点滅しているように見せています。
delay(1000);
Arduinoを動作させる回路を作る
プログラミングの次はArduinoを動作させる回路を作成していきます。
回路を作る
下図のように接続してください。
[つなぎ方]
1.Arduinoボード(GND)とブレッドボード(j,17)をジャンパー線でつなぐ
2. Arduinoボード(13ポート)とブレッドボード(f,18)をジャンパー線でつなぐ
3.LEDの短い脚をブレッドボード(h,17)に長い脚をブレッドボード(h,18)につなぐ
LEDには電気の流れる方向が決まっており、+方向の事をアノード、-方向の事をカソードといい、向きを間違えるとLEDは点滅しませんのでご注意ください。
Arduinoボードにプログラムを転送する
作成した回路を動かすには、先ほど作成したプログラムをArduinoボードに取り込まなければなりません。取り込むにはパソコンとArudinoをUSBケーブルでつなぎ、統合開発環境から転送指示をするだけです。
パソコンとUSBケーブルをつないだ後、統合開発環境を起動します。[ツール] -> [シリアルポート] からArduinoのポートを選択します。
次に画面左上の「→」(マイコンボードへ書き込む)をクリックします。画面下に”ボードへの書き込みが完了しました”と表示されれば完了です。
完了直後から既に電源供給が始まっているので、LEDが点滅しているはずです。
まとめ
・Arduinoとは、Arduinoボードと統合開発環境(IDE)で構成されるシステム
・プログラムと回路を組み合わせて色々なことができる
・Arduinoのコードにはsetupとloopがある
・作成したプログラムはArduinoボードに転送する
お薦め書籍
とりあえず、「Arduinoをはじめようキット」を購入すれば簡単に始められます。必要であれば、「Arduinoをはじめよう」も持っておくと何かと安心です。