반응형

ESP32 Dev Module의 와이파이 이용 원격제어에 관해 살펴보겠다. 

 

ESP32의  가변저항 및 LED 연결

#define get_ledPin 19 // 가변저항 제어권 표시

 

#define pwm_ledPin 18 // 아두이노 pwm핀(~ 핀)

analogRead() 핀으로 GPIO 34번 핀을 사용하였다. 

 

 

 

 

ESP32는 총 10 개의 ADC 핀을 제공한다. 하지만 ESP32의 BLE기능 작동코드를 업로드하고 작동 시킨 뒤에는 ADC핀인 GPIO 2, 4, 15, 36, 39핀에서 가변저항을 통해 생성된 아날로그 값을 정상적으로 읽어오지 못했으며, 34번 핀에서 정상 작동하는 것을 확인했다. 나머지 핀은 확인해 보지 않았다(BLE 작동 코드없이 analogRead() 테스트에서는 정상 작동 되었었음). 

 

 

 

 

ESP32 보드의 사용은 앞선 글에서 살펴본 NodeMcu ESP8266 보드 사용과 매우 비슷하다. 각종 라이브러리도 이름만 다를뿐 각 기능별로 대응되게 구성되어 있다. 

 

 

 

앞선 예제에서는 NodeMcu의 와이파이를 사용하기 위해 "ESP8266WiFiAP.h", "WiFiClient.h", "WiFiServer.h"를 포함하고 있는 "ESP8266WiFi.h" 라이브러리 하나만을 사용했지만 ESP32에서는 각각 기능별 라이브러리를 사용해야 한다. 

 

#include <WiFi.h>

#include <WiFiClient.h>

#include <WiFiAP.h>

 

아래 ESP32 Dev Module의 soft AP 기본 코드를 업로드 해보자.

esp32_wifi_test.zip
0.00MB

#include <WiFi.h>

#include <WiFiClient.h>

#include <WiFiAP.h>

#define AP_SSID  "Esp32"

#define AP_PASS  "1234test"

 

String income_wifi = ""; // 와이파이 수신 스트링 저장 변수

 

WiFiServer server(80);

 

void setup() {

  Serial.begin(115200);

  WiFi.softAP(AP_SSID, AP_PASS);  // WiFi.softAP(ssid, password);

  IPAddress myIP = WiFi.softAPIP();

  Serial.print("AP IP address: ");

  Serial.println(myIP);

  server.begin();

}

 

void loop() {

  WiFiClient client = server.available(); // client 시작

  if(client.available()) {

    income_wifi = client.readStringUntil('\r');

    Serial.println(income_wifi);

  }

  client.stop();

}

 

업로드 후 스마트폰에서 soft AP에 연결하고 웹브라우저 주소창에 192.168.4.1을 입력해보자. 

 

아래 그림과 같이 아두이노 시리얼 모니터에 "GET / HTTP/1.1"이 표시 되고 192.168.4.1/hi를 입력하면 "GET /hi HTTP/1.1"이 출력되는것을 볼 수 있다.

 

 

ESP32 와이파이 이용 제어코드는 앞서 살펴본 NodeMcu ESP8266 보드의 제어코드와 거의 같다. 단지 analogWrite()의 대체 함수를 사용하는 것만 다를 뿐이다. 각가 코드의 설명은 앞선글을 참조하길 바란다.

 

 

 

 

NodeMcu ESP8266 보드의 제어코드 수정사항

 

pinMode(pwm_ledPin, OUTPUT); // PWM 제어 LED

 

ledcAttachPin(pwm_ledPin, pwm_channel); // Esp32 analogWrite

ledcSetup(pwm_channel, 5000, 8);        // Esp32 analogWrite

 

analogWrite(pwm_ledPin, h_pwm); // 가변저항 LED 제어

 

ledcWrite(pwm_channel, h_pwm); // analogWrite() 대체함수 - 가변저항 LED 제어

 

analogWrite(pwm_ledPin, pwm1);     // 가변저항 LED 제어

 

