みなさんは電子工作にどのような印象を持っていますか? 

  • 「面白そうだけどどの電子パーツを買ったらいいのかわからない」
  • 「ハードウェアにプログラミングするって特殊なスキルが必要そう」

・・・という方も多いのではないでしょうか。この連載では、初心者でも簡単に電子工作を始められるよう、ArduinoとJavaScriptを使った解説をお送りします。スマートフォンのWebブラウザからNode.jsを介しArduinoをコントロールすることを目標にしています。

第1回目として本記事では電子工作の第一歩Lチカ(LEDをチカチカ光らせること)までの手順をご紹介します。下の動画は実際にLチカしている様子です。

Arduinoって?

Arduino(アルドゥイーノ)とは制御するプログラムを書き込むマイコンとセンサーやLEDなどを接続する入出力ピン(I/Oピン)、C言語がベースとなっている言語で構成されたマイコンボードです。種類もさまざまあり最小限の回路構成になっているArduino UNOや、無線機能(Wi-Fi)が付いているArduino YÚNなどがあり用途によって選ぶことができます。価格も国内の販売代理店で購入すると3,000円ほどで購入できます。

構成

構成図

PC上のJavaScript・Node.jsからUSBケーブル経由でArduinoへFirmataというプロトコルで命令を送り、命令を受け取ったArduinoがLEDを光らせるという構成です。Firmataでの通信処理はNode.jsとArduinoで行ってくれるので難しく考えなくても大丈夫です。今回はPCのOSをWindows 8.1、ArduinoはArduino Duemilanoveを使用しました。

回路

下の画像が実際に組んだ回路です。Arduino・抵抗(330Ω)1個・LED1個というシンプルな回路です。デジタルピンはArduino側からON(5V)/OFF(0V)の2種類の信号を出すことができます。デジタルピンからの出力でLEDのON/OFFを制御します。GNDはグランドと呼ばれ電気的に-(マイナス)となります。電流はデジタル13番ピン→抵抗&LED→GNDと流れます。

回路図

Arduinoにプログラムを書き込む

1. Arduinoの開発環境を用意する
Arduinoにはプログラミングと書き込みを行うエディタが用意されています。公式サイトのダウンロードページよりお使いのOSにあったものをダウンロードしてください。

2. Firmataで通信するためのサンプルを開く
先ほどインストールしたエディタを開いてください。エディタ上にある[開く]ボタンをクリックすると様々なサンプルが用意されています。各サンプルに必要な電子パーツを用意してぜひ試してみてください。今回はFirmataのサンプル[Firmata]→[StandardFirmata]をクリックしてサンプルを開きます。

サンプルを選択するキャプチャ

3. サンプルをArduinoへ書き込む
PCに接続されているArduinoの種類と接続しているUSBポートを選択します。私はArduino Duemilanoveを使用するので[ツール]→[マイコンボード]→[Arduino Duemilanove w/ ATmega328]を選択しました。

マイコンボードを選択するキャプチャ

PCにArduinoが接続されていると[ツール]→[シリアルポート]に表示されますので選択します。(Windowsでは[COM]がはじまる名前で、Macでは[/dev/tty.usbserial]とパスのようになっています。)

シリアルポートを選択するキャプチャ

最後に[マイコンボードに書き込む]ボタンをクリックし成功すると「マイコンボードへの書き込み完了しました。」と表示されます。これでArduinoの設定は完了です。

書き込み完了のキャプチャ

JavaScript

まず作業用ディレクトリを作成し、下記のJavaScriptを記述したファイルを格納します。今回は[C:wwwnode-arduino]という作業用ディレクトリ内に「arduino.js」を作成しました。

var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
	// デジタル13番ピンに100ミリ秒間隔で点滅
	(new five.Led(13)).strobe();

});

Node.js

コマンドプロンプトを起動し、作成したディレクトリに移動します。移動しましたら下記コマンドを実行しArduinoとのFirmataを使った通信を実現するjohnny-fiveをインストールします。公開されているGitHubをご覧いただくとどのようなことができるのかがおわかりいただけるかと思います。

npm install johnny-five

インストールが完了しましたら下記コマンドを実行してください。JavaScriptのファイル名は適宜変更してください。冒頭にご紹介した動画のようにLEDがチカチカ点滅すると成功です。

node arduino.js

最後に

LED光らせるだけでけっこう手順があるなと思った方もいらっしゃるかと思いますが、Arduinoの制御をJavaScriptでできるようになったことでモーターやフルカラーLEDなどを動かしたり光らせたりできる環境が用意できました。何をどう使って面白いコンテンツを作るかはみなさんのアイデア次第です。

近年、IoT(モノのインターネット)という言葉が話題になってきています。Qrio Smart Lockもその一つです。自宅の鍵に設置し外からスマートフォンで解錠できます。それだけではなくSNSなどで友人に鍵をシェアすることで許可した人だけ入室できたりと鍵の概念を覆すプロダクトです。家電を外からコントロールすることはもちろん、モノとモノがお互いに連携して新しい価値を生み出すことも期待されています。

今回紹介したJavaScript(Node.js)とArduinoの組み合わせはIoTにぴったりな組み合わせだと考えています。本記事を通してIoTなものづくりに挑戦する方が一人でも増えると嬉しいです。次回はArduinoに接続したセンサーからの値を取得してNode.js側に表示する方法をご紹介したいと思います。

連載目次

電子工作×インターネットの解説本を執筆しました

ICS MEDIAで紹介してきたIoT技術が1冊の本になりました。電子工作初心者がインターネットにつながるIoT装置を作れることを目標としています。本サイトで紹介しきれなかったネタや、新しい要素が盛りだくさんな内容になりました。本書をきっかけにあなたもIoTの世界に踏み込んでみてはいかがでしょうか? 詳しい内容は記事「『センサーでなんでもできる おもしろまじめ電子工作』を執筆しました」で紹介していますのでご覧ください。

センサーでなんでもできる おもしろまじめ電子工作の表紙

センサーでなんでもできる おもしろまじめ電子工作

  • ページ数:340ページ
  • 出版社:秀和システム
  • 発売日:2016年5月28日 (Amazon)

Amazonでチェックする