RubicでGR-CITRUSのmrubyプログラミング事始め

#GR-CITRUSとは？

[GADGET RENESAS](http://gadget.renesas.com/ja/product/citrus.html)より発売されたmrubyが使える小型ボードです。
だがしかし、mrubyを含めて3つも開発環境が選べるという好きに調理してください仕様です。
迷うじゃないか。

+ Rubicを使ったmruby開発
+ IDE for GEを使ったArduino互換スケッチ
+ Webコンパイラを使ったArduino互換スケッチ


とりあえず、ここでは売りのRubicを使ったmruby開発について注目して、
電子工作初心者がGR-CITRUSを動かせることを目指します。

また、WA-MIKANを組み合わせることによりWiFi通信やマイクロSDが使えるのも特徴です。
基本、セットで使おう。

>公式HPより
GR-CITRUSはRubyが気軽に使える小型ボードです。Chrome Appの「Rubic」を使うことでプログラムの作成から実行までスムーズに行うことができます。
RubyだけでなくArduinoと互換性のあるスケッチをすることも可能です。
また、ESP8266を搭載したボード「WA-MIKAN」と組み合わせることでWiFi通信やマイクロSDカードを使ったシステムをプロトタイプすることができます。
![citrus_mikan.png](https://qiita-image-store.s3.amazonaws.com/0/151653/a09fc89e-3f75-de3b-27ce-91826f443e8f.png)


#販売について
販売は秋月電子さんです。NORMAL版とFULL版の違いは、ピンを半田付けしてあるかないかだけです。半田付けが苦手な方はFULL版を買うといいと思います。
##GR-CITRUS
| バージョン |  補足 |
|:-----------|------------:|:------------:|
|[GR-CITRUS-NORMAL](http://akizukidenshi.com/catalog/g/gK-11217/)|半田付け無・[ピンヘッダは別途購入](http://akizukidenshi.com/catalog/g/gC-00167/)|
|[GR-CITRUS-FULL](http://akizukidenshi.com/catalog/g/gK-10281/)|ピンヘッダ半田付け済み|

##WA－MIKAN
| バージョン |  補足 |
|:-----------|------------:|
|[WA-MIKAN-NORMAL](http://akizukidenshi.com/catalog/g/gK-11218/)|半田付け無・[ピンソケット２ケは別途購入](http://akizukidenshi.com/catalog/g/gC-10902/)|
|[WA-MIKAN-FULL](http://akizukidenshi.com/catalog/g/gK-10530/)|ピンソケット半田付け済み|

#Rubicインストール
下記の公式サイトのインストール方法とほとんど内容は同じですが、Rubicのインストール方法を載せておきます。
http://gadget.renesas.com/ja/product/citrus_sp1.html

[Chrome](https://www.google.com/chrome/browser/desktop/index.html)をまず入れて、ChromeウェブストアからRubicを検索していれるだけ。
![クリップボード01.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/8290a3c5-45ca-d009-9bb8-bbccd4e3c475.jpeg)


![クリップボード01.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/ed2243c3-995c-8e53-6e48-c577e6ca884f.jpeg)

インストール後、chromeで新しいタブを開き、ツールバーのアプリを選択
![クリップボード08.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/38d12545-2eb4-9aad-713a-4dcc3c5c01d2.jpeg)
アプリから、Rubicを選べば起動します。
![クリップボード10.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/4987bfe5-2288-6d23-9c2f-44565ede9828.jpeg)


#使い方


##新しいスケッチを作成
GR-CITURSをMicro-USBでPCにつなげたら、新しいスケッチを作成⇒画面左下「ハードウエア構成を選択」を選ぶ。
![クリップボード02.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/e53012da-ab3c-5adf-6b60-23c0d05e0a8e.jpeg)

次にボードの選択で、GR-CITRUSを選択。
![クリップボード03.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/b5b3beda-113f-c2de-3e43-7e98dba430db.jpeg)

下記の画面のように選択します。
選択後、「スケッチ編集へ戻る」ボタンを押します。
![クリップボード04.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/c7069af7-6f2d-8964-8813-a077b1895911.jpeg)
>ファームウェアのリビジョンで、ファームウェアが最新でない場合は！マークが出ますがとりあえずそのままでも問題ありません。[Ver1.0.0でファームウェア書き換え機能が内蔵される予定のようです](https://github.com/kimushu/rubic)。

次に「接続先を選択」ボタンを押し、Gadget Renesas CITRUSを選択します。
![クリップボード05.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/6a7b0467-d44c-f601-fc44-1880494125a2.jpeg)
(※USBを外して付け直した場合、「接続先を選択」はやり直す必要があります。)

最後に、「！情報」ボタンを押して、ボードの情報が取れればCITRUSとの疎通OKです！
![クリップボード06.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/64f3c785-3594-9c7b-f79c-b81cd38d3c39.jpeg)

#スケッチ
準備はこれでできました。それではさっそくCITRUSに命令しましょう。
スケッチに以下のように書き込んで「Hello World」と表示させた後、
10回CITRUSのLEDを点滅させます。

書き込み後、右上の「実行」ボタンを押します。

```rb:main.rb
#!mruby
usb = Serial.new(0)
usb.println("Hello")
usb.print("World")

10.times do
    led 1
    delay 100
    led 0
    delay 100
end
```
![クリップボード07.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/6a54858b-642f-ed4a-893d-4643185fb9d4.jpeg)

動きました！

以上で準備は完了したので、[次から](http://qiita.com/shimo_cchi/items/cfb16476ef42861b98b2)具体的にもの作っていきたいと思います。

#トラブルシューティング（2016/11/19時点）
自分が探した範囲でちょっと引っかかりそうな部分をまとめてみました。

|No| Question |  Anser　 |
|:------------:|:-----------|:------------|
|Q1|MacでRubicご使用の場合、長いコード(10数行程度？)を書くと実行できない！|[rubic Ver0.92で修正されたようです！](https://twitter.com/Renesas_FUN/status/804153914043940864)|
|Q2|Rubicの実行が中々上手くいかない場合があります。(例.main.mrb を転送しています...失敗しました)|CITRUSとRubicの間での疎通確認のタイミングにぶつかると発生するようです。めげずに何度もトライしよう。|
|Q3|そもそもCITURSが認識されないよ！？その１|Micro-USBケーブルが転送可能なタイプか確認|
|Q4|そもそもCITURSが認識されないよ！？その２|IDE for GEとかWEBコンパイラの開発で書き換えた場合は、mrubyファームが消えているのでもう一回書き込まないとダメ。書き込み方法は以下。
>（公式より一部抜粋）最新ファームウェア(Ruby実行用)
GR-CITRUSのRuby用最新ファームウェアへのリンクです。ファームウェアを書き込む場合は、GR-CITRUSのリセットボタンを押してUSBメモリとして認識後、binファイルをコピーしてください。
GR-CITRUS 最新ファームウェア(Ruby用)<del>(※ちなみに公式のリンクが古いので新しくしてあります。</del>　(2016/12/25) 公式のリンクも修正されました。)
https://github.com/wakayamarb/wrbb-v2lib-firm/blob/master/firmware_release/citrus_sketch.bin

|No| Question |  Anser　 |
|:------------:|:-----------|:------------|
|Q5|リセットボタン押してもUSBメモリとして認識しないし・・・|[公式にあるUSBメモリのドライバ](http://gadget.renesas.com/ja/product/citrus_sp1.html)を入れればOK。コントロールパネルから「ほかのデバイス」⇒「Gadget Renesas CITRUS」にびっくりマークがついているので⇒右クリックでドライバーソフトウェアの更新から、ドライバのある場所を選択して入れる。|
|Q6|Arduinoみたいに、１回スケッチ書き込んだら、次から電源オンでプログラム自動起動しないの？|そのままだとしません。JP10をショートさせるか、JP2に[ハーフピッチピンヘッダ](http://akizukidenshi.com/catalog/g/gC-03865/)を取り付けて、[ジャンパ](http://akizukidenshi.com/catalog/g/gP-03912/)をショートさせる必要があります。テストの場合は以下２枚目のようにジャンパ線を指すのもよいかと。![無題.png](https://qiita-image-store.s3.amazonaws.com/0/151653/0d3ef671-3f27-981e-6c7f-a87966934499.png) ![PICT0022.jpg](https://qiita-image-store.s3.amazonaws.com/0/151653/c5729924-eb25-3024-c8cd-a9cf188ccbdb.jpeg)|
|Q7|mrbgemsを使いたい|ファームウェアを自分でコンパイルする必要があります。[tarosayさんの記事](http://qiita.com/tarosay/items/39bbf4cba373ec9aff41)や、[takjnさんの記事](http://qiita.com/takjn/items/42fa8ad0c61a8840a9c2#_reference-7eace0853ad79f7e59fe)に詳しく取り上げられています。
|Q8|ファームウェアの選択時、ファームウェアのリビジョンで「ファームウェアのダウンロードが必要です」と警告されるんだけど|ファームウェアが最新バージョンでない場合表示されますが、現在のRubicではファームウェアのダウンロード&書き換えはできません。[Ver1.0で実装される予定](https://github.com/kimushu/rubic/issues/9)らしいです。|