본문 바로가기
프로그래밍/아두이노

아두이노 IoT 작품만들기 - 2(와이파이 연결하기)

by YongRa 2024. 5. 8.

오늘은 배송된 ESP-01과 어댑터 모듈을 이용하여 와이파이에 연결해보도록 하겠습니다!

 

(ESP-01 어댑터와 아두이노 회로 연결 이미지)

회로는 다음과 같이 연결해주면 되겠습니다. 어댑터를 사용하니까 3.3V를 위해 전압분배도 안해도 되고 선4개만 꽂으면 되니까 너무 간편하네요. 저와 같이 IoT 하시려는 분들은 어댑터 사용 추천드립니다!

 

회로를 보시면 TX를 디지털 2핀, RX를 디지털 3핀에 연결하였습니다. 우노보드에도 TX와 RX가 있는데 왜 거기다 안꽂고 2,3 핀에다가 꽂았냐구요? 그 이유는 바로바로 PC와 우노보드가 통신할 때 0번(RX), 1번(TX)핀을 사용하기 때문입니다!!

0번, 1번에 꽂고 사용하면 PC와 통신이 안되기 때문에 코드가 업로드 되지 않습니다. 블루투스나 다른 통신장비를 사용할 때도 마찬가지구요!

 

그럼 2,3번 핀을 어떻게 TX, RX핀으로 사용하냐.. 그것은 SoftwareSerial.h를 사용하면 가능합니다! 아래 코드에서는 mySerial이라는 객체를 만들고 우노보드의 2핀을 RX3핀을 TX로 설정했습니다.

#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은 기본 통신속도가 115200 Baudrate로 설정되어 있습니다. 우노보드와 ESP-01가 서로 통신하기 위해서는 통신속도를 맞춰주는 작업을 해야 합니다.

ESP-01의 통신속도를 변경하기 위해 시리얼 모니터 클릭

오른쪽 상단에 있는 돋보기 모양을 클릭해 시리얼 모니터 창을 엽니다.

AT 명령어 실행 확인

그리고 위 이미지와 같이 Both NL & CR로 변경하고 9600보드레이트로 설정합니다. 입력창에 AT를 입력하면 OK라는 대답이 돌아옵니다! 이제 115200인 ESP-01의 속도를 9600으로 변경해보도록 하겠습니다.

 

AT+UART_DEF=9600,8,1,0,0 를 입력합니다.

AT+UART_DEF=9600,8,1,0,0 입력

OK가 출력되었으면 mySerial.begin() 안에 있던 115200을 9600으로 수정하고 수정된 코드를 업로드 합니다. 업로드 후에는 시리얼 모니터를 다시 띄워 와이파이 목록을 확인할 수 있는 AT+CWLAP을 입력합니다.

AT+CWLAP 입력 후 ERROR 출력

저는 AT+CWLAP을 입력했더니 ERROR가 출력되었습니다. "CWLAP"은 "Connect Wi-Fi List AP"의 약어로, Wi-Fi 네트워크 목록을 검색하는 명령어인데요,  현재 모드가 Station 모드가 아니기 때문에 에러가 발생하게 됩니다. 모드를 변경하기 위해 AT+CWMODE 명령어를 사용해 모드를 변경하겠습니다. 모드는 아래와 같이 총 3가지가 있습니다.

 

  1. CWMODE=1: Station 모드로 설정하여 Wi-Fi 네트워크에 연결합니다.
  2. CWMODE=2: Access Point(AP) 모드로 설정하여 스마트폰이나 노트북과 같은 장치가 모듈에 연결할 수 있도록 합니다.
  3. CWMODE=3: Station + AP 모드로 설정하여 동시에 다른 Wi-Fi 네트워크에 연결하고 다른 장치가 모듈에 연결할 수 있도록 합니다.

AT+CWMODE=1로 모드 변경 후 와이파이 목록 확인

AT+CWMODE=1 명령어를 이용해 모드가 변경되면 OK가 출력이 됩니다. 그 후에 다시 AT+CWLAP을 명령어를 입력하면 주변의 와이파이 목록을 출력해줍니다.

와이파이 연결 성공!

마지막으로 AT+CWJAP="Wi-Fi 이름","비밀번호"를 입력하면 위 이미지와 같이 WIFI CONNECTED, WIFI GOT IP라는 문구가 출력되면 정상적으로 연결되었습니다!

 

다음 글에서는 센서를 하나 추가해 값을 웹으로 전달해보도록 하겠습니다. 감사합니다!