つい先日のIoTLT名古屋で発表したModdable SDKの話をしていこうと思います。
この技術でESP32やESP8266でJavaScriptが動かせるようになります!さっそく説明していこうと思います。
Moddable SDK
ESP32やESP8266でJavaScriptが動かせるSDKになります。(NefryBTで動作確認しました)
GitHubでオープンソースで開発が進められています。
https://github.com/Moddable-OpenSource/moddable/
似たようなものにObnizがありますが、おそらくアプローチは別だと思います。
ESP32、ESP8266
ものすごく簡単にまとめます。
500円程度で購入することができるWiFiモジュールです。
WiFiが使えるためIoTデバイスとして使用できます。
ESP8266とESP32の違いはBLEを使えるか使えないかが大きな違いです。ESP32がBLEを使用できます。
Moddable SDKの環境構築
上記のリンクから開発環境を構築できます。
手順が多く少々めんどくさいですが、特段難しいことはないので上記を参考にしてください。
https://make.kosakalab.com/make/electronic-work/moddable-sdk_build_how-to
こちらの方がきれいにまとめられているので悩んだらこちらを参照してください。
動かしてみる
環境構築ができたら、「Hello, world - sample」と表示するサンプルプログラムを動かしてみましょう。
デバッガーが起動して、変数の確認やブレイクポイント貼ってプログラムを試すことができます。
ポートなどの設定をしたあとにmcconfig -d -m -p esp32
を実行するとESP32でHello worldという処理を実行することができました。
次のステップでLチカもサンプルプログラムみるとこんな感じで実行してLEDをそのピンにつけるとLチカしてくれます!
import Timer from "timer";
import Digital from "pins/digital";
// blinks the two LEDs on ESP8266 NodeMCU boards
// blinks only blue LED on ESP32 Node<MCU boards (pin 2).
let count = 0;
Timer.repeat(() => {
trace(`repeat ${++count} \n`);
Digital.write(2, ~count & 1);
Digital.write(16, count & 1);
}, 200);
引用:https://github.com/Moddable-OpenSource/moddable/blob/public/examples/pins/blink/main.js
ドキュメントをよむ
https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/pins/pins.md
デジタル入出力やI2C、SPIなど一通りのピン制御ができます。
https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/network/ble/ble.md
BLEなんかもサポートしててわりとよさげです!
https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/network/network.md#class-wifi
もちろんWiFiもつながります!
https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/drivers/ssd1306/ssd1306.md
NefryBTでつながるDisplayのライブラリもあるみたいですね!
まとめ
Obnizちょっと高いなとかESP32余らしてるんだよなとかちゃんとJavaScriptでボード動かしたいんだよね!みたいな人にはいい技術じゃないんでしょうか?
初めの環境構築がちょっとめんどくさいとこだけ乗り越えたら遊べるのでぜひ一度遊んでみてください!