본문 바로가기

ESPRESSIF/ESP32

(23)
ESP32 슬립모드 소모 전류 테스트 무선 솔루션에서 중요한 스펙중 하나가 저전력 구동이다. ESP32의 경우 6단계의 슬립 모드를 지원한다. 슬립모드에서 깨어 났을때 동작하고 있던 메모리의 내용이 살아 있는 Deep-Sleep 모드를 테스트 해보면 좋을것 같다. 스펙상 Deep-Sleep 모드에서 10uA 소모 한다고 한다. 이정도면 배터리 모드에서 년단위로 구도 될수 있을것 같다. 우선 가장 간단하게 부팅후 바로 슬립 모드로 들어가고 스위치를 누르면 깨어나서 내부 변수 하나를 증가시키며 다시 슬립모드로 들어가는 예제를 작성해 보자. 주요 함수로 슬립에서 깨어나는 소스 설정 함수 esp_sleep_enable_ext1_wakeup()와 슬립모드로 진입하는 esp_deep_sleep_start() 이다. 다른 MCU들의 슬립 모드 설정방법과..
ESP32 ESP-IDF에서 Iperf로 WiFi TCP, UDP Throughput 측정 테스트 ESP32에서 WiFi TCP, UDP Throughput 측정을 위해 Arduino 환경에서 테스트 해보면 속도가 너무 느리게 측정된다. ESP-IDF 환경에서 제공되는 iperf 테스트 예제로 WiFi 성능을 측정해 보자. WiFi iperf 테스트 에제를 빌드 하기 위해 ESP-IDF 개발환경 설정을 참고해서 에서 Show Examples Project를 선택 한다. iperf Example을 선택해서 프로젝트를 생성한다. 빌드후 다운드 하면 VS Code의 터미널 창에서 시리얼 포트를 열수 있다. sta 커멘드로 WiFi에 접속 할 수 있다. sta [] WiFi is station mode, join specified soft-AP SSID of AP password of AP ESP32 UDP..
ESP-IDF 개발 환경 설정 (Windows VSCode) ESP32용 개발환경으로 여러 형태가 있지만 이번에는 ESP-IDF를 이용해서 개발 하는 방법을 테스트 해 보았다. ESP-IDF를 사용하게 되는 가장큰 이유는 속도 일것 같다. Arduino 나 Python의 경우 다양한 MCU를 지원하려다 보니 속도가 느려지는것이 당연하지 않을까... Arduino IDE - Iperf로 WiFi TCP Throughput 측정 테스트 에서 WiFi 전송율을 테스트 하다보니 너무 속도가 느리게 측정된다. ESP-DIF 환경에서 제공하는 예제중 iperf 예제를 구동해 보면 좋을것 같다. VS Code에서 ESP-IDF extension 모듈을 설치하면 쉽게 환경 설정이 가능하다. ESP-IDF 환경설정을 위해 View->Command Palette (F1) ESP-I..
ESP32 Arduino IDE - Iperf로 WiFi TCP Throughput 측정 테스트 ESP32 Arduino 개발 환경에서 WiFi 성능을 테스트 해 보자 Arduino WiFi TCP 코드를 수정해 iperf 서버 코드를 만들었다. #include #ifdef ESP32 #include "esp_task_wdt.h" #define WDT_TIMEOUT 9 #endif const char* ssid = STASSID; const char* password = STAPSK; int port = 5001; WiFiServer server(port); void setup() { esp_task_wdt_init(WDT_TIMEOUT, 0); Serial.begin(115200); Serial.println("ESP32 Simple web Start"); Serial.println(ssid); ..
ESP32 - Dhrystone, Whetstone, IIR Benchmark 성능 테스트 MCU 성능 측정을 할수 있는 벤치마크 방법은 여러가지가 있지만 Dhrystone, Whetstone 방식을 많이 사용한다. 각각의 특징은 아래와 같다. Dhrystone - 정수(ALU)연산성능 측정, MIPS 수치로 표기 Whetstone - 부동소수점(FPU)연산성능 측정, MFLOPS 수치로 표기 테스트 코드는 STM32H MCU Dhrystone, Whetstone, IIR Benchmark 성능 테스트 를 이용하였다. mode = ESP32 Dhrystone Benchmark, Version 2.1 (Language: C) --------------------------------------------------- Execution starts, 2000000 runs through Dhrys..
ESP32 SD Card Web Server 테스트 ESP32에서 웹서버 소스(HTML 파일) 를 저장하는 방식은 아래와 같이 3가지 정도 있을 수 있겠다. 플래시 메모리(코드 영역)에 직접 저장 하는 방식 SPIFFS에 저장하는 방식 SD Card에 저장하는 방식 이전 테스트에서 두가지 방식은 테스트 해보았고 SD Card에 저장해서 웹서버를 구현 하는 방법을 테스트 해 보자. ESP32는 내장 NOR 플래시메모리에 SPIFFS를 올려서 파일 시스템을 구현 할수 있지만 가장 큰 단점은 서브 이렉토리를 지원하지 않는다. SD Card를 이용하면 파일시스템의 대부분 기능을 활용 할수 있기 때문에 편리한점이 많다. ESP32 SD Card 테스트 예제를 이용해서 SD Card에서 웹페이지를 불러와 웹서버를 구현 할수 있다. #include #include #..
ESP32 SD Card Test ESP32 SD Card 테스트를 위해 확장 테스트 보드 xBee-EXP-SSM_SD 를 사용 하였다. SC Card의 CS 핀은 GPIO5 에 연결되어 있으므로 SD Card 초기화 시에 핀 설정을 정의 할수 있다. #define SD_CS_PIN 5 void initSDCard(){ if(!SD.begin(SD_CS_PIN)){ Serial.println("Card Mount Failed"); return; } uint8_t cardType = SD.cardType(); if(cardType == CARD_NONE){ Serial.println("No SD card attached"); return; } Serial.print("SD Card Type: "); if(cardType == CARD_MM..
ESP32 실시간 웹서버 - MPU9250 IMU 그래프 출력 테스트 ESP32 실시간 웹서버 테스트 코드를 이용하여 MPU9250 의 Roll, Pitch, Yaw 그래프를 출력 하는 테스트를 진행해 보았다. 우선 MPU9250의 데이터를 이용해 이벤트를 만드는 부분은 mpu_9250_set.h 파일에 작성하고 추후 센서가 변경되면 헤더 파일만 바꿀 수 있는 구조로 했다. #include #include #include MPU9250 mpu; void setup_Sensor(){ Wire.begin(); delay(2000); if (!mpu.setup(0x68)) { while (1) { Serial.println("MPU connection failed."); delay(5000); } } Serial.println("MPU success"); } void Proce..