本日ご紹介するのはEspruino. 名前からして, Arduinoを思い起こさせますが,Arduinoではなく,STMマイコンで,ピン配置もArduino互換ではありません.

特徴は,JavaScriptでプログラミングができることと, Web IDEという開発環境が Google Chromeブラウザの拡張機能として使えること. メモリーなんて48KBしかなくて, かなりマイクロなコンピューターですが,それでJavaScriptをある程度動かせるのだから大したものです. Web IDEは Chromebook でも動くので, MacもWindowsもなくても,Chromebookさえあれば組み込み開発ができてしまうというのもいいところです.

開発はしやすいけれど, ボード自体はそれほど多機能ではなく, Wi-Fiやイーサネットも付いていません.Wi-Fiなどは外付けできますが, メモリ48KBだとさすがに, Wi-Fiにつなぐだけはできても, そのほかにできることが制限されてしまいます.

今回はそれに, BME280 という気圧/温度/湿度センサーチップを接続して, 気象センサーボードを作ってみました.

BME280 は写真右側にある青い基盤の中央に乗っている、銀色の小さな部分がそれです。そのままだと手作業では配線できないぐらい小さいので、手作業での工作には、端子を少し大きめの基盤に引き出す"breakout board"に載せたものを使います。今回使ったスイッチサイエンス さんのボードは、ブレッドボードで使いやすいように端子が引き出されていますが、センサ本体以外のパーツはあまり載っていないので、EspruinoとのI2C接続端子部分に抵抗を入れて、電源の3.3Vラインにプルアップする必要があります。プルアップ抵抗としては10kΩを使っています。Espruinoとの接続はI2Cを使ったので、2本の線をつなぐだけでOkです。あとは電源はEspruinoの3.3V出力端子から引き出して、ブレッドボード経由でセンサの電源端子に入れています。Espruino自体はMicroUSBから電源をとっています。

ソフトウェアについてはJavaScriptで書きますが、BME280センサから値を取り出すには、センサにあらかじめ書き込まれている較正値を参照して、値の変換をしないと、見慣れた℃とかhPaとかになりません。この部分は、以前同じメーカーの古い型の気圧センサからデータを読むJavaScript を作ったことがあったので、それを思い出しつつ、実際の変換ロジックはセンサのデータシートに掲載されているC言語のサンプルプログラムから移植しました。こうして作ったデータ読み出し用ライブラリですが、自分だけで使っているのももったいないので、Espruinoの本体ライブラリにContributeしてみました。といってもGitHubで管理されているので、ただforkして、書いたスクリプトを追加してpull requestを出すだけでOkでした。めでたくMergeされたので、こちらにあります。

これを使って気圧、気温、湿度を取得するプログラムをChromebook上のWeb IDEから実行している様子がこちら。

Chromebookだけで、マイコンボードとセンサの制御プログラムを作り、それをマイコンボードにアップロードして実行させ、実行結果をシリアル通信で受け取る、というところまでできるんですね。

JavaScriptで開発できるマイコンボードとしては、他にもTessel, Kinoma Create, konashi などがあり、実はあまりハードウェアまわりのAPIにおたがい互換性がなかったりするので今後どうなっていくのか気になるところですが、どれも、プログラムを書き始めるための敷居は低いので、思い立ったらすぐにはじめることができるのが良いところです。