본문 바로가기

Arduino/[2] Arduino Module

#30. ESP-01

728x90
반응형

아두이노(Arduino)로 ESP-01을 사용하는 방법

아두이노(Arduino)를 이용해 인터넷에 연결하는 여러 방법 중, ESP-01 와이파이 모듈을 사용하는 방법을 소개한다. ESP-01은 저렴하고 간단히 사용할 수 있어 다양한 IoT 프로젝트에 적합하다.


ESP-01 모듈 개요

ESP-01은 ESP8266 칩셋을 기반으로 하는 와이파이 모듈로, 주요 사양은 다음과 같다.

 

Wi-Fi 표준 802.11b/g/n
동작 전압 3.0V ~ 3.6V
전류 소모 평균 71mA, 최대 300mA
절전 모드 전류 최소 20μA
인터페이스 UART/GPIO
UART 전송 속도 최대 4Mbps
SPI Flash 8Mbit Default
프로세서 속도 최대 160MHz
동작 온도 -20℃ ~ 85℃

 

ESP-01의 간단한 PIN 구조는 다음과 같다:

 

핀 이름 설명
VCC 전원 입력
GND 그라운드
RX 시리얼 데이터 수신
TX 시리얼 데이터 전송
CH_PD 칩 활성화 (3.3V 연결)
GPIO0 일반 입출력 핀
GPIO2 일반 입출력 핀
RST 리셋 핀

ESP-01 모듈 배선 방법

ESP-01 모듈은 전압과 통신 속도에 주의해야 하며, 아래와 같은 배선으로 연결한다.

연결 대상
VCC 3.3V 전원
GND GND
TX (ESP-01) 아두이노의 디지털 핀 3번
RX (ESP-01) 아두이노의 디지털 핀 2번
CH_PD 3.3V 연결

아두이노의 TX와 RX 핀을 직접 연결하면 전압 차이로 인해 ESP-01이 손상될 수 있다. 따라서 저항 분배기를 사용하거나, ESP-01 전용 어댑터를 사용하는 것이 좋다.


ESP-01 전원 공급 주의 사항

  1. 3.3V 전원 공급: ESP-01은 3.3V 전압에서 동작한다. 아두이노의 5V 핀에 직접 연결하면 모듈이 손상될 수 있다. 외부 전압 조정기(LM1117 같은)를 사용하거나, ESP-01 어댑터를 활용하여 5V를 3.3V로 변환해야 한다.
  2. 전류 요구사항: ESP-01은 평균 71mA, 최대 300mA의 전류를 소모한다. 아두이노 자체 전원은 충분하지 않을 수 있으므로, 외부 전원을 사용하거나 안정적인 전류를 공급할 수 있는 회로를 추가해야 한다.

ESP-01 펌웨어 업데이트

ESP-01 모듈의 기본 펌웨어를 업데이트하면 기능 향상 및 새로운 AT 명령어를 사용할 수 있다. 펌웨어 업데이트 과정은 아래와 같다:

 

준비물:

  • USB-to-Serial 변환기 (FTDI 어댑터 등)
  • ESP-01 모듈
  • 펌웨어 업로드 도구 (예: Flash Download Tools)

배선 연결: ESP-01을 USB-to-Serial 변환기에 다음과 같이 연결한다:

ESP-01 핀 USB-to-Serial 핀
VCC 3.3V
GND GND
TX RX
RX TX
GPIO0 GND
CH_PD 3.3V

 

GPIO0를 GND에 연결하여 ESP-01을 펌웨어 업로드 모드로 설정한다.

  1. 펌웨어 다운로드 및 업로드:
    • Espressif 공식 사이트에서 최신 펌웨어를 다운로드한다.
    • Flash Download Tools를 실행하고, 펌웨어 파일과 업로드 속도를 설정한 뒤 업로드를 진행한다.
  2. 업데이트 후 확인:
    • GPIO0 연결을 해제한 후, AT 명령어(AT+GMR)를 사용하여 펌웨어 버전을 확인한다.

기본 코드: ESP-01과의 시리얼 통신 설정

ESP-01과 아두이노의 기본적인 통신 설정 코드는 다음과 같다:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX 핀 지정

void setup() {
  Serial.begin(9600);         // PC와의 시리얼 통신
  mySerial.begin(115200);     // ESP-01과의 시리얼 통신 (기본 속도)
}

void loop() {
  // ESP-01에서 데이터를 수신하여 시리얼 모니터에 출력
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }

  // 시리얼 모니터에서 입력받은 데이터를 ESP-01로 전송
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

위 코드를 업로드한 후, 시리얼 모니터를 열고 ESP-01에 AT 명령어를 전송하여 모듈이 정상적으로 작동하는지 확인한다.


AT 명령어를 사용한 설정

ESP-01 모듈은 AT 명령어를 통해 제어할 수 있다. 주요 명령어는 다음과 같다:

명령어 설명 응답 예시
AT AT 명령어 확인 OK
AT+RST 모듈 재시작 OK...ready
AT+CWMODE? 현재 Wi-Fi 모드 확인 +CWMODE:1 (Station 모드)
AT+CWMODE=1 Station 모드 설정 OK
AT+CWLAP 주변 Wi-Fi 목록 검색 Wi-Fi 목록 출력
AT+CWJAP="SSID","PW" Wi-Fi 연결 WIFI CONNECTED, WIFI GOT IP
AT+CIFSR 할당된 IP 주소 확인 IP 주소 출력

 

예제: AT 명령어로 Wi-Fi 연결 설정

// 시리얼 모니터에서 아래 명령어를 순서대로 입력
AT+RST
AT+CWMODE=1
AT+CWJAP="WiFi_SSID","WiFi_Password"
AT+CIFSR

ESP-01의 통신 속도 변경

ESP-01의 기본 통신 속도는 115200 bps이며, 이를 아두이노와 맞추기 위해 9600 bps로 변경해야 한다. 변경 과정은 다음과 같다:

  1. AT 명령어로 현재 통신 속도 확인:
  2. AT+UART_DEF?
  3. 통신 속도를 9600 bps로 설정:
  4. AT+UART_DEF=9600,8,1,0,0
  5. 아두이노 코드에서 ESP-01의 통신 속도를 변경:
#include <SoftwareSerial.h> 
SoftwareSerial mySerial(2, 3); 
void setup() { 
Serial.begin(9600); mySerial.begin(9600); // ESP-01 통신 속도를 9600 bps로 설정 } 
void loop() { 
	if (mySerial.available()) { Serial.write(mySerial.read()); } 
    if (Serial.available()) { mySerial.write(Serial.read()); } 
}

주의 사항

  1. 전원 문제: ESP-01은 3.3V에서 동작하므로, 5V로 전원을 공급하면 모듈이 손상될 수 있다.
  2. 전류 부족: 충분한 전류를 공급하지 않으면 ESP-01이 불안정하게 작동할 수 있다.
  3. 배선 오류: TX와 RX는 반드시 교차 연결해야 한다 (TX -> RX, RX -> TX).

728x90
반응형
댓글