반응형

 

 

 

아두이노(Arduino)를 사용하여 홈 IoT(사물인터넷)를 구현하는 프로젝트를 진행하기 위해서는 우선 인터넷이 되어야 합니다. 지난 포스팅에도 설명하였지만 일반적인 아두이노 모델인 UNO R3, Nano, MEGA 같은 보드는 인터넷을 사용할 수 있는 칩셋이 내장되어 있지 않기 때문에 인터넷을 사용하려면 이더넷(ethernet), 와이파이(Wifi), 3G/LTE 모듈 등을 사용해야 합니다. 조금 더 비용을 지불하고 와이파이 칩이 내장되어 있는 아두이노 UNO 와이파이 모델을 구입해도 됩니다 ㅎㅎ 전... 사정이 넉넉하지 못해서 ㅠㅠ 

 

그래서! 오늘 드디어 이더넷 모듈을 사용하는 방법에 대해서 포스팅하겠습니다. 아두이노로 인터넷 연결하는 모듈 제품들에 관해서는 지난 포스팅 링크 첨부하게요~ 참고 부탁드립니다 ^^

 

Arduino 아두이노 인터넷(Internet) 연결하는 방법

지난 포스팅에서 아두이노를 이용하여 온습도 센서를 동작해 보면서 아두이노의 기본적인 사용법과 코딩하는 방법을 알아보았습니다. 본격적인 홈 IoT(사물인터넷) 프로젝트를 진행하려면 아두이노를 인터넷에 연..

it-g-house.tistory.com


1. 이더넷(Ethernet) 모듈

 

아두이노 이더넷(Ethernet) 모듈

 

인터넷 케이블을 직접 연결하여 사용하는 이더넷 모듈(ENC28J60)입니다. 모듈 형태에서 볼 수 있듯이 랜선(LAN)을 모듈의 케이블 커넥터에 바로 연결할 수 있고 아두이노가 인터넷 통신을 할 수 있게 합니다. 'ENC28J60' 칩셋을 사용해서 모델명이 보통 ENC28J60 이더넷 모듈이라고 불리고, 온라인상에서 제조사에 따라 모양이나 사용된 부품이 조금씩 다르게 판매하고 있습니다.

 

칩셋 ENC28J60
구동 전압 3.1~3.4 V DC
동작 온도 0 ~ 70
Oscillator 25mhz
LAN IEEE 802.3 호환

 

2. 이더넷(Ethernet) 모듈 배선

 

이더넷 모듈은 구동 전압이 3.1~3.4V로 VCC 핀을 아두이노의 3.3 V 핀에 연결해주고, GND는 아두이노 GND와 연결합니다. 이더넷 모듈은 아두이노와 통신을 시리얼 통신(Serial communication) 중 하나인 SPI (Serial Peripheral Interface: 직렬 주변기기 인터페이스) 통신을 사용하고 있습니다. 랜선(LAN)을 통해서 송수신하는 신호를 아두이노에 MOSI, MISO, SCK, SS선을 통해 전달하는데, 각각의 역할은 표와 같습니다.

 

  기능
MOSI(SI): Master Out, Slave In 마스터(아두이노)에서 데이터를 출력하기 위한 신호
MISO(SO): Master In, Slave Out 슬레이브(이더넷 모듈)에서 데이터를 출력하기 위한 신호
SCK: Serial Clock Clock (동기화) 신호
SS(CS): Slave Select 데이터를 송수신할 슬레이브(이더뎃 모듈)를 선택하기 위한 신호

 

 

 

 

SPI 통신에 대해선 다음에 시리얼 통신에 대해 다루면서 자세히 알아보도록 하겠습니다. 다시 이더넷 모듈로 돌아가서 전원을 위한 VCC와 GND pin 외에 6개 핀 중에서 SI, SO, SCK, CS만 사용합니다. SI는 11번 핀, SO는 12번 핀, SCK는 13번 핀에 연결하고 CS는 8번 핀에 연결하면 되는데 나중에 프로그램에서 자유롭게 바꿀 수 있습니다. 연결하실 때 아래 그림 참고하시면 될 거 같아요 ^^

 

 

