본문 바로가기

ESPRESSIF/ESP32-C3

(22)
ESP32-C3 ESP-IDF에서 TCP, UDP Iperf로 WiFi Throughput 측정 테스트 ESP32-C3 를 Aruino 개발환경에서 WiFi 전송률 테스트 했을때 속도가 느려서 ESP-IDF 에서 제공하는 iperf 테스트 예제로 성능을 측정해 보자 ESP32 ESP-IDF WiFi 성능 측정에 사용했던 iperf 테스트 코드를이용 해서 ESP32-C3에서 동작하도록 했다. ESP32-C3 TCP Client Throughput 테스트 PC 에서는 iperf 를 서버로 설정하고 동작하고 ESP32를 클라이언트로 설정하여 iperf 테스트를 해 보면 32Mbps 정도 측정된다. ESP32 TCP Server Throughput 테스트 PC 에서는 iperf 를 클라이언트로 설정하고 동작하고 ESP32를 서버로로 설정하여 iperf 테스트를 해 보면 31Mbps 정도 측정된다. ESP32-C3..
ESP32-C3 ESP-IDF SDK에서 GPIO 성능 테스트, Arduino IDE 코드와 비교 ESP-IDF SDK 개발 환경에서 ESP32-C3 성능을 테스트해 보자. ESP32 Arduino IDE 개발환경에서 성능 테스트 결과 와 비교해 보면 좋을것 같다. 우선 SDK에서 제공하는 GPIO제어 예제로 테스트 해보자 #define BLINK_GPIO 0 void app_main(void) { gpio_reset_pin(BLINK_GPIO); /* Set the GPIO as a push/pull output */ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) { gpio_set_level(BLINK_GPIO, 1); gpio_set_level(BLINK_GPIO, 0); } } ESP32-C3 GPIO 토글 주기가 280ns(1.7Mh..
ESP32-C3 Arduino IDE - Iperf로 WiFi TCP Throughput 측정 테스트 ESP32-C3 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-C3 SSM] Arduino IDE에서 W5500 iperf tcp 전송률 테스트 W5500 Arduino 라이브러리 Ethernet2 를 이용하여 W5500을 테스트 하면 속도가 느리다. ESP32-C에서도 역시 W5500의 TCP 전송율이 5Mbp정도로 느리게 측정된다. 라이브러리를 수정해서 ESP32용으로 만들어 테스트 해 보았다. \Arduino\libraries\Ethernet2\src\utility\w5500.cpp #if _USE_RP2040_SPI_DMA #include "w5500_rp2040_dma.hpp" #elif _USE_STM32_SPI_DMA #include "w5500_stm32_dma.hpp" #elif _USE_ESP32_SPI #include "w5500_esp32.hpp" #else #include "w5500.hpp" #endif #define U..
[ESP32-C3 SSM] BLE 5.0 - BLE HRM 심박수 모니터 테스트 ESP32-C3는 BLE 5.0이 내장되어 있다. BLE관련 여러 서비스 중 표준 HRM 서비스를 테스트 해보자. HR 수집기는 데이터를 사용할 수 있을 때마다 HRM 특성으로부터 알림을 받는다. 측정값은 Bluetooth LE 패킷당 23바이트의 데이터로 전송되고 첫 번째 바이트는 Flag 라고 하며 데이터 형식에 대한 정보를 제공 한다. HR 데이터 형식 : HR 값이 UINT8 또는 UINT16 형식인지 나타내는 1비트. 센서 접촉(SC) : SC 기능 지원 여부, 지원 여부, 지원 여부를 나타내는 2비트. Energy Expended(EE) : HRM 특성에서 Energy Expended가 있음을 나타내는 1비트. RR-간격(RR) : RR-간격 측정이 HRM 특성에 존재하는지 여부를 알려주는 1..
[ESP32-C3 SSM] BLE 5.0 테스트 - HTM ESP32-C3에서 온도센서 테스트 코드를 바탕으로 BLE로 온도 값을 전송하는 프로토콜 HTM 를 구현해 보자. #include #include #include #include #define SERVICE_UUID BLEUUID((uint16_t)0x181A) #define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" BLEDescriptor outdoorHumidityDescriptor(BLEUUID((uint16_t)0x2901)); BLEDescriptor outdoorTemperatureDescriptor(BLEUUID((uint16_t)0x2901)); BLECharacteristic outHumidityCharacteristic(B..
ESP32-C3 SSM - I2C 온도 센서(TCN75) 테스트 ESP32-C3 의 기본 I2C 핀은 IO9(SCL), IO8(SDA)에 할당되어 있다. I2C 온도센서 TCN75 모듈을 이용하여 ESP32-C3의 I2C 테스트를 해 보자. I2C로 TCN75센서의 온도 레지스터 값을 읽어 오는 기본 예제 #include #define TCN75_ADDR 0x48 float read_temp(unsigned char address) { byte temp_reg = 0; byte a, b; float temp=.0; Wire.beginTransmission(address); // Start transmission Wire.write((byte)temp_reg); // 온도 레지스터 Wire.endTransmission(); // Stop transmission Wire..
ESP32-C3 SSM - 칩 내부 온도 출력 테스트 ESP32-C3에는 칩의 내부 온도를 측정하는 데 사용되는 내장 센서가 있다. 온도 센서 모듈에는 온도 오프셋을 보상하기 위한 8비트 시그마-델타 ADC와 DAC가 포함되어 있다고 한다. 정밀도는 아래 표와 같다 #include "driver/temp_sensor.h" void initTempSensor(){ temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT(); temp_sensor.dac_offset = TSENS_DAC_L2; //TSENS_DAC_L2 is default L4(-40℃ ~ 20℃), L2(-10℃ ~ 80℃) L1(20℃ ~ 100℃) L0(50℃ ~ 125℃) temp_sensor_set_config(temp_sensor); te..