آردوینو آموزش آردوینو اینترنت اشیا IOT خانه هوشمند پروژه های آردوینو

آموزش کار با اترنت اینترنت اشیاء W5100 – بخش اول

ethernet-w5100--arduino-digispark-
نوشته شده توسط پریسا پوربلورچیان

روزگاری بود که با ارسال اس ام اس و یک برد پیچیده با تراشه میکروکنترلر AVR می‌توانستیم، پروژه هوشمند سازی انجام دهیم. ولی امروزه دنیا اینترنت اشیاء IOT عملا ساخت سخت افزارهای پیچیده را به اتمام رسانده است. کافیست پروژه را با اصول اینترنت اشیاء IOT و سخت افزارهای مربوطه انجام دهید. شیلد اترنت با تراشه W5100 از پر مصرف‌ترین شیلدها برای آردوینو Arduino است. هم توانایی لاگ کردن اطلاعات روی مموری Micro SD دارد و هم توانایی مدیریت برد آردوینو و متعلقات متصل به آن را دارد. از این رو تصمیم به انتشار مجموعه آموزش‌های راه اندازی و مدیریت این شیلد را در بستر دیجی اسپارک گرفتیم. در ادامه با وب سایت مرجع اینترنت اشیاء دیجی اسپارک همراه باشید.

 


ساختار شیلد اترنت W5100


از ترکیب شیلد اترنت با آردوینو، می‌توانید برد خود را به اینترنت وصل کنید. از طریق اینترنت و در هر مکانی پروژه‌های خود را کنترل نمایید. چیپ استفاده شده در این برد W5100 می‌باشد. Wiznet W5100 برای شما یک آی پی فراهم خواهد کرد که در هردو مدل tcp و udp کارخواهد داد و از ۴ اتصال به سوکت به صورت همزمان نیز پشتیبانی خواهد کرد. شیلد اترنت آردوینو به برد اجازه می‌دهد تا به وسیله کتابخانه مخصوص اترنت به اینترنت متصل شوید و همچنین برای استفاده از کارت اس دی آن نیز باید از کتابخانه مخصوص sd استفاده کنید. همچنین این شیلد باسرعت ۱۰/۱۰۰Mb به برد آردوینو متصل می‌شود. برقراری ارتباط آردوینو با w5100 و کارت اس دی به وسیله SPI bus انجام می‌شود. ارتباط این شیلد با برد آردوینو uno  از طریق پورت های ۱۱,۱۲,۱۳ می باشد.

 


وسایل مورد نیاز


شیلد اترنت آردوینو W5100

برد آردوینو Arduino

 


 اتصال به آردوینو


از این اتصال ساده تر نداریم! کافی است همانند تصویر زیر شیلد را روی آردوینو جایگذاری کنید. همچنین اتصال کابل اترنت به روتر یا مودم را برقرار کنید.

 


فراخوانی کتابخانه


در این آموزش من از کتابخانه WIZ_ethernet استفاده کرده‌ام. برای دانلود این کتابخانه به صفحه محصول شیلد اترنت آردوینو Arduino Ethernet Shield W5100 مراجعه و در قسمت دانلود، فایل کتابخانه را دانلود نمایید. این کتابخانه به برد آردوینو اجازه می‌دهد که به اینترنت متصل شود و می‌توانید از برد به عنوان یک سرور استفاده کنید و یا از آن به عنوان یک کار (کلاینت) بهره ببرید.

 


کدهای برنامه W5100


کدهای زیر را در کامپایلر آردوینو کپی کرده و سپس آپلود کنید.

 
#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
#if defined(WIZ550io_WITH_MACADDRESS) // Use assigned MAC address of WIZ550io
;
#else
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
#endif  

// 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;

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
  // this check is only needed on the Leonardo:
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
#if defined(WIZ550io_WITH_MACADDRESS)
  if (Ethernet.begin() == 0) {
#else
  if (Ethernet.begin(mac) == 0) {
#endif  
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // print your local IP address:
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print("."); 
  }
  Serial.println();
}

void loop() {

}

 