ledcWrite(pwm_channel, pwm1); // analogWrite() 대체함수 - 가변저항 LED 제어

 

 

 

코드 추가: 본래 client.stop() 함수를 사용해서 클라이언트 연결을 끊어주어야 한다. 하지만 NodeMcu ESP8266 보드 코드에서 client.stop() 함수를 사용하면 데이터 수신 및 전송이 안되어 삭제 했던 것이다. 

 

client.stop(); 

 

이제 아래 전체 코드를 NodeMcu에 업로드 하고 arduino bluetooth controller PWM 안드로이드 앱을 통하여 제어를 해보자

 

스마트폰의 와이파이로 NodeMcu soft AP에 연결하거나 안드로이드 앱에서 와이파이 아이콘을 클릭하면 와이파이 세팅화면이 나오는데 여기에서 연결을 시켜준다. 

 

arduino bluetooth controller PWM - 아두이노 원격제어 안드로이드 앱 버전 3.5 다운로드

arduino bluetooth controller PWM 매뉴얼

(*** 상기앱의 와이파이 연결은 안드로이드8 [갤럭시S7]이하 버전에서만 작동합니다 ***)

 

 

 

아래의 화면이 나오면 ip 입력창에 설정된 NodeMcu soft AP 주소를 입력하고 Confirm을 클릭한다. 

 

 

Confirm을 클릭하면 안드로이드 앱은 soft AP주소로 100 밀리초마다 응답요청을 하게 되고 응답 수신을 하게 되면 와이파이 연결이 잘 되고 있는것으로 판단하고 연결된 soft AP 주소, 와이파이 원격제어 종료 아이콘 및 응답수신 진행 카운터를 표시하게 된다. 

 

8초동안 응답요청에 대한 응답 수신을 받지 못 할경우 와이파이 연결이 끊긴것으로 보고 와이파이 연결 아이피 주소와 연결끊기 아이콘 및 응답수신 카운터는 표시가 되지 않는다. 

 

안드로이드 앱의 와이파이 원격제어 프로세스를 정지시키고자 한다면 빨간색 플러그 아이콘을 클릭하면 스케쥴 응답요청 및 전송 프로세스는 모두 정지 된다.

 

 

 

 

arduino_remote_control_esp32_full.zip
0.00MB

 

최신 업데이트 유료앱(모든 안드로이드 버전 와이파이 연결 지원)

https://postpop.tistory.com/175

 

ADUCON - Arduino wireless remote control application

Arduino remote control app using a wireless module available in Arduino. Bluetooth 2.0 Classic / 4.0 BLE : HC-05, HC-06, HM-10, AT-09, BT05, ESP32, etc. Wi-Fi : ESP01, ESP8266 NodeMcu, ESP32, etc. https://play.google.com/store/apps/details?id=com.tistory.p

postpop.tistory.com

 

 

관련 글

[arduino] - 아두이노 - 안드로이드를 이용한 무선 원격제어 그리고 시리얼 통신 - 1편

[arduino] - 아두이노 - 안드로이드를 이용한 무선 원격제어 그리고 시리얼 통신 - 2편

[arduino] - 아두이노 - 안드로이드를 이용한 무선 원격제어 그리고 시리얼 통신 - 3편

[arduino] - 아두이노 - 안드로이드를 이용한 무선 원격제어 그리고 시리얼 통신 - 4편

[arduino] - 아두이노 - 안드로이드를 이용한 무선 원격제어 그리고 시리얼 통신 - 5편

[arduino] - 블루투스 4.0 BLE 이용 아두이노 및 ESP32 원격제어

 

[arduino] - 아두이노 - 시리얼통신 주요함수와 예제, String class

[arduino] - 아두이노 - ESP01 wifi 모듈 무선 원격제어 그리고 시리얼 통신 - 6편

[arduino] - ESP8266 - NodeMcu 1.0 와이파이 이용 원격제어(soft AP, wifi)

[arduino] - ESP32 - Dev Module 와이파이 이용 원격제어(soft AP, wifi)

 

 

+ Recent posts