Skip to content

Firmware

Funcionamiento general

stateDiagram-v2
    direction LR
    [*] --> Setup
    Setup --> Loop

    state Setup {
        state if_nbiot <<choice>>

        [*] --> rtc_init
        rtc_init --> t6793_init
        t6793_init --> sen5x_init
        sen5x_init --> if_nbiot

        if_nbiot --> nbiot_init: Sí
        nbiot_init --> [*]
        if_nbiot --> [*]: No

        if_nbiot: ¿Habilitar NB-IoT?
        rtc_init: Inicializa el RTC y las alarmas periódicas
        t6793_init: Inicializa el sensor T6793
        sen5x_init: Inicializa el sensor SEN5X
        nbiot_init: Inicializa el módulo NB-IoT
    }

    state Loop {
        state if_alarma_5s <<choice>>
        state if_alarma_10min <<choice>>
        state if_nbiot2 <<choice>>

        [*] --> check_alarma_5s
        check_alarma_5s --> if_alarma_5s

        if_alarma_5s --> if_alarma_10min: No
        if_alarma_5s --> acumular_datos: Sí
        acumular_datos --> reset_alarma_5s
        reset_alarma_5s --> check_alarma_10min

        check_alarma_10min --> if_alarma_10min

        if_alarma_10min --> [*]: No
        if_alarma_10min --> promediar_datos: Sí
        promediar_datos --> if_nbiot2
        if_nbiot2 --> reset_alarma_10min: No
        if_nbiot2 --> nbiot_enviar: Sí
        nbiot_enviar --> reset_alarma_10min
        reset_alarma_10min --> [*]

        check_alarma_5s: Comprueba si han pasado 5 segundos
        check_alarma_10min: Comprueba si han pasado 10 minutos
        if_alarma_5s: ¿Bandera de 5 segundos está activa?
        acumular_datos: Acumula los datos leídos por los sensores
        reset_alarma_5s: Reinicia la bandera de 5 segundos
        if_alarma_10min: ¿Bandera de 10 minutos activa?
        promediar_datos: Calcula el promedio de las lecturas acumuladas
        if_nbiot2: ¿Habilitar NB-IoT?
        nbiot_enviar: Transmite los datos promediados
        reset_alarma_10min: Reinicia la bandera de 10 minutos
    }