Arduinoのネットワーク通信
ENC28J60とW5100
ENC28J60チップとW5100チップを使った安価なArduino用のLANモジュールを入手しました。
ENC28J60のモジュールには5V仕様の物と、3.3V仕様の物が有ります。
左:3.3V仕様
右:5V仕様

5V仕様の物は裏にAMS1117のレギュレータが実装されていて、チップ本体は3.3Vで動いています。
UNOで使うなら5V仕様の方が楽ちんです。

ArduinoでENC28J60を使う場合、「EtherCard」と「UIPEthernet」の2つのライブラリを選ぶことができま す。
(他にも探せばあるかもしれません)
EtherCard
https://github.com/njh/EtherCard
このライブラリは以下のプロトコルをサポートしています。
DHCP/DNS/UDP
UIPEthernet
https://github.com/UIPEthernet/UIPEthernet
このライブラリは以下のプロトコルをサポートしています。
DHCP/DNS/UDP/TCP/ARP/ICMP
私はTCPを使いたかったので「UIPEthernet」を使いました。
以下のページから 「UIPEthernet-master.zip」をダウンロードし、ライブラリに追加します。
https://github.com/UIPEthernet/UIPEthernet
なお同じ名前のライブラリがこちらにありますが、これは古いバージョンです。
https://github.com/ntruchsess/arduino_uip
Arduinoのライブラリは同じ名前の物が複数あるので注意が必要です。
ENC28J60とUNO(ATMEGA328)の接続はこちらで
紹介されている通りです。
ENC28J60 |
ATMEGA328 |
SO |
Pin#12 |
SI |
Pin#11 |
SCK |
Pin#13 |
CS |
Pin#10 |
VCC |
(※1) |
GND |
GND |
RESET |
(※2) |
(※1)
3.3Vモジュールの時は3.3V。
5Vモジュールの時は5V。
3.3Vモジュールの場合、UNOオンボードの3.3Vではこ
ちらの理由で安定して動きません。
5V→3.3Vのレギュレータを使って3.3Vを供給する必要が有ります。
(※2)
ArduinoのResetポートにつなぐよりも、PullUpした方が安定するようです。
PullUpしても動かないときは、一瞬GNDに落とした後、PullUpすれば動きます。
ENC28J60をATMEGA2560で使う場合は、以下の様になります。
CSピンの使い方がW5100とは違います。ATMEGA2560標準のPin#53を使います。最初これに気が付かずにはまりました。
ENC28J60 |
ATMEGA2560 |
SO |
Pin#50 |
SI |
Pin#51 |
SCK |
Pin#52 |
CS |
Pin#53 |
VCC |
(※1) |
GND |
GND |
RESET |
(※2) |
こ
ちらに様々なボードの結線図が公開されています。
W5100チップはUNO用の純正Etnernetシールドでも使われているチップです。
ENC28J60($2.82)よりも少し高めの$6.03でした。

このモジュールについては、こ
ちらのページに詳 しく紹介されていますが、IDE標準の「Ethernet.h」で動きます。
W5100とUNO(ATMEGA328)の接続はこ ちらで紹介されて
い る通りです。
ATMEGA328 |
W5100 |
ATMEGA328 |
GND |
GND |
V+5 |
5V |
RST(※) |
RST |
NSS |
Pin#10 |
Pin#13 |
SCK |
MOSI |
Pin#11 |
Pin#12 |
MISO |
GND |
GND |
|
POE+ |
POE- |
|
(※)オープンでも動きますが、PullUpした方が安定するようです。
どうしても動かないときは、スケッチ起動時に一瞬GNDに落とすとつながります。
ArduinoのResetポートにつなぐとスケッチのコンパイルが終わりません。
W5100とATMEGA2560の接続もこ ちらで紹介されて
いる通りです。
なぜかCSにはATMEGA2560標準のPin#53ではなくPin#10を使います。
ATMEGA2560 |
W5100 |
ATMEGA2560 |
GND |
GND |
V+5 |
5V |
RST(※) |
RST |
NSS |
Pin#10 |
Pin#52 |
SCK |
MOSI |
Pin#51 |
Pin#50 |
MISO |
GND |
GND |
|
POE+ |
POE- |
|
その後、W5500のモジュールを入手したので次回紹介します。
続く...