반응형

 

 

아두이노(Arduino)로 인터넷을 연결하는 방법은 랜선(LAN)을 연결하는 방법인 이더넷 모듈(Ethernet module)을 사용하는 방법, Wifi를 연결하는 방법, 3G/LTE를 연결하는 방법이 있습니다. 지난 포스팅까지 주로 이더넷 모듈을 사용한 방법을 알아보았는데 사실 랜선(LAN) 선을 연결하는 것도 여간 귀찮은 게 아니죠 ㅎㅎ 그리고 저의 궁극적인 목표는 완전 무선인 형태로 프로젝트 완제품을 만드는 것이기 때문에 Wifi를 사용하는 방법을 알아보려고 합니다. 오늘은 Wifi 사용에 필요한 ESP-01 (ESP8266)모듈과 연결하는 방법에 대해서 알아보겠습니다. 앞서 말한 다른 인터넷 연결 방법 및 ENC28J60 이더넷 모듈 사용법에 관해서는 아래 링크 참조 부탁드립니다.

 

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

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

it-g-house.tistory.com

 

Arduino 아두이노 인터넷 연결하기 - 이더넷(ethernet) 사용 방법

아두이노(Arduino)를 사용하여 홈 IoT(사물인터넷)를 구현하는 프로젝트를 진행하기 위해서는 우선 인터넷이 되어야 합니다. 지난 포스팅에도 설명하였지만 일반적인 아두이노 모델인 UNO R3, Nano, MEGA 같은 보..

it-g-house.tistory.com


1. ESP8266 와이파이 모듈(Wifi module)

 

아두이노의 일반보드에는 기본적으로 내장된 와이파이 칩이 없기 때문에 와이파이 모듈을 사용합니다. 주로 ESP8266 와이파이를 많이 사용하는데 ESP8266 칩셋을 사용하기 때문에 ESP8266 와이파이 모듈이라고 합니다. 온라인상에서 검색하면 ESP-01 제품을 가장 많이 찾을 수 있으나 ESP 시리즈는 ESP-14까지 출시되어 있습니다. 기획하시는 프로젝트에 맞는 제품버전을 구입하여 다양한 사양과 기능을 활용하실 수 있습니다. 가격이 저렴하고 가장 보편적으로 사용할 수 있는 모델은 ESP-01이며 제가 기획한 프로젝트도 데이터 정도만 간단히 주고받으면 되기 때문에 ESP-01 모듈로도 충분히 잘 사용하고 있습니다.

아두이노 인터넷하기: ESP8266 Wifi module

ESP-01   802.11b/g/n Wi-Fi 모듈
구동 전압 (Operating voltage)    3.0V ~ 3.6V
Power (Typical Values)   Average: ~ 71mA, Peak: 300mA (Continuous Transmission)
Power (절전 모드)   Min. 20uA
Interface   UART/GPIO 지원
동작 명령어   UART AT command
UART 전송 속도   Max. 4Mbps
SPI Flash   8Mbit Default 
Frequency Range   2412 ~ 2484MHz
프로세서 속도 (Processor speed)   Max. 160MHz
Operating Temperature   -20℃ ~ 85℃
Storage Environment   -40℃~ 90℃, < 90%RH

 


 

2. ESP-01 와이파이 모듈(Wifi module) 배선

 

 

ESP-01 모듈 PIN 배열

ESP-01 모듈은 단순하게 생긴 것과 다르게 사용 방법이 좀 복잡합니다. 일단 배선이 복잡한데.. 위의 표에서 볼 수 있듯이 전류 소모량이 많고, TX와 RX 신호가 5V출력이기 때문에 아두이노 보드 pin에 바로 연결하면 정상적으로 작동이 안 되고 모듈이 고장 날 수도 있습니다. 또 하나의 문제는 아두이노와 보레이트(Baudrate) 9600 bps 속도로 시리얼 통신(Serial communication)을 주고 받아야 하는데 ESP-01 모듈은 115200 bps로 초기 설정되어 있습니다. 에?? 그럼 어떻게 하냐고요? ㅠ 그래서 펌웨어(Firmware)를 업데이트해서 모듈의 속도를 변경해야 하는 과정이 필요하다고 인터넷에 찾아보면 나오는데.. 과정이 좀 복잡합니다. 그리고 이러한 여러 가지 문제를 해결하는 보완책으로 저항을 사용해야 하거나 아래와 같이 복잡한 배선을 구성해야 합니다.

 

ESP-01(ESP8266) Wifi module 펌웨어 업데이트(firmware update)를 위한 배선

 

