راه اندازی شیلد شبکه Ethernet w5100 با آردوینو

راه اندازی w5100

راه اندازی w5100 - راه اندازی شیلد شبکه Ethernet w5100

اترنت چیست:

اترنت: سطح تبادل داده ی پایین رو اترنت میگن. توی این سطح هر دستگاه آدرسی منحصر به فرد داره که به اون مک آدرس میگیم.برا پیدا کردن مک آدرس برد Ethernet خودمون ، اون رو باید به کامپیوتر وصل کنیم و بعد از اینکه کامپیوتر برد رو شناخت ، آیکون شبکه روی نوار وظیفه ویندوز ظاهر میشه که اطلاعات اون رو مشخص میکنه.

مک آدرس اسم دیگه هم داره و توی ویندوز با عنوان physical address هم شناخته میشه.

پروتکل TCP/IP چیست:

این پروتکل برای تبادل داده در اینترنت بین فرستنده و گیرنده به کار میره. هر سرور توی اینترنت آدرسی 4 بایت ای داره که به اون IP میگیم و همه میشناسیمش.

آدرس IP محلی:

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

اطلاعات توی شبکه با پروتکل HTTP منتقل میشن و صفحه ها با زبان HTML نوشته میشن.
همین دیگه! بریم حالا سراغ اصل کاری 😀

ارتباط آردوینو با shield Ethernet :

آردوینو برای  تبادل داده با اینترنت از تراشه ی  W5100 استفاده میکنه که پروتکل TCP/IP رو بصورت سخت افزاری داره. این تراشه با واسطه داده ی  spi  ، از پروتکل های TCP  و UDP و IPv4 و ICMP ، ARP ، IGMP و PPPoE پشتیبانی میکنه.

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

هر دستگاه توی اینترنت شماره ای یکتا داره که به اون آدرس فیزیکی یا مک آدرس میگیم.برای اتصال شیلد اترنت به آردوینو باید پایه های MISO  و MOSI و SCK رو به هم وصل کنیم که بهشون میگن پایه های ICSP و پایه ی ETH CS  روی شیلد رو بهم باید به پایه ی شماره 10 دیجیتال آردوینو وصل کنیم.

شیلد شبکه - شیلد اترنت آردوینو

و برد آردوینو خودتون رو مثل همیشه با کامپیوتر وصل کنید و شیلد شبکه رو با کابل LAN به مودم.

توی مجموعه کتابخونه ای که چند بار داخل سایت قرار دادیم کتابخونه ی Ethernet هم وجود داره.

دانلود مجموعه کتابخانه های پرکاربرد آردوینو :

دانلود کتابخانه ها

برای تست کارکرد شیلد به همراه آردوینو از example ها ، گزینه یDhcpAddressPrinter رو روی برد بریزین و تست کنید که در وبسایت آردینو با آدرس DhcpAddressPrinter هم وجود داره که کدش رو براتون در اینجا هم آوردم :

پروژه تست راه اندازی w5100

در بخش :

مک آدرس برد خودتون رو که روش نوشته شده وارد کنید.

 

ویژگی های شیلد Ethernet w5100 :

1-ولتاژ تغذیه: 5 ولت که از برد آردوینو دریافت می کند

2- وجود 7 نشانگر LED

3-نرخ اطلاعات اترنت: 10/100Mbps

4-تبادل اطلاعات با برد آردوینو از طریق پروتکل SPI

5-دارای شکاف کارت حافظه  SD-card

6-کانکتور استاندارد Rj45 (شبکه LAN)

اول تابع هارو معرفی میکنم تا با کتابخونه Ethernet.h و توانایی های این کتابخونه آشنا بشیم و بعد میریم سراغ چند تا پروژه که از این توانایی ها استفاده کنیم.

 

تابع های کتابخانه ی آردوینو:

تابع Ethernet.begin

برای راه اندازی و مقدار دهی اولیه برد از تابع begin استفاده میکنیم که قالب اون بصورت زیره:

 

اگر از قالب اول تابع استفاده کنیم ، مودم یک IP محلی به برد اختصاص می ده.

mac : مک آدرس برد اترنت.

ip : آدرس آی پی دستگاه.

gateway : آدرس IP چهاربایتی مودم.

Subnet : شماره چهار بایتی که پیش فرض 255.255.255.0 هستش.

 

DNS چیست : آدرس DNS سرور ، سرویسی هستش که آدرس ها رو به آی پی تبدیل میکنه. (مثلا شما وارد سایت levinic.com میشید ولی درواقع وقتی این آدرسو میزنید DNS هایی که سایت داره، این آدرس رو به آی پی سرور تبدیل میکنه و شمارو به سرور های سایت وصل میکنه)

تابع localIP
این تابع آدرس IP محلی رو میده و خروجی نداره.

مثال:

خروجی برنامه برای برد من:
My IP address: 192.168.1.5.

تابع maintain

آدرس IP محلی که سرور به هر دستگاهی توی شبکه میده تا مدت زمان خاصی معتبره (برای مودم من 24 ساعته).

کار این تابع اینه که ما یک آدرس آی پی جدید از سرور بخوایم.بسته به تنظمیات سرور خروجی تابع چند حالت داره:

0 : اتفاقی نیوفتاده

1 : آدرس تغییر نکرده

2 : آدرس تغییر کرده

3 : rebind آدرس ناموفقیت آمیز

4 : rebind آدرس موفقیت آمیز

تابع IPAddress

این تابع آدرس IP رو بصورت محلی تعریف میکنه. ورودی اون 4 بایتِ آدرس IP هستش که با کاما جدا شدن و خروجی هم نداره.

مثال:

یک آدرس IP دلخواه تعریف کنید و خروجی رو به شکل سریال بفرستید.

خروجی برنامه:
starting W5100
192.168.1.12


