先日、ラズパイマガジンをめくりながら、なんとかRaspberry Pi 3でLチカ(LEDをチカチカさせること)ができるようになりました。
IoTが面白そうだよねという話を周りの人に振ると、複数の人からJohnny-Fiveを使えば、JavaScriptでハードを制御できるよ、という話を聞きまして、早速やってみたので、今日はそのレポートです。
Johnny-Five とは?
Johnny-FiveはNode.jsのライブラリです。・・・と言われても、何をどうやったらいいのかよくわからないですよね。私はわかりませんでした。
トップページにはロボットのイラストがババーンと登場しており、「Robotics & IoT Platform」と書かれています。Johnny-Fiveを使うと、ロボットが作れるの?みたいな期待と想像がふくらみます。
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のお勉強
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
インストール後のファイル構成はこんな感じです。
「node-modules」フォルダがある階層に、 新規作成でJavaScriptのファイルを作っておきます。ファイル名はなんでも構いません。
(3) NODESCHOOLのNodebots Workshopをインストール
$ npm install -g nodebot-workshop
いろいろインストールされて・・・とまったら。
$ nodebot-workshop
これで黄色と黒の画面が出てきます。
お!「Choose Language」で日本語にできることに気がつきました。
一番最初の問題「Blink Blink」を選んでやってみました。
しかし、何度やってもクリアできません。。。
たとえJavaScriptがちゃんと書けて、問題をクリアしたとしても、Arduinoまだ持ってないし、何をどう接続していいかもよくわからない。。。
ここでいったん、手詰まりです。
悩んでいてもしょうがないので、勉強会に参加することにしました。
NodeBots Johnny-fiveハンズオン! vol2
Webの人とハードウェアな人集まろう!
LIGののびすけさんが主催するハンズオンです。
1問目すらクリアできないのに、大丈夫かしら。。。知ってる人ほとんどいないし。という状態で心細かったのと、前日の睡眠時間が少なくて体力的に厳しいかも、と思っていたのですが、ここで行かないと後悔する!と決心して行きました。
運動不足だったので、茅場町のコワーキングスペースCo-Edoから30分歩いて行きましたよ。
今日の目標!ぞい! #nodebots_jp pic.twitter.com/k4Eky2Iz5E
— ちゃんとく (@tokutoku393) 2016年6月14日
4人がけの私のテーブルではJavaScriptが得意!という人はおらず、1問目から苦戦してましたが、途中でのびすけさんが解説してくれたので、とりあえずクリア。
作成したアプリが正しいか検証する: nodebot-workshop verify program.js $ nodebot-workshop verify 01-blink-blink.js
私のNode.jsのバージョンが古いのが原因で動かないかもー。。。と心配していたのですが、とりあえず動くことがわかりました。
2問目のサーボウェーブに挑戦
サーボウェーブってなんぞ? どんな動きをするの? という疑問はさておき、まずはJavaScriptを書いて問題をクリアしなければなりません。
しばらく悩みながら私が書いたコードはこちらです。
なんと、これで問題がクリアできました!奇跡かも!!
次なる難関:回路図が読めない
回路図がねー・・・よくわからないんですよー・・・
ラズパイマガジンを読んでいたので、GPIOとは何ぞや、ということはあらかじめ知っていたのですが、具体的にどの線をどのピンにつなげばいいか、わかりませんでした。
なので、会場のスタッフさんに質問して教えてもらいました!!
サーボウェーブは、茶色・赤・黄色の三つの線がついてまして、それをArduinoにジャンパワイヤで接続すればいいらしいです。
さすが、即答!ありがとうございますー٩(ˊᗜˋ*)و✧*
赤:3.3V
黄色:9pin
Arduino UNO はこんなマイコンボードです。
Wikipediaより By oomlout
ARDUINOをはじめるなら、こういうキットを買うといいかも。
「実行する」って何?
さあ動かしてみよー!!
・・・でも「実行」ってどうやるの??
私はてっきりArduino IDEを使うのかと思ってましたが、コマンドラインから直接できるんですって!!
$ node 02-servo.js
node(半角スペース)ファイル名
これだけで動きます!!!
Arduinoを接続して動かしてみた動画がこれです。
Node.jsとJohnny-Fiveを使ってArduinoでサーボウェーブ
どうしよう場違いなんじゃないかと思って最初逃げ出したい気持ちだったけど、「とりあえず動かしてみる」という目標が達成できたのでよしとする。 #nodebots_jp
— show-ko (@shoko_webdesign) 2016年6月14日
第3問目:くるくるモーター回転
このあと、3問目にもチャレンジしましたが、クリアできずに時間切れ・・・
隣のテーブルにいた方に、いきなり名刺を渡して、
「すみませんっっ、このメールアドレスに3問目のコードをコピペして送ってもらえませんか!?」
とお願いして、回答をGETしました。
IoTへの道のりは遠い。。。。。。。
同じテーブルの人がもってたGR COTTONというのが超絶可愛くて惚れたhttps://t.co/3hiU2IzPIN #nodebots_jp
— show-ko (@shoko_webdesign) 2016年6月14日
参考記事
- Webな人でもハードウェア制御が簡単に!Node.jsでJavaScript Roboticsを楽しもう #nodebots_jp
- Node.jsではじめるArduinoで人感センサ制御
- Nodebot-Workshop | Github