출처: https://www.elec-cafe.com/esp8266-esp-01-firmware-update/

 


 

 

아.. 복잡하죠... ㅠㅠ 뭐 할 때마다 이렇게 복잡해서야... 그래서~!! 복잡한 거 싫어하는 저는 방법을 찾았습니다!! 바로 ESP-01 어댑터라는 모듈을 사용하는 겁니다. 복잡한거 싫어하고 빵판으로 배선하는 것을 싫어하는 저를 위한 아주 유용한 아이템입니다. ESP-01 모듈을 어댑터에 연결하기만 하면 동작전압을 5V로 사용해야 하는 점 말고는 어댑터의 4 Pin(VCC, GND, RX, TX) 만으로 훨씬 편하게 배선을 할 수 있습니다. 어댑터를 사용하면 펌웨이 업데이트도 안해도 됩니다!! 완전~꿀!ㅎㅎㅎ

 

아두이노(Arduino) 인터넷 연결하기: ESP-01(ESP8266) 와이파이 모듈(Wifi module)과 어댑터

 

 

ESP-01 와이파이 모듈을 방향에 맞게 어댑터에 꼽고 어댑터 VCC 핀은 아두이노의 5V, GND는 GND와 연결합니다. 그리고 TX와 RX pin은 각각 아두이노의 2번 Pin과 3번 Pin에 연결합니다.

 

어? 왜 아두이노의 RX-pin0, TX-pin1에 맞춰서 연결하지 않나요? 맞습니다. 아두이노가 스케치를 통해 신호를 받을 때나 PC로 코딩된 프로그램을 업로드받을 때 시리얼 통신을 사용한다고 아실 겁니다. TX와 RX는 각각 Transmit(전송), Receive(수신)이란 뜻으로 시리얼 통신을 할 때 데이터를 전송하고 수신하는 통로가 됩니다. 그래서 이미 아두이노에 USB가 연결되어 있는 동안은 아두이노의 TX와 RX는 PC와 연결되어 있어서 아두이노와 ESP-01 와이파이 모듈 사이의 시리얼 통신을 위해 새로운 RX, TX를 디지털 Pin2번과 3번에 각각 지정을 해야 합니다.

 

실제로 아두이노의 RX-pin0, TX-pin1에 연결하고 프로그램을 업로드하면 정상적으로 업로드되지 않습니다. 그리고 주의하실 점은 전송(TX)---> 수신(RX) 짝으로 연결해야 합니다. ESP-01 모듈에서 전송(TX)한 데이터를 아두이노에서 수신(RX)하는 거고 또 반대로도 이뤄지기 때문입니다. 

 

아두이노(Arduino) 인터넷 연결하기: ESP-01(ESP8266) 와이파이 모듈(Wifi module) 어댑터 배선

 


 

3. ESP-01 와이파이 모듈(Wifi module) 프로그램 코딩

 

아두이노와 ESP-01 와이파이 모듈을 위 그림과 같이 연결한 후 몇 가지 설정을 위해 간단한 프로그램 업로드가 필요합니다. 우선 아래 코드블럭과 같이 스케치(Sketch)로 코딩 후 아두이노에 업로드합니다.

 

앞서 언급하였듯이 ESP-01 모듈은 통신속도(Baudrate: 보레이트)가 115200 bps로 초기 설정되어 있기 때문에 'mySerial.begin(115200);' 명령어에 115200이 우선 들어갑니다. 그러나 아두이노와 ESP-01 모듈이 통신을 하려면 둘의 통신속도를 맞춰야 하기 때문에 9600으로 변경하는 작업을 진행해야 합니다. (뒤에 설명)

 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3); //RX, TX

void setup() {
   Serial.begin(9600);
   mySerial.begin(115200);
}

void loop() {
if(mySerial.available())
{
  Serial.write(mySerial.read());
}
if(Serial.available())
{
  mySerial.write(Serial.read());
}
}

 

아두이노와 ESP-01간에 통신은 UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)를 사용하는데.. UART는 "병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다."라고 위키피디아에 나와있습니다. 그냥 시리얼 통신 일종이라 생각하면 마음이 편합니다. ㅎㅎ 여기서 사용되는 명령어가 AT command입니다.

 

그래서 업로드가 완료된 후 시리얼 모니터(Serial Monitor)를 통해 PC에서 아두이노를 거쳐 ESP-01 모듈에 'AT command'로 명령을 하여 필요한 설정 및 와이파이를 구동할 수 있습니다.

 

 

