آردوینو Arduinoمطالب آموزشی

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

این شیلد جهت اتصال برد آردوینو شما به شبکه اینترنت میباشد.تنها با وصل کردن ماژول به برد آردوینو و اتصال به شبکه توسط یک کابل اترنت استاندارد RJ45 و بکارگیری چند دستور ساده در کامپایلر آردوینو می توانید جهان پیرامون خود را از طریق اینترنت کنترل کنید.این شیلد با استفاده ازچیپ Wiznet W5100 اینترنت را به آردوینو به ارمغان می آورد.Wiznet W5100 یک شبکه (IP) با امکان TCP و UDP فراهم می کند. از چهار اتصال همزمان سوکت پشتیبانی می کند. با استفاده از کتابخانه Ethernet می توانید برنامه اتصال به اینترنت را از طریق شیلد بنویسید. این برد دارای شکاف SD-card است که می تواند برای ذخیره فایل ها برای سرو کردن در شبکه مورد استفاده قرار گیرد. این شیلد همچنین دارای یک کنترلر ریست برای اطمینان از اینکه ماژول در هنگام روشن شدن به درستی ریست شده است می باشد .نسخه های قدیمی این شیلد فاقد سازگاری با بردهای مگا بوده و نیاز به ریست دستی بعد از روشن شدن می باشند.

نحوه ای ارتباط با آردینو

fz05sn7h05nt26i-large

آردیونو با W5100 و SD card با استفاده از گذرگاه SPI ارتباط برقرار می کند.( از طریق هدر ICSP) .با پین دیجیتال 11، 12 و 13 روی Duemilanove و پین 50،51 و 52 روی مگا. بر روی هر دو برد پین 10 برای انتخاب W5100 و پین 4 برای SD card استفاده شده است. توجه داشته باشد که گذرگاه SPI بین W5100 و SD card به اشتراک گذاشته می شود و فقط یکی می تواند در یک زمان فعال باشد.این شیلد دارای تعدادی LED هشدار بصورت زیر است:

  • PWR نشان می دهد که برد و شیلد به منبع تغذیه متصلند.
  • LINK وجو یک لینک شبکه را نشان می دهد و وقتی شیلد دیتا می فرستد یا دریافت می کند چشمک می زند.
  • FULLD نشان می دهد که اتصال شبکه دو رشته ای کامل است.
  • 100M نشان دهنده ی حضور یک اتصال شبکه 100Mb/s ( درمقابل 10Mb/s ).
  • RX وقتی شیلد دیتا دریافت می کند چشمک می زند.
  • TX وقتی شیلد دیتا ارسال می کند چشمک می زند.
  • COLL وقتی collision در شبکه شناسایی شود چشمک می زند.

ویژگی ها:

  • ولتاژ تغذیه: 5 ولت که از برد آردوینو دریافت می کند
  • نرخ اطلاعات اترنت: 10/100Mbps
  • تبادل اطلاعات با برد آردوینو از طریق پروتکل SPI
  • دارای شکاف کارت حافظه  SD-card
  • کانکتور استاندارد Rj45 (شبکه LAN)
  • 7 نشانگر ال ای دی

کاربرد:

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

ابزار مورد نیاز:

 

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

fdp0voxh05nhcwo-large

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

File –> Examples –> Ethernet –> DhcpAddressPrinter

بعد از باز شدن برای بار اول باید MAC آدرس شیلد آردوینو خود را در برنامه در قسمتی که در زیر مشخص شده وارد کنید. مک آدرس روی شیلد آردوینو نوشته شده است.

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};

بعد از وارد کردن MAC آدرس برنامه را روی برد آردوینوی خود آپلود کنید بعد از این کار با باز کردن سریال مانیتور باید IP شیلد شبکه W5100 نمایش داده شود.

b-768x614

مانیتور اتاق با شیلد شبکه W5100 و آردوینو

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

a

کد راه اندازی مانیتور اتاق با شیلد شبکه W5100 و آردوینو

#include <SPI.h>
#include <Ethernet.h>

// ethernet configuration
byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
IPAddress ip(192,168,1,111); // P1 --> { 10, 1, 1, 5 };
EthernetServer server(3178);              // port 80 is default for HTTP

// initial
int LED = 3;          // led is connected to digital pin 3
int PIR = 2;          // PIR sensor is connected to digital pin 2
int LDR = 5;          // LDR sensor is connected to analog in 5
int PIRstate = 0;     // variable for PIR sensor status
float photocell = 0;  // variable for photocell (LDR) analog value
char c = 0;           // received data
char command[2] = "\0";  // command


void setup()
{
  Ethernet.begin(mac, ip);
  server.begin();
  pinMode(LED, OUTPUT);
  pinMode(PIR, INPUT);
}


