본문 바로가기
Arduino(아두이노) 키트 강좌

Step.30-Arduino Uno 로 ENC28J60 이더넷 모듈을 사용해 웹으로 LED 제어해 보기

by 오마이엔지니어 2018. 12. 13.
반응형

Arduino Uno 로 ENC28J60 이더넷 모듈을 사용해서 PC의 웹 또는 스마트폰 웹브라우저로 LED 제어해 보는 프로젝트입니다

먼저 Arduino Uno 로 ENC28J60 이더넷 모듈을 사용해 이더넷 접속 여부를 웹브라우저로 확인해 보는 프로젝트 입니다
ENC28J60 이더넷 모듈은 ENC28J60 칩을 기반으로 한 이더넷 모듈로 RJ45 커넥터와 이더넷 연결에
필요한 회로로 인터페이스가 구성되어 있어 손쉽게 이더넷 연결이 가능합니다
SPI 통신 방식으로 아두이노와 같은 마이크로 컨트롤러와 통신하며 HTTP stack 을 활용하고 싶지만
이더넷 쉴드의 가격이 부담 스럽다면 ENC28J60 이더넷 모듈을 사용해서 테스트 해 볼수 있습니다

 

 

Arduino Uno R3 (Italy)

ENC28J60 이더넷 모듈

점퍼케이블

사용된 키트

Arduino Starter kit (클릭)


구성 배선도 


구성 배선도-V2

사용된 예제소스 

EtherCard.txt


사용된 라이브러리

ethercard-master.zip


ENC28J60 이더넷 모듈을 테스트 하려면 라이브러리를 추가해 주어야 합니다
라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요


*ENC28J60 이더넷모듈 테스트 방법*

(첨부된 라이브러리를 내문서의 아두이노 라이브러리 폴더에 복사해서
라이브러리를 추가해 줍니다)

첨부된 예제 코드를 아두이노 IDE 에 복사해서 업로드해 줍니다
또는 아두이노 IDE 에서 파일 -> 예제 -> ethercard ->backSoon 을 클릭해서
스케치를 불러 내도 됩니다


위의 구성 배선도 이미지를 참조해서 배선을 한후 공유기를 통해
랜선을 ENC28J60 이더넷모듈에 연결 합니다


*예제 코드를 자신의 공유기 환경에 맞게 수정해 주어야 합니다*

-------------------------------------------------------------------------------
#define STATIC 0  // set to 1 to disable DHCP (adjust myip/gwip values below)
-------------------------------------------------------------------------------

STATIC 0 은 공유기 IP 환경에 맞게 0 이나 1로 설정합니다

0으로 설정하여 테스트 하였습니다

-------------------------------------
static byte gwip[] = { 192,168,0,1 };
-------------------------------------
은 공유기 IP 주소 입니다

--------------------------------------
static byte myip[] = { 192,168,0,10 };
--------------------------------------
아두이노 에 연결된 ENC28J60 이더넷모듈 IP 주소 입니다


(익스플로러에서 192,168,0,1 로 접속해 IPTIME 공유기 관리자에 접속해서 내부네트워크 를 검색하면
연결된 ENC28J60 이더넷모듈 IP 주소 를 확인할수 있습니다 Arduino-XX 이런식으로 검색되고 연결 됩니다 <하단 동영상 참조>

192,168,0,10 로 연결 되었기에 192,168,0,10 로 테스트 하였습니다)

주의! 만약 내부네트워크에서 ENC28J60 에 연결 된 아두이노 장치 검색 및 IP 주소 확인이 안된다면?
이 경우 아두이노에 일단 먼저 첨부파일의 EtherCard 예제코드를  IP주소 수정없이 스케치 업로드 해 줍니다
그리고 아두이노의 리셋 버튼을 눌러주고 IPTIME 관리자에서 내부네트워크에 Arduino 이더넷이 검색 되는지 다시한번 확인해 봅니다 


-------------------------------------------------------------------
const char page[] PROGMEM =
"HTTP/1.0 503 Service Unavailable\r\n"
"Content-Type: text/html\r\n"
"Retry-After: 600\r\n"
"\r\n"
"<html>"
  "<head><title>"
    "Hello from Arduino RJ Technology"
  "</title></head>"
  "<body>"
    "<h3>This is an Arduino answering-RJ Technology</h3>"
    "<p><em>"
      "Have fun finding out more fun things to do  with this!<br />"
      "Please try again and again."
    "</em></p>"
  "</body>"
"</html>"
;

---------------------------------------------------------------------
웹 페이지에 표시될 HTML 입니다

------------------------------------------------------
"<h3>This is an Arduino answering-RJ Technology</h3>"
------------------------------------------------------
이부분을 한번 자신이 원하는 대로 수정해 봅니다


익스플로러에서 192,168,0,10 주소를 입력하면

