ماژول اترنت 5500 ®ProMake
توصیف
با استفاده از ماژول ®ProMake ETH 5500 پروژه تان را با کابل شبکه RJ45 به اینترنت متصل کنید. چیپ بکار رفته در ماژول دارای کنترلر داخلی TCP/IP با امکانات کامل می باشد که راهکار آسان تری برای اتصال به اینترنت برای سیستمهای امبد ارائه می کند. گیتهای منطقی سختافزار برای پیادهسازی لایه انتقال و لایه شبکه پشته پروتکل TCP/IP (به عنوان مثال TCP، UDP، ICMP، IPv4، ARP، IGMP، PPPoE و پروتکلهای دیگر) و لایه پیوند داده یکپارچه، لایه فیزیکی و بافر 32K بایت انتقال داده روی تراشه استفاده می شود. بنابراین تراشه کنترل اصلی رایانه میزبان فقط باید وظیفه پردازش اطلاعات کنترل لایه برنامه کاربردی TCP/IP را بر عهده بگیرد و حجم کار رایانه میزبان برای کپی کردن داده ها، پردازش پروتکل و پردازش وقفه تا حد زیادی ذخیره می شود و استفاده و قابلیت اطمینان سیستم بهبود می یابد.
قابلیتها
- کانکتور شبکه RJ-45 CAT Magjack
- رویکرد بعنوان کلاینت و سرور
- پروتکل TCP شامل (TCP, UDP, ICMP, IPv4, IGMP, PPPoE)
- Magjack RJ-45 CAT network connector
- لایه فیزیکی اترنت 10BaseT/100BaseTX
- امکان همزمان 8 سوکت ارتباطی
- پشتیبانی از تبادل ارتباط( کامل و نیمه کامل، 10 و 100 مگابیت)
- بافر 32 کیلو بایتی Tx/Rx
- دارای LED لینک و عملکرد
- پشتیبانی از مد پاور خاموش
- پشتیبانی از مد بوت با UDP روی اترنت
- واسط SPI با ماکزیمم 80MHz
- پشتیبانی از کتابخانه خوب
- ورودی/ خروجی تحمل 5 ولت را دارند
- عملکرد با ولتاژ 3.3
- قابل استفاده در بردهای آموزشی 2.54mm (Breadboard)
نکات مهم
- در نسخه سخت افزار 1.3 عملکرد LED های Activity و Link معکوس می باشد. یعنی مثلا وقتی LED مربوط به Link خاموش است به معنی برقراری لینک است
منابع
نقشه پین ها
نرم افزار
توسعه با استفاده از آردینیو
برای آماده سازی سخت افزار، ماژول را روی اسلات های زیر می توانید قرار دهید:
ماژول1 یا ماژول2 بروی کیت آردینیو نانو
یا
ماژول1 یا ماژول2 بروی شیلد آردینو یونو
یا
* روی برد آموزشی با اتصال پاور و تغذیه و ارتباط سریال UART
#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);
}
}
}