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」ライブラリは以下のプロトコルをサポートしています。
DHCP/DNS/UDP
一方、「UIPEthernet」はライブラリは以下のプロトコルをサポートしています。
DHCP/DNS/UDP/TCP/ARP/ICMP

こ ちらのページで「Arduinoにイーサネット(ENC28J60)を追加するときのライブラリの正しい選び方」が紹介されてい ます が、
「because it is fully compliant with Arduino Ethernet Lib」という理由で「UIPEthernet」がお薦めのようです。
そこで、私も「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で使う場合jは、以下の様になります。
SSピンの使い方がW5100とは違います。最初これに気が付かずにはまりました。
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)の接続はこ ちらで紹介されて い る通りです。
W5100 ATMEGA328
GND GND
VCC 5V
MISO Pin#12
MOSI Pin#11
SS Pin#10
SCK Pin#13
RST (※)

(※)オープンでも動きますが、スケッチ起動時に一瞬GNDに落とした方が確実に動きます。

W5100とATMEGA2560の接続もこ ちらで紹介されて いる通りです。
なぜかCSにはATMEGA2560標準のPin#53ではなくPin#10を使います。
W5100 ATMEGA2560
GND GND
VCC 5V
MISO Pin#51
MOSI Pin#50
SS Pin#10
SCK Pin#52
RST (※)


次回から、これらのモジュールを使ったネットワーク通信を紹介します。

続く...