این شیلد جهت اتصال برد آردوینو شما به شبکه اینترنت میباشد.تنها با وصل کردن ماژول به برد آردوینو و اتصال به شبکه توسط یک کابل اترنت استاندارد RJ45 و بکارگیری چند دستور ساده در کامپایلر آردوینو می توانید جهان پیرامون خود را از طریق اینترنت کنترل کنید.این شیلد با استفاده ازچیپ Wiznet W5100 اینترنت را به آردوینو به ارمغان می آورد.Wiznet W5100 یک شبکه (IP) با امکان TCP و UDP فراهم می کند. از چهار اتصال همزمان سوکت پشتیبانی می کند. با استفاده از کتابخانه Ethernet می توانید برنامه اتصال به اینترنت را از طریق شیلد بنویسید. این برد دارای شکاف SD-card است که می تواند برای ذخیره فایل ها برای سرو کردن در شبکه مورد استفاده قرار گیرد. این شیلد همچنین دارای یک کنترلر ریست برای اطمینان از اینکه ماژول در هنگام روشن شدن به درستی ریست شده است می باشد .نسخه های قدیمی این شیلد فاقد سازگاری با بردهای مگا بوده و نیاز به ریست دستی بعد از روشن شدن می باشند.
ولتاژ اعمالی | کنترلر اترنت | سرعت ارتباط | ابعاد | وزن |
---|---|---|---|---|
5V | W5100 با بافر 16K داخلی | 10/100 Mb | 73mm x 54mm x 17mm | 26 گرم |
جدول زیر LEDهای هشدار این شیلد به همراه توضیح آنها نشان داده شده است.
LED هشدار | توضیح |
---|---|
PWR | نشان می دهد که برد و شیلد به منبع تغذیه متصلند |
LINK | وجود یک لینک شبکه را نشان می دهد و وقتی شیلد دیتا می فرستد یا دریافت می کند چشمک می زند |
FULLD | نشان می دهد که اتصال شبکه دو رشته ای کامل است |
100M | نشان دهنده ی حضور یک اتصال شبکه 100Mb/s ( درمقابل 10Mb/s ) |
RX | وقتی شیلد دیتا دریافت می کند چشمک می زند |
TX | وقتی شیلد دیتا ارسال می کند چشمک می زند |
COLL | وقتی collision در شبکه شناسایی شود چشمک می زند |
نحوه ای ارتباط با آردوینو
آردیونو با W5100 و SD card با استفاده از گذرگاه SPI ارتباط برقرار می کند.( از طریق هدر ICSP) .با پین دیجیتال 11، 12 و 13 روی Duemilanove و پین 50،51 و 52 روی مگا. بر روی هر دو برد پین 10 برای انتخاب W5100 و پین 4 برای SD card استفاده شده است. توجه داشته باشد که گذرگاه SPI بین W5100 و SD card به اشتراک گذاشته می شود و فقط یکی می تواند در یک زمان فعال باشد.
آغاز به کار با شیلد اترنت آردوینو
همانطور که گفته شد این شیلد امکان اتصال برد آردوینو را به اینترنت فراهم می کند و با استفاده از کتابخانه SD توانایی خواندن و نوشتن اطلاعات کارت SD را دارد.
1. اتصال شیلد
برای استفاده از شیلد باید آن را روی آردوینو (برای مثال آردوینو Uno) قرار دهید. سپس اسکچ ها را روی برد آپلود کنید و با استفاده از کابل USB آن را به کامپیوتر متصل کنید. زمانی که اسکچ آپلود شد می توانید ارتباط با کامپیوتر را قطع کنید و ولتاژ را با استفاد از یک منبع تغذیه خارجی تامین کنید.
با استفاده از یک کابل اترنت استاندارد، شیلد را به کامپیوتر یا شبکه هاب یا روتر متصل کنید (CAT5 یاCAT6 با کانکتورهای RJ45 ) .
2. تنظیمات شبکه
با استفاده از تابع Ethernet.begin() function باید به شیلد یک مک آدرس و یک آدرس IP ثابت اختصاص داده شود. مک آدرس یک شناسه منحصر به فرد برای یک دستگاه خاص است. مک آدرس شیلدهای اترنت فعلی با استفاده از یک برچسب نشان داده شده است که میتوانید از آن استفاده کنید. برای شیلدهای قدیمی تر بدون مک آدرس اختصاصی، باید به صورت تصادفی چیزی بسازید که کار کند، اما نباید از آن برای چند برد استفاده کنید.
آدرس IP به پیکربندی شبکه شما بستگی دارد.
3. کارت SD
آخرین نسخه ی شیلد اترنت شامل اسلات (slot) کارت میکرو SD است که میتواند با استفاده از کتابخانه SD مورد استفاده قرار گیرد.
مثال1
در این مثال ایجاد یک سرور چت با استتفاده از کتابخانه Ethernet ابرای توزیع پیام های ورودی به تمام کلاینت هایی که به آن متصل هستند، نشان داده شده است.
#include < spi.h> #include < Ethernet.h> // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network. // gateway and subnet are optional: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,1, 177); IPAddress gateway(192,168,1, 1); IPAddress subnet(255, 255, 0, 0); // telnet defaults to port 23 EthernetServer server(23); boolean alreadyConnected = false; // whether or not the client was connected previously void setup() { // initialize the ethernet device Ethernet.begin(mac, ip, gateway, subnet); // start listening for clients server.begin(); // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.print("Chat server address:"); Serial.println(Ethernet.localIP()); } void loop() { // wait for a new client: EthernetClient client = server.available(); // when the client sends the first byte, say hello: if (client) { if (!alreadyConnected) { // clead out the input buffer: client.flush(); Serial.println("We have a new client"); client.println("Hello, client!"); alreadyConnected = true; } if (client.available() > 0) { // read the bytes incoming from the client: char thisChar = client.read(); // echo the bytes back to the client: server.write(thisChar); // echo the bytes to the server as well: Serial.write(thisChar); } } }
مثال2
در این مثال خواندن و نوشتن بر روی فایل SD Card با استفاده از کتابخانه SDCard نشان داده شده است. این مثال نشان می دهد که چگونه می توان بر روی SD Card دیتا نوشت یا از روی آن خواند.
برای انجام این کار به یک برد آردوینو یا Genuino ، شیلد اترنت و کارت SD فرمت شده نیاز دارید.
شماتیک این شیلد در تصویر زیر نشان داده شده است.
/* SD card read/write This example shows how to read and write data to and from an SD card file The circuit: * SD card attached to SPI bus as follows: ** MOSI - pin 11 ** MISO - pin 12 ** CLK - pin 13 ** CS - pin 4 created Nov 2010 by David A. Mellis modified 9 Apr 2012 by Tom Igoe This example code is in the public domain. */ #include#include File myFile; void setup() { // 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 } Serial.print("Initializing SD card..."); if (!SD.begin(4)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // open the file. note that only one file can be open at a time, // so you have to close this one before opening another. myFile = SD.open("test.txt", FILE_WRITE); // if the file opened okay, write to it: if (myFile) { Serial.print("Writing to test.txt..."); myFile.println("testing 1, 2, 3."); // close the file: myFile.close(); Serial.println("done."); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } // re-open the file for reading: myFile = SD.open("test.txt"); if (myFile) { Serial.println("test.txt:"); // read from the file until there's nothing else in it: while (myFile.available()) { Serial.write(myFile.read()); } // close the file: myFile.close(); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } } void loop() { // nothing happens after setup }
فایل های مورد نیاز:
منبع: http://thecaferobot.com
- سید صادق غفوری
- 5 سپتامبر 2020
- 1015 بازدید