아두이노(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 전원 공급 주의 사항
- 3.3V 전원 공급: ESP-01은 3.3V 전압에서 동작한다. 아두이노의 5V 핀에 직접 연결하면 모듈이 손상될 수 있다. 외부 전압 조정기(LM1117 같은)를 사용하거나, ESP-01 어댑터를 활용하여 5V를 3.3V로 변환해야 한다.
- 전류 요구사항: 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을 펌웨어 업로드 모드로 설정한다.
- 펌웨어 다운로드 및 업로드:
- Espressif 공식 사이트에서 최신 펌웨어를 다운로드한다.
- Flash Download Tools를 실행하고, 펌웨어 파일과 업로드 속도를 설정한 뒤 업로드를 진행한다.
- 업데이트 후 확인:
- 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로 변경해야 한다. 변경 과정은 다음과 같다:
- AT 명령어로 현재 통신 속도 확인:
- AT+UART_DEF?
- 통신 속도를 9600 bps로 설정:
- AT+UART_DEF=9600,8,1,0,0
- 아두이노 코드에서 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()); }
}
주의 사항
- 전원 문제: ESP-01은 3.3V에서 동작하므로, 5V로 전원을 공급하면 모듈이 손상될 수 있다.
- 전류 부족: 충분한 전류를 공급하지 않으면 ESP-01이 불안정하게 작동할 수 있다.
- 배선 오류: TX와 RX는 반드시 교차 연결해야 한다 (TX -> RX, RX -> TX).
'Arduino > [2] Arduino Module' 카테고리의 다른 글
#29. L9110 미니팬 (0) | 2024.12.26 |
---|---|
#28. OLED 0.96인치 128x64 SPI 6핀 A37 디스플레이 (0) | 2024.12.24 |
#27. L293D 모터 드라이버 쉴드 (0) | 2024.08.12 |
[Arduino Module] #26. ESP32 CAM (0) | 2024.07.12 |
[Arduino Module] #25. Wemos D1 R32 (1) | 2024.04.08 |