デジタルガジェット一覧

USB調査用機器

20130405_03

 ATmega8U2から出てるUSBの信号をみるべく、USBコネクタがいっぱいのbreakoutをaitendoさんから買いました。あとはクロックの水晶発振子の8MHzと12MHzを10個たば@100円で。
 信号を見るプロトコルアナライザは手持ちのZERO PLUSの奴を使います

 んで持って日曜着予定で、共立エレショップでAT90USB162を買ってみたり。ココの所死活問題なのでUSB関連ばかり調査実証中です。
 誰か、USBのUSキーボードを日本語キーボードに出力コードを変換するデバイスで変換テーブルをカスタマイズ出来るようなガジェットで安定してる奴を作ってくれんかな。もぅこの不安な状態の気持ちが収まるならならお金だしても買いたい。時間がない。プンスカ。


USB HUB 買い足し

 Mega ADKと一緒にUSB HUBも買いました。もちろんセルフパワータイプ。

 マイコンいじってるとそれらのデバイスとのつなぎで、Bタイプ、 mini B タイプ、 micro B タイプといろんなUSBコネクタが必要で。
7ポートのセルフパワーUSBHUBにしました。ってか今使ってる奴と同じ奴。磁石でモニター台にくっつくので便利だが、セルフパワーの電源のACアダプタがデカい。そのうち小さいものに取り替えようと思う。


Arduino Mega ADKでキーボードキー配列コンバータ(ややハマったが解決)

20130404_01

 昨日デバッグしてて使いづらいなと思ったので、思い切ってArduino ADKを手に入れました。
 Arduinoならではのシリアルからプログラムを流しこむのはシリアル担当のチップATmega8U2をUSB HID用に書き換えてるのでできません。なので、ISPプログラミングなのですが、USB HOSTシールドがISPピンを専有してしまって繋げない。昨日は何度シールドを抜いたりはめたりしたことやら。(ピンソケットは出てるので、D10-D10,VCC,GND使えばよかったかも。)

 で、本日届いたADK。キーコード変換機にしてはオーバースペックです。
 昨日のコードをATmega2560 or Mega ADKでリコンパイルしてISPで焼いてみたが・・・。OSC did not start.の悲しい文字がコンソールに。あ、UNOではSoftwareSerialにしてたコンソールのシリアルはSerial1にしてます。Mega ADKはハードウエアシリアルが4個ありますので。Serial0がHIDデータ送信用。

 結局google様に頼ったら、USB HOST SHILED 2.0のライブラリのavrpins.hのの最初の方
#if defined(__AVR_ATmega1280__) || (__AVR_ATmega2560__)のなかの
コメントされてる#define BOARD_MEGA_ADKを有効にしたら無事動作。
うちはATmega1280やATmega2560のチップは今回購入したMega ADKしか無いのでOK。

 ほんでもって、身を持って検証ってことで、コード変換をUS配列→US配列のパススルー。但し、CAPS Lockでは ALT+ チルダを送るようにしてつかって見ることにした。

 しかし、ADKが高いから、Arduino + USB HOST SHIELDにする人はあっても、逆にArduino + USB HOST SHIELDの用途でADKを買う人はそうはおらんかも。


Arduino UNOの8U2のHIDでキーコード変換機

 昨夜の続きです。

 Arduino Leonardoで動作確認したプログラムをArduino UNO with HID用に書き換え。
 基本的に、Leonardo専用のKeyboardオブジェクトのKeyboard.sendReportのところをSerial.writeに書きかえるだけ。引数はどちらもuint8_tの8byteのHIDキーコード配列なので。あと、デバッグ出力がSerialなので、SoftwareSerialへ書き換え。

20130403_01 debug console
 SerialをHID役のATmega8U2との通信に使ってますから、SoftwareSerialを使ってモニタリングしています。
