본문 바로가기

ESPRESSIF

(77)
[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..
ESP32-C3 Dhrystone, Whetstone, IIR Benchmark 성능 테스트 MCU 성능 측정을 할수 있는 벤치마크 방법은 여러가지가 있지만 Dhrystone, Whetstone 방식을 많이 사용한다. 각각의 특징은 아래와 같다. Dhrystone - 정수(ALU)연산성능 측정, MIPS 수치로 표기 Whetstone - 부동소수점(FPU)연산성능 측정, MFLOPS 수치로 표기 테스트 코드는 STM32H MCU Dhrystone, Whetstone, IIR Benchmark 성능 테스트 를 이용하였다. 벤치마크 테스트 결과 부동소수점 연산이 많이 좋지 않은것 같다. ESP32-C3 는 RISC-V 코어를 사용해서 그런것인가? 좀더 확인이 필요 하지만 저렴한 가격에 이정도 성능이면 나쁘지 않은것 같다. .mode = ESP32 Dhrystone Benchmark, Version ..
ESP32-C3 소비 전력 측정 - Deep Sleep Mode ESP32-C 가 간단하고 저렴한 무선 솔루션인데 상용의 제품에 많이 사용하지 않고 있다고 한다. 스펙상으로 ESP32 보다 슬립모드에서 소모 전류가 10uA에에서 5uA로 더 작다고 하는데 테스트 해보자 무선 솔루션의 실제 응용에서는 저전력이 중요한데 스펙상 전류소모가 높은것 같다. 실제로 BLE 구동후 전류를 측정해 보면 84mA로 측정이 된다. 다른 RF솔루션들의 전류 측정 결과와 비교해 보면 상당히 많은 전류가 소모되는것 같다. 슬립모드만 사용한다면 스펙상으로 5uA가 소모된다고 하는데... 슬립 모드를 테스트 해보자. 기본 동작 후 슬립모드로 빠져 있다 일정시간 마다 깨어나서 메모리 값을 증가시키는 예제를 작성해 보았다. #include //us 단위로 타이머 설정 #define uS_TO_S_..
[ESP32-C3 SSM] BLE HID Keyboard 테스트 라이브러리는 https://github.com/T-vK/ESP32-BLE-Keyboard 를 사용 하였다. BleKeyboard 예제를 조금 수정하여 동작 시켜보자 ESP32-C3 SSM EVM에서 실행 후 장치를 검색하면 검색은 되지만 연결이 되지 않는다. 디버깅 메시지는 장치를 찾을 수 없다고 출력이 된다. Starting BLE work! E (23994) BT_BTM: btm_proc_smp_cback received for unknown device E (53994) BT_BTM: btm_proc_smp_cback received for unknown device E (57024) BT_BTM: Device not found BLE 5.0이라 그런가? ESP-IDF로 테스트 해봐야 할 것 같다...
ESP32-C3 - BLE5 UART 테스트 ESP32-C3를 이용하여 BLE UART를 테스트 해보자 기본 펌웨어 다운로드 하고 장치 검색하면 설정한 장치로 인식이 된다 // Create the BLE Device BLEDevice::init("ECPC3 UART"); BLE UART 초기화 #define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID #define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E" #define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E" //1)BLE Device를 생성하고 BLEDevice::init(..

반응형