void loop()
{
  EthernetClient client = server.available();
  // detect if current is the first line
  boolean current_line_is_first = true;

  if (client) {
    // an http request ends with a blank line
    boolean current_line_is_blank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // if we've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so we can send a reply
        if (c == '\n' && current_line_is_blank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          // auto reload webpage every 5 second
          client.println("<META HTTP-EQUIV=REFRESH CONTENT=5 URL=>");
          
          // webpage title
          client.println("<center><p><h1>Arduino + Ethernet Shield Application v1.0</h1></p><center><hr><br />");

          // read analog pin 1 for the value of photocell
          photocell = analogRead(LDR);
          client.print("<p><h2>Light reading = <font color=indigo>");
          client.println(photocell, 2);
          client.println("</font></h2></p>");
          
          // read digital pin 13 for the state of PIR sensor
          PIRstate = digitalRead(2);
          if (PIRstate == HIGH) { // PIR sensor detected movement
            client.println("<p><h2><font color=red>Motion Detected!</font></h2></p>");
          }
          else { // No movement is detected
            client.println("<p><h2><font color=green>No Movement</font></h2></p>"); 
          }  
          
          // button functions
          client.println("<form  method=get name=form>");
          client.println("<button name=b value=1 type=submit style=height:80px;width:150px>LED On</button>");
          client.println("<button name=b value=2 type=submit style=height:80px;width:150px>LED Off</button>");
          client.println("</form><br />");
          
          // webpage footer
          client.println("<hr><center><a href=http://www.robothead2toe.com.my>Robot.Head to Toe</a><br />");
          client.println("<p>P.S.: This page will automatically refresh every 5 seconds.</p></center>");
          
          break;
        }
        if (c == '\n') {
          // we're starting a new line
          current_line_is_first = false;
          current_line_is_blank = true;
        } 
        else if (c != '\r') {
          // we've gotten a character on the current line
          current_line_is_blank = false;
        }
        // get the first http request
        if (current_line_is_first && c == '=') {
          for (int i = 0; i < 1; i++) {
            c = client.read();
            command[i] = c;
          }
          // LED control
          if (!strcmp(command, "1")) {
            digitalWrite(LED, HIGH);
          }
          else if (!strcmp(command, "2")) {
            digitalWrite(LED, LOW);
          }
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    client.stop();
  }
}

برای مانیتور کردن وضعیت اتاق کافی است IP برد  آردوینو را در مرورگر خود وارد کنید. (به عنوان مثال: 192.168.1.111) اگر حرکتی تشخیص داده نشود عبارت NO Movement نشادن داده می شود.

c-400x334

اگر حرکتی تشخیص داده شود عبارت motion detected نمایش داده میشود.

f-400x334

نوشته های مشابه

11 دیدگاه

  1. درود
    با تشکر از سایت خوبتون
    جسارتا در متن ابهامی برام ایجاد شد.
    ممکنه لطفا این بخش رو بیشتر توضیح بدین ؟
    پیشاپیش از لطفتون سپاسگزارم

  2. آردیونو با W5100 و SD card با استفاده از گذرگاه SPI ارتباط برقرار می کند.( از طریق هدر ICSP) .با پین دیجیتال 11، 12 و 13 روی Duemilanove و پین 50،51 و 52 روی مگا. بر روی هر دو برد پین 10 برای انتخاب W5100 و پین 4 برای SD card استفاده شده است. توجه داشته باشد که گذرگاه SPI بین W5100 و SD card به اشتراک گذاشته می شود و فقط یکی می تواند در یک زمان فعال باشد.

  3. برای مانیتورینگ و کنترل کردن اشیا توسط این شیلد از طریق اینترنت همراه و بیرون از اونجایی که کار گزاشتیم نیاز به آی پی استاتیک برای مودم مون که شیلد بهش متصل هست داریم ؟ یا نه با وارد کردن اون آیپی و پورت اتصال دیگه میشه از هرجایی کنترل کرد؟

  4. با سلام
    با تشکر از مطالب با ارزش سایتتون

    آیا میشه همین کاربرد اتصال به اینترنت اردوینو را با ماژول GSM/GPRS هم انجام داد؟(یعنی با ماژول GSM/GPRS آردوینو به اینترنت متصل کرد) اگر امکان این قابلیت هست راهنمایی کنید
    در ضمن بر روی شیلد اترنت یک امکان برای استفاده از سیم کارت وجود داره. آیا میشه از اینترنت سیم کارت بجای اینترنت مودم استفاده کرد؟ اگر امکان این قابلیت هست راهنمایی کنید

    با تشکر فراوان

  5. سلام. این برنامه رو روی بورد آپلود کردم. پینگ ping داره ولی صفحه وب که برای کنترل هست باز نمیشه. دلیل خاصی داره؟ ممکنه به خاطر این باشه که از بورد نوع smd آردوینو uno استفاده میکنم؟ یا اینکه هنوز هیچ سنسوری (PIR یا LDR) روی بورد نبستم؟

  6. سلام دوستان.من به یک برنامه نیاز دارم که با اینترنت از یه شهر دیگه 2 تا ledرو روشن خاموش کنم و البته وضیعت led رو هم ببینم.ضمنا می خوام برنامه امن غیر قابل دسترسی برای عموم باشه .
    راستی ادرس ip بخرم میشه جای اون mac ipزد؟چون روی شیلد mac/ip وجود نداره در حقیقت مال هیچکسی نداره.

  7. با تشکر از شما. مطالب بسیار خوبی بود . فقط تصویر اتصالها با کدی که نوشتید مطابقت نداره . در تصویر پایه های 3و 4وa5 متصل شده ولی در کد پایه های 2, 3 , 5

  8. سلام اقای عزتی میشه بگید چطوری میشه یه led برای وصل و قطع اینترنت بزاریم موقعی که اینترنت وصل بشه led روشن بشه و موقعی که اینترنت نداشته باشم led قطع بشه با پین های دیجیتال چطوری میشه خروجی ازش بگیریم

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

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

دکمه بازگشت به بالا