حال کد ها را کپی کرده سپس اجرا نمایید. سریال مانیتور را باز کرده تا آی پی که برد در شبکه به خود اختصاص داده است را نمایش دهد. البته برای پیدا کردن آی پی شبکه روش های ساده تری نیز وجود دارد، ولی در این آموزش هدف نحوه ی استفاده از این شیلد همراه با آردوینو برای یافتن آی پی آدرس شبکه می باشد.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

   

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۹۳ دیدگاه

    • سلام
      همانطور که در فیلم نشان داده ام، ابتدا کابل اترنت را به شیلد و کابل usb را به آردوینو اتصال دهید.

  • سلام .
    میتونیم به این شیلد یه ایپی استاتیک در خودش یا به مودمیکه وصل هستش بدیم و از همه جا که خواستیم بهش وصل شیم یا نیاز به خرید آی پی استاتیک از ای اس پی هستش؟؟//؟؟؟

    • سلام
      شما د رحالت کلی تنظیمات آی پی استاتیک داخلی را از طریق روتر و شیلد میتوانید انجام دهید ولی برای اینکه از هر مکانی خارج از آن محیط بتوانید به شیلد متصل شوید حتما نیاز خرید آی پی استاتیک از ISP دارید.

  • سلام آیا اتصال می بایست بین شیلد و شبکه باشد یا حتمن باید مستقیما به روتر وصل شویم؟
    ممنون؟

  • سلام،من این ic رو رو مد tcp server راه اندازی کردم ولی تو مدیریت بافر این تراشه مشکل دارم،یعنی همینکه بافر rx رو پر میکنم و به درستی پوینترش رو هدایت میکنم ولی همینکه عدد پوینتر به ۲۰۴۷ و بعد از آن به ۰ میرسه دیگه هیچی دریافت نمیکنه و اینتراپت هم نمیزنه و حتی پروسه کانکت و دیسکانکت هم به درستی عمل نمیکنه،حدس من اینه که تو مدیریت بافرش مشکل دارم،کسی همچین مشکلی داشته آیا؟

    • با سلام و تشکر از توجه شما
      برنامتون احتمالا دارای نشت حافظه است. راجب نشت حافظه و مدیریت حافظه در C++ مطالعه کنید

  • سلام
    کدی که قرار دادید، برای بورد من کار نمی کنه. من اتصالات فیزیکی رو برقرار می کنم، اما ip دریافت نمی کنه. حتی مثال موجود در خود IDE رو هم آپلود کردم بازم ip دریافت نکرد. به نظرتون مشکل از کجاست؟
    من توی اینترنت سرچ کردم، به لینک زیر رسیدم که کسی نوشته بود ” مقاومتهای اری روی بورد کنار سوکت، باید مقدار ۵۱ اهم داشته باشند ( یعنی روشون نوشته شده باشه ۵۱۰) اگه روی اونا ۵۱۱ نوشته، ( یعنی مقدارشون ۵۱۰ اهم هستش،) بورد مشکل سخت افزاری داره. باید مقاومت رو به ۵۱ اهم عوض کنید. ” بعد کسی که بوردش مشکل داشت، این کار رو کرده بود و بوردش درست شده بود.
    روی بورد اترنت من هم، مقدار مقاومت های اری کنار سوکت، ۵۱۰ اهم هستش ( روشون ۵۱۱ نوشته). با سرچ توی اینترنت شماتیک بورد اترنت مبتنی بر تراشه W5100 رو پیدا کردم (لینکش رو زیر قرار دادم). توی این شماتیک، چهار تا مقاومت کنار سوکت قرار داره که مقدارشون ۴۹ اهم هستش. ( خیلی نزدیک به ۵۱ اهم).
    به نظرتون مشکل میتونه به این دلیل باشه؟ یعنی مشکل سخت افزاری؟ میشه بورد اترنت خودتون رو از این نظر چک کنید که روی مقاومت های اری کنار سوکت، چی نوشته شده؟
    متشکرم
    لینک اول :
    https://electronics.stackexchange.com/questions/11546/arduino-ethernet-shield-it-just-wont-work
    لینک دوم:
    https://www.arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf

    • با سلام
      ضمن تشکر از توجه شما، قضیه مقاومت اری با تنظیمات شبکه داخلی شما مرتبط است. ربطی به این آموزش ندارد و این کدها روی هرکدام از این بردها کارایی دارد، همانطور که برد استفاده شده در این آموزش هم از مقاومت مشابه بهره برده است. لطفا بفرمایید که کابل اترنت را به کجا اتصال دادید؟ (روتر، مودم، کامپیوتر و…)

      • با سلام و ضمن تشکر از پاسخ شما
        من کابل اترنت رو به مودم Comtrend مدل CT-5367 (که در واقع Router هم هستش) وصل کردم. روی بورد اترنت، LED مربوط به لینک با سرعت ۱۰۰M روشن میشه و LED مربوط به RX هم چشمک میزنه اما ip دریافت نمی‌کنه.
        به نظرتون مشکل از کجاست؟ آیا باید تنظیمات DHCP مودم رو تغییر بدم؟
        متشکرم

        • سلام
          خواهش میکنم.
          با نرم افزاری مانند FING شبکه را اسکن کنید. سپس نتیجه را بیان کنید

    • سلام مجدد
      اول از همه بابت تاخیر در پاسخ از شما عذرخواهی میکنم.
      برای حل مشکل EHCP را غیرفعال کنید.

  • با سلام من عدد شیلد اترنت خریدم روی هیچ کدام مک ادرس نداره لطفا راهنمایی مک ادرس شیلد رو چطوری میتونم بدست بیارم سپاسگزارم.

    • سلام
      از توجه شما ممنونم.
      برای مک آدرس منتظر آموزش جدید باشید تا کامل به بررسی آن بپردازیم.

      • سلام من هم این شیلد w5100 گرفتم ولی مک آدرس نداره .مثال بالا رو هم اجرا کردم جواب نداد. مک رو نمی شناسه.

        • سلام
          در ابتدا دقت کنید که خودتان باید مک آدرس را به شیلد نسبت دهید. در کد برنامه در قسمت Setup با دستور (ethernet.begin(mac,ip,myDns,gateway,subnet شیلد را فعال کنید.

          • با سلام مجدد خدمت شما
            این شیلد رو با مودم های خانگی تست کردم خوب کار میکنند.
            ولی زمانی که به روتر های میکروتیک وصل می شن _ شبکه اون ها رو اصلا نمی شناسه .که حتی بخوایم بهشون آیپی استاتیک بدیم.یا کار های دیگر رو انجام بدیم . ممنون میشم راهنمایم کنید. ممنون

            • سلام مجدد
              متاسفانه من در این زمینه تخصص ندارم ولى تا جایى که اطلاع دارم، باید مقاومت arrey پشت کانکتور rj45 را تغییر بدهید. از دیگر کاربران که تجربه کافی دارند تقاضا دارم تا در این موضوع نظر دهند.

  • سلام وقت بخیر
    من از فایل کتابخانه ای که برای شیلد w5100 در سایت گذاشته اید استفاده کردم ولی موقع نصب فایل کتابخانه در نرم افزار اررو میدهد(specifild folder/zip file does not containa vaild libaray)

    • سلام
      دقت کنید که پس از نصب کتابخانه فایل را از حالت زیپ خارج کنید و سپس فایل درحالت master نمایش داده میشود. کتابخانه را در مسیر Arduino/Library ذخیره کنید. اگر مشکل برطرف نشد مجددا از همین طریق اعلام نمایید.

  • سلام من تازه با این برد آشنا شدن میشه راهنمایی کنید چطوری میشه مک آدرس این شیلدو پیدا کنم؟؟

    • سلام
      مک آدرس را باید خودتان به شیلد نسبت دهید. حتما در ادامه آمورش های اترنت به این موضوع خواهیم پرداخت.

  • سلام و عرض ادب
    من میخوام از طریق شبکه دانشگاه با کابل لن از یه طرف دیتا سنسور و بگیرم و بفرستم به طرف دیگه و اونجا دیتا رو بخونه
    میشه راهنماییم کنید چطور باید این ارتباط رو برقرار کنم

    • سلام
      نکته اول اینکه بنده تا به حال اینکار را انجام نداده ام ولی طبق گفته ی دیگر کاربران، باید پین SS را جا به جا کنید و یا از ماژول ENC28j0 استفاده کنید.

  • خانم مهندس پوربلورچیان
    ضمن تشکر وسپاس از آموزشهاى خوبتان ، منتظر ادامه مبحث iot شما هستم.
    در مورد شبکه کردن چند ماژول esp8266 هم آموزش بزارید لطفا.

    • سلام
      از توجه و دقت نظر شما ممنونم.
      پیشنهاد شما را بررسی خواهم کرد.

  • با عرض سلام و خسته نباشید
    (از این اتصال ساده تر نداریم ) میتونیم به طور دیگه ای اتصالات رو برقرار کنیم با شیلد اترنت ؟ مثلا ازطریق سیم ؟( کافی است همانند تصویر زیر شیلد را روی آردوینو جایگذاری کنید). منظور از همچنین اتصال کابل اترنت به روتر یا مودم را برقرار کنید یعنی این کابل رو به مودم وصل کنیم یا به لپ تاب?

    • سلام
      همانطور که در فیلم نشان داده شده است، شیلد بر روی برد آردوینو قرار میگیرد و باید کابل اترنت را از به شیلد و سپس به روتر وصل کنید. مجددا فیلم آموزش را مشاهده کنید، متوجه خواهید شد.

  • سلام لطف میکنید درمورد اتصال از راه توضیح دهید.ممنون میشم.
    مثلا بشود با نت گوشی کنترل کرد.

    • سلام
      از توجه شما ممنونم.
      این اولین آموزش شیلد اترنت است و این موضوع نیاز به تنظیمات dns و ip استاتیک دارد.

    • همانطور که در کامنت قبلی توضیح داده شده است، در آموزش بعدی به این موضوع خواهیم پرداخت.

  • سلام. من همین کد رو اجرا کردم. بدون ارور کامپایل شد ولی روی سریال مانیتور چیزی نشون داده نمیشه!
    بادریت هم ۹۶۰۰ ـه.
    ظاهرا به مودم وصل نمیشه! چون تو تنظیمات مودم که رفتم دیدم تو دستگاه ها ی متصل، این رو اضافه نکرده بود

    • سلام
      آیا تنظیمات مک آدرس را انجام داده اید؟ باید مک آدرس را به شیلد نسبت دهید.

      • روی خود برد که مک ادرس ننوشته، هر چی هم خودم میدم فرقی نمیکنه! تو سایت های دیگه هم چند تا مثال شبیه نمونه کدهای شما بود، مک ادرس اونا رو هم گذاشتم ولی فایده ای نداره! چراغ های شیلد روشن و خاموش میشن ولی رو سریال مانیتور چیزی نشون داده نمیشه!

    • البته من ip dns را به برد منتقل کردم فقط نمی دانم چه کد هایی را باید بروی برد آپلود کنم تا بتوان از خار ج از خانه مثلا یک رله را کنترل کرد. لطفا کمک کنید.

      • بله متوجه شدم
        همانطور که در کامنت قبل پاسخ دادم، نیاز به آموزش جداگانه خواهد داشت.

    • سلام
      از پیشنهاد شما ممنونم.
      در این خصوص نیاز به آموزش جداگانه خواهد بود و در صورت امکان به آن خواهیم پرداخت.

  • سلام, اتصال کابل اترنت به این صورت هست که یک سر آن به آردوینو هست ولی من متوجه نشدم که سمت دیگر کابل اترنت رو.باید به کجا وصل کنم به لپ تاپ یا نه؟

  • سلام میخواستم با این ماژول یه مبدل لَن به سریال درست کنم اگه با این ماژول میشه ممنون میشم بهم کمک کنید

    • با سلام
      در این خصوص لازم است به دیتاشیت مراجعه کنید. بنده این موضوع را تست نکرده‌ام. از دیگر کاربرانی که در خصوص شیلد اترنت و تبدیل آن به خروجی سریال، تجربه دارند، تقاضا دارم تا در این بحث شرکت کنند.

  • سلام
    من ماژول enc28j60 دارم و متوجه نشدم چطور ازش استفاده کنم
    اگه راهنمایی کنید چطوری میتونم باهاش کار کنم ممنون میشم

    • سلام
      دقت داشته باشید که این آموزش مربوط به شیلد اترنت W5100 می‌باشد. برای راه اندازی شیلد مورد نظر شما باید کتابخانه مخصوص آن را فراخوانی کنید و سپس کدنویسی آن را انجام دهید.
      دیتاشیت و کتابخانه شیلد اترنت Ethernet ENC28J60 مخصوص آردوینو نانو Nano در قسمت دانلود صفحه محصول کالا در دانشجو کیت جهت دانلود قرار گرفته شده است. موارد را استفاده کنید سپس از همین طریق و یا قسمت نظرات دانشجو کیت تجربه کاربری‌تان را برای دیگر کاربران منتشر کنید.

  • سلام
    می خواستم بدونم که ایا برد esp32 یا esp8266 را می توانم به این lan وصل کنم؟
    ممنون می شوم راهنمایی ام کنید

    • سلام
      خیر این دو برد دارای تراشه وای فای هستند و نیازی به اینکار نیست. برای اتصال به Lan پیشنهاد می‌شود از بردهای دیگر استفاده کنید.

  • با سلام با تشکر از شما
    ایا یا استفاده از این ماژول با کابل شبکه میشه روی اردوینو کدهای برنامه اپلود کرد؟

  • سا سلام خدمت شما نویسنده این مطلب.ببخشید من می خواهم این برد را به مودم وصل کنم و از هر جایی کنترل کنم مخصوصا با اینترنت گوشی،می خواستم ببینم این حالت امکانش هست اگه هست میشه کمک کنید یا چیزی معرفی کنید .

  • سلام
    از مطالب سایتتون ممنونم
    ببخشید سوالی که ازتون دارم اینکه نقش قسمت مربوط به سیم کارت روی برد شیلد چیه؟
    یعنی میشه این برد را به روشی بدون کابل اینترنت هم راه اندازی کرد و از اینترنت سیم کارت استفاده کرد؟
    اگه جواب مثبته چجوری؟

    • سلام
      با تشکر از توجه شما
      بر روی شیلد اترنت، اسلات سیم کارت وجود ندارد و تنها دارای شیار micro SD جهت ذخیره فایل ها از طریق شبکه می‌باشد.

  • سلام مجدد
    ببخشید در راستای سوال قبلم که ازتون پرسیدم
    آیا امکان اتصال آردوینو به اینترنت با ماژول های GSM مانند SIM900 , SIM800l و … وجود داره؟(ماژول های GSM قابلیت GPRS را هم دارند آیا از این قابلیت می توان برای این کار استفاده کرد؟)
    مثلا با استفاده از این ماژول همین کارایی ای که در همین پیج معرفی کردید را محقق کنیم
    با تشکر فراوان

    • سلام
      در خصوص سوال اول بله این امکان وجود دارد. لینک آموزش های مرتبط را در ادامه قرار میدهم، بررسی کنید.
      همانطور که در سوال قبل پاسخ داده شد، این شیلد فاقد شیار سیم کارت می‌باشد.

      آموزش GSM GPRS

  • سلام و خسته نباشید خدمت شما.بنده قصد دارم از یه شهر دیگه این کارو انجام بدم.اما اموزش های شما مربوط میشد به شبکه محلی.اگر یک ip /static داشته باشم چطور میتوانم این کار را از در هر کجای کشور (شبکه خارجی)و از طریق اینترنت انجام بدم؟

  • با سلام
    من پروژه ساخت دریافت و ارسال اطلاعات توسط شبکه LAN دارم دوستان باید از کجا شروع کنم واسه ساختش از چه تجهیزاتی

  • سلام
    ممنون میشم راهنمایی کنید. وقتی ENC28J60 رو به arduino uno متصل میکنیم هم شماتیک اتصالش رو میخوام هم متن برنامه نوشته شده ای که باید آپلود بشه و نرم افزار android باشه که وقتی دکمه میزنی لحظه ای برق رو وصل کنه مثلا بخوایم درب حیاط رو باز کنه. یه لحظه on بشه نه دائم. بیزحمت به ایمیل هم جواب بفرستید. بازم تشکر میکنم.

    • با سلام
      کاربر گرامی آموزش های متعددی در سایت منتشر شده است و از آن ها میتوانید استفاده کنید. در غیر اینصورت درخواست شما بایستی به صورت پروژه تعریف شود. از طریق لینک زیر درخواست خود را ثبت نمایید تا بررسی شود.
      پرتال پشتیبانی دانشجوکیت

  • با عرض سلام
    بنده هنگامی که میخوام این ماژول رو به مودم وایفای وصل کنم فقط LED مربوط به FULLD چشمک میزنه
    چکار باید کرد؟

    • با سلام
      به نظر می‌رسد این مورد امکان پذیر باشد اما تست نشده است.

  • سلام
    من وقتی شیلد اترنت رو به آردوینو وصل می کنم و برنامه رو آپلود می کنم، ال ای دی های مربوطه همه روشن هستند (pwr, link, 100M, FULLD) و حتی گاهی rx, tx روشن می شوند اما Ethernet.hardwareStatus == EthernetNoHardware رو true می کنه! شما می دونید علت چی میتونه باشه؟
    اترنت رو با یک کابل RJ45 به مودم و LAN محلی وصل کردم.

    • با سلام
      این مورد توسط بنده تست نشده است. از دیگر کاربرانی که در این زمینه تجربه و اطلاعاتی دارند، تقاضا میکنم در بحث شرکت کنند.

      • ی نکته بسیار مهم که تو هیچ اموزشی گفته نشده
        در مواردی که عینا سورس رو اپلود میکنین ولی ای پی نمیگیره، یک علت داره
        پورت خود مودم یا سوییچ، بجای ۸ پین، ۴ پین داره، در واقع پین های مربوط به poe رو ندارن
        اگه میخوایین اردو درست کار کنه حتما از نوع ۸ پین اسنفاده کنین

        • با سلام
          کاربر گرامی از اینکه تجربه خود را با دیگر کاربران به اشتراک میگذارید، سپاسگزاریم.

  • سلام وقتتون بخیر
    ممنون از زحماتتون. مندارم رو یه پروژه کار می کنم که تو اون باید با آردوینو یه وب سرویس رو کال کنم و با توجه به پاسخ دریافتی یک سری کار ها رو انجام بدم. ممنون میشم راهنمایی کنید که چطور میشه وب سرویس رو کال کرد و جواب که یه استرینگ هست رو دریافت کرد.