ししかわのマウス研修マウス自作研修

ESP32でJavaScriptを動かすModdable – 元Web屋のマイクロマウス製作記 Part.20

ししかわです。

社員研修の一環で、自作マウスを作って大会に出場します。

記事一覧 – 元Web屋のマイクロマウス製作記 | RT MicroMouse

これから数回にわたり、コア(M5Stack:ESP32)とマウスモジュール(STM32)間の通信処理を実装していきます。

 

私の自作マウスのコンセプトは「Web屋のためのマイクロマウス」です。
Web技術者にも簡単に触れて、必要に応じて低レイヤの仕組みを学習できるマウスを目指します。

参考:アーキテクチャ設計 – 元Web屋のマウス製作記 Part.14 | RT MicroMouse

そこでWeb開発者のためにコアモジュール側をJavaScriptでプログラミングできるようにする、というのが今回のマウスのポイントです。
足回りとセンサの面倒な制御はマウスモジュール側に隠蔽することで、ユーザはマウスを走らせたり迷路を解いたりするロジックの実装に注力できます。
ESP32でJavaScriptによる開発を行うために、今回はModdableというプラットフォームを採用しました。

Moddableとは

Moddable(https://www.moddable.com/)

ModdableはJavaScriptでマイコン向けのアプリケーションを開発できるプラットフォームです。
次のような特徴を持ちます。

JavaScriptの最新の仕様に対応している

他のプラットフォームには(JavaScriptエンジンの制約から)使える文法が限られているものも複数あります。「モダンなJavaScript」で書けるかどうかはWeb開発者にとって関心事です。今は令和なので、開発者の方にはぜひconstやlet、Promise、async/awaitを使ってほしいと思います。

ModdableのJavaScriptランタイムである「xs」は、ECMAScript(JSの仕様)の最新仕様のほぼ全てに対応しています。ECMAScriptの仕様を満たすかのテストである「test262」の99.8%をパスしています。Moddableを使うとChromeやFirefoxで普段書いているJavaScriptと同じプログラムをESP32上で動かすことも可能です。

オフラインでも動作する

Moddableは独立したJavaScriptエンジンをマイコン内で動かす仕組みです。つまり完全にオフラインでも動作します。他のJavaScriptベースのIoTプラットフォームの多くは、ブラウザや別のサーバ上でJavaScriptを解釈して、デジタル入出力の命令のみマイコンとやりとりする仕組みなので、マイコン単体では動作しません。

Moddableで作ったプログラムの例

M5StackとModdableを使った作例を、拙著「実践Moddable」から紹介します。
センサやライト、モータ等様々な部品をJavaScriptで制御できます。
さらにHTTPやWebSocket、BLEなどの通信機能も豊富に備えています。

スマートライト:ESP32がHTTPサーバとして動作し、リクエスト経由でON/OFFできます。

カラーピッカー:カラーセンサから読み取った色をHEXコードで表示します。

温湿度計:センサとI2C通信する部分もすべてJavaScriptで記述できます。

マイコンでJavaScriptプログラミングする他の選択肢

Moddableの他にも、マイコンでJavaScriptが動作するプラットフォームが多数登場してきています。例えば次のようなものがあります。

  • Obniz:クラウドベースのIoTプラットフォームです。独自OSをESP32に書き込むか、専用の開発ボード(Obniz Board)を使って開発します。インターネット経由でボードを制御します。
  • Johnny-Five:JavaScriptでロボットが作れるプラットフォームです。Arduino互換のデバイスに通信用のファームウェアを書き込み、PC等のホストから遠隔で制御します。
  • Mongoose OS:クラウドベースのIoTプラットフォームです。Webブラウザ内でコーディングから書き込みまで完結する、クラウドIDEが特徴です。ただし使える文法に制約があります。

マイクロマウスは競技中、外部との通信は禁止されているため、
今回はスタンドアロンでも動作するModdableを採用しました。


今回は以上です。
次回からModdableの環境構築、そしてSTM32とのI2C通信処理の実装について紹介していきます。

タイトルとURLをコピーしました