아두이노(Arduino) 인터넷 연결하기 - 이더넷(Ethernet) 모듈 배선

 

3. 아두이노 프로그램 코딩

 

이더넷 모듈을 사용하려면 역시 '라이브러리(Library)'가 필요합니다. 지난번에도 잠깐 언급하였지만 '라이브러리'를 간단히 설명하면 이미 코딩된 프로그램을 인용해서 사용하는 개념 정도로 이해하시면 됩니다. 라이브러리 파일은 아래 첨부해 두겠습니다.

EtherCard.zip
0.12MB

첫 번째 코딩은 DHCP(Dynamic Host Configuration Protocol: 동적 호스트 구성 프로토콜)와 DNS(Domain Name System)를 테스트하여 IP주소를 할당받을 수 있는 프로그램입니다. 

 

#include <EtherCard.h>

#define REQUEST_RATE 5000 // milliseconds

// ethernet interface mac address
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[700];

void setup () {
  Serial.begin(57600);
  Serial.println("\n[getDHCPandDNS]");

  // Change 'SS' to your Slave Select pin, if you arn't using the default pin
  if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)
    Serial.println( "Failed to access Ethernet controller");

  if (!ether.dhcpSetup())
    Serial.println("DHCP failed");

  ether.printIp("My IP: ", ether.myip);
  ether.printIp("Netmask: ", ether.netmask);
  ether.printIp("GW IP: ", ether.gwip);
  ether.printIp("DNS IP: ", ether.dnsip);
}

void loop () {
}

 

앞서 얘기했듯이 CS핀은 어디든지 연결할 수 있습니다. 그렇기 때문에 프로그램 중간쯤에 'Change 'SS' to your Slave Select pin, if you arn't using the default pin'이라고 적혀 있듯이 CS 핀을 8번 핀에 연결했으면 if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)에서 SS를 8로 바꿔주시면 됩니다. 프로그램 코딩 후 랜선(LAN)을 이더넷 모듈에 연결하고 아두이노에 스케치를 통해 업로드를 합니다. 시리얼 모니터(Serial Monitor) 창을 열면 IP, Netmask, 게이트웨이, DNS 정도를 확인할 수 있습니다. IP 192.168.0.102로 할당되었네요 ^^ 

 

이더넷 모듈 사용하여 아두이노 인터넷 연결하기

 

아두이노(Arduino) 인터넷 연결하기 - 이더넷(Ethernet) 모듈 사용하여 IP 할당받기

 


 

여기까지 이더넷(Ethernet) 모듈을 사용하여 아두이노(Arduino)로 인터넷을 연결하고 IP를 할당 받는 방법을 알아보았습니다. 그럼 진짜 인터넷이 되는지 궁금하니까 웹상으로 데이터도 보내보고 ping도 확인해보는 작업을 해보도록 하겠습니다.

 

긴 글 읽어주셔서 감사합니다. 질문사항이나 추가적인 내용 궁금하시면 언제든지 댓글로 남겨주세요 ^^

 

 

* 이어서 이더넷 모듈을 사용하여 웹브라우저에 간단한 텍스트를 출력해보는 방법에 대해서 포스팅 완료하였습니다. 관심있으신 분은 아래 링크를 타고 들어가셔서 참고 부탁드립니다 ^^ (2019.11.17 업데이트)

 

Arduino 아두이노 인터넷 사용 - 이더넷(Ethernet)과 웹브라우저

지난 포스팅에서 아두이노(Arduino)로 인터넷을 연결하는 방법 중 이더넷(Ethernet) 모듈을 사용해보았습니다. 'ENC28J60' 이더넷 모듈을 아두이노 UNO R3 보드와 연결하여 DHCP(Dynamic Host Configuration Proto..

it-g-house.tistory.com

 

 

 

 

반응형

+ Recent posts