먼저 정상적으로 작동하는지 확인하기 위해 시리얼 모니터 상단의 입력란에 AT라고 입력합니다. 그럼 아래와 같이 OK라고 반응을 보입니다. 잠깐!! AT를 입력하기 전에 보레이트는 9600에 맞춰주시고(프로그램상에서 아두이노는 9600), 옆에 칸을 'Both NL & CR'로 설정을 변경해줘야 합니다. NL은 'Newline' 약자이고, CR은 'Carriage return' 약자입니다. 이렇게 두어야 return 값이 아래 줄에 출력됩니다. 

 

아두이노(Arduino) ESP8266(ESP-01) 와이파이 모듈 사용하기: AT command 확인

 

OK 보셨나요? ㅎㅎ 이제 거의 다 했어요~ 그럼 ESP-01 모듈의 통신속도를 변경하기 위해 AT+UART_DEF=9600,8,1,0,0라고 입력합니다.

 

아두이노(Arduino) ESP8266(ESP-01) 와이파이 모듈 통신속도(baudrate) 변경하기

 

OK~!! 이제 ESP-01 모듈의 통신속도가 변경되었기 때문에 지금은 입력해도 아무 반응이 없을 겁니다. 그래서 스케치에서 아까 115200이었던 통신속도를 9600으로 변경 후 다시 아두이노로 업로드합니다.

 

아두이노 프로그램 ESP-01 모듈 속도 변경

그리고 다시 시리얼 모니터에 AT를 입력하면 역시나 OK로 잘 응답을 해줍니다. ^^ 그럼 이제 와이파이에 접속해 볼까요? AT+CWLAP 명령어는 주변 Wifi 목록을 검색해주는 명령어입니다. 아마 입력하면 바로 진행될 수도 있지만 안되시는 분들은 AT+CWMODE? 명령어로 현재 모드가 몇 번인지 확인하고 AT+CWMODE=1이라고 입력하셔서 모드를 변경합니다.

 

아두이노(Arduino) ESP8266(ESP-01) 와이파이 모듈 모드(MODE) 변경하기

ESP8266 와이파이 모듈은 네트워크 연결에 대해 3가지 모드를 제공합니다.

 

1. Station mode: ESP8266 모듈이 client로 wifi 기능만 함

2. AP mode: ESP8266 모듈이 Access Point가 됨

3. AP + Station mode: AP와 client 둘 다 됨

 

그래서 일반적으로 사용하실 때 모드는 1번으로 설정하면 됩니다. 그럼 다시 AT+CWLAP로 주변 Wifi 목록을 검색해 볼까요? 짠~!! 주변에 접속할 수 있는 와이파이를 찾을 수 있습니다. 

 

아두이노(Arduino) ESP8266(ESP-01) 주변 와이파이 찾기

 

와이파이 접속 명령어는 AT+CWJAP="SSID","비밀번호" 라고 입력하시면 됩니다. 그럼 정상적으로 접속이 되면 "WIFI CONNECTED, WIFI GOT IP"라고 응답이 출력됩니다. 그리고 할당된 IP를 확인하려면 AT+CIFSR 명령어를 입력하면 아래와 같이 IP 주소를 확인할 수 있습니다. 이제 와이파이가 됩니다~ 호~우!! ㅎㅎ

 

아두이노(Arduino) ESP8266(ESP-01) 와이파이 접속 및 IP 주소 확인하기

 

명령어 기능 설명 응답
AT AT command 작동 상태 확인 OK or 무응답
AT+RST 재시작 (Reset) OK… ready
AT+UART_DEF=속도,8,0,0 AT 통신속도 변경 OK
AT+CWMODE? Wifi 모드 확인 '+CWMODE: mode#
AT+CWMODE=mode# Wifi 모드 설정 (ex> AT+CWMODE=1) OK
AT+CWLAP 접속 가능한 Wifi 목록 검색 Wifi 목록
AT+CWJAP? 접속된 Wifi 확인  
AT+CWJAP="SSID","비밀번호" Wifi 접속 WIFI CONNECTED 
WIFI GOT IP 
OK
AT+CWQAP Wifi 접속 종료 OK 
WIFI DISCONNECT
AT+CIFSR IP 주소 확인 +CIFSR: STAIP, "할당된 IP주소"
+CIFSR: STAMAC, "MAC주소"

여기까지 아두이노(Arduino)로 인터넷(Internet) 연결하는 방법 중 ESP-01 와이파이 모듈(ESP8266 Wifi module)을 사용하는 방법을 알아보았습니다. 인터넷도 되고, DB(Database)서버도 만들었고, 이제 거의 모든 준비가 되었습니다. 다음 포스팅에는 드디어!! 웹으로 데이터를 보내서 DB서버에 저장하는 방법에 대해 알아보도록 하겠습니다. 웹서버, DB서버 만드는 방법이 궁금하신 분은 아래 링크 참조 부탁드려요 ^^

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 1: Apache 아파치 설치방법

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로..

