아두이노 실습 11주차 (ESP32 보드 무선통신)

2023. 11. 29. 22:51아두이노 (Arduino)

실습 11주차 (ESP32 보드 무선통신)

이번주 실습에서는 저번주에 진행했던 무선통신 실습의 연장선으로 ESP32 보드를 사용하여 실습을 진행해보려 한다.

 

 

ESP32 보드 설정

먼저 ESP32 보드를 사용하기 위해서 준비작업이 필요하다.

 

 

위 사진은 ESP32 보드의 모습이다.

 

 

 

먼저 아두이노 IDE를 열어 환경설정에 들어간다.

윈도우 - 좌측상단 파일 -> 기본 설정

맥 - 좌측상단 Arduino IDE -> 기본 설정

 

⌘(command) + ,(comma) 단축키로도 들어갈 수 있다.

 

 

추가 보드 관리자 URL 옆에 있는 파일모양 아이콘을 누른다.

 

 

그러면 위와 같이 추가 보드 관리자 URL을 추가할 수 있는 창이 나오게 되는데, 여기서 아래의 URL을 입력해주자.

 

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

https://dl.espressif.com/dl/package_esp32_index.json

 

 

그리고 확인 버튼을 눌러 설정화면에서 나오게 되면 우측 하단에 보드 관리자가 다운받아질 것이다.

 

 

 

 

그런 다음 도구 -> 보드 -> 보드매니저에 들어간다.

 

그리고 필터에 esp32 를 넣고 보드 매니저를 찾는다.

 

보드 매니저는 esp32 by Espressif 를 설치하면 된다.

 

제공자 이름이 Espressif 인지 반드시 확인해야 한다!!

 

설치에는 약 5분에서 10분정도가 걸린다.

 

 

 

설치가 완료되고 난 후, esp32 보드를 컴퓨터와 연결한다.

 

 

도구 -> 보드 -> esp32 -> ESP32 Dev Module 를 선택한다.

 

 

 

도구 -> 포트 로 이동해서 시리얼 포트를 방금 연결한 esp32 보드의 포트로 변경한다.

 

 

여기서 자신의 esp32 보드의 포트번호가 무엇인지 모르겠다 하면 아래 사진처럼 장치 관리자에서 확인하면 된다.

 

컴퓨터에 다른 장치를 연결하지 않았다면 보통은 COM1 포트를 제외한 나머지 하나일 가능성이 높다.

 

 

 

 

만약 포트가 표시되지 않는다면 아래 방법을 사용하자!

 

https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads

 

CP210x USB to UART Bridge VCP Drivers - Silicon Labs

The CP210x USB to UART Bridge Virtual COM Port (VCP) drivers are required for device operation as a Virtual COM Port to facilitate host communication with CP210x products. These devices can also interface to a host using the direct access driver.

www.silabs.com

 

위 사이트로 이동하여 드라이버를 직접 설치해주면 된다.

 

 

윈도우라면 CP210x Windows Drivers

맥이라면 CP210x VCP Mac OSX Driver

 

 

모든 설정이 완료 되었다면 이제 본격적으로 실습에 들어갈 차례다.

 


 

Blink 실습

처음으로 진행할 실습은 아두이노에서 기본적으로 제공하는 Blink 실습을 진행하려 한다.

 

어려운 실습은 아니고, esp32 보드가 제대로 동작하는지 확인하기 위함이다.

 

 

 

파일 -> 예제 -> 01. Basics -> Blink 를 선택하면 자동으로 예제 코드가 나타난다.

 

 

esp32 보드의 GND 부분에 LED를 연결하면 된다.

 

사진에서는 저항을 연결했지만 저항없이 LED를 38, 37번에 연결해도 상관없다.

 

 

만약 LED_BUILTIN이 정의되어 있지 않다는 오류가 나오는 경우

 

#define LED_BUILTIN 23

 

이렇게 PIN 번호를 지정해서 선언하면 된다.

 

 

그리고 업로드 중에는 IO0번 버튼을 누르고 있어야 한다. 그렇지 않으면 업로드가 중지될 수 있다.

 

업로드 시작하고 완료될 때 까지 IO0번 버튼 누르고 있기 -> 업로드 완료되면 EN버튼 한번 누르기

 

 

업로드가 완료되면 아래 영상과 같이 LED가 깜박이게 된다.

 

 

 

 


 

 

esp32 보드로 WiFi 인식해보기

이번에는 esp32 보드로 WiFi를 인식해보는 실습을 진행할 예정이다.

 

보드는 위에서 구성한 그대로 사용하면 된다.

 

 

코드는 아래와 같이 입력한다.

 

#include <WiFi.h>

#define LED_BUILTIN 23

const char* ssid = "HOJUNEKT"; //개인 와이파이 이름 입력
const char* password = "hojune5954"; //개인 와이파이 비밀번호 입력

void WiFiEvent(WiFiEvent_t event)
{
  Serial.printf("[WiFi-event] event: %d\n", event);
  switch(event)
  {
    case IP_EVENT_STA_GOT_IP:
    Serial.println("WiFi connected");
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
    break;

    case WIFI_EVENT_STA_DISCONNECTED:
    Serial.println("WiFi lost connection");
    break;
  }
}

void setup()
{
  Serial.begin(115200);//보드레이트 속도
  pinMode(LED_BUILTIN, OUTPUT);

  WiFi.disconnect(true);

  delay(1000);

  WiFi.onEvent(WiFiEvent);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
  delay(100); // wait for a second
  digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
  delay(500); // wait for a second

  Serial.print("Wifi Ready! IP = ");
  Serial.println(WiFi.localIP());
}

void loop()
{
  digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
  delay(1000); // wait for a second
  digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
  delay(1000); // wait for a second
}

 

위 코드에서

const char* ssid = "HOJUNEKT"; //개인 와이파이 이름 입력
const char* password = "hojune5954"; //개인 와이파이 비밀번호 입력

 

이 부분만 자신 주변에 연결 가능한 와이파이의 이름과 비밀번호로 수정하면 된다.

 

 

그런 다음, 도구 -> 시리얼 모니터 를 클릭하여 시리얼 모니터를 열어준다.

 

 

 

시리얼 모니터 좌측 하단에 보드레이트 속도를 115200으로 변경한다.

 

그리고 코드를 업로드 하면 아래 영상과 같이 시리얼 모니터에 WiFi에 연결되었다는 문구가 표시되게 된다.