本家Arduino Ethernet ShieldにはイーサネットコントローラにWIZnet社のWT5100が搭載されていますが,このEthernet ShieldではMicrochip Technology社のENC28J6を使用しています。ENC28J60チップには28ピンDIPの製品があり秋葉原や通販のパーツショップから600円くらいで入手可能でチップ周辺のパーツも少なく容易に自作できます。
ただし,ENC28J60はWT5100と全く互換性はありませんのでArduino IDEに付属のEthernetライブラリを用いることはできません。ENC28J60向けには,こちらのライブラリを使います。
回路図は下のとおりです。
いつものように片面基板に実装しました。
ethershieldライブラリに同梱されているサンプルスケッチを動かして見ました。WT5100はイーサネットとTCP/IPプロトコルをチップに内包していますが,ENC28J60はイーサネット・プロトコルのみですのでTCP/IPはethershieldライブラリ側で実装されています。
イーサネットPHY(物理層)にかかわる回路が通信品質に大きく影響します。何も考えずに組んだ回路ではpingテストを行うと半分近くのパケットがロスしました。
この回路を見るとフェライト・ビーズが使ってあったりしてノイズに苦しめられそうな嫌な予感がしました。案の定ノイズについて何も考えず回路を組んだら45%ものパケットロスが発生しました。色々やってみたら。急所はRBIAS周りのようです。データシートにはRBIAS抵抗にはノイズの誘導を避けるためにチップ抵抗を使ってRBIASピン至近でグランドに落とせと言うようなことが書いてあります。しかし,ここではチップ抵抗を使わずリード部品の1/4W抵抗を使いながらノイズ誘導を抑えることにします。
update 2009.10.04
upload 2009.09.28