IchigoJam(with Raspberry Pi)とPCでプログラムのソースコードをやりとりする方法(シリアル通信/ファイル変換)

f:id:karaage:20171111132831j:plain:w640

IchigoJam RPiのプログラムをPCで書きたい

 以下の記事に書いた通り、最近、Raspberry PiにIchigoJamを入れて遊んでいます。

 ただ、ちょっと長いプログラムを書こうとすると、IchigoJam単体の編集機能だと、なかなかつらいです。書き出したバイナリファイルをバイナリエディタで編集するのも地獄だしまいったなーということを書いていたのですが、なんと開発者様より、PCで編集する方法を2つも教えてもらいました!

 公式マニュアルには、まだ記載ないようなので簡単に紹介しようと思います。

IchigoJam RPiとシリアル通信

 IchigoJamとシリアル通信する方法です。本家IchigoJamでは、これがPCとファイルをやりとりする常套手段となります。マニュアルにも記載ないので、Raspberry Pi版IchigoJamでは、てっきりダメだと思っていたのですが、なんと対応しているとのこと。凄い!

 接続的には、下記記事の通り、普通の(Raspbianを入れた)Raspberry Piとシリアル接続する要領で通信できました。

 ただ、Macだと通信のところでハマったところがいくつかあったので、簡単に紹介します。Windowsでは、Teraterm等で公式情報を参考に接続・設定すれば多分大丈夫じゃないかなと思います(環境が無いので試せませんでした)。

 まず接続に関しては、上記記事と同じ要領で以下のようにジャンパワイヤで接続しましょう。ピン配置や購入するものに関しては、上記記事と全く同じもので大丈夫でした。また、Raspbianのように、特別なエラー対応(ファイル書き換え)は不要です。 f:id:karaage:20171111132831j:plain:w640

 通信は、最初Macのscreenで試していたのですが、Deleteや改行がききませんでした。改行はCtrl+jでなんとかいけたのですが、Deleteは分からずギブアップ。仕方なくcooltermというターミナルソフトを使いました。

 cooltermは以下からインストールできます。

Roger Meier's Freeware

 パッケージ管理ソフトのHomebrew Caskが使えるなら、ターミナルで以下コマンド1発でインストールできます。

$ brew cask install coolterm

 Homebrewに関しては、以下記事参照下さい。

 cooltermのシリアルポート設定は、以下の通りです。

f:id:karaage:20171111122859p:plain:w480

 Transmitの設定は、長い行のプログラムを転送(コピペ)したとき、デフォルト設定だとうまく転送できなかったので以下の通りディレイを設定しています。もしこれでもうまくいかなかったら、ディレイの10をもっと大きい数字にしてみて下さい。通信が遅くなりますが、確実に転送できるようになるはずです。

f:id:karaage:20171111122916p:plain:w480

 通信できると、ターミナルとIchigoJamの画面が完全に同期するようになります。 f:id:karaage:20171111134221j:plain:w640
 わかりにくい絵ですが、PC(Mac)上のターミナル画面(右)と、IchigoJamの画面(左)です。

 PCからIchigoJamにプログラムを送信したい場合は、プログラムをPCのcoolterminalのターミナル画面にコピペすれば、IchigoJamにも同じ内容が転送されます。

 逆にPCでIchigoJamからプログラムを受信したい場合は、IchigoJam上でLISTコマンドをうてば、PCのターミナル上にもプログラムが表示されるので、それをコピーすればよいです。

 使用するソフト等は、以下の記事を参考にさせていただきました。

IchigoJam の紹介と OS X で使う方法のまとめ - Qiita

テキスト <-> バイナリ変換によるファイル保存

 もう一つの方法は、SDカードに保存されるバイナリ形式のプログラムをテキスト形式と変換することで、ファイル転送する方法です。 

 なんと、以前の記事をきっかけに、IchigoJam RPi開発者のみつを(@tkmsm)さんが、もの凄いスピードで作成下さいました。

 早すぎだろ…

 以下リンク先に、ソフト(Linux/Mac/Windows)とマニュアルがあります。

ijbconv

 実は、最初バグがあってうまくいかなかったのでGitHubの方でissueを立てたのですが、立てた5秒後くらいに修正連絡がきたので、確認して5分後にはクローズしてました。タイミングもあったと思うのですが、あらゆる開発スピードが早い。

変換したファイルでRUNするとSyntax errorになるケースがあります · Issue #1 · mitsuji/ijbconv · GitHub

 具体的には、以下のような手順でPCからIchigoJamにファイルを転送できます

  • PCでテキストファイルでプログラムを書く
  • PC上で変換ソフトを使って、テキスト -> バイナリ変換したファイルを保存(以下100.binというファイル名で保存した例)
  • IchigoJamのSDカードにPCでアクセスしてfilesディレクトリのファイル(100.bin)を上書き
  • IchigoJamでファイルをロードする(LOAD 100

 IchigoJamからPCにファイルを転送する場合は逆で、以下ですね。

  • IchigoJamでプログラムをセーブする(SAVE 100
  • IchigoJamのSDカードにPCでアクセスしてfilesディレクトリのファイル(100.bin)をPCにコピー
  • PC上で変換ソフトを使って、バイナリ -> テキスト変換

 今は、変換ツールを使う形式ですが、将来的にはIchigoJam自身がバイナリとテキスト両対応の書き出し、読み込みができるよう、開発検討くださっているらしいので期待大ですね!

まとめ

 IchigoJam RPiとPCでプログラムのソースコードをやりとりする方法を2つ紹介しました。オススメは、準備に手間はかかりますが、断然シリアル通信する方式ですね。リアルタイムに簡単にプログラムをやりとりできます。SDカードを抜き差しして、やりとりするのは、実際やってみると思った以上に手間がかかります。といっても、両方ともIchigoJamでプログラム書くよりはずっと効率的ですので、IchigoJamに慣れてきて、もっと楽にプログラム書きたいという方は試してみる価値はあるのじゃないかなと思います。

 自分としては、これで益々IchigoJamが実用的になってきました。正直、プログラミング教育はRaspbian+Scratchが有ればいいじゃんって思っていた自分がいたりしたのですが、やっぱり実際使って実感する良さというのはありますね。今回、開発者陣のレベルの高さと対応のスピード感・本気度を改めて感じて、益々IchigoJamのファンになってしまいました。いいじゃんIchigoJam!

 IchigoJamとRaspberry Piの組み合わせという視点で考えると、Raspberry Piをベアメタルでこれほど手軽に開発できる環境って他にはそうそうないと思う(少なくとも自分は知らない)ので、実用の面でも結構アリな選択肢なのではとか思ったりしています。また、そのうちIchigoJam使って何かやれないか、色々妄想してみようかと思います。

参考リンク

IchigoJamの世界進出は始まっていた。開発者福野泰介さんインタビュー:IchigoJam第6回