で、なんか動作が変。別電源も与えているから電源ではないと思いたいけど。SoftwareSerialのモニターではUSBホストからのキーコードも、変換後のキーコードも正しく出力されている。しかし、出力先のPCでは変な状態のコードが届いてるようでエディタを開いてカーソルを置いておいてもコントロールコードが行くとヘモヘモになります。
 ATmega8U2との接続を9600bpsから57600bpsとかにあげたらうんともすんとも。Arduino-keyboard-0.3.hexのサイトにソースも公開されていたのみてみると、9600bps固定。でもキーボードならそれくらいの速度でも大丈夫なはず。
 対処療法的に、USB HIDの8byteのデータを一気に送るのではなく、1byteづつ送るようにしたら、とりあえず安定した模様。変な動作をしてたのは、どっかのタイミングでATmega328Pから送ったデータとATmega8U2が受け取ったデータがずれて、ずれたまま動作していたからと思う。シリアル無手順だし一度ずれたらなおしようもない。
 今回いろいろすったもんだやってたので、LUFAというAVRでUSBをやってるプロジェクトも見つけられた。サンプルにHIDホストもあったので、AVRを2つ使って受けと送りを担当させて、両者をi2cなりSPIでつなぐのもありかなぁと思ったりしてます。USBホスト倶楽部というちょっと記事は古いけど参考になるサイトも見つけました。 USBホストってもつなぐのはUSB HIDキーボードに限定してしまえば結構いけるのかも。キーボードだと速度も遅めですからね。


携帯電話のバッテリー購入

20130401_01

 客先にずっと行っていたりすると充電も出来ず困ったり、また動画を撮ったりすると激しく消耗する稼働8ヶ月の純正バッテリーBA900。純正品は超お高いので純正品の2倍以上で厚みも2倍のQCELLの奴をゲット。
 買い換えるのはせめてAndroid4.2の端末でないとなぁ。国内キャリアバージョンだと余計な消せないプレインストールソフトが入っているは、OSのバージョンアップは遅いかそもそもしない状態で困り果ててます。かと言って、国内キャリア版でないとfelicaの対応が微妙だしなぁ、まだ。

 バッテリー的にはなーんか昔HTCのWindowsMobile機であるTouchDiamondでやってたのと似たような状況です。ま、厚みが増えて下の方に重心が映るので、縦に持ってると意外と安定します。
 USB接続のバッテリーもいくつか持ってますが、やっぱ単体での容量アップのほうが持ち運び上は便利。買い換えたら使えないですけどね。

 電池の持ちは今後の実稼働にて判断です。持ちが良ければ昨年末にアウトレットで買ったEモバイルのwifiルータを持ち歩かなくて済むかも。


キーボード配列変換機テスト

20130330_01

 手持ちのデバイスでテスト。Sparkfunの新しい方のUSB HOSTシールドとArduino microにて。
なんかうまく動かない。
 Arduino microをやめて秋月のArduino互換機で試してもおかしい。キーボードを変えてみたら文字コードを受信するようになった。それまでは場所が狭いからテンキーレスのUSキーで試していたのだった。
 でも、Arduino microに戻すとうんともすんとも。なんでだ?

20130330_02
 今朝方緊急発注しておいたArduino Leonardoと、白い基板の本家と同じ回路であろうUSB HOSTシールドが届いた。SparkfunのUSB HOSTシールドは電源周りとか微妙なのです。で、届いたこいつらで試したらUSキーボードのキーコードをサクサク受信。同じように会社から日本語キーボードのノートPCを貸与されて困っていた人の記事のコードもサクッと動いた。一安心。

 あとは、自分用のカスタマイズ。自分がいじれるPCではのどかをインストールしてCAPSロックをIMEのトグルに、SHIFT+CAPSLOCKをCAPSLOCKにしているのでその対応をすればOK。しかしうちにはキーコードを検証する日本語キーボードはツレのPCにしかないのだった。
 完成まではもう少し。で、ツレから日本語キーボードを借りて、キーコードを調べてとかして、なんとか自分の使えるようなものができたっぽい。

 明日は早朝か日曜なのに仕事です。っかなんでこんなことしないといかんのかなぁ。しっかりしてくださいよ>親会社。手に馴染んだ万年筆を使いたいけど、会社が文具量販店のボールペンの配給だけでなく使用を強要するというような感じなのですかね。
 うまく行ったら、基板起こして小型化して頒布とかするかも。ってか同じようなことはMakeTokyoMeeting2012の時にやったらしい方が要るんだよね。その時は我が身にこんな事が振りかかるとは思ってなかったのでスルーしてたのに。今だったら速攻で頒布受けてる。

 まぁ、英語キーボードを使おうなんて、プログラムを書かない、最初から日本語キーボードしか使ったことが無い人ならまったく気にもならないことですから。海外旅行して気づくくらいかな。