Make一覧

Harpy nanoでUSB HID Keyboard変換テスト

 USB HOST SHIELD 2.0のライブラリを修正。最新ソースをgit hubから拾ってきて展開。#define DEBUGがあちこちで生き残ってるのでコメントアウト。 message.cppのUsbDEBUGlvlを0x80から0x00へ変更。あと、ADKも使うのでavrpins.hの#define BOARD_MEGA_ADKをアンコメント。
 これでコンパイルして、HEXをATmega2560に焼いてみたら、OK。昨晩小手先の対応をした不要なReportも流れてこない。
 同じソースをArduinoUNO用に焼いてみても期待通りの動作。

 安定動作しているようなので、以前買っただけで使っていなかった株式会社 鳥人間Harpy nanoを使ってみた。PCとつなげるHID device役はSparkfunのATmega8u2ブレイクアウトを使用。PICでHID deviceを作ったらそっちも試す予定。

20130421_01

Harpy nanoはロジック3.3V動作なのでHID device側の電源選択半田ブリッジを5Vから3.3Vに変更。肝心なときにハンダ吸い取り線が見つからず探しちゃったよ。あとHarpy nanoのMAX3421Eのリセットの接続が旧USB HOST SHIELDの設計なので、起動時にdigital7ピンをlow→highとやってソフトでリセット。

20130421_02

 Harpy側はシリアル書き込みが使えるので、ArduinoIDEからArduino Pro/Pro miniの3.3V Clock8MHzで書き込み。ATmega8u2はHEXをAVRISPmk2で書き込み。両者のtx rx gndを接続して、無事動作を確認。ATmega8u2が3.3VでClock16MHzなんだけど、まぁ動く。5Vに戻して、ATmega8U2のtxに分圧抵抗を入れるのかも。

 次はUS、JP両対応です。ってどこかのデジタル入力にプルアップ抵抗とGNDにつなぐスイッチをつけてチェックして、HighならJP,LowならUSで変換テーブルのポインタを切り替えるだけですけど。PC側が変わるときってUSBケーブルを差し替える状態なので、変換機の電源も入れ直しになるからプログラムの起動時にチェックすりゃええかな。毎度毎度チェックしても良いけど。

 忘れてた、CAPSロックのLED対応もしないと。CAPSLOCKを吐いていないのにLEDはトグルしてしまうのです。気にしなきゃいいのだけど。これってHID HOST側から制御できるはず。現に自宅のDriverでキー置き換えしてるPCだと、CAPSキーを押してもCAPSのコードを出さない限りはLEDに影響ない。キーボード内部でON/OFFしてるわけでなく、PC側からなんかもらってる筈。

 夜、ADKにてJIS/US切り替え実装完了。Harpyでも使えるDigital5ピンを使用。Harpyはピンソケットを外してピンヘッダに置き換えようかな。で、このJIS/US切り替えを固定スイッチでなく、キーボードのキーコンビネーションから切り替えられるようにしても良い。CTRL-SHIFT-ALT-CAPSLOCKとか開いているだろうか?


PICでLチカ

20130420_01

 PICとPICKIT3が届きました。とりあえずLチカしてみました。無駄にLEDアレイを配置。PICのXCのライブラリを把握していないのでまずはこんなもんから。

 ちょっと思ったんですが、PIC18F4550あたりを使って、キーボードマトリックスのデータをHIDにして出してしまうのもありかもと。FILCOのフルキーボードの中に組み込む形で。スイッチつけて出力するReportをUSタイプとJPタイプ切り替え可能にしたりして。


PICに手を出す

 結局PICとPICKIT3を秋月に発注してみました。PIC18F2550とか。ライターは自前で手持ちのAE-UM232Rとかで作っても良かったんですが、時間がないのと1個は純正品があるほうが余計なハマリもなかろうと奮発。さてどうなりますやら?慣れてるmbed2でUSBホスト役とUSBデバイス役で作る方がゴールは近い気はするが、ちょっとオーバースペック杉だしなぁ。最悪この方法を取ります。

 キー入れ替えの問題はちょっと新たな情報がありました。CAPSLOCKをF13にしてF13をMS-IMEの設定(Google日本語入力が使えなくなるのがかえって良かったか?でも変換候補がバカすぎる。)でIMEトグルに設定する感じで、IMEトグルをCAPSLOCKに割り当てるのはnodokaなどのソフトウエアなしでレジストリで出来ました。しかし、SHIFT-CAPSLOCKをCAPSLOCKに設定するすべがない。F1とかに割り当ててしまおうか?
 ま、USキーボードに日本語キーボードのコードを返すようにハード側でさせたほうがどんな場合にも対応できるので、この線の実験も続きます。お陰でマトリックスLEDのニュースボードの作成が進まない。


AVR Dragonの保護シールド作成

20130414_01

 まずFritzingで想定する実体配線図を作成。大体いつもこのやり方。回路は「半田付してます。」さんのこの記事。(実体配線図で74HC540の9番ピンが浮いてますが、8番とはんだブリッジしてプルアップしてあります。)

 60Ωの抵抗が手持ちになかったので、75Ω。100Ωは1/4Wの大きめの奴しかなかったです。ツェナーダイオードは5vのルネサスの奴。その他ダイオードは秋月で50本100円の1N4148。基本的に手持ちの部品を代用。

20130414_02

 ちょっと実体配線図とは変わっちゃってますし、お見苦しい部分もありますが、完成。テスターで電源周りがショートしてないかを確認してからテスト。

20130414_03

 こんな感じでAVR Dragonの上に載せて使います。自作保護シールドの裏にあるメスコネクタとDragonのISPの6ピンコネクタで接続してます。6ピンの並行ケーブルの手持ちが無かったので(早速共立エレショップに発注しました。)、AVRISPmk2から外して接続。AVRstudio6での確認ですが、ArduinoUNOとArduinoLeonardoのFUSE BITなんかは読めてました。

 今回JTAGでなくISPのバッファなんですが、DebugWireモードで実機デバッグを試してみたいと思ってます。あ、入れるためのケースのコネクタ部分の窓加工して入れ込む作業が残ってた。加工が楽なので、厚紙ケースでも良いけどなあ。


ATMEL Studio6で行っておこう

 古い環境を構築するのはやめて、問題が出るまではATMEL Studio6で行っておこう。ってかWindows8 x64上でAVR Studio4からAVRISPmk2を認識させる事が出来なかった。VMのXP x86からは使えるようには成りましたが。遅くて使えません。
 PCを買い替えようかとも思ってみた。shuttleのベアボーンのXH61Vにcore i3か i5を積むかとか。でも3万5000円コースになるので、そんな余裕は無いから止め。

 で、ATMEL Studio6で開発してみて、ライブラリとかで問題があれば直せばいいじゃんと。どうせ動かすマイコンのプログラム領域はしれたもんだがから、ソース直してもしれたもんだろうと。

 この線で行きます。

 USBデバイスをいじるのは大変だ。


AVR Dragonの予防回路の準備

20130409_01

 2月くらいにDigi-Keyで買ったAVR Dragon。どうやら最低限度の回路で、安全策がとられていなく、壊れる事も多々と。
この方の対策を参考に回路を組んでみたのが上の図。うちも74HC540Pはレールで在庫あり。
 Fritzingで書いてみたのだが、なんか厳しい。74HC540Pは縦に配置すべきだったか?
ゆっくり検討してみます。ってかFritzingの標準の抵抗がデカすぎるんだな。