حالا بریم سراغ تابع های سرور :
سرور: سرور اون دستگاهیه که از سایر دستگاه ها داده درخواست میکنه یا داده میفرسته.

آردوینو برای سرور ، کلاس تعریف میکنه.(کلاس رو تابحال چند بار توضیح دادم که چیه ، لازم نیست که 2باره توضیح بدم ، هوم؟ 😀 )

تابع EthernetServer

این تابع سروری ایجاد میکنه که از پورتی خاص ، اطلاعات را رد و بدل میکنه.

مثلا : سروری توی پورت  80 ایجاد کنید:

 

تابع server.begin

با اجرای این تابع ، سرور به تقاضاهای مشتری ها (کلاینت ها) پاسخ میده. تابع ورودی و خروجی هم نداره.

مثلا با

 

یک سرور ایجاد میشه .

تابع server.available

این تابع کلاینتی رو میده که میخواد داده مبادله کنه.

تابع server.write

این تابع به تمامی کلاینت هایی که به سرور متصل ان ، داده میفرسته.

 

تابع server.print

ای تابع داده ی ورودی رو به صورت رشته ای از کد اسکی میفرستن. قالب اون بصورت زیره:

 

نوع data میتونه char, byte , long , int یا رشته باشه. پارامتر BASE مبنای داده ی ارسال رو نشون میده. مبنای استفاده میتونه ده (DEC) ، شانزده (HEX) ، هشت (OCT) و دو (BIN) باشد.
پارامتر server قبلا با تابع EthernetServer() ایجاد شده.( server همون کلاسیه که بالاتر گفتم ، درواقع یک جور اسم گذاریه ک با تابع EthernetServer در اینجا میشه انجام داد، مثلا میخواین هم serial.print کنین و هم server.print که این کلاس گذاری باعث تمایز بین کد ها میشه)

تابع server.println

مثل تابع print هستش فقط بعد از نوشتن  میره خط بعد.


کلاینت:

کلاینت هم یک کلاسِ توی آردوینو و میتونه به سرور وصل بشه و به تبادل داده بپردازه.

تابع EthernetClient

این تابع کلاینت رو تعریف می کنه و ایجاد کلاس میکنه و توانایی اینو داره به آدرسی اینترنتی با IP و پورت تعریف شده وصل شه:

مثال:

تابع client.connected

این تابع وصل بودن یا نبودن یک کلاینت رو برسی میکنه. اگر کلاینت وصل باشه ، خروجی TRUE و در غیر اینصورت FALSE هستش. اگر اتصال قطع شده باشه، ولی کلاینت هنوز داده ای داشته باشه که نخوندیم ، تابع خروجی TRUE میده.

مثال : برنامه ای قراره بنویسیم که اگر کلاینت نبود ، پیامی به صورت سریال فرستاده بشه:

 

تابع connect

این تابع به یک IP و پورتِ داده شده وصل میشه. تابع بصورت زیره:

 

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

تابع write

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

تابع client.print

این تابع داده ی ورودی رو بصورت رشته ای از کد اسکی به سروری که کلاینت به اون وصل شده میفرسته ، قالب اون هم بشکل زیره:

 

نوع data میتونه char,long,byte,int باشه، پارامتر BASE مبنای داده ی ارسال رو نشون میده. مبنا ی استفاده میتونه ده (DEC) ، شانزده (HEX) ، هشت (OCT) و دو (BIN) باشد.

تابع client.println

مثل تابع client.print هستش فقط بعد از نوشتن  میره خط بعد.

تابع available

این تابع تعداد بیت هایی رو میده که سرور روی کلاینت نوشته.

 

تابع read

این تابع داده ی بعدی رو میده که روی سرور کلاینت نوشته:

مثلا:

تابع client.flush

این تابع داده هایی رو از بین میبره که از سرور دریافت شده و هنوز خوانده نشده، تابع ورودی ، خروجی نداره.

برای قطع ارتباط با سرور تابع client.stop استفاده میشه. این تابع هم ورودی/خروجی نداره.

آموزش راه اندازی w5100 با پروژه :

پروژه ی مانیتورینگ اتاق با w5100

 

در این پروژه از سنسور HC-SR501 که یک سنسور  مادون قرمزه بهمراه  مقاومت LDR برای تشخیص نور و حرکت در اتاق استفاده شده و شماتیک مثل شکل زیره :

راه اندازی w5100 - پروژه

کد پروژه:

برای نمایش خروجی ، کافیه IP برد روی توی نوار مرورگر تایپ کنیم (اگر فرض کنیم 192.168.1.111 آی پی ما باشه): که در تصویر های زیر مشخصه اگر حرکتی تشخیص داده نشه ، NO Movement نمایش داده میشه و اگر حرکتی تشخیص داده بشه motion detected نمایش داده میشه:

 

پروژه با شیلد شبکه آردوینو W5100

پروژه با شیلد ethernet آردوینو W5100

توضیحات کتابخونه و معرفی نحوه راه اندازی w5100 به پایان رسید ، چون مطلب خیلی طولانی شد بقیه پروژه هارو در فرصت بعدی و در بخش پروژه های آردوینو سعی میکنم قرار بدم 🙂

موفق باشید.

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

شما ممکن است این را هم بپسندید

2 پاسخ‌ها

  1. آرش گفت:

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

    • حمید گفت:

      سلام ، والا من برای شبکه اترنت استفادش کردم ، یعنی در یک ساختمون کامپیوتر ها شبکه بودن و شبکه محلی بود که کافی بود از روتر تنظیم بشه… برای این کار نیاز به آیپی استاتیک داری که باید از isp بخری . پیشنهاد میکنم بجاش از ماژول های esp8266 استفاده کنی.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

از لوینیک حمایت کنید