IoTへの道はじめの一歩:NodebotsとJohnny-Fiveを使ってArduinoでサーボウェーブ

IoTへの道はじめの一歩:NodebotsとJohnny-Fiveを使ってArduinoでサーボウェーブ


先日、ラズパイマガジンをめくりながら、なんとかRaspberry Pi 3でLチカ(LEDをチカチカさせること)ができるようになりました。
IoTが面白そうだよねという話を周りの人に振ると、複数の人からJohnny-Fiveを使えば、JavaScriptでハードを制御できるよ、という話を聞きまして、早速やってみたので、今日はそのレポートです。

Johnny-Five とは?

Johnny-FiveはNode.jsのライブラリです。・・・と言われても、何をどうやったらいいのかよくわからないですよね。私はわかりませんでした。
トップページにはロボットのイラストがババーンと登場しており、「Robotics & IoT Platform」と書かれています。Johnny-Fiveを使うと、ロボットが作れるの?みたいな期待と想像がふくらみます。

20160615b

Johnny-Fiveって名前もカッコイイですよね。
Johnny B Good + Ben Folds Fiveみたいな。

Node.js とは?

Node.jsは、JavaScript界の異端児・・・?いえ、最新のイケてるJavaScriptです。
そもそもJavaScriptは、昔からWebで使われていた言語で、ブラウザ側での動きをつけるのに使われていました。(ブラウザの閉じるボタンとか)
それがここ最近、ブラウザ側だけでなくサーバ側でも動くという話をチラホラ聞いて横目で見ていましたら、さらに進んでスマホアプリやデスクトップアプリ、さらにはハードウェアまで動かせる!なんてことになってきて、本当に目覚ましい進化を遂げている・・・らしいです。

「らしい」とつけたのは、私自身がJavaScriptを10年以上も使って来ている中で、「ゼロから書く」ということをほとんどやったことがなく、Web上に転がっているソースコードにちょっと手を入れて使ったり、どうしても動かない時にはプログラマーさんにお願いして作ってもらったり、という方法で逃げて来たからです。

そんなNode.jsとJohnny-Fiveを組み合わせて使うと、パソコンの中だけでなく「現実世界のもの」を動かすこともできるというわけです。

Nodebots Workshop でJohnny-Fiveのお勉強

20160615n
NodeSchoolを知っていますか? このサイトでは、Node.jsなどを学ぶツールがいろいろありまして、この中にあるNodebot Workshopを使うと、Johnny-Fiveのお勉強ができます。

さっそくやってみましょう!

手順

(1) まずnode.jsが入っているかどうか確認します
$ node -v

バージョン確認すると・・・

v0.12.0

入ってた。たぶん、2年くらい前にgulpをやってみた時に入れたものと思われます。
Node.js は、v0.12の後、いきなりv4が出て、さらにv5となり、最新バージョンは6らしいです。
本来ならアップデートするべきですが、パッケージ管理を何のツールでやっていたのかすら覚えていません。。。

パッケージ管理って、いろんなやり方があって何を使えばよいのかホントよくわからないです。
まだNode.jsインストールしていない人は、ググるといろんな方法があるので、とりあえず入れてみてください。

(2) Johnny-Fiveをインストール
$ npm install johnny-five

20160615e
インストール後のファイル構成はこんな感じです。
「node-modules」フォルダがある階層に、 新規作成でJavaScriptのファイルを作っておきます。ファイル名はなんでも構いません。

(3) NODESCHOOLのNodebots Workshopをインストール
$ npm install -g nodebot-workshop

いろいろインストールされて・・・とまったら。

$ nodebot-workshop

これで黄色と黒の画面が出てきます。
20160615c

お!「Choose Language」で日本語にできることに気がつきました。

20160615d

一番最初の問題「Blink Blink」を選んでやってみました。
20160615f
しかし、何度やってもクリアできません。。。
たとえJavaScriptがちゃんと書けて、問題をクリアしたとしても、Arduinoまだ持ってないし、何をどう接続していいかもよくわからない。。。
ここでいったん、手詰まりです。

悩んでいてもしょうがないので、勉強会に参加することにしました。

20160615g
NodeBots Johnny-fiveハンズオン! vol2
Webの人とハードウェアな人集まろう!

LIGののびすけさんが主催するハンズオンです。
1問目すらクリアできないのに、大丈夫かしら。。。知ってる人ほとんどいないし。という状態で心細かったのと、前日の睡眠時間が少なくて体力的に厳しいかも、と思っていたのですが、ここで行かないと後悔する!と決心して行きました。
運動不足だったので、茅場町のコワーキングスペースCo-Edoから30分歩いて行きましたよ。

4人がけの私のテーブルではJavaScriptが得意!という人はおらず、1問目から苦戦してましたが、途中でのびすけさんが解説してくれたので、とりあえずクリア。

作成したアプリが正しいか検証する: nodebot-workshop verify program.js
$ nodebot-workshop verify 01-blink-blink.js 

20160615h

私のNode.jsのバージョンが古いのが原因で動かないかもー。。。と心配していたのですが、とりあえず動くことがわかりました。

2問目のサーボウェーブに挑戦

サーボウェーブってなんぞ? どんな動きをするの? という疑問はさておき、まずはJavaScriptを書いて問題をクリアしなければなりません。
20160615i

しばらく悩みながら私が書いたコードはこちらです。
20160615j

なんと、これで問題がクリアできました!奇跡かも!!
20160615k

次なる難関:回路図が読めない

20160615l

回路図がねー・・・よくわからないんですよー・・・
ラズパイマガジンを読んでいたので、GPIOとは何ぞや、ということはあらかじめ知っていたのですが、具体的にどの線をどのピンにつなげばいいか、わかりませんでした。
なので、会場のスタッフさんに質問して教えてもらいました!!

サーボウェーブは、茶色・赤・黄色の三つの線がついてまして、それをArduinoにジャンパワイヤで接続すればいいらしいです。
さすが、即答!ありがとうございますー٩(ˊᗜˋ*)و✧*

茶色:GND
赤:3.3V
黄色:9pin

Arduino UNO はこんなマイコンボードです。
20160615m
Wikipediaより By oomlout

ARDUINOをはじめるなら、こういうキットを買うといいかも。

「実行する」って何?

さあ動かしてみよー!!
・・・でも「実行」ってどうやるの??
私はてっきりArduino IDEを使うのかと思ってましたが、コマンドラインから直接できるんですって!!

$ node 02-servo.js

node(半角スペース)ファイル名

これだけで動きます!!!

Arduinoを接続して動かしてみた動画がこれです。

Node.jsとJohnny-Fiveを使ってArduinoでサーボウェーブ

第3問目:くるくるモーター回転

このあと、3問目にもチャレンジしましたが、クリアできずに時間切れ・・・
隣のテーブルにいた方に、いきなり名刺を渡して、
「すみませんっっ、このメールアドレスに3問目のコードをコピペして送ってもらえませんか!?」
とお願いして、回答をGETしました。

IoTへの道のりは遠い。。。。。。。

参考記事


shoko administrator

フリーランスのWeb制作者。WordPressのサイト構築、およびWebデザインとディレクション。専門学校HAL東京にてWEB学科の講師をしています。WordPressコミュニティに出没。趣味は合気道。