生産性が高く習得も容易なRubyの組み込み版「mruby」用い、実際にマイコンボード「enzi」との組み合わせで、取得したセンサーデータをTCP/IPでサーバへ送るIoTデバイスの開発を行います。
Rubyの特長を組み込み開発に反映させたプログラミング言語が「mruby」は、「Raspberry Pi」や「BeagleBoard」「GR-SAKURA」「Aruduino(およびArduino互換ボード)」など、さまざまなマイコンボード上で動作します。
ここではmrubyリファレンスボードとして用意されているManycolors製のラピッドプロトタイピングボード「enzi basic board(以下、enziボード)」を使って、センサーからの値を取り込み、サーバに送るIoTやM2Mの基礎となるアプリを構築してみましょう。
enziボードはもともとmrubyの教育・研修用に開発されたものですが、そのスペックの高さから企業向けのIoT/M2Mアプリのプロトタイピングにも適します。サイトにはhttp://enzi.cc/からアクセスしてください。
enziボード構成要素 | 内容 |
---|---|
CPU | Cortex-M4 168MHz(ARM 7アーキテクチャ) |
RAM | 内蔵SRAM 192Kバイト, 外部SRAM 1Mバイト(mruby専用領域) |
ROM | 1Mバイトフラッシュ |
その他 | USB-mini B、イーサネット、MMC miniカードスロット、GPIO(Digital x14,Analog x 6),SPI,i2C、Aruduino互換ピンアサイン |
さらにenziの特徴として、Webサイトでの開発・シミュレーション機能があります。サイトにアクセスして「シミュレータ」ページを開いてみてください、デフォルトで簡単なLチカプログラムがロードされています。
「execute」ボタンを押すと画面上のenziボードのLEDが点灯し、右下にD8/D9/D10での波形が表示されます。まず、このデフォルトで表示されているプログラムを見てみましょう。
p "Hello World!" analogWrite(D9, 100) status = 0 loop do (0..25).each do |i| status ^= 1 digitalWrite(D10, status) analogWrite(D8, i*10) delay(1600) end end
順を追って解説すると、
1行目pは表示(hello worldを表示)
3行目analogWriteはenziのライブラリで、文字通りアナログ書き込みです(enziはDigitalポートもアナログとして利用できます)
7行目(0..25)はRubyの構文で、この例では0から25までを表します。7行目から12行目まで、0から25までを26回ループし、その値は i に代入されます
8〜9行目は「最初0であったstatusが1に、1になったら0に」を繰り返します。それがD10に1,0,1,0と反映されています。
10行目 D8ポートにiの10倍の値が入ります。
11行目 1600ミリ秒のディレイ(delay)
となります。
これらの値を変更し再度「Execute」することで、enziボードを持っていなくてもシミュレートすることが可能です。
enziボードのユーザーでなくても、コンパイル以外のシミュレーション機能やサンプルアプリの参照は可能です。加えて、enzi購入者はユーザー登録することでアプリケーション開発後、コンパイルしてダウンロードできます。enziボードでは「enzi.ezb」というコンパイルしたファイルをSDカードを使ってロードさせることで、アプリケーションを動作させます。
なおenziボードはAmazonにて購入可能です。この文章を書いている2015年7月上旬の時点ではセール価格1万円(税込)となっています。
Copyright © ITmedia, Inc. All Rights Reserved.