YOGYUI

Keyes ESP8266 WiFi Module 본문

Hardware/Arduino

Keyes ESP8266 WiFi Module

요겨 2021. 1. 31. 22:45
반응형

Keyes ESP8266 WiFi Module

IoT를 위한 아두이노 구현 시 일반 아두이노 보드에 WiFi Module을 결합하는 방식도 있지만, "MCU + WiFi 일체형 모듈"로 프로토타이핑하는 방식도 있다 (요즘은 MCU + WiFi + BLE + Zigbee 완전 통합형 모듈도 시중에 많이 판매되고 있다)

이번 포스팅에서는 몇년 전에 프로토타이핑한다고 구매하고 딱 한번 써본 Keyes 사의 ESP8266 WiFi 모듈에 대한 간단한 리뷰? 를 적어보도록 한다 (지금은 단종된듯...)

1. Introduction

ESP8266은 Espressif Systems라는 중국 회사에서 설계한 SoC로, Single Core 32bit MCU + 2.4GHz WiFi 모듈을 내장하고 있다

ESP8266 Specification, 출처: Espressif

다양한 시리얼 통신 (UART, I2C, I2S, SPI)를 지원하며, ADC도 갖추고 있다

다양한 서드파티에서 ESP8266 IC와 전원 회로 및 안테나를 하나로 임베딩한 모듈을 만들어 판매하고 있으며, 일반 소비자는 아래와 같이 생긴 모듈을 구매해 테스트 및 제품 제작을 진행한다 (모듈 하나 가격이 under 5천원)

ESP 기반 안테나 통합 모듈, AI-Thinker사 제품

다양한 하드웨어적 기능을 갖췄다는 사실보다는, 아무래도 아두이노 IDE를 활용해서 바로 코딩해볼 수 있다는 점이 사용자들이 많이 찾는 이유가 아닐까 싶다 (대륙 스케일의 규모의 경제를 활용한 놀랍도록 저렴한 가격도 한몫한다)

와이파이 모듈과 AT-Command라는 방식의 통신으로 와이파이 송수신을 코딩해야되는데, 공인된 아두이노 라이브러리를 통해 귀찮은 AT-Command 코딩 없이 바로 프로토타이핑가능하니 하드웨어 개발 속도가 꽤나 향상되는 감이 있다

(물론 개발자 입장에서는 AT-Command도 한번쯤은 직접 구현해 볼 필요가 있다, 별로 어렵지도 않고...)

만약 Bluetooth도 함께 내장된 모듈을 찾는다면 Espressif의 ESP-32 시리즈도 고려할만한 SoC이다

 

KEYES 사의 ESP8266 모듈은 AI-Thinker사의 ESP-12F를 기반으로 설계되었다 (ESP-12F 데이터시트)

Built-in Flash Memory가 32Mbit로 꽤 넉넉한 편이라 왠만한 사이즈의 코딩 결과물은 문제없이 업로드된다

NodeMCU라는 와이파이 기반 IoT 플랫폼을 위한 하드웨어로도 널리 알려져있다 (ESP 기반 서드파티가 워낙 많고 커뮤니티가 매우 활성화되어있어 IoT 입문자들이 많이 찾는 하드웨어라고 할 수 있다)

2. Arduino IDE

아두이노 IDE에서 ESP8266 와이파이 모듈을 다루기 위해서는 Board Manager에서 ESP8266 보드를 추가해줘야한다

(모든 과정은 Keyes 공식 사이트의 가이드를 참고하였다)

2.1. Board Manager

아두이노 IDE 환경설정 (OSX: 메뉴바 - Arduino - Preferences)의 "Additional Boards Manager URLs" 항목에 다음 URL을 복붙한다

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Board Manager URL 추가

확인을 누른 후 보드 매니저를 연 뒤 (OSX: 메뉴바 - Tools - Board: "Arduino XXX" - Board Manager) 'ESP8266'으로 검색하여 'esp8266 by ESP8266 Community' 항목을 설치해준다 (21년 1월 기준 최신버전 = 2.7.4)

ESP8266 보드 설치

보드를 설치하면 관련 라이브러리도 자동으로 같이 설치된다

(라이브러리 설치 경로: Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/libraries)

설치 완료 후 ESP8266 보드가 USB로 연결되어 있는 상태에서 보드를 'Generic ESP8266 Module'로 변경

보드 변경

보드 설정은 다음과 같이 해준다
(설정이 다르면 업로드가 안되거나, Memory leakeage 이슈가 발생할 수 있다)

Generic ESP8266 Module 보드 설정

보드 설정 후 다음과 같이 본인의 WiFi 네트워크에 연결하는 예제코드를 컴파일 후 업로드해보자

[중요]

ESP8266은 2.4GHz WiFi만 지원하니, 본인의 와이파이가 5GHz 전용으로 설정되어 있다면 공유기의 설정을 바꿔야한다

#include <ESP8266WiFi.h>

void setup()
{
  Serial.begin(115200);
  Serial.println();

  WiFi.begin("당신의 WiFi SSID", "WiFi 패스워드");

  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
}

연결 완료 후 ESP8266 디바이스의 IP Address 및 Mac Address가 출력된다

예제코드 실행 결과 시리얼 모니터

공유기 내부 네트워크 정보에서 ESP 디바이스를 찾을 수 있다 (맥어드레스가 일치하지는 않는다...)

ipTime EashMesh 설정창 확인 결과

Arduino IDE를 이용한 IoT 디바이스 DIY를 위한 ESP8266 세팅은 이정도면 충분하다

물론 deploy시에는 보통은 RTOS를 올리는게 일반적인데, 이는 Eclipse와 ESP8266 SDK를 통해 구현할 수 있다

(관련 페이지, 추후 프로젝트 진행하면서 블로그 업로드 하고 싶으면 하고...귀찮으면 안할 예정)

 

[참고]

보드의 USB - 시리얼 컨버터는 CH340G IC 기반이다. 만약 Windows OS에서 드라이버를 감지하지 못한다면 링크에서 드라이버를 다운로드받아서 설치해줘야 한다

 

[참고]

OSX Big Sur에서는 업로드 시 "pyserial or esptool directories not found next to this upload.py tool."과 같은 오류 메시지가 발생할 수 있다. 해결은 아두이노 커뮤니티를 참고하자

 

[Pin Map]

Pin Out Map, 출처: https://wiki.keyestudio.com/

반응형