-------------------------------------------------------
This is an Arduino answering-RJ Technology

Have fun finding out more fun things to do  with this!
Please try again and again
--------------------------------------------------------

이렇게 화면에 출력이 됩니다

이상 ENC28J60 모듈 테스트 설명 입니다


프로젝트 동영상



이어서 Arduino Uno 로 ENC28J60 이더넷 모듈을 사용해서 PC의 웹 또는 스마트폰 웹브라우저로 

LED 제어해 보는 프로젝트를 진행해 보겠습니다

사용된 부품

Arduino Uno R3 (Italy)

ENC28J60 이더넷 모듈

점퍼케이블

미니브래드보드
3mm LED 블루
막대저항 220 Ohm 

사용된 키트

Arduino Starter kit (클릭)


구성 배선도-웹으로 LED 제어해 보기 

 

 

사용된 예제소스 

EtherCard-led.txt


사용된 라이브러리

ethercard-master.zip

*테스트 방법*
먼저 배선도는 첫번째 테스트와 거의 동일하고 LED만 아두이노 9번핀에 추가 되었음을 확인할 수 있습니다
예제소스는 위 첨부 된 'EtherCard-led' 를 사용하면 되고 라이브러리는 동일한 'ethercard' 라이브러리를 사용하기 때문에

위 첫번째 테스트에서 먼저 설치하였다면 추가로 설치할 필요는 없습니다

예제코드를 업로드해 주고 이더넷 모듈과 아두이노를 배선합니다
(익스플로러에서 192,168,0,1 로 접속해 IPTIME 공유기 관리자에 접속해서 내부네트워크 를 검색하면
연결된 ENC28J60 이더넷모듈 IP 주소 를 확인할수 있습니다 Arduino-XX 이런식으로 검색되고 연결 됩니다 <하단 동영상 참조>

192,168,0,13 로 연결 되었기에 192,168,0,13 로 테스트 하였습니다)

주의! 만약 내부네트워크에서 ENC28J60 에 연결 된 아두이노 장치 검색 및 IP 주소 확인이 안된다면?
이 경우 아두이노에 일단 먼저 첨부파일의 EtherCard 예제코드를  IP주소 수정없이 스케치 업로드 해 줍니다
그리고 아두이노의 리셋 버튼을 눌러주고 IPTIME 관리자에서 내부네트워크에 Arduino 이더넷이 검색 되는지 다시한번 확인해 봅니다

*예제 코드를 자신의 공유기 환경에 맞게 수정해 주어야 합니다*
-------------------------------------------------------------------------------
// mac address
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
// ethernet interface ip address
static byte myip[] = { 192,168,0,13 };
// gateway ip address
static byte gwip[] = { 192,168,0,1 };
-------------------------------------------------------------------------------

 

ENC28J60 모듈과 연결된 IP 주소가 확인 되었다면
예제코드의 빨간색 부분을 이더넷 모듈과 연결된 자신의 IP 주소로 변경해 주고 다시한번 예제코드를 업로드해 줍니다

-------------------------------------------------------------------------------
// LED to control output
int ledPin10 = 9;
------------------------------------------------------------------------------- 

위 예제코드에서 보면 알수 있듯이 LED는 아두이노의 9번핀에 연결되도록 설정되어 있습니다

-------------------------------------------------------------------------------
// IF LED10=ON turn it on
if(strstr((char *)Ethernet::buffer + pos, "GET /?LED10=ON") != 0) {
Serial.println("Received on command");
digitalWrite(ledPin10, HIGH);
}

// IF LED10=OFF turn it OFF
if(strstr((char *)Ethernet::buffer + pos, "GET /?LED10=OFF") != 0) {
Serial.println("Received OFF command");
digitalWrite(ledPin10, LOW);
}
-------------------------------------------------------------------------------
위 예제코드에서 보면 알수 있듯이
인터넷 주소창에 ENC28J60 모듈과 연결된 IP 주소 http://192.168.0.XX 로 연결한 다음에
http://192.168.0.XX/?LED10=ON  이렇게 치면 LED가 켜지고
http://192.168.0.XX/?LED10=OFF 이렇게 치면 LED가 꺼지게 됩니다
(주의!  배선도를 보면 LED는 아두이노의 9번 핀에 연결하였지만

LED10=ON&OFF 이런 식으로 예제가 짜여져 있으니 이점 헷갈리지 맙시다 ㅡㅡ&)

물론 WIFI 만 연결되어 있다면 스마트폰 웹 브라우저로도 동일하게 테스트 가능합니다

프로젝트 동영상-웹으로 LED 제어해 보기 

 

 
EtherCard-led.txt
0.0MB
 
EtherCard.txt
0.0MB
 
ethercard-master.zip
0.1MB
반응형

댓글