아두이노에서 같은 네트워크 환경에 있는 다른 장비에 Ping을 날리고 응답을 확인하는 예제입니다.

 

ICMPPing은 현재 아두이노 스케치에서 설정되어있는 Ethernet 라이브러리 2.x 버전에서는 에러가 납니다.

 

따라서 아두이노 라이브러리 관리에서 Ethernet을 검색한 후 버전은 1.x 으로 낮추어 사용하시기 바랍니다.

 

또한 이더넷 쉴드는 전체 소켓을 4개까지만 사용할 수 있으니 아두이노로 통신을 하시는 분들은 유의하시어 코드를 작성하시기 바랍니다.

 

#include <ICMPPing.h>

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // max address for ethernet shield
byte ip[] = {192,168,0,56}; // ip address for ethernet shield
IPAddress pingAddr(192,168,0,41); // ip address to ping

SOCKET pingSocket = 0;

char buffer [256];
ICMPPing ping(pingSocket, (uint16_t)random(0, 255));

void setup() 
{
  // start Ethernet
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
}

void loop()
{
  ICMPEchoReply echoReply = ping(pingAddr, 4);
  if (echoReply.status == SUCCESS)
  {
    sprintf(buffer,
            "Reply[%d] from: %d.%d.%d.%d: bytes=%d time=%ldms TTL=%d",
            echoReply.data.seq,
            echoReply.addr[0],
            echoReply.addr[1],
            echoReply.addr[2],
            echoReply.addr[3],
            REQ_DATASIZE,
            millis() - echoReply.data.time,
            echoReply.ttl);
  }
  else
  {
    sprintf(buffer, "Echo request failed; %d", echoReply.status);
  }
  Serial.println(buffer);
  delay(500);
}

 

icmp_ping.zip
0.01MB

+ Recent posts