it-g-house.tistory.com

오늘도 긴 글 읽어 주셔서 감사합니다. 궁금한 내용이나 추가적으로 원하시는 내용 있으면 언제든지 댓글로 남겨주세요~ 감사합니다.

 

 

 

반응형
반응형

 

 

 

지난 포스팅에서 아두이노(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)에서 추가하시면 됩니다. 

EtherCard.zip
0.12MB

이더넷 모듈 사용 방법에서 코딩했던 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코딩 

HTML 코딩에서 <title></title> 안의 내용이 웹페이지의 제목 부분이고 <body></body> 안의 내용이 웹브라우저로 출력하고 싶은 내용을 적으시면 됩니다. 저는 제목은 "Arduino Websever"로 임의로 정하고 "Hello Arduino!!"를 웹브라우저 크롬을 통해 출력하기 위해 위와 같이 작성하였습니다. 프로그램에서 빨간 표시 한 부분을 원하는 데로 바꾸시면 원하는 텍스트를 출력할 수 있습니다. (한글도 가능한데 그냥 하면 웹 브라우저에서 깨지기 때문에 추가적인 코드가 필요합니다. 우선 간단하게 테스트해보시고 한글 출력은 추후 업데이트하도록 하겠습니다.)

 

그럼 compile 후 아두이노에 성공적으로 업데이트하고 나서 PC와 연결된 USB는 뽑아버리고 아두이노에 외부 전원을 공급하여 확인하도록 하겠습니다. (시리얼 통신으로 가는지 진짜 인터넷을 통하는지 저는 의심이 많아서 일단 컴퓨터와 아두이노와의 연결을 끊었습니다. ㅎㅎ) 그리고 이더넷 모듈에 공유기의 랜선(LAN)을 연결한 후 아두이노에 할당받은 IP를 웹 브라우저에 입력합니다. (저는 IP가 192.168.0.102이고, 웹 브라우저는 크롬으로 진행하였습니다.)

 

ENC28J60이더넷 모듈 (Ethernet module) 사용하여 아두이노(Arduino) 인터넷 연결

그럼 아래와 같이 짠!! 하고 출력됩니다. 와우~!

 

 

아두이노(Arduino)로 웹브라우저에 텍스트 출력하기

 

추가로 프로그램을 조금 더 설명드리면 void loop() 부분의 명령어는 아두이노에 할당된 IP를 웹 브라우저에 입력하면 이더넷 모듈이 TCP 패킷을 받고, HTML로 작성된 변수 'webpage'의 내용을 웹브라우저로 띄워주는 코딩입니다. (몇 가지 명령어로 간단히 실행이 되는 것은 라이브러리를 사용해서 가능한 겁니다. 얼마나 고마운 존재인가요~ 감사합니다!! ㅎㅎ) 

 

아두이노로 웹브라우저에 원하는 텍스트를 띄우기 위한 코딩

 


여기까지 아두이노(Arduino)로 인터넷(Internet) 연결하는 방법 중 ENC28J60 이더넷 모듈(Ethernet module)을 사용해서 웹브라우저에 간단한 텍스트를 출력하는 방법을 알아보았습니다. HTML을 사용하실 수 있으신 분은 프로그램을 수정해서 얼마든지 웹페이지를 추가적으로 구성하실 수 있습니다. 

 

지금은 공유기 내부에서 IP를 사용하고 있지만 최종적으로 외부 인터넷을 사용하여 프로젝트를 어디에서나 진행 가능하게 만드는 것이 궁극적인 목표가 될 것입니다. ㅎㅎ 화이팅하겠습니다! ^^  

 

오늘도 긴 글 읽어주셔서 감사합니다. 질문이나 좋은 의견 있으면 언제든지 댓글로 남겨주시면 최선을 다해 연구해서 답변드리겠습니다.

 

 

반응형
반응형

 

 

 

