11
Mreža Ethernet

10 Interface

  • Upload
    gogo-p

  • View
    20

  • Download
    0

Embed Size (px)

DESCRIPTION

b

Citation preview

  • Mrea

    Ethernet

  • Ethernet

    Dva ipa: ENC i Wiznet

    Wiznet integriraniji i manji,

    ENC vei manje integrirani

    Mi emo koristiti ENC28j60

    ip integrira sve funkcije etherneta osim filtera koji

    je u konektoru

    Spoj ipa je sa SPI sabirnicom

  • Spoj

    - ENC SO -> Arduino pin 12 (MISO)

    - ENC SI -> Arduino pin 11 (MOSI)

    - ENC SCK -> Arduino pin 13 (SCK)

    - ENC CS -> Arduino pin 8 (Data pin)

    - ENC VCC -> Arduino 5V

    - ENC GND -> Arduino Gnd pin

  • EtherCard library Inicijalizacija

    uint8_t Ethernet::buffer[700]; // configure buffer size to 700 octets

    static uint8_t mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 }; // define (MAC) address

    uint8_type nFirmwareVersion ether.begin(sizeof Ethernet::buffer, mymac);

    if(0 == nFirmwareVersion) // handle failure to initiate network interface

    Adresa preko DHCP

    if(!ether.dhcpSetup()) // handle failure to obtain IP address via DHCP

    ether.printIp("IP: ", ether.myip); // output IP address to Serial

    ether.printIp("GW: ", ether.gwip); // output gateway address to Serial

    ether.printIp("Mask: ", ether.mymask); // output netmask to Serial

    ether.printIp("DHCP server: ", ether.dhcpip); // output IP address of the DHCP server

    Statika IP adresa

    const static uint8_t ip[] = {192,168,0,100}; const static uint8_t gw[] = {192,168,0,254};

    const static uint8_t dns[] = {192,168,0,1};

    if(!ether.staticSetup(ip, gw, dns) // handle failure to configure static IP address

    DNS lookup

    if(!ether.dnsLookup("google.com")) // handle failure of DNS lookup

    ether.printIp("Server: ", ether.hispip);

  • EtherCard library

    Slanje UDP paketa

    char payload[] = "My UDP message";

    uint8_t nSourcePort = 1234;

    uint8_t nDestinationPort = 5678;

    uint8_t ipDestinationAddress[4];

    ether.parseIp(ipDestinationAddress, "192.168.0.200");

    ether.sendUdp(payload, sizeof(payload), nSourcePort, ipDestinationAddress, nDestinationPort);

  • DHCP

    Povucite adresu

    sa DHCP

    posluitelja. Ispiite je na serijskom portu

    #include

    static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

    byte Ethernet::buffer[500];

    BufferFiller bfill;

    void setup () {

    Serial.begin(9600);

    if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println( "Fail");

    if(!ether.dhcpSetup()) Serial.println("DHCP failed");

    ether.printIp("IP:",ether.myip);

    ether.printIp("NETMASK:",ether.mymask);

    ether.printIp("GW:",ether.gwip);

    ether.printIp("DNS:",ether.dnsip);

    }

    void loop () {

    }

  • Zadatak

    Poaljite UDP paket na adresu

    ureaja, ispiite paket na serijskom

    portu

    #include

    static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

    static byte myip[] = { 192,168,10,205 };

    byte Ethernet::buffer[500];

    BufferFiller bfill;

    void setup () {

    if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println( "Failed to access Ethernet controller");

    ether.staticSetup(myip);

    ether.hisport = 7777;

    ether.udpServerListenOnPort(&udpSerialPrint, 7777);

    Serial.begin(9600);

    Serial.println("finish setup");

    }

    void loop () {

    ether.packetLoop(ether.packetReceive());

    }

    //callback that prints received packets to the serial port

    void udpSerialPrint(word port, byte ip[4], const char *data, word len) {

    Serial.println(data);

    }

  • Slanje paketa

    Program packet sender

    http://packetsender.com/

  • UDP server

  • Zadatak

    Poaljite UDP paket na adresu ureaja, ako ste ga primili vratite poruku OK

    #include

    static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

    static byte myip[] = { 192,168,10,205 };

    static byte remoteip[] = { 192,168,10,99 };

    byte Ethernet::buffer[500];

    BufferFiller bfill;

    char string1[3]="OK";

    void setup () {

    if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println( "Fail ");

    ether.staticSetup(myip);

    ether.hisport = 7777;

    ether.udpServerListenOnPort(&udpSerialPrint, 7777);

    Serial.begin(9600);

    }

    void loop () {

    ether.packetLoop(ether.packetReceive());

    }

    //callback that prints received packets to the serial port

    void udpSerialPrint(word port, byte ip[4], const char *data, word len) {

    Serial.println(data);

    ether.sendUdp ((char*) string1, 3, 7776, remoteip, 7776);

    }

  • Zadatak

    #include

    // ethernet interface mac address, must be unique on the LAN

    static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

    static byte myip[] = { 192,168,1,203 };

    byte Ethernet::buffer[500];

    BufferFiller bfill;

    void setup () {

    if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)

    Serial.println( "Failed to access Ethernet controller");

    ether.staticSetup(myip);

    }

    void loop () {

    word len = ether.packetReceive();

    word pos = ether.packetLoop(len);

    if (pos) // check if valid tcp data is received

    ether.httpServerReply(homePage()); // send

    }

    static word homePage() {

    long t = millis() / 1000;

    word h = t / 3600;

    byte m = (t / 60) % 60;

    byte s = t % 60;

    bfill = ether.tcpOffset();

    bfill.emit_p(PSTR(

    "HTTP/1.0 200 OK\r\n"

    "Content-Type: text/html\r\n"

    "Pragma: no-cache\r\n\r\n"

    ""

    "RBBB server"

    "$D$D:$D$D:$D$D"),

    h/10, h%10, m/10, m%10, s/10, s%10);

    return bfill.position();

    }

    Osigurajte web stranicu na statikoj adresi koja odbrojavaKoliko je vremena proteklo od paljenja ureaja. Vrijeme mora biti prikazano na razini sekunde, stranica se

    Treba osvjeavati na razini sekunde.