Posted at
IoTLTDay 12

Mongoose OSでJavaScript IoT入門 #IoTLT

More than 1 year has passed since last update.

IoTLT Advent Calendar 12日目です。


JavaScript IoT

IoT機器に用いられるマイコンは、一般的にはC言語をベースに開発すると思います。これをJavaScriptを使って同等の操作を実現するアプローチを「JavaScript IoT」と呼びます。

「JavaScript IoT」のメリットは、Webエンジニアが手軽にIoTプロトタイピングを始められることです。「組み込みやC言語の知識はないけど、JavaScriptだったらわかる...!」という人にオススメです。

有名どころだと、Johnny-Fiveというロボティクスフレームワークがあります。

image.png


Mongoose OSとは

image.png

簡単に言うと、「IoT開発ボード用のOS」です。

Mongoose OSを使ったIoT開発では、


  1. IoT開発ボードにOSイメージを書き込む。

  2. Webエディタでコードを書く。

  3. ソースコードをIoT開発ボードに書き込む。

の大きく3つのステップがあり、一度OSイメージを書き込んだ後はWebエディタ上でコーディング→コンパイル→IoT開発ボードへのバイナリ書き込みが可能になります。

JavaScriptを使ってコーディングできることが最大の特徴です。


Mongoose OSが使えるIoT開発ボード

ESP8266, ESP32が載った開発ボードが一般的です。

スイッチサイエンスさんで販売されている「ESPr Developer」が使いやすいのでオススメです。

https://www.switch-science.com/catalog/3210/

image.png


開発の始め方


mos のinstall

CLIツール mos をインストールします。

https://mongoose-os.com/software.html

image.png


Webエディタの起動

mos がインストールできたら、Terminalで mos と入力します。すると、ブラウザ上でエディタが起動します。

4c4ccea3aa9d5fb59e9a78184c8ab516.gif


デバイスのセットアップ

エディタ起動時に、


  • デバイスの接続

  • OSイメージの書き込み(初回のみ)

  • WiFiへの接続

を行います。すべてブラウザ上でセットアップできるので順番に進めていきましょう。

image.png


コーディング

セットアップが成功したら Device Statusonline に変わり、コーディングが可能な状態になります。

image.png

基本的に init.js を編集します。

例えば「タッチセンサーをタップしたら、Touched!!とコンソール出力する」というだけの単純なプログラムは、以下のようになります。(不要なloadがあるので、実際はもう少し短いコードになります。)

image.png


AWS IoTとの連携

Mongoose OSは、AWS IoTとの連携を公式にサポートしています。

https://mongoose-os.com/docs/cloud_integrations/aws.html

これに関しては @1ft-seabass さんの https://www.1ft-seabass.jp/memo/2017/07/30/mongoose-os-espr-developer-32-aws-iot-connect/ が詳しかったのですが、最近Mongoose OS側の仕様が変わったようです...。

新しい方法について検証中なので、また後日このエントリをアップデートしたいと思います。


資料

先日、JavaScript祭りでMongoose OSについてLTしました。こちらもぜひご覧ください。

発表スライド: https://speakerdeck.com/shanonim/iot-with-mongoose-os-and-ifttt

image.png


参考リンク