デイリーレポート一覧

今週はいろいろある

 朝会社についたら連れから電話が。出てみたら、こないだ新入りになった金魚のうち丹頂のほうが昇天とな。
昨日内部ろ過の水作を設置するのに底砂をいじったせいだろうか?一番泳ぎが上手かっただけにちょっと残念である。

 帰宅後。丹頂を埋葬。

 帰宅したらHarpy&8U2をちょっといじろうと思っていたのだけど。Harpyが見つからない。ここじゃないここでもないと探して諦めた頃に部品だなの手前側にあるのを発見。
 サクッとブレッドボードで配線。今回は8U2を5V駆動に戻して、8U2のUSBの5VでHarpyを駆動。さらにHarpyから8U2のシリアルはどうせ片方向なのでHarpyのTXを8U2のRXにつなぐだけ。逆方向はつなぎません。3.3V系のHarpyから5V系の8U2はロジックレベル的にはOK。Harpy側が3.3VのHIGHを出しても8U2のHigh相当は2.5V程度でしょうから。もっと低かったかも。
 コードの方はUNO&HOSTシールドの方と同じようにUS→JPNだけでなくUS→USの切り替えも入れました。というわけで、このブログエントリーはこいつで書いてます。

20130424_01

 もうすこしコードを整理したい。電源オン直後のモディファイヤがなんか微妙に初期化されてない気がする。ハード側はHarpyはピンソケットでなくてピンヘッダに付け替えて、ユニバーサル基板に固定して、クロージャーに納めればこれはこれで使えそう。電源は8U2のUSB5Vを使用している関係上Harpy5VのLDOの入りと出の両端に5Vをかけてる状態だけど問題ないかな?問題ありそうなら5V側のLDOを外しちゃいますが。


エーハイム 2074またまた水漏れ

 事は昨日です。帰宅して自分の机に座ろうとしたら、ペチョ。フラッシュバックしてすぐ分かりました。
また水漏れしてるよ2074。水槽台の扉を開けるとベチョベチョ。電源止めて、フィルターのなか開けて、それほど汚れていないウールフィルターを変えたりOリングのワセリンを強化して再セット。電源ON。
 水槽の水面のとこにテープを貼っておいて様子見。
 1時間後くらいに見たら水面が下がってる。また漏れてるよ。いろいろ見てみたら、モーターヘッドとろ材バケツの接合部ではなく、モーターヘッドの電源コネクタのあたりから漏れている。
 どうしようもないので、一旦在庫の水作Mに切り替え。

 本日ぐぐってみたら、2074系で同様な水漏れ事故が多々見つかった。モーターヘッドについてる呼び水機構の弁に問題ありとな。
さてここで問題発生です。帰宅して取ってあった製品箱をみたけど保証書が見つかりません。メールを検索すると2011/4/4にチャームから買っていることがわかったので一応まだ3年の保証期間内。まだ1年あるので、じっくり探してみるかなぁ。でも、取扱説明書の裏とかが保証書だったりすると捨てている可能性が高い。だってPDFの取説があるので実物なんて場所とるだけでいらんでしょ。
 昨晩緊急発注した水作フラワーも先ほど届いたので、しばらく外部ろ過でなく、内部ろ過で過ごそうかと思う。
 保証書が見つかって修理できたとしても、水漏れブザーの作成は必須だなぁ。

 そういうわけで昨日水槽台のあたりで座ったりしゃがんだり立ったりを繰り返していたので、内腿が筋肉痛です。運動しないとね。


Arduino UNO & USB HOST SHIELDのキーボードコンバータ運用テスト開始

20130421_03

 USキーボード対応も出来たので、Arduino UNO版もいれ変えました。シールドのdigital5ピンからGNDにジャンパ入れてUSモードです。
 で、問題がないか確かめるために自宅で運用を開始してみます。このブログエントリー自体も、すでにこの変換機を通してます。OS側の変換ドライバは止めてます。この無線キーボードはCAPS,NUMLOCKなどのLEDが無いので、UNOのソフトはLED対応はしてないバージョンです。今のところレスポンスなども特に問題は無さそうです。


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とか開いているだろうか?


初心に戻って調査(USBキーボードコンバータAVR編)

20130420_02

 上記のような接続でテスト。PCの代わりにUSB HOST shieldをつなげて、飛んでくるデータをウォッチしてみた。本来の回路であるADKではATmega2560からHIDファームを焼きこんだATmega8U2との間をシリアルでウォッチ。
 ADK側のウォッチポイント1はすごく正しくデータが流れていた。

 が、PCの代わりにおいたウォッチポイント2では、キーを打っている間は正しいデータが受信されているものの、しばらくキー入力がないと妙なデータが流れ込んでいた。HIDのレポートのはずなのだがBinaryで50 6F 6C 6C 3A 46 46 0D 0A。
0D 0A がある時点で改行コードかってことはASCIIか?ってことでその前は「Poll:FF」。そもそもHID reportはASCIIコードじゃないし、1レポートは1キーだ(実際は同時押し6キーまではありですが)。図のATmeaga8U2以降でこのデータが追加されている。しかもこのデータの通信は不安定で、場合によってビットがずれたりしている。これをそのままPCに繋ぐとモディファイヤが絡むと非常に厄介な誤動作になる。(実際体験して、速攻でUSBケーブル抜きましたし。)
 とりあえず、おかしなHID Reportになっているから安定しなかったわけで。
 なぜ、時間をおいた時に上流から流れてきていないものが出力されて来ているのかを考えたい。ADK→ArduinoUNOのUSB部分の通信を、ドライバが復活したプロトコル・アナライザLAP-Cで見てみようと思う。あとUSB HOST Shieldのライブラリと読んでるとやたらとSerial.Printが入ってるのが気になる。ATmeaga8U2のHID化ファームは多分白だと思っている。

 なんとなくですが、USB付きのPICを使わなくても片付きそうな気がしてる。でも、USB HOST shieldだけに問題があった場合はハマるかな。

[ちょっと置いて]
 ADKのATmega2560からATmega8U2の間にシリアルを置いてみたら「Poll:FF」やら「Poll:1」をシリアルに流してるのが確認できた。ライブラリを修正すれば治りそうだ。

[さらにあと]
 確かにライブラリ内でデバッグ用にSerial決め打ちでデバッグ文字を出してる部分はあったけども。それだけでなく、純粋にUSBホストとして受け取っているレポートがあった。けど、よくわからん。しばらくキーボードをいじらないと出てくるので接続確認のポーリングなのかしらん。07 00 1dで始まるReport。それ以降の部分は適度に変わるのでなんとも。仮にこの文字列のReportは無視するようにしたら、とりあえず異常動作をすることがなくなっている。一部、CAPS LOCKのランプが逆になる事もあるが、その辺はキーコンビネーションのバリエーション対策で解決できそうだ。もしかしたらこれで行けたのかしらん?
 明日状況を明確にして日本語キーボードのマシンにつなげて安定化できたら、小さい回路で実現する方向を試します。あとは、スイッチでモードを切り替えられるようにして、クロージャーに入れて・・・と。やっと終わりが見えてきたかも。


PICでLチカ

20130420_01

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

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