LoginSignup
4
6

More than 5 years have passed since last update.

【jonny-five】node.jsでArduinoを操作する。Lチカからセンサ入力まで

Last updated at Posted at 2016-09-24

node.js環境で、手軽にArduinoを扱えるjonny-fiveを試してみる。Lチカに終わらず、アナログセンサからの入力までを紹介する。

準備

筆者の環境はmacOS、nodeはv6.6.0である。
他のOSもしくは環境は使っていたら、適宜読み替えてほしい。

brew caskを使ってArduinoをインストール

$ brew cask install arduino

純正Arduinoを買うのは値段的に馬鹿らしいので、中華Arduino(400円)を使った。
macの場合は別にドライバのインストールが必要がある。
CH341あたりでググって自己責任でドライバをインストールする。

Lチカ

まずは、jonny-fiveをインストールする。

rwaldron/johnny-five: JavaScript Robotics and IoT programming framework, developed at Bocoup.

$ mkdir arduino-sample
$ cd arduino-sample
$ npm init -y
$ npm install --save johnny-five

Arduino側にStandardFirmataを書き込んでおく。
ファイル>スケッチの例>Firmata>StandardFirmataで見つかるはずだ。
さて、Firmata(フェルマータ)とはなんだろう。
Firmataとは、シリアル通信用の汎用的なプロトコルである。
これを使うことでnode.jsに限らず、様々なプログラミング言語でArduinoを操作できる。

準備ができたら、電子工作のhelloworldことLチカを試してみる。

index.js
'use strict';
const five = require('johnny-five');

const board = new five.Board();
board.on('ready', () => {
  const led = new five.Led(13);
  led.blink(500);
});

5行程度で完成だ。

実行

$ node index.js

光センサからセンサ情報を取得

次は、センサから入力を試してみる。
簡単なアナログセンサとして、光センサがある。
CdSセルやフォトレジスタと呼ばれるあれだ。
たぶん40円ぐらいで買える。

jonny-fiveは様々なセンサやハードウェアに対応しているが、今回は単純にアナログインプットを使う。

index.js
'use strict';
const five = require('johnny-five');

const board = new five.Board();

board.on('ready', () => {
    const s = new five.Sensor('A0');

    s.on('change', v => {
        console.log(v);
    });
})

抵抗をはさみA05VGNDを繋げばいい。
ググれば同じような構成なサンプルが数多く出てくるからわからければ参考にしてほしい。

$ node index.js
1474702700109 Device(s) /dev/cu.wchusbserial1410
1474702700117 Connected /dev/cu.wchusbserial1410
1474702704011 Repl Initialized
>> 0
335
338
340
342
330
82.5
28
17
16
14
9.5
7
6
5
71
332
341.5

CdSセルを手で覆ったり放したりすると、値が変化するのがわかる。
本来は正規化した方がよさそうだが、今回は簡単のためここまでとする。

おわりに

jonny-fiveを使うと簡単にArduinoを扱えることがわかったと思う。いちいちArduinoに書き込む手間がないので、プロトタイプ作成にはもってこいだ。

参考

rwaldron/johnny-five: JavaScript Robotics and IoT programming framework, developed at Bocoup.

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6