W5500 Ethernet Shield v1.0
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
W5500 Ethernet Shield v1.0は、プロジェクトにインターネット接続を提供することができます。W5500は、TCP/IPスタック、10 / 100 Ethernet MACおよびPHYを組み込んだ単一チップを使用することで、ユーザーがアプリケーションにインターネット接続を持つことを可能にします。このシールドには、Groveコネクタ2つとmicroSDカードソケットがあり、大量のデータをGroveセンサーから保存する必要があるプロジェクトをサポートします。RJ45ポート(イーサネットケーブルが接続される場所)は低い位置にあるため、必要に応じてこのシールドの上にさらにシールドを積み重ねることができます。
特徴
- ハードウェアTCP/IPプロトコルをサポート:TCP、UDP、ICMP、IPv4、ARP、IGMP、PPPoE
- 同時に8つの独立したソケットをサポート
- パワーダウンモードをサポート
- UDP経由のWake on LANをサポート
- 高速シリアルペリフェラルインターフェース(SPI MODE 0, 3)をサポート
- TX/RXバッファ用の内部32Kバイトメモリ
- 10BaseT/100BaseTX Ethernet PHYを組み込み
- 自動ネゴシエーションをサポート(フルおよびハーフデュプレックス、10および100ベース)
- IPフラグメンテーションはサポートしない
- 3.3V動作で5V I/O信号耐性
- LED出力(フル/ハーフデュプレックス、リンク、速度、アクティブ)
- Micro-SDカードソケット
- I2CおよびUART用のGroveコネクタ
ハードウェア概要
ハードウェア構成
- RJ45:イーサネットポート
- IC W5500:ハードウェアTCP/IPイーサネットコントローラ
- リセットボタン:イーサネットシールドのリセット
- SDカードソケット:FAT16またはFAT32をサポートするMicro SDカード;最大ストレージは2GB
- I2Cインターフェース
- UARTインターフェース
Arduinoでのピン使用
- D4:SDカードチップ選択
- D10:W5200チップ選択
- D11:SPI MOSI
- D12:SPI MISO
- D13:SPI SCK
W5500とSDカードはどちらもSPIバスを介してArduinoと通信します。ピン10とピン4はW5500およびSDスロットのチップ選択ピンです。これらは一般的なI/Oとして使用することはできません。
使用方法
例を示します。この例では、データをウェブページにアップロードし、センサーデータをSDカードに保存します。
ハードウェア
部品リスト:
名前 | 機能 | 数量 |
W5500 Ethernet Shield | イーサネット接続を提供 | 1 |
Seeeduino V4.2 | コントローラ | 1 |
Grove-Temp&Humi Sensor | センサー | 1 |
Base Shield V2 | ベースシールド | 1 |
Micro SDカード | データ保存 | 1 |
手順:
- W5500 Ethernet Shield v1.0をArduinoに取り付け、Base Shield V2をEthernet Shieldに取り付け、Grove-Temp&HumiセンサーをBase ShieldのD5 Groveポートに接続し、SDカードを取り付けます。
- 標準イーサネットケーブルでイーサネットシールドをネットワークに接続します。
- USBケーブルでArduinoをPCに接続します。
ソフトウェア
- Arduinoライブラリのインストール方法の手順に従ってライブラリをインストールしてください。
- 以下のボタンをクリックしてW5500 Ethernet Shieldライブラリをダウンロードしてください。
- ダウンロードしたライブラリをArduino IDEにインストールします。
- 以下のコードをスケッチにコピーしてアップロードしてください。
//このスケッチはW5500 Ethernet Shield、Seeeduino V4.2、Grove-Temp&Humi、
//Base Shield V2センサーおよびMicro SDカードを使用して温度と湿度の収集ステーションを設計します。
//温度と湿度センサーをBase ShieldのD5 Groveポートに接続します。
//温度と湿度データをウェブページに公開し、5秒ごとに更新します。
//また、データをSDカードのdatalog.txtファイルに保存します。
#include <SD.h>
#include <SPI.h>
#include <Ethernet.h>
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 5
const int chipSelect = 4;
// ローカルネットワークに応じてIPアドレスを更新してください
#if defined(WIZ550io_WITH_MACADDRESS) // WIZ550ioの割り当てられたMACアドレスを使用
;
#else
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
#endif
IPAddress ip(192,168,0,177);
// Ethernetサーバーライブラリを初期化
// 使用するIPアドレスとポートを指定
// (HTTPのデフォルトポートは80):
EthernetServer server(80);
void setup() {
// シリアル通信を開始し、ポートが開くのを待つ:
Serial.begin(9600);
while (!Serial) {
; // シリアルポートが接続されるのを待つ。Leonardoのみ必要
}
// Ethernet接続とサーバーを開始:
#if defined(WIZ550io_WITH_MACADDRESS)
Ethernet.begin(ip);
#else
Ethernet.begin(mac, ip);
#endif
server.begin();
Serial.print("サーバーのIPアドレス: ");
Serial.println(Ethernet.localIP());
// SDカードの初期化
Serial.print("SDカードを初期化中...");
// カードが存在し、初期化できるか確認:
if (!SD.begin(chipSelect)) {
Serial.println("カードが失敗したか、存在しません");
// これ以上何もしない:
return;
}
Serial.println("カードが初期化されました。");
}
void loop() {
// クライアントの接続を待つ
EthernetClient client = server.available();
if (client) {
Serial.println("新しいクライアント");
// HTTPリクエストは空行で終了
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// 行の終わりに到達した場合(改行文字を受信)かつ行が空の場合、HTTPリクエストが終了
if (c == '\n' && currentLineIsBlank) {
// 標準HTTPレスポンスヘッダーを送信
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // レスポンス完了後に接続を閉じる
client.println("Refresh: 5"); // ページを5秒ごとに自動更新
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// ウェブ上に入力ピンの値を出力
int chk;
chk = DHT.read(DHT11_PIN); // データを読み取る
client.print("湿度: ");
client.print(DHT.humidity);
client.println("<br />");
client.print("温度: ");
client.print(DHT.temperature);
// 入力ピンの値をSDカードに書き込む
// ログデータを組み立てるための文字列を作成:
String dataString = "";
// 湿度と温度を読み取り、文字列に追加:
dataString = String(DHT.humidity) + String(DHT.temperature);
// ファイルを開く。注意: 同時に開けるファイルは1つだけ
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// ファイルが利用可能なら書き込む:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// シリアルポートにも出力:
Serial.println(dataString);
}
// ファイルが開けない場合、エラーを表示:
else {
Serial.println("datalog.txtのオープンエラー");
}
break;
}
if (c == '\n') {
// 新しい行を開始
currentLineIsBlank = true;
}
else if (c != '\r') {
// 現在の行に文字を取得
currentLineIsBlank = false;
}
}
}
// ウェブブラウザがデータを受信する時間を与える
delay(1);
// 接続を閉じる:
client.stop();
Serial.println("クライアントが切断されました");
}
}
結果
ここでは結果を示します。
- SDカードをコンピュータに挿入すると、いくつかの温度と湿度の情報が表示されます。
- さらに、ウェブ上で情報を確認することもできます。
とても簡単ではありませんか?ぜひプロジェクトを始めてみてください。
回路図オンラインビューア
リソース
- W5500 Ethernet Shield(Eagle形式)
- W5500 Ethernet Shield 回路図(PDF形式)
- W5500 Ethernet Shield PCB(PDF形式)
- W5500 Ethernet Shield ライブラリ
- W5500 Ethernet Shield データシート(PDF形式)
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!お客様の製品体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。