Edited at

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