WIZ820IO

WIZnetのイーサネットモジュール
http://strawberry-linux.com/catalog/items?code=36018
イーサネットシールドではW5100が使われているが、ブレッドボードでは使いにくい。
以前にもW5100のモジュール(WIZ812MJ)はあったが、バス接続も使えるタイプで2列のため変換基板が必要だった。
大きさとしてもモジュラジャックとほぼ変わらずコンパクトである。
MACアドレスが用意されていないので、使わなくなったLANカードなどから拝借します。(あくまでも実験用)

当初はArduino-0022でしか使えなかったが、WIZnetに連絡した方がいて、Arduino-1.0でも使えるようになった。

SPI接続であるので、基本はMOSI,MISO,SCKであるが、それ以外にSSとRESETと電源まわりの接続が必要。

http://www.wiznet.co.kr/Sub_Modules/en/library/Newsletter_View.asp?PK_NUM=96

上リンク先の図は一見親切ですが、間違っている。PIN mapに従って接続します。

nanoだと小さいブレッドボードでOK

ブレッドボードArduinoだと収まらないので長いやつでこのくらい。3.3Vレギュレータで電源5Vから変換しています。FTDIの3.3Vだと電流が足りないようだ。

WIZ820io Arduino
SS D10
MOSI D11
MISO D12
SCLK D13
RESET RESET
Vin3.3 V3.3
GND GND

ライブラリとデータシートは
http://www.wiznettechnology.com/Sub_Modules/en/product/Product_Detail.asp?cate1=&cate2=&cate3=&pid=1161#tab

のDownloadにある。
library_Arduino_v1.0.zipを展開すると
w5100.cpp, w5100.h
の2つのファイルができるので、これを標準のライブラリと入れ換える。Macの場合は
Arduino.app/Contents/Resources/Java/libraries/Ethernet/utility
にコピーする。念のため、元のファイルはバックアップを取っておく。
実質これだけで後はイーサネットシールドと同様に使える。
もし、イーサネットシールド(W5100)を使う場合は
w5100.hの

#define W5200

をコメントアウトする。
この方法だと他のCPU(tiny,mega644pなど)でもイーサネットが簡単に使えて、2000円位でwebサーバが作れたりします。

Arduino-1.0のEthernet Library

Arduino-1.0からDHCP,DNSが標準装備されている。
また、IPAddressというクラスがhardware/arduino/coresにあり、
これまでは

byte ip[] = {192,168,1,20};

と書いていたものが、

IPAddress ip(192,168,1,20);

という書式で書けるようになった。gateway,subnetも同様。

◯dhcpを使ってIPアドレスを取得する場合は

if (Ethernet.begin(mac)==0) {
    Serial.println("DHCP failed");
    while(1)
      ;
}

◯ネットワーク設定をマニュアルでする場合は
仮に
IPアドレスが192.168.1.10,
DNSサーバ 192.168.1.2,
ゲートウェイ 192.168.1.1,
サブネットマスク255.255.255.0
だとして

IPAddress ip(192,168,1,10);
IPAddress dns(192,168,1,2);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

のように宣言して使える。

◎DNSを使う場合

Ethernet.begin(mac, ip, dns, gateway, subnet);

◎DNSを使わない場合

Ethernet.begin(mac, ip, gateway, subnet);

のようにすることもできる。

DHCPでIPアドレスを取得し、DNSを使って接続する例(exampleのDhcpAddressPrinterとDnsWebClientを参考)

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0x00,0xAA,0xBB,0xCC,0xDE,0x02}; //ボードのMACアドレスを入力する。
char serverName[] = "arduino.cc";

EthernetClient client;

void setup()
{
    Serial.begin(9600);
    if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
        for (;;)
            ;
    }
    Serial.print("My IP address: ");
    for (byte n=0; n<4; n++) {
        Serial.print(Ethernet.localIP()[n], DEC);
        Serial.print(".");
    }
    Serial.println();
    delay(1000);
    Serial.println("connecting..."); 
    if (client.connect(serverName, 80)) {
        Serial.println("connected");
        client.println("GET / HTTP/1.0");
        client.println();
    } else {
        Serial.println("connection failed");
    }
}

void loop()
{
    if (client.available()) {
        char c = client.read();
        Serial.print(c);
    }
    if (!client.connected()) {
        Serial.println();
        Serial.println("disconnecting.");
        client.stop();
        while(1)
         ;
    }
}
広告
カテゴリー: Arduino, AVR

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー
2012年1月
« 11月   3月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
%d人のブロガーが「いいね」をつけました。