검색
홈으로 마이페이지 주문조회 장바구니
로그인
회원정보 게시판
회사소개 이메일
도서(BOOK)
키트(KIT)
특판 상품
졸업작품&전자기초
응용모듈
전자부품
모터
기구
엔클로져
고객센터 게시판
자유게시판
MCU 통합 게시판
강좌-RaspberryPi
강좌-드론(쿼드콥터)
강좌-아두이노(기초)
강좌-아두이노(응용)
신제품/신기술 소개
DIY 공작 게시판
윤교수의 연구실 칼럼
 ☎ : 02-776-4868

 F: 02-779-6757

☞ 평일 : 09~18시
☞ 주말 : 10~13시


국민822401-04-027758
☞ 예금주 : Ohm사
국민822401-04-027761
☞ 예금주 : R&C사
 
 
1 (주)알트소프트 사이트
 
2 LabVIEW 강좌 사이트
 
3 윤교수의 마이크로프로세서 월드
 
4 전자 엔지니어
 

 

 
강좌-아두이노(응용)
 
2014. 12. 08 (10:30)
제목[아두이노 응용] 5. 이더넷 쉴드(Ethernet Shield)
작성자 조회 : 5409

5. 이더넷 쉴드(Ethernet Shield)

 

이번 강좌에서는 이더넷 쉴드에 대해서 간단히 소개하고, 그 사용법에 대해서 알아보도록 한다.

강좌에서 사용되는 이더넷 쉴드는 아래 사진과 같고, Wiznet W5100 TCP/IP 전용 IC를 사용하고 있으며, 동시에 4개의 소켓의 연결이 가능하다.

 


 

아두이노 Mega2560/Uno R3 호환형이며, Micro-SD 소켓이 내장되어 있다. 또한, 1개의 독립된 PoE(Power-over-Ethernet) 모듈을 가지고 있는 장점이 있다.

아두이노 IDE Ethernet 라이브러리를 사용하여 작동이 가능하며, SPI 버스 제어로 최소한의 포트로 제어가 가능하다.

 

아두이노 공식 사이트에서 제공되는 Ethernet Library 레퍼런스에는 아두이노와 이더넷 쉴드가 어떻게 연결이 되야 되는지 설명이 되어 있다.

 

Arduino communicates with the shield using the SPI bus. This is on digital pins 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used as SS. On the Mega, the hardware SS pin, 53, is not used to select the W5100, but it must be kept as an output or the SPI interface won't work.

 

 

강좌에서는 아두이노 우노로 진행을 하고 있으니, 우노 보드만 참고하기 바란다.

일단, IDE에서 제공되는 라이브러리와 예제를 이용해서 이더넷 쉴드를 사용해 보기로 하자.

 

 

WebServer 예제를 열어 보자.

 

 

#include

#include

 

// Enter a MAC address and IP address for your controller below.

// The IP address will be dependent on your local network:

byte mac[] = {

  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress ip(192,168,10,177);

 

// Initialize the Ethernet server library

// with the IP address and port you want to use

// (port 80 is default for HTTP):

EthernetServer server(80);

 

void setup() {

 // Open serial communications and wait for port to open:

  Serial.begin(9600);

 

  // start the Ethernet connection and the server:

  Ethernet.begin(mac, ip);

  server.begin();

  Serial.print("server is at ");

  Serial.println(Ethernet.localIP());

}

 

void loop() {

  // listen for incoming clients

  EthernetClient client = server.available();

  if (client) {

    Serial.println("new client");

    // an http request ends with a blank line

    boolean currentLineIsBlank = true;

    while (client.connected()) {

      if (client.available()) {

        char c = client.read();

        Serial.write(c);

        // if you've gotten to the end of the line (received a newline

        // character) and the line is blank, the http request has ended,

        // so you can send a reply

        if (c == '\n' && currentLineIsBlank) {

          // send a standard http response header

          client.println("HTTP/1.1 200 OK");

          client.println("Content-Type: text/html");

          client.println("Connection: close");  // the connection will be closed after completion of the response

         client.println("Refresh: 5");  // refresh the page automatically every 5 sec

          client.println();

          client.println("");

          client.println("");

          // output the value of each analog input pin

          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {

            int sensorReading = analogRead(analogChannel);

            client.print("analog input ");

            client.print(analogChannel);

            client.print(" is ");

            client.print(sensorReading);

            client.println("
");
      

          }

          client.println("");

          break;

        }

        if (c == '\n') {

          // you're starting a new line

          currentLineIsBlank = true;

        }

        else if (c != '\r') {

          // you've gotten a character on the current line

          currentLineIsBlank = false;

        }

      }

    }

    // give the web browser time to receive the data

    delay(1);

    // close the connection:

    client.stop();

    Serial.println("client disonnected");

  }

}

 

위 코드는 이더넷 쉴드를 웹서버로 이용하는 간단한 예제로, 6개의 아날로그 포트의 값을 웹을 통해서 확인 할 수 있는 예제이다.

 

           #include

#include

 

위에서 언급했듯이, 이더넷 쉴드는 SPI 버스를 통해서 제어가 되니 SPI 라이브러리와 제공되는 Ethernet 라이브러리를 추가한다.

 

IPAddress ip(192,168,10,177);

 

IP 주소는 본인의 환경에서 할당된 IP를 기입하면 된다.

 

 

ping을 한번 날려 보면, 잘 연결되어 응답하는 것을 볼 수 있다.

 

           EthernetServer server(80);

 

이더넷 서버 라이브러리를 초기화하고, http의 디폴트 포트(80)를 지정해 준다.

 

           Ethernet.begin(mac, ip);

       server.begin();

 

이더넷 연결과 서버를 시작한다.

 

           EthernetClient client = server.available();

 

클라이언트의 인커밍(incoming)을 확인한다.

 

클라이언트의 인커밍이 있으며, 클라이언트와 연결을 생성하고 지정된 동작을 수행한다.

클라이언트와 연결이 되면, 아래와 같이 시리얼 터미널에 연결 메시지가 뜨고,

 

 

인터넷 익스플로어를 실행 후에, 웹서버의 IP를 입력하면,

 

 

아날로그 포트의 값이 출력되는 것을 볼 수 있다.

 

client.println("Refresh: 5");  // refresh the page automatically

every 5 sec

 

Refresh 주기가 5초로 설정되어 있어서, 5초마다 갱신을 하게 되어 있으니, 임의로 주기를 변경하여 아날로그 입력 값을 확인 할 수 있다.

 

웹서버의 기능을 활용하려면, HTML에 대해서도 지식이 있어야 되기 때문에 사용에 문제가 있을 수도 있지만, 간단한 코드를 익혀서 적용시키면, 훌륭한 웹서버로도 충분히 이용이 가능하다고 생각된다.

비밀번호 확인 닫기
name password
  Content name date hits
[아두이노 응용] 5. 이더넷 쉴드(Ethernet Shield)  
2014/12/08 5409
상호명 : R&C사 사업자등록번호 : 106-02-43112 통신판매업신고번호 : 용산 03564
대표 : 곽민수 사업장소재지 : 서울시 용산구 갈월동 17-1번지 세기빌딩 101호
전화 : ☎ : 02-776-4868 ,F: 02-779-6757 개인정보담당자 : 곽민수
[회사소개] [이용안내] [이용약관] [개인정보취급방침]
Copyright ⓒ 도서출판 OHM사와 학습기기 R&C사 All Rights Reserved.