아두이노(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

 

 

 

 

반응형
반응형

 

 

 

지난 포스팅에서 아두이노를 이용하여 온습도 센서를 동작해 보면서 아두이노의 기본적인 사용법과 코딩하는 방법을 알아보았습니다. 본격적인 홈 IoT(사물인터넷) 프로젝트를 진행하려면 아두이노를 인터넷에 연결하는 것은 필수겠죠? ^^  인터넷 연결하는 방법은 다양하게 있지만 대표적으로 몇 가지를 알아보고 각각의 필요 제품과 특징을 알아보겠습니다.

 


1. 이더넷(Ethernet) 연결

 

"이더넷(Ethernet)은 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격이다." (출처: 위키피디아)라고 정의되어 있습니다. 근거리 통신망(LAN)의 대표적인 통신 프로트콜이라고 말할 수 있는데.. 사실 이런 정의는 잘 모르겠고~ ㅎㅎ 그냥 인터넷 케이블을 직접 연결하는 이더넷 모듈(ENC28J60)을 사용하여 인터넷을 사용하는 방법입니다. 모듈 형태에서 볼 수 있듯이 랜선(LAN)을 모듈의 케이블 커넥터에 바로 연결할 수 있고 아두이노가 인터넷 통신을 할 수 있게 합니다.  

아두이노 인터넷 연결: 이더넷 모듈 ENC28J60
아두이노 인터넷 연결: ENC28J60 이더넷 쉴드

 

'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 모듈로 충분하게 잘 사용하고 있습니다. 기획하시는 프로젝트에 따라 맞게 구입하시면 될 거 같아요 ^^ 

아두이노 인터넷 사용: ESP-01 와이파이 모듈
아두이노(Arduino) 인터넷 사용하기: ESP8266 와이파이 모듈(Wifi module) 종류

 

아두이노(Arduino) 인터넷 사용하기: ESP8266 와이파이 쉴드(Wifi shield)

 

ESP8266 와이파이도 쉴드 형태로 판매되고 있습니다. 역시나 아두이노에 입문하신 지 얼마 안 되시는 분들에게는 쉴드 사용은 추천하지 않지만...(저도 동작하는데 고생~ 고생을 해서 ㅠㅠ) 추후에 와이파이 실드 사용법은 포스팅하도록 하겠습니다. 직접 사용해 본 단점은 업로드하기 너무 불편했다는 것과 실드를 아두이노와 결착하고 나면 기존 아날로그 I/O 핀이 먹통이 되어 버리고 실드에 있는 1개 핀만 사용할 수 있다는 거였죠.. 이런저런 제약이 많았던 녀석이었습니다...

 

최근에는 ESP8266 와이파이 칩이 내장되어 있는 아두이노 UNO 제품 및 다양한 버전의 제품이 개발되었는데 아두이노 공식 홈페이지 스토어 https://store.arduino.cc/usa/에서 판매하고 있습니다. 응? 그럼 왜 와이파이 모듈을 사용하냐고요?.... 변명일 수 있지만... 와이파이가 내장되어 있는 제품은 비쌉니다...ㅠㅠ UNO 같은 경우 $44.9이네요... 일반 UNO R3가 $22.0이니까 2배가 넘네요... ESP-01 모듈은 온라인상에서 3천 원대 정도면 구할 수 있으니까!! 조금만 몸과 머리가 고생하면... ㅠㅠ 아 슬프네요 ㅎㅎㅎ

 

아두이노 우노 와이파이(Arduino UNO Wifi)

 

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 쉴드 버전도 판매되고 있습니다. 

 

아두이노 인터넷 사용: SIM5320 3G 모듈
아두이노 인터넷 사용: SIM5320 3G 모듈 뒷면 (USIM 장착 가능)

3G 모듈을 사용할 경우 USIM을 개통해야 하고, 일반적으로 우리나라에서 개통되는 USIM을 사용하려면 법적으로 3G 모듈의 기기인증을 받아하는 것으로 알고 있기 때문에 사실 편하게 사용하기는 쉽지 않은 듯합니다. 그리고 사용한다 해도 데이터 비용이 계속 지불해야 하기 때문에 인터넷이 안 되는 산골에서 프로젝트를 하지 않는 한 굳이 3G/LTE 모듈을 사용할 일이 있을까 생각되네요 ^^ (참고로 아두이노 홈페이지 스토어에서 아두이노용 USIM을 구입할 수도 있네요 ㅎㅎ)

 


여기까지 아두이노(Arduino)를 인터넷(Internet)에 연결하는 방법들과 각 모듈에 대해서 알아보았습니다. 저는 이더넷과 와이파이 모듈을 사용해봤는데 모두 인터넷 연결이 잘 되었습니다. 각 모듈 사용방법은 정리되는 데로 바로 포스팅하도록 하겠습니다.

 

궁금하신 부분이나 필요하신 주제 있으면 언제든지 댓글로 의견 부탁드립니다 ^^

 

 

 

반응형

+ Recent posts