본문 바로가기
IOT 제작하기

ESP32로 iot 만들기(1주차)

by Norwegian Wood 2023. 7. 20.

아두이노 강의

https://www.youtube.com/watch?v=fYm324KpllQ&list=PLJG0s98ECJWV-frrBS9biVHlVt2kI5rdI&index=1&t=107s

https://www.youtube.com/watch?v=YXHoKuMVNsY

esp32의 특징

  • ESP32는 소형 IoT기기에 탑재하기 위한 무선 통신 컨트롤러 장치
  • Wi-Fi와 Bluetooth가 통합된 SoC모듈
  • 주로 모바일, 웨어러블 디바이스 및 IoT통신 제품에 탑재하기 위해 설계됨

esp 8266 vs esp 32

esp32가 빠르고 기능이 더 많음

esp32

아두이노 IDE를 이용해 esp32 모듈을 사용 가능

https://github.com/espressif/arduino-esp32

3.3V 이용

다른 전압(5V) 이용될 시 로지컴포터나 저항을 이용하여 V를 낮춰서 사용

ESP32의 핀들

핀의 번호만 염두

  • 36개의 핀
  • 핀마다의 역할이 다름
  • GPI를 이용
  • 사용하면 안되는 핀들
    • ESP32 는 GPI01, GPI03을 시리얼 통신
    • 0, 2번은 부팅 관련
    • 05번 핀 내장 LED가 들어 있음 테스트를 위한 LED 사용
    • 15번 핀 모드의 상태를 알려주는 로그가 뜨는데 이 핀은 로그를 나타내지 않게 함
    • 12, 13, 14 번은 인라인 디버깅을 사용할 때 필요 (반드시 필요한 경우가 아니면 x)
    • 22, 21 번 통신방식으로 외장을 컨트롤 사용
  • 사용 가능 핀들
    • 32, 33, 25, 26, 27, 16, 17, 18, 19, 23, 4, 5번
  • 아날로그 임프 핀들
    • ADC2는 WIFI사용 중에 동작 X
    • ADC1인 핀들만 아날로그 임프 핀들로만 사
  • PWM신호
    • ~표시가 있는 핀들만 지원
    • INPUT ONLY 써있는 핀들은 PWM사용 X
  • TOUCH 센서
    • TOUCH가 써있는 핀들
  • 전원 관련 핀
    • 5V 컴퓨터와 USB
    • 3.3V는 레귤러로 변환해서 이용
    • 3.3V를 이용해 구동됨
    • GROUND 핀

esp32 다루기

void setup(){
	pinMode(18, INPUT); //18번 핀은 INPUT으로만 사용
	pinMode(LED_BUILTIN, OUTPUT) //자동적으로 5번 핀이 OUTPIN이 됨
}

void loop(){
	if(digitalRead(18) == HiGH){
		// LED ON
		digitalRead(LED_BUILTIN, LOW);
	} //3.3V가 연결된다면 버튼이 눌렸을 때
	else {
		// LED OFF
		digitalRead(LED_BUILTIN, HIGH);
	} //3.3V가 연결 X 버튼이 안 눌렸을 
}

PWM

https://www.youtube.com/watch?v=FmSZyGsuBd8

// ledcAttachPin(pwm_ledPin, pwm_channel);
// ledcSetup(pwm_channel, freq, resolution);
// ledcWrite(pwm_channel, h_pwm);

void setup(){
	ledcAttachPin(25, 0); //25번 GPI, pwm채널은 0번 채널과 연결
	ledcAttachPin(5, 0); //5번 GPI(25번과 한 번에 가능), pwm채널은 0번 채널과 연결
	ledcSetup(0, 5000, 8); //0번 핀의 5000Hz 주파수, 8bit
}

void loop(){
	for (int i = 0; i <= 255; i++){
		ledcWrite(0, 255); 
		delay(10);
	} // led의 밝기를 천천히 올리는 코드 딜레이는 10
//(옛날 버전)analogWrite(25, 255); => PWM으로 0~255까지의 밝기 조
}
  • esp32는 analogWrite 대신 각각에 내장되어 있는 pwm을 이용하여 원하는 주파수와 원하는 해상도를 넣고 그 채널과 GPI를 연결해 출력