지난 포스팅에서 아두이노(Arduino)로 인터넷을 연결하는 방법 중 이더넷(Ethernet) 모듈을 사용해보았습니다. 'ENC28J60' 이더넷 모듈을 아두이노 UNO R3 보드와 연결하여 DHCP(Dynamic Host Configuration Protocol: 동적 호스트 구성 프로토콜)를 통해 IP 할당받았습니다. 그럼 오늘은 진짜 인터넷 되는지 궁금하니까 할당받은 IP를 통해 웹 브라우저(web browser)에 간단한 텍스트를 띄워보도록 하겠습니다. 앞서 설명한 내용은 아래 링크 걸어두게요~ 참조 부탁드립니다.
Arduino 아두이노 인터넷 연결하기 - 이더넷(ethernet) 사용 방법
아두이노(Arduino)를 사용하여 홈 IoT(사물인터넷)를 구현하는 프로젝트를 진행하기 위해서는 우선 인터넷이 되어야 합니다. 지난 포스팅에도 설명하였지만 일반적인 아두이노 모델인 UNO R3, Nano, MEGA 같은 보..
it-g-house.tistory.com
- 프로그램 코딩 (ENC28J60 이더넷 모듈 사용)
아두이노로 웹브라우저에 텍스트를 출력하기 위해 프로그램 코딩이 필요합니다. 지난번에 다운로드한 이더넷 라이브러리(Library)를 계속 사용하기 때문에 혹시 없으신 분은 아래 파일을 다운로드하여 스케치(sketch)에서 추가하시면 됩니다.
이더넷 모듈 사용 방법에서 코딩했던 IP를 할당받기 위한 DHCP test 프로그램에서 몇 가지만 추가로 적어주면 되기 때문에 어렵지 않습니다.
#include <EtherCard.h>
// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
byte Ethernet::buffer[700];
const char webpage[] PROGMEM =
"<html>"
"<head>"
"<title>"
"Arduino Websever"
"</title>"
"</head>"
"<body>"
"Hello Arduino!!"
"</body>"
"</html>"
;
void setup () {
Serial.begin(57600);
Serial.println(F("\n[webClient]"));
// Change 'SS' to your Slave Select pin, if you arn't using the default pin
if (ether.begin(sizeof Ethernet::buffer, mymac, 8) == 0)
Serial.println(F("Failed to access Ethernet controller"));
if (!ether.dhcpSetup())
Serial.println(F("DHCP failed"));
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
}
void loop () {
ether.packetLoop(ether.packetReceive());
memcpy(ether.tcpOffset(), webpage, sizeof webpage);
ether.httpServerReply(sizeof webpage);
}
위에 게시된 코드블럭에서 아래와 같이 변수 'webpage'를 HTML(HyperText Markup Language)로 프로그램을 정의하였습니다. HTML은 웹페이지를 만들기 위한 언어로 웹페이지의 전반적인 구조를 만들고 웹 브라우저와 같은 HTML 처리 장치의 행동에 영향을 주는 프로그램 언어들을 제어하는 기능을 합니다. 즉, 웹브라우저에서 동작하는 프로그램 언어입니다. 여기서는 간단한 텍스트만 출력하기 위한 HTML 기본 구조만 작성하였는 점 참고 부탁드립니다.
HTML 코딩에서 <title></title> 안의 내용이 웹페이지의 제목 부분이고 <body></body> 안의 내용이 웹브라우저로 출력하고 싶은 내용을 적으시면 됩니다. 저는 제목은 "Arduino Websever"로 임의로 정하고 "Hello Arduino!!"를 웹브라우저 크롬을 통해 출력하기 위해 위와 같이 작성하였습니다. 프로그램에서 빨간 표시 한 부분을 원하는 데로 바꾸시면 원하는 텍스트를 출력할 수 있습니다. (한글도 가능한데 그냥 하면 웹 브라우저에서 깨지기 때문에 추가적인 코드가 필요합니다. 우선 간단하게 테스트해보시고 한글 출력은 추후 업데이트하도록 하겠습니다.)
그럼 compile 후 아두이노에 성공적으로 업데이트하고 나서 PC와 연결된 USB는 뽑아버리고 아두이노에 외부 전원을 공급하여 확인하도록 하겠습니다. (시리얼 통신으로 가는지 진짜 인터넷을 통하는지 저는 의심이 많아서 일단 컴퓨터와 아두이노와의 연결을 끊었습니다. ㅎㅎ) 그리고 이더넷 모듈에 공유기의 랜선(LAN)을 연결한 후 아두이노에 할당받은 IP를 웹 브라우저에 입력합니다. (저는 IP가 192.168.0.102이고, 웹 브라우저는 크롬으로 진행하였습니다.)
그럼 아래와 같이 짠!! 하고 출력됩니다. 와우~!
추가로 프로그램을 조금 더 설명드리면 void loop() 부분의 명령어는 아두이노에 할당된 IP를 웹 브라우저에 입력하면 이더넷 모듈이 TCP 패킷을 받고, HTML로 작성된 변수 'webpage'의 내용을 웹브라우저로 띄워주는 코딩입니다. (몇 가지 명령어로 간단히 실행이 되는 것은 라이브러리를 사용해서 가능한 겁니다. 얼마나 고마운 존재인가요~ 감사합니다!! ㅎㅎ)
여기까지 아두이노(Arduino)로 인터넷(Internet) 연결하는 방법 중 ENC28J60 이더넷 모듈(Ethernet module)을 사용해서 웹브라우저에 간단한 텍스트를 출력하는 방법을 알아보았습니다. HTML을 사용하실 수 있으신 분은 프로그램을 수정해서 얼마든지 웹페이지를 추가적으로 구성하실 수 있습니다.
지금은 공유기 내부에서 IP를 사용하고 있지만 최종적으로 외부 인터넷을 사용하여 프로젝트를 어디에서나 진행 가능하게 만드는 것이 궁극적인 목표가 될 것입니다. ㅎㅎ 화이팅하겠습니다! ^^
오늘도 긴 글 읽어주셔서 감사합니다. 질문이나 좋은 의견 있으면 언제든지 댓글로 남겨주시면 최선을 다해 연구해서 답변드리겠습니다.
'아두이노 (Arduino) > 인터넷 (Internet) 연결' 카테고리의 다른 글
아두이노(Arduino) 인터넷 하기 - Wifi (ESP-01: ESP8266)연결하는 방법 (28) | 2019.11.19 |
---|---|
Arduino 아두이노 인터넷 연결하기 - 이더넷(ethernet) 사용 방법 (8) | 2019.11.06 |
Arduino 아두이노 인터넷(Internet) 연결하는 방법 (0) | 2019.10.30 |
Arduino 아두이노 인터넷(Internet) 연결하는 방법
지난 포스팅에서 아두이노를 이용하여 온습도 센서를 동작해 보면서 아두이노의 기본적인 사용법과 코딩하는 방법을 알아보았습니다. 본격적인 홈 IoT(사물인터넷) 프로젝트를 진행하려면 아두이노를 인터넷에 연결하는 것은 필수겠죠? ^^ 인터넷 연결하는 방법은 다양하게 있지만 대표적으로 몇 가지를 알아보고 각각의 필요 제품과 특징을 알아보겠습니다.
1. 이더넷(Ethernet) 연결
"이더넷(Ethernet)은 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격이다." (출처: 위키피디아)라고 정의되어 있습니다. 근거리 통신망(LAN)의 대표적인 통신 프로트콜이라고 말할 수 있는데.. 사실 이런 정의는 잘 모르겠고~ ㅎㅎ 그냥 인터넷 케이블을 직접 연결하는 이더넷 모듈(ENC28J60)을 사용하여 인터넷을 사용하는 방법입니다. 모듈 형태에서 볼 수 있듯이 랜선(LAN)을 모듈의 케이블 커넥터에 바로 연결할 수 있고 아두이노가 인터넷 통신을 할 수 있게 합니다.
'ENC28J60' 칩셋을 사용해서 모델명이 보통 ENC28J60 이더넷 모듈이라고 불리고, 온라인상에서 제조사에 따라 모양이나 사용된 부품이 조금씩 다르게 판매하고 있습니다. 또 아두이노 보드와 적층하여 사용하는 '쉴드(shield)' 형태도 판매하고 있습니다. 개인적으로 쉴드 제품들은 초보자들이 사용하는데 친절하지 못하고 제약이 많아서 추천하지 않고 있습니다. 이더넷 모듈을 사용하는 방법과 코딩하는 내용은 아래 링크 첨부하도록 하겠습니다. (2019.11.06 업데이트)
Arduino 아두이노 인터넷 연결하기 - 이더넷(ethernet) 사용 방법
아두이노(Arduino)를 사용하여 홈 IoT(사물인터넷)를 구현하는 프로젝트를 진행하기 위해서는 우선 인터넷이 되어야 합니다. 지난 포스팅에도 설명하였지만 일반적인 아두이노 모델인 UNO R3, Nano, MEGA 같은 보..
it-g-house.tistory.com
2. 와이파이(Wifi) 연결
두 번째로 어디서나 쉽게 사용할 수 있는 와이파이(Wifi)를 연결하는 방법입니다. 일반적으로 아두이노 UNO R3, MEGA, NANO에는 내장된 와이파이 칩이 없기 때문에 ESP8266 와이파이 모듈을 사용합니다. ESP8266 칩셋을 사용하기 때문에 ESP8266 와이파이 모듈이라고 하고 온라인상에서 검색하면 ESP-01 제품을 가장 많이 찾을 수 있습니다. ESP 시리즈는 ESP-14까지 출시되었는데 버전에 따라 다양한 사양과 기능을 활용할 수 있다고 합니다. 가장 일반적으로 사용하는 모델이 ESP-01이며 제가 사용하는 통신도 간단한 데이터 정도만 주고받으면 되기 때문에 ESP-01 모듈로 충분하게 잘 사용하고 있습니다. 기획하시는 프로젝트에 따라 맞게 구입하시면 될 거 같아요 ^^
ESP8266 와이파이도 쉴드 형태로 판매되고 있습니다. 역시나 아두이노에 입문하신 지 얼마 안 되시는 분들에게는 쉴드 사용은 추천하지 않지만...(저도 동작하는데 고생~ 고생을 해서 ㅠㅠ) 추후에 와이파이 실드 사용법은 포스팅하도록 하겠습니다. 직접 사용해 본 단점은 업로드하기 너무 불편했다는 것과 실드를 아두이노와 결착하고 나면 기존 아날로그 I/O 핀이 먹통이 되어 버리고 실드에 있는 1개 핀만 사용할 수 있다는 거였죠.. 이런저런 제약이 많았던 녀석이었습니다...
최근에는 ESP8266 와이파이 칩이 내장되어 있는 아두이노 UNO 제품 및 다양한 버전의 제품이 개발되었는데 아두이노 공식 홈페이지 스토어 https://store.arduino.cc/usa/에서 판매하고 있습니다. 응? 그럼 왜 와이파이 모듈을 사용하냐고요?.... 변명일 수 있지만... 와이파이가 내장되어 있는 제품은 비쌉니다...ㅠㅠ UNO 같은 경우 $44.9이네요... 일반 UNO R3가 $22.0이니까 2배가 넘네요... ESP-01 모듈은 온라인상에서 3천 원대 정도면 구할 수 있으니까!! 조금만 몸과 머리가 고생하면... ㅠㅠ 아 슬프네요 ㅎㅎㅎ
ESP-01 와이파이 모듈 사용하는 방법과 프로그램 업로드 후 'AT command'로 와이파이 접속해서 IP 확인하는 내용을 최근에 업데이트 하였습니다. 아래 링크 참고 부탁드리께요 ^^ (2019.11.19 업데이트)
아두이노(Arduino) 인터넷 하기 - Wifi (ESP-01)연결하는 방법
아두이노(Arduino)로 인터넷을 연결하는 방법은 랜선(LAN)을 연결하는 방법인 이더넷 모듈(Ethernet module)을 사용하는 방법, Wifi를 연결하는 방법, 3G/LTE를 연결하는 방법이 있습니다. 지난 포스팅까지 주로..
it-g-house.tistory.com
3. 3G/LTE 연결하기
마지막으로 3G/LTE를 사용하는 방법으로 SIM5320 칩셋을 사용하는 3G 모듈을 사용합니다. 다른 모듈과 마찬가지로 온라인상에서 제조사에 따라 조금씩 다른 모듈 형태와 부품을 사용하고 있습니다. LTE 모듈은 SIM7000, SIM7600 같은 LTE를 지원하는 칩셋을 사용하여 만들어집니다. 모듈을 보면 USIM을 장착할 수 있는 곳이 있는데 Nano USIM이 아닌 Micro USIM 크기라 사용하시던 USIM을 바로 꼽아 사용하시기에는 불편함이 있습니다. 역시나 3G/LTE 쉴드 버전도 판매되고 있습니다.
3G 모듈을 사용할 경우 USIM을 개통해야 하고, 일반적으로 우리나라에서 개통되는 USIM을 사용하려면 법적으로 3G 모듈의 기기인증을 받아하는 것으로 알고 있기 때문에 사실 편하게 사용하기는 쉽지 않은 듯합니다. 그리고 사용한다 해도 데이터 비용이 계속 지불해야 하기 때문에 인터넷이 안 되는 산골에서 프로젝트를 하지 않는 한 굳이 3G/LTE 모듈을 사용할 일이 있을까 생각되네요 ^^ (참고로 아두이노 홈페이지 스토어에서 아두이노용 USIM을 구입할 수도 있네요 ㅎㅎ)
여기까지 아두이노(Arduino)를 인터넷(Internet)에 연결하는 방법들과 각 모듈에 대해서 알아보았습니다. 저는 이더넷과 와이파이 모듈을 사용해봤는데 모두 인터넷 연결이 잘 되었습니다. 각 모듈 사용방법은 정리되는 데로 바로 포스팅하도록 하겠습니다.
궁금하신 부분이나 필요하신 주제 있으면 언제든지 댓글로 의견 부탁드립니다 ^^
'아두이노 (Arduino) > 인터넷 (Internet) 연결' 카테고리의 다른 글
아두이노(Arduino) 인터넷 하기 - Wifi (ESP-01: ESP8266)연결하는 방법 (28) | 2019.11.19 |
---|---|
Arduino 아두이노 인터넷 사용 - 이더넷(Ethernet)과 웹브라우저 (0) | 2019.11.17 |
Arduino 아두이노 인터넷 연결하기 - 이더넷(ethernet) 사용 방법 (8) | 2019.11.06 |