GR-CITRUSのワークショップに参加して

Posted by 技術ブログ by Strawhat.net on Sunday, November 27, 2016

11月19日に豊洲のルネサス半導体トレーニングセンターにて、GR-CITRUS発売記念のワークショップに参加してきました。

当日は、GR-CITRUSと、WiFiとSDカードスロットを搭載した拡張モジュールのWA-MIKAN、あと温度などのセンサーを借りて、GR-CITRUSでのプログラミングを体験しました。その感想と、今後やりたいことをまとめてみます。

20161119140318jpg

GR-CITRUSの機能

GR-CITRUSのピン配置を見ると、シリアル4個/I2C 5個/SPI1個(共用あり)、あとアナログ入力4ピン/アナログ出力7ピン/デジタル入出力が20ピン(共用あり)と入出力端子はこれで十分かなと思います。

20161127140618png

GR-CITRUSに書き込んだプログラムは、ボード上のジャンパーをショート(ハーフピッチのスイッチを取り付けると便利なようです)させるとPCから切り離して動作させられるようです。

開発環境

GR-CITRUSのプログラミングは3種類あるようです。

  1. WebコンパイラでのArduinoスケッチ開発

  2. IDE for GRでのオフラインでのArduinoスケッチ開発

  3. Rubicを使ったmrubyでの開発

今回は3番目のRubicを使った開発が主でしたが、mrubyを使って非常に手軽に開発できたのが印象的でした。

以下は、照度センサーから読み取ったアナログ値をRubicのログ欄に表示するスクリプトですが、ピンへのアクセスが直感的ですし、Rubyの言語機能を使えばデータの処理も楽そうに思いました(まだ複雑な処理を実装していませんが)。

#!mruby
usb = Serial.new(0)
pinMode(14, 2) #INPUT_PULLUP
100.times do
    usb.println(analogRead(14).to_s)
    delay(100)
end

Wi-Fiへのアクセスも標準で用意されていて、WA-MIKANを使ってIFTTTと連携したりして、GR-CITRUSの応用できる範囲は広そうです。

#!mruby

pinMode(5,1)
digitalWrite(5,0) # LOW:Disable
delay 500
digitalWrite(5,1) # LOW:Disable

Usb = Serial.new(0,115200)
if( System.useWiFi() == 0) then
    Usb.println "WiFi Card can't use."
    System.exit() 
end

Usb.println WiFi.disconnect
Usb.println WiFi.setMode 3
Usb.println WiFi.ipconfig
Usb.println WiFi.connect("ap-xxxxxx","abcdefgh")
Usb.println WiFi.ipconfig
Usb.println WiFi.multiConnect 1
Usb.println WiFi.httpGet("maker.ifttt.com/trigger/citrus/with/key/xxxxx").to_s
Usb.println WiFi.disconnect

これ以外にも、GR-CITRUS特設クラス、メソッド早見表にあるように、I2C、サーボ、RTC、SDカードにアクセスする手段も用意されていて、外部のモジュールを操作したり、IFTTTと連携したりして、いろいろと面白いことができそうです。

個人的にはmbedをよく使っていて、オンラインコンパイラもしくはオフラインの開発環境でC++を使ったプログラミングに慣れていますが、mrubyでの開発も面白いかもしれません。

ワークショップの内容

ワークショップは大きく3つに分かれていて、GR-CITRUS特設サイトの解説ワークショップ進行のガイドを見て、ガイダンスを受けながら進めていきました。解説がしっかり書かれているので、ガイダンスなしでも進めていける内容でした。

  1. GR-CITRUSのmrubyプログラミング → mrubyプログラミング環境の設定、文法学習、Lチカ

  2. センサーネットワークを作ってみる → センサーの読み取り(I2Cとか)、IFTTT

  3. MP3プレーヤー作成デモ+自由時間 → Webコンパイラを使っての作業

センサーの利用はArduinoやmbedと変わらないなという印象です。

20161119151133jpg

(左から照度、温湿度、加速度、角速度、地磁気センサ)

20161119154458jpg

(温度センサーで温度・湿度を取得中)

時間の都合で最後のMP3プレーヤーはやり切れなかったですが、時間があるときに続きをしようかと思います。

今後やりたいこと

ワークショップでやったこと(Lチカ、センサー、IFTTT、MP3(スピーカ出力、SDカード))以外で何かを作ろうと考えてましたが、まずはLCDでの表示(文字、グラフィックそれぞれ)でしょうか。

GR-CITRUSを単独で動作するガジェットにしたとき、状態の表示にLEDが使えますが、より細かい情報を表示するためにLCDを使いたくなります。

LCDの操作はmrubyには用意されていないので、Webコンパイラで提供されているLiquidCrystalライブラリを使うことになりそうですが、手持ちのキャラクタLCD(ACM1602NI-FLW-FBW-M01)がI2C接続なので、ライブラリを少しいじる必要がありそうです。

時間があればmrubyにLCDアクセスを組み込むことができるのか調べてみようかと思います。