読者です 読者をやめる 読者になる 読者になる

SIN@SAPPOROWORKSの覚書

C#を中心に、夜な夜な試行錯誤したコードの記録です。

癒し系ネットワーク機器

1.Crispin Jones氏がデザインしたUSBガジェット

音に反応して表情変化する。眠ったり、息を吹きかけると驚いて目を覚ますといったリアクションするらしい
こんなのを作ってみたい・・・・

という事で、真似事ですが、私も作成してみることにしました。

完成イメージは・・・・
1.簡単なキャラクタを表示してEthernetに接続する
2.pingを打つと返事する。
3.ちょっと放置すると寝てしまう。
4.pingを打つと起きる
5.あまり頻繁にpingを打つと怒る
6.パケットを覗くと話しているのが見える(謎?)

2.キャラクタ表示モジュール

■ドットマトリクスの表示確認

8×8ドットマトリックスLED(BU5004-RG)
・2.54mmのユニバーサル基盤には綺麗に嵌らず、少し足を曲げないと入らない
・ピンは8ピン×3となっているが、綺麗にCOWとROWの順番にはなっていない
短絡箇所が無い事を確認し、全部のピンを表示してテストしてみました。

■シフトレジスタで表示

COLが8ピン、ROWが8ピンで単純に16ピンのIO制御が必要ですが、マイコンのIO節約のためにシフトレジスタ(NJU3711D)を使用しました。これで、MPU側では4ピンで制御できます。
・NJU3711Dの電源は、5Vですが、後で出てくるEthernet周りのICが3.3Vなので、強制的に3.3Vにしました。
※NJU3711Dのリセット端子を放置していて誤動作。安定しないでちょっと嵌りました。

■PIC16F819を使用してモジュール化

PIC16F819とシフトレジスタをまとめてモジュール化しました。
メインのMPUからは5線(5ビット)で制御されます。

3.ICMPネットワークモジュール

■「PIC24FJ64GA004」+「ENC28J60モジュール」


ENC28J60は、実装するのもそれほど難しくは無いのですが、今回は、実装の面積に余裕がないので、モジュールキットを使用しました。
「SPIイーサネット(ENC28J60) モジュール基板」http://optimize.ath.cx/spi_ether/spi_ether.htm

TCPカーネルは、Microchipで公開されているスタックを改造して使用しました。
TCP/IP Stack http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2505&param=en535724

ICMPだけの実装ですので、上記のスタックからARP+IP+ICMP関連だけをリンクし、ICMP.cの
void ICMPProcess(NODE_INFO *remote, WORD len)を改造し、ICMPエコーを受信した際に動作する、ロジックを組み込みました。
最終的に変更したのは、HardwareProfile.h、TCPIPConfig.h、ICMP.cのみです。

■2つのモジュールを合体

全体の回路図

ほとんど出来上がり。あとはソフトウエアで微調整です。

4.完成

外観(表裏)


一応、プログラマ(書き込み機)がこのままオンボードで接続できる設計になっています。
MPUのRAMは、まだまだ余裕があります。時間を見て、いろいろな表情・リアクションを追加してみたいと思います。