آردوینو - آموزش آردوینو-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منبع

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

Related Articles

2 Comments

  1. سلام من این کد رو کپی کردم و از ماژول enc28j60 استفاده کردم متاسفانه هیچ جوابی نمیگیرم کابل لن رو هم عوض کردم اتصالات رو چک کردم کتابخونش رو هم دانبود کردم ولی حتی تو cmd پیتگ میکنم هم خبری نمیشه ip رو هم دستی وارد کرم

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

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

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