Skip to content

ProMake ETH 5500

Description

Use ProMake ETH 5500 module to connect your project to the Internet with an RJ45 cable. It is a full-featured TCP/IP embedded ethernet controller that provides an easier internet connection solution for embedded systems. The hardware logic gates are used to implement the transport layer and network layer of the TCP/IP protocol stack (eg TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE and other protocols) and integrated data link layer, physical layer and 32K bytes of on-chip data transceiving buffer. Therefore the host computer main control chip only needs to undertake the processing task of the TCP/IP application layer control information and the workload of the host computer for data copying, protocol processing and interrupt processing is greatly saved and the system utilization and reliability are improved.

Features

  • Magjack RJ-45 CAT network connector
  • Acts as client or server
  • TCP/IP protocols include TCP, UDP, ICMP, IPv4 ARP, IGMP, PPPoE
  • 10BaseT/100BaseTX Ethernet PHY embedded
  • Up to 8 simultaneous socket connections
  • Supports auto negotiation (full and half duplex, 10 and 100-based)
  • Internal 32Kb Tx/RX buffers
  • Supports power down mode
  • Supports wake on LAN over UDP
  • Link and Activity LEDs
  • SPI interface with maximum 80MHz
  • Good library support
  • I/O is 5V tolerant
  • 3.3V Operation
  • Breadboard-friendly

Important Notes

Resource

Module Pinout

Software

Developement using Arduino

To set up the hardware, Easily plug this module into:

  • Module1 or Module2 slot of your ProMake® Arduino Nano Kit

or

  • Module1 or Module2 slot of your ProMake® Arduino Uno Shield

or

  • Use your breadboard to connect the Power and UART lines.
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
char server[] = "www.google.com";    // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192, 168, 0, 177);
IPAddress myDns(192, 168, 0, 1);

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

// Variables to measure the speed
unsigned long beginMicros, endMicros;
unsigned long byteCount = 0;
bool printWebData = true;  // set to false for better speed measurement

void setup() {
  // You can use Ethernet.init(pin) to configure the CS pin
  Ethernet.init(9);  
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // start the Ethernet connection:
  Serial.println("Initialize Ethernet with DHCP:");
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // Check for Ethernet hardware present
    if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
      while (true) {
        delay(1); // do nothing, no point running without Ethernet hardware
      }
    }
    if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Ethernet cable is not connected.");
    }
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip, myDns);
  } else {
    Serial.print("  DHCP assigned IP ");
    Serial.println(Ethernet.localIP());
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.print("connecting to ");
  Serial.print(server);
  Serial.println("...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.print("connected to ");
    Serial.println(client.remoteIP());
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.1");
    client.println("Host: www.google.com");
    client.println("Connection: close");
    client.println();
  } else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
  beginMicros = micros();
}

void loop() {
  // if there are incoming bytes available
  // from the server, read them and print them:
  int len = client.available();
  if (len > 0) {
    byte buffer[80];
    if (len > 80) len = 80;
    client.read(buffer, len);
    if (printWebData) {
      Serial.write(buffer, len); // show in the serial monitor (slows some boards)
    }
    byteCount = byteCount + len;
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    endMicros = micros();
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    Serial.print("Received ");
    Serial.print(byteCount);
    Serial.print(" bytes in ");
    float seconds = (float)(endMicros - beginMicros) / 1000000.0;
    Serial.print(seconds, 4);
    float rate = (float)byteCount / seconds / 1000.0;
    Serial.print(", rate = ");
    Serial.print(rate);
    Serial.print(" kbytes/second");
    Serial.println();

    // do nothing forevermore:
    while (true) {
      delay(1);
    }
  }
}

Developement using Raspberry