Arduinoで有線LANを使うためのメモ。
デバイスの違いを中心に。
◆スケッチ
ファイル/スケッチ例/Ethernet/WebServer
◆チップ
Ethernetを処理するチップには、Arduino向けによくみかけるものでW5100,W5200,W5500,ENC28J60がある。
スケッチにインクルードするヘッダファイルが違うので注意。
W5100とW5200とW5500の場合は次。
1 |
#include <Ethernet.h> // W5100とW5200とW5500の場合 |
ENC28J60の場合は次。
1 |
#include <UIPEthernet.h> // ENC28J60の場合 |
ネット上の記事を読むと、W5500はEthernet2.hを使う、みたいな記述があったけど、Ethernet.hそのままで行けた。
オフィシャルのリファレンスでも、行ける風に書いてあるので、どこかの段階で対応したのかも。
UIPEthernet.hは、ツール/ライブラリを管理 でライブラリマネージャーを開き、「UIPEthernet」で検索すると出てくるのでインストールする。
◆メモリ
UNO/Nanoの場合、フラッシュメモリとSRAMをだいぶ使ってしまうので、他のライブラリ類も大きいのは使いずらい。
無理にあれこれ試行錯誤するよりもMega2560に行ってしまった方が良いかも。
ライブラリ | フラッシュメモリ | SRAM |
---|---|---|
Ethernet.h | 15324バイト(49%) | SRAM847バイト(41%) |
UIPEthernet.h | 18414バイト(57%) | SRAM1509バイト(73%) |
◆消費電流
100Mbpsの場合、120~132mAを使うようだ。
Arduino UNO(互換)の場合、3.3V出力電流は50mA~150mAなので、足りるかもしれないけど余裕はない。
Arduino Nanoの場合、公式品でも50mAなので、全然足りない。
なのでシールド類は、3.3Vからではなく、5Vからとってレギュレータで3.3VにしてEthernetチップ側に供給している。
AMS1117や1117M3のチップがそれだ。
レギュレータが無いモジュールを使うとなると、別途レギュレータをつけたりしないといけない。
◆配線
SPI接続を行う。
Arduino側(UNO*/Mega)ポート | モジュール側 |
---|---|
D10/D53 | CS(SS) |
D11/D51 | SI(MOSI) |
D12/D50 | SO(MISO) |
D13/D52 | SCK |
RESET | RST |
3.3V** | VCC |
GND | GND |
*UNOとNanoは同じポート
**Arduino Nanoの場合、3.3Vから引くのではなく、5Vから作るか別途用意する必要がある。
モジュール使用例1
AliExpressで購入したもの(ENC28J60)。
https://ja.aliexpress.com/item/1678440647.html
たぶん↓と同じ。
https://www.amazon.co.jp/dp/B07WC2XM77/
Arduino Nanoで使うなら、別途電源を使うやり方もある。
モジュール使用例2
だいぶ前にSwitchScienceで購入したもの(W5200)。
https://www.switch-science.com/catalog/875/
モジュール使用例3
AliExpressで購入したもの(W5500)。
https://ja.aliexpress.com/item/32901601162.html
レギュレーターがついているので、5Vを直結できて楽。
シールド使用例
どちらもレギュレーターが付いているし配線不要で、これが一番楽。
◆選定
UNO/Nanoで使うならチップはW5100/W5200/W5500が良い。ENC28J60はライブラリがメモリ食いすぎてLチカの次に進みにくい。
Mega2560で使うならそこまで気にならないかもだけど。
モジュールかシールドかは使い方によるだろうけど、モジュールの場合レギュレーター付きの方が楽。
◆参考
[SPI] イーサーネットボード (ENC28J60)
https://ht-deko.com/arduino/ether_spi.html
WIZ850io – スイッチサイエンス
https://www.switch-science.com/catalog/3683/
WIZ820io–販売終了 – スイッチサイエンス
https://www.switch-science.com/catalog/875/
Arduino Uno の 3.3V出力電流について | macsbug
https://macsbug.wordpress.com/2015/08/01/