esp32 7

[ESP32] wifi 연결시 특정 와이파이 기기(AP)에 연결안되던 점

ESP32를 사용하면서 wifi를 연결을 구현하고 싶을 때가 있습니다. 그런데, 간혹 가다가 정확한 코드에 정확한 SSID, PW를 입력했음에도 불구하고, 연결이 안 되던 적이 있었습니다. 여러 방면으로 원인을 찾아봤지만, 근본적인 원인은 찾지 못했고 단기적인 해결책만 찾았습니다. ※이는 개인적인 상황에서 해결책임으로 보편적인 해결책이 아닐 수 있습니다. 저의 상황은 다음과 같습니다. 사용한 예제코드는 ESP32의 예제 중 하나인 WifiClient입니다. /* * This sketch sends data via HTTP GET requests to data.sparkfun.com service. * * You need to get streamId and privateKey at data.sparkfun..

[ESP32] esp_timer 와 sleep 모드 동시 사용시 발생하는 간섭

[ESP32] esp_timer와 sleep 모드 동시 사용 시 발생하는 간섭 ESP-IDF에는esp_timer 가 있습니다. 해당 timer는 task에서 제어됩니다. sleep 모드도 같이 사용할 경우 task가 제대로 작동되지 않는 문제가 발생합니다. 이런 경우에는 하드웨어 타이머를 사용하는 것이 좋습니다. 따라서 esp_timer 보다는 FreeRTOS에서 제공하는 하드웨어 타이머 함수들을 사용하면, 타이머 인터럽트가 제대로 작동하지 않는 문제들을 해결할 수 있습니다. 저의 경우에는 esp_timer와 ble 기능과 modem sleep을 활성화하고 나면, esp_timer로 등록된 타이머 인터럽트 함수가 제대로 작동하지 않는 것을 확인했습니다. #include "freertos/FreeRTOS...

블루투스 AutoConnect 시 지속적으로 연결, 연결해제되는 문제

블루투스 AutoConnect 시 지속적으로 연결, 연결 해제되는 문제 Android와 ESP32 간에 블루투스(BLE)를 연결하고, 일정 거리 벌어진 뒤에 다시 가까이 오면 자동 연결되는 기능을 구현하다 보면, 안드로이드 앱은 계속해서 Connect를 시도하지만, 모종의 이유로 Connect -> Disconnect -> Connect... 가 반복됩니다. Bonding 데이터를 해제하고 다시 해도 안되며, 캐시의 문제일 가능성이 높습니다. 특히나 rsn:0x3d로 연결이 실패되는 경우에는 링크글(https://thinkanother.tistory.com/27)을 확인하시면, 캐시를 지우는 방법을 확인할 수 있습니다.

개발/통신 2022.12.20

[ESP32] RTC_SW_CPU_RST 에러

[ESP32] RTC_SW_CPU_RST ESP32로 특정 코드를 업로드하였는데, 계속해서 위와 같은 에러를 띄우고 재부팅을 한다면, menuconfig 같은 설정들을 저장하지 않았는지 확인해봅니다. 저의 경우 Vscode로 menuconfig를 설정을 다 해놓았지만, 저장하지 않고 바로 빌드 - 업로드하는 바람에 코드와 설정간의 차이로 계속 재부팅이 반복되는 현상이 있었는데, 원인은 저장을 하지 않았던 것입니다.

[ESP32 BLE 에러] BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e

[ESP32 BLE 에러] BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e 위와 같은 에러가 뜬다면, 특정 정보가 잘못되었을 경우에 발생합니다. 저의 경우에는 외부 크리스탈(External xtal)을 사용하였는데, 잘못된 주파수를 발진하고 있음에도 불구하고 프로그램이 잘못 되었음을 인지하지 못했습니다. 그래서 주파수 오류없이 본 코드로 들어갔다가 연결오류를 띄웠습니다. 해당 크리스탈을 제거하고, 노이즈 없이 새로 연결한 결과는 해당 오류가 나타나지 않았습니다. 0x3e의 에러는 블루투스 5.0 core 설명에서 다음과 같이 되어 있습니다. 연결시 특정 정보를 설정하지 못했음을 알리는 에러입니다. 더보기 2.59 CONNECTION FAILED TO BE ESTABLIS..

[EPS32/memory] 플래시 메모리가 부족할 때 해결법

[EPS32/memory] 플래시 메모리가 부족할 때 해결법 보통 많이 사용하는 모델로는 ESP32-WROOM-32로 개발 키트에 많이 적용된 모델입니다. 이 모델에는 4BM 플래시 메모리가 있습니다. 하지만 코드를 짜서 업로드할때, 용량이 그렇게 크지도 않는데 용량 부족이라고 뜰 때가 있습니다. 이는 기본적으로 메모리 파티션이 1.4MB로 나누어져 있기 때문입니다. 아래는 기본 파티션에 대한 표입니다. #Name Type SubType Offset Size Flags nvs data nvs 0x9000 0x5000 otadata data ota 0xe000 0x2000 app0 app ota_0 0x10000 0x140000 app1 app ota_1 0x150000 0x140000 spiffs dat..

[ESP32 에러] Failed to connect to ESP32: Timed out waiting for packet header

[ESP32 에러] Failed to connect to ESP32: Timed out waiting for packet header ESP32 개발 키트를 사용하여 기본 테스트 코드를 업로드를 할 때 이 에러를 만났습니다. 아두이노 IDE를 사용해 업로드할 때 발생한 에러로 원인은 ESP32가 어디에 연결되어 있는지 찾지 못한 것이고, 정해진 시간을 넘겨 버렸을 때 Timed out이라는 에러로 표시됩니다. EPS32를 못 찾는 경우는 몇 가지가 있습니다. 아래에서 알아봅니다. 1.연결된 장치를 못 찾는 경우 USB에 연결을 했더라도 장치를 찾지 못하는 경우가 있습니다. 시작-장치 관리자에서 포트(COM & LPT) 항목에서 포트가 연결되어 있는지 확인합니다. EPS32 개발 키트는 종류가 여럿 있기 ..