2014年7月アーカイブ

arduino_bt.jpg

Arduinoと秋月で安く売られているbluethoothモジュール(RN-42 XVP)をくっつけて試したところ、いくつか紆余曲折があったものの、うまく動かすことが出来たので纏めておく。

なお、本作成にあたり、addsict氏の記事[1]を非常に参考にさせて頂きました。

使用したもの
・ハードウェア
 ・Arduino Uno
 ・USB Host シールド(Sparkfun製)
 ・RN-42 XVP
 ・SSCI-KIT-XBSOCKET XBeeピッチ変換基板とソケットのセット(スイッチサイエンス製)
 ・抵抗 4.7kΩ、9.1kΩ
 ・9V 0.65A アダプター

・ソフトウェア
 ・felis/USB_Host_Shield_2.0 https://github.com/felis/USB_Host_Shield_2.0
 ・addsict/USBKeyboard2BT https://github.com/addsict/USBKeyboard2BT


やったこと
①USB Host シールドの動作確認
sparkfun_usbhost.jpg参考元のaddsict氏の記事で一番よく分からなかったのがUSB Host シールドから伸びている謎の線である。
国内で入手性しやすいのはSparkfun製のUSB Host シールドだが、調べてみると配線が本家と異なるため、ライブラリーがそのままでは使えないそうな[2]。
改造例はいくつか見つけたが、配線直したりしなきゃいけないのでなかなか面倒。NeoCat氏のように7ピンとresetピンをくっつけさせるのが一番ラクそうである[3]。

この状態でUSBホストシールドのライブラリーを取り込み、サンプル(HID→USBHIDBootKbd)を動かしてみたところ、正常にシリアルコンソール上に押したキーが表示されていることを確認。
なお、USBバスパワーだけではパワー不足なのか、HHKBを動かすにはACアダプター(外部電源)が必要だった。


②RN42-XVPの設定
まず、ブレッドボード上でお手軽に結線させたいため、ピッチ変換基板をはかせた。任意でコンデンサ(パスコン)も付ける。
SSCI-KIT-XBSOCKET.jpg
その後、RTSとCTSを繋いで、GNDとVCCをArduinoのGNDと3.3Vに繋ぐ。Arduino Unoは5Vで動作するが、RN42側は3.3Vで動作するのでRN42のVCCに5Vを繋がないように注意する。

ここから先は英語マニュアルとの格闘になる[4]。
ちなみに自分の環境ではwindowsのbluetoothレシーバーとRN42との相性が悪いためか、何回やっても接続できなかった。諦めてMac Book Air + CoolTermを使用したらすんなりといけた。
CoolTerm上の設定は以下のとおり。

ss_2014-06-26 22.57.59.png

Mac Book Air 上でbluetoothのデバイスを探し、(RNBTうんたらかんらというモジュール名で出てくる)間髪入れず、CoolTerm上で接続して$$$を入力するとモジュール側から応答が返ってくる。(よくよく考えるとBluetoothモジュールの電源をつけただけで、PCとシリアル通信できてしまうのだから、このRN42 XVシリーズはヤバイぐらいお手軽なモジュールである。)

マニュアル見ながら色々なコマンドを流して見たが、最終的に必要なのは
以下の4コマンドぐらいかな。

(1. モジュール名の設定)
SN,HHKB_BT
(2. ペアリングモード化)
SM,6
(3. HID化)
S~,6
(4. reboot)
R,1

その後、addsict氏のUSBKeyboard2BT スケッチを書き込み、USB Host シールドと RN42を以下のように接続させればok。

arduino_rn42.png
RN42はRN41を元にして作った図なのでピンが違うかもしれないが、ココでのメインはArduino側のTXとRXをRN42側のRXとTXに繋ぐよう、クロス結合させることである。(Arduinoにとっての入力はRN42の出力。逆もまた然り。)

ひとつ注意しなきゃいけないのがArduino側の出力は5Vなので、3.3Vまで落とさないとRN42側が壊れてしまう点である。
ここでは抵抗分圧回路[5]を用いて3.3Vまで落としてある。(抵抗分圧は抵抗の比によって決まるので4.7kΩ、9.1kΩでなくても良い。極端な話、4.7Ω、9.1Ωでも電圧は3.3Vに下がるのだが、抵抗値が少ないと今度は電流が大きくなってしまい、回路が焼き切れてしまうそうな。)

ちなみにRN42からやってくる出力(Arduino側から見た入力)は3.3VでもArduinoは識別可能なので、そのまま繋ぐだけでよい。


ここまでやってwindowsでBluetoothデバイスの検索の検索をやってみると...

bt_on_win7.png
↑こんな感じで出てくる。しばらくインストールの準備を待てば使えるようになった。
今のところwindows7、ipod touchの2つで動作確認が取れている。
ただし、Mac Book Airは断続的に切断してしまい、思うように動いていない。
SPPでは問題なく接続できるのに謎。

Arduinoによるプロトタイプは完成したので、今後はArduino Pro Miniとかで小型化させたい。

・参考
[1]Happy Hacking KeyboardをBluetooth化する(無改造版) - addsict's blog http://addsict.hatenablog.com/entry/2013/08/18/170204
[2]Arduino Uno ではじめる ADK - ADK勉強会 (東京) https://sites.google.com/site/adktokyo/unoadk
[3]USBミサイルランチャーをArduinoでコントロール - Okiraku Programming http://d.hatena.ne.jp/NeoCat/20120325/1332677097
[4]RN42XV - rfPIC http://www.microchip.com/wwwproducts/Devices.aspx?product=RN42XV
[5]抵抗計算ツール http://sim.okawa-denshi.jp/teikokeisan.htm

このアーカイブについて

このページには、2014年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2014年2月です。

次のアーカイブは2014年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 7.9.3