Skip to main content

W5500 Ethernet Shield v1.0

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

pir

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コネクタ

ハードウェア概要


pir

ハードウェア構成

  1. RJ45:イーサネットポート
  2. IC W5500:ハードウェアTCP/IPイーサネットコントローラ
  3. リセットボタン:イーサネットシールドのリセット
  4. SDカードソケット:FAT16またはFAT32をサポートするMicro SDカード;最大ストレージは2GB
  5. I2Cインターフェース
  6. UARTインターフェース

Arduinoでのピン使用

  1. D4:SDカードチップ選択
  2. D10:W5200チップ選択
  3. D11:SPI MOSI
  4. D12:SPI MISO
  5. D13:SPI SCK
note

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

手順:

  1. W5500 Ethernet Shield v1.0をArduinoに取り付け、Base Shield V2をEthernet Shieldに取り付け、Grove-Temp&HumiセンサーをBase ShieldのD5 Groveポートに接続し、SDカードを取り付けます。
  2. 標準イーサネットケーブルでイーサネットシールドをネットワークに接続します。
  3. USBケーブルでArduinoをPCに接続します。

pir

ソフトウェア

  • ダウンロードしたライブラリを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("クライアントが切断されました");
}
}

結果

ここでは結果を示します。

  1. SDカードをコンピュータに挿入すると、いくつかの温度と湿度の情報が表示されます。
  2. さらに、ウェブ上で情報を確認することもできます。

pir

とても簡単ではありませんか?ぜひプロジェクトを始めてみてください。

回路図オンラインビューア

リソース

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!お客様の製品体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。

Loading Comments...