Frozen-Burrito / hydrate-extension-inteligente

Repositorio para el software de aplicación para la extensión inteligente de botellas de agua Hydrate.
2 stars 0 forks source link

[BUG] Las mediciones del MPU6050 son afectadas cuando se activa el uso de sueño profundo #8

Closed Frozen-Burrito closed 1 year ago

Frozen-Burrito commented 1 year ago

Descripción del Error Cuando se activa el uso de sueño profundo para economizar energía, todas las mediciones obtenidas del MPU6050 (giroscopio, aceleración y temperatura) son 0.

Cómo Reproducir Pasos para reproducir el error:

  1. Activar USE_DEEP_SLEEP y LIGHT_SLEEP_ENABLED en la configuración personalizada de menuconfig. Asegurar que el uso del procesador ULP está activado.
  2. Programar el chip ESP32 con el software de aplicación 1.0.0+1
  3. Notar las mediciones erróneas del sensor.

Comportamiento Esperado La operación normal del módulo no debería ser impedida completamente al usar ahorro de energía por sueño profundo. El sistema debería modificar su comportamiento según el esquema de energía, sin que afecte la detección de hidratación, conectividad o almacenamiento.

Entorno

Contexto Adicional El estado del sensor producido después de su inicialización es ESP_ERR_TIMEOUT.

Los logs completos de inicialización del sistema (todas las mediciones siguientes tienen los mismos valores para el MPU6050):

I (0) cpu_start: App cpu up.
I (452) cpu_start: Pro cpu start user code
I (452) cpu_start: cpu freq: 160000000
I (452) cpu_start: Application information:
I (457) cpu_start: Project name:     extension-inteligente-hydrate
I (464) cpu_start: App version:      1614ba6-dirty
I (469) cpu_start: Compile time:     Oct 13 2022 11:17:14
I (475) cpu_start: ELF file SHA256:  f611e463cbfd01f6...
I (481) cpu_start: ESP-IDF:          v4.4.1
I (486) heap_init: Initializing. RAM available for dynamic allocation:
I (493) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM
I (499) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM
I (505) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM
I (512) heap_init: At 3FFC7218 len 00018DE8 (99 KiB): DRAM
I (518) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (524) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (531) heap_init: At 40099894 len 0000676C (25 KiB): IRAM
I (538) spi_flash: detected chip: generic
I (541) spi_flash: flash io: dio
W (545) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (560) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (569) MAIN: Size minimo de heap libre (antes de setup()): 225180 bytes
I (579) POWER_MGMT: Activando wakeup desde EXT1 con GPIO14
I (579) POWER_MGMT: Activando wakeup por ULP
I (639) MAIN: Size minimo de heap libre (despues de setup()): 222024 bytes
I (3639) BLE_DRIVER: Inicializando driver BLE
I (3639) BTDM_INIT: BT controller compile version [5688ed5]
I (3639) system_api: Base MAC address is not set
I (3639) MAIN: NVS inicializado
I (3639) system_api: read default base MAC address from EFUSE
I (3649) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
I (4089) GATT_SERVER: Attribute table created for service with UUID len = 16
I (4089) GATT_SERVER: Tabla GATT para HYDR_SVC creada, handle = 14
I (4099) GATT_SERVER: Attribute table created for service with UUID len = 2
I (4099) GATT_SERVER: Tabla GATT para BAT_SVC creada, handle = 4
I (4109) GATT_SERVER: Attribute table created for service with UUID len = 2
I (4119) GATT_SERVER: Tabla GATT para DEVICE_TIME_SVC creada, handle = 4
I (4129) GATT_SERVER: SERVICE_START_EVT, status 0, service_handle = 40
I (4129) GATT_SERVER: SERVICE_START_EVT, status 0, service_handle = 54
I (4139) GATT_SERVER: SERVICE_START_EVT, status 0, service_handle = 58
I (4149) BLE_GAP: Advertising comenzado
I (4649) BATTERY: eFuse Two Point: no soportado
I (4649) BATTERY: Characterized using eFuse Vref

I (4649) MAIN: HX711 sensor status (ESP_OK)
I (4659) MAIN: MPU6050 sensor status (ESP_ERR_TIMEOUT), device ID = 0     <---- PROBLEMA
I (4659) GATT_SERVER: ESP_GATTS_CONNECT_EVT, conn_id = 0
I (4659) MAIN: Battery monitor status (ESP_OK)
I (4669) GATT_SERVER: 44 85 bc cc 3d 8c
I (5009) MAIN: Lecturas de sensores: { raw_weight: 56118, volume: 120ml, accel: (0.00, 0.00, 0.00), gyro: (0.00, 0.00, 0.00), temp: 0.00, interval:0-0 ms}
I (5009) MAIN: Do measures represent hydration: no
Frozen-Burrito commented 1 year ago

Posiblemente está relacionado con la configuración de los GPIO RTC usados por el ULP durante sueño profundo. Puede que exista un problema al configurar "simultáneamente" un GPIO como RTC y que sea usado por el bus I2C del programa principal. También es posible que la conexión física haya sido incorrecta.

Frozen-Burrito commented 1 year ago

Solucionado al arreglar la configuración y deinicialización de GPIOs para RTC. Un GPIO al ser configurado para RTC sobrescribe la configuración inicial del GPIO.