JavaScript
Arduino
RaspberryPi
IoT
obniz

JavascriptでIoTをやる方法

この記事はJavaScript Advent Calendar 2018の12日目です

@n0bisuke さんと合わせて2日連続でjavascriptのIoTに関するAdventCalendarになりました。
・・・と言っても、話が続いてるというわけでは無いです

前半戦なので、全体感ということで、JavascriptでIoTをやろうとしたときに
どんなやり方があるよという話をしたいと思います。
IoTやるとどんな事ができるよ!の話はこちらのAdventCalendarでも見ていただければと思います。

それぞれマイコンボードごとに分類してます。

Raspberry PiでIoT

javascriptのパワーユーザーならこれが一番違和感なく簡単なんじゃないでしょうか。
Linuxが手足のように使えるレベルの知識がある人向け。

computer_single_board.png

  • Raspberry Pi にnodejsをインストール・実行でIoTを行う
    Raspberry PiはただのLinux PCなので、node.jsがそのまま入ります。そのまま動かせばjavasriptで入出力ができます。
    Linuxの環境構築はとてもめんどいですが、パワーユーザーならきっと日常的にやってるはず。

  • CHIRIMENというミドルウェアを入れ、Raspberry Pi内のブラウザでjavascriptを実行
    CHIRIMENというのを入れると、電子工作に必須のio制御が内部ブラウザからの関数呼び出しでできるます。ブラウザカスタマイズしたのかな?

ESPでIoT

RaspberryPiとは逆に、電子工作バリバリできまっせ!という人はこちらがおすすめです。
なによりも安い

スクリーンショット 2018-12-12 19.42.45.png

  • ModdableをつかってJavascriptをコンパイルして書き込んで使う
    javascriptだってコンパイルすればただのアセンブラ。こういう系はjavascriptの機能が一部使えないことが多いですが、どこまで使えるのかはちょっと探しきれませんでした・・・。

  • Mongoose OSをつかってJavascriptをコンパイルして書き込んで使う
    こちらも同じで書き込んで使います。evalとか使えるのかな・・・?
    Moddableとの違いもよくわかってないです。

ArduinoでIoT

電子工作といえばarduino!というぐらい簡単にプログラムが書けます。C言語なら
JavaScriptで書こうとするとひと工夫必要です。

computer_one-board_microcomputer.png

  • Johnny-FiveというOSをarduinoに入れ、有線で接続したPCでnode.jsを動かしarduinoに指示を出す
    生のnode.jsを使うことができるので、なんでもやりたい放題です。そのかわり、有線でPCとArduinoをつないでおく必要があります。動作中ずっと。

obinzでIoT

クラウド上のAPIを叩くとマイコンの入出力が制御できるというマイコン。
他のボードとはインターネット越しの制御がよくも悪くも違う。
howobnizworks.png

  • obnizが用意しているクラウドのサーバー上のAPIをjavascriptで叩いて使う
    APIなのでブラウザから指示を送れます。ブラウザ上のボタンを押したらモーターが回る などのブラウザ連携ができるのが特徴ですね。

  • obnizが用意しているクラウドのサーバー上のAPIをnode.jsで叩いて使う
    こちらも同じですね。node.jsでも動くのでサーバーサイドからもいろいろできます。
    (むしろjavascriptじゃなくてももいい・・・?)
    VUIと組み合わせてgoogle home連携とかも簡単です。

まとめ

図にするとこんなのです。
自分のスキルと目的にあったマイコンボードを手に入れて、ハードウェア動かしましょう!
スクリーンショット 2018-12-12 20.02.19.png