カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

 Gainer mini *1は USB 接続で PC の I/O を手軽に拡張できるモジュールです。基になっているのは Gainer *2 ですが、小型になりラジコン・サーボの制御など独自の拡張があります。ほかに Gainer 互換のモジュールには、エレキジャックのフィジカル・コンピューティング *3 で取り上げられている Ginger, Pepper, Sugar があります。

GainerMini.jpg

*1 http://gainer-mini.jp/
*2 http://gainer.cc/
*3 http://www.eleki-jack.com/FC/


■Gainer mini と玄箱 PRO のデバイス・ドライバ
 Gainer mini は、玄箱 PRO からは USB シリアルとして扱われます。デバイス・ドライバは、 usbserial の汎用ドライバが使用できます。Debian 化した玄箱 PRO の場合には、
/sbin/insmod /lib/modules/2.6.25.4/kernel/drivers/usb/serial/usbserial.ko vendor=0x09b9 product=0x0000
を実行します。0x09b9 は Gainer mini のベンダーID、0x0000 がプロダクトIDです。実行時にエラー
kurobox:/# /sbin/insmod /lib/modules/2.6.25.4/kernel/drivers/usb/serial/usbserial.ko vendor=0x09b9 product=0x0000
insmod: error inserting '/lib/modules/2.6.25.4/kernel/drivers/usb/serial/usbserial.ko': -1 File exists

が出た場合には、rmmod でデバイス・ドライバを外します。usbserial モジュールに依存しているモジュールがあれば、それも外します。まず lsmod を実行します:

kurobox:/# lsmod
Module                  Size  Used by
ftdi_sio               34248  2
usbserial              30960  5 ftdi_sio

 ftdi_sio モジュールが usbserial に依存しているので、以下のようにします:

kurobox:/# rmmod ftdi_sio
kurobox:/# rmmod usbserial
kurobox:/# /sbin/insmod /lib/modules/2.6.25.4/kernel/drivers/usb/serial/usbserial.ko vendor=0x09b9 product=0x0000

 LCDd などがシリアル・ポートを開いているとエラーになります:

kurobox:/proc/bus/usb# rmmod ftdi_sio
ERROR: Module ftdi_sio is in use

 その場合には、rmmod の前に、

kurobox:/proc/bus/usb# killall LCDd

などしてシリアル・ポートを開いているプロセスを止めます。

■cu を使って試してみる
 Gainer mini をブレッドボードに挿すなどして USB ケーブルで玄箱 PRO とつなぎます。 cu コマンドを使って Gainer mini と通信ししてみます。ttyUSB0 として認識されている場合には、

cu -l /dev/ttyUSB0

とします。PC で試す場合には、TeraTerm や HyperTerminal を使うとよいでしょう *4。プロトコルの設定は、ボーレート: 38400bps, ビット数: 8ビット, パリティ:なし, フロー制御:なしとします。Gainer mini のコマンドは、

<コマンド>*

Gainer mini からの返り値は、

<値>*

で返ってきます*5。まず Q (リセット), KONFIGURATION_1 (モード設定), h (LED点灯), l(小文字のL, LED消灯) を試してみます。

kurobox:/# cu -l /dev/ttyUSB2
Connected.
Q*KONFIGURATION_1*h*l*~.

Disconnected.
kurobox:/#

Q* を送ると Q* が、KONFIGURATION_1* を送ると KONFIGURATION_1* が返ってきます。!* が返ってきたときにはもう一度送ってみてください。エコーバックがないので戸惑うかもしれませんが、気にせず入力します。
 KONFIGURATION_1*を入れると点滅していた LED が消灯し、h*でLED点灯、l*でLED消灯します。cuの終了時には、<ENTER>のあと ~. を送ります。このとき Gainer mini 上のスイッチを押すと N* が、離すと F* が Gainer mini から送られてきます。

*4 Gainer.cc にあるチュートリアル http://gainer.cc/wiki/index.php?title=Tutorial/Basic/Common/03/ja
*5 プロトコルについて書かれたExcelファイル: http://gainer.svn.sourceforge.net/viewvc/gainer/trunk/gainer/firmware/io-module_protocol.xls?view=log

■簡単なプログラムを書いてみる
 おおよそがわかったので、プログラムを書いてみました。LEDを点滅させ、Gainer mini上のスイッチが押されると stderr に文字列を表示するプログラムです。gainer-test.tar.gz をダウンロードして、make でコンパイルしてください。

tar xzvf gainer-test.tar.gz
cd gainer-test
make

Gainer mini が /dev/ttyUSB0 として認識されている場合は、

./gainer-test

とします。そうでない場合は、

./gainer-test <Gainer miniのシリアルデバイス>

で実行します。実行例はビデオを見てください。



<光永 法明>
(2009/1/7: 表記をGainer mini に改めました)

 カテゴリ 

  ,

トラックバック(0)

このブログ記事を参照しているブログ一覧: Gainer mini を使ってみる

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/2404

コメントする

おすすめ書籍
Powered by
Movable Type 4.1