Zephyr: El equilibrio perfecto para el desarrollo de productos inteligentes

Zephyr es un RTOS open source respaldado por la Linux Foundation que permite desarrollar dispositivos embebidos conectados, eficientes y escalables, facilitando el paso de prototipo a producto final con una arquitectura mantenible.
Microcontrolador central conectado a dispositivos IoT como sensores y smartwatch sobre fondo de circuito electrónico.

Índice

  1. Introducción

  2. Qué es Zephyr

  3. Ventajas que marcan la diferencia

  4. Lo que podemos construir con Zephyr

  5. Por qué Zephyr frente a otras tecnologías

  6. Un ejemplo que demuestra por qué Zephyr escala mejor que el típico firmware

  7. Nuestro modo de trabajar con Zephyr

  8. Ejemplos reales

1. Introducción

En Izertis sabemos que la tecnología base marca la diferencia entre un prototipo y un producto fiable. Por eso, cuando desarrollamos dispositivos conectados y de bajo consumo, apostamos por Zephyr: un sistema operativo que nos permite crear soluciones sólidas y afrontar retos en sectores muy diversos, adaptándose a múltiples casos de uso incluso en entornos exigentes.

2. Qué es Zephyr

Zephyr es un sistema operativo en tiempo real (RTOS) diseñado para dispositivos embebidos: el “cerebro” que vive dentro de productos como sensores, localizadores, wearables, dispositivos médicos, electrónica industrial o soluciones de movilidad conectada.

Logotipo de Zephyr RTOS con figura geométrica en tonos azul y morado
Zephyr RTOS, sistema operativo open source para dispositivos embebidos.

Es modular, eficiente y orientado a producto. Además, es open source y cuenta con la gobernanza y el respaldo de la Linux Foundation, lo que garantiza su evolución constante, una comunidad activa y soporte a largo plazo.

3. Ventajas que marcan la diferencia

Zephyr nos permite conectar y controlar prácticamente cualquier componente que un producto moderno necesite, de forma ordenada, escalable y mantenible. Estas son algunas de sus fortalezas más relevantes:

Modularidad
Se compila únicamente lo necesario mediante su sistema de configuración (Kconfig y prj.conf). Esto permite construir firmware más ligero, rápido y optimizado para cada dispositivo, reduciendo el consumo de memoria y mejorando el rendimiento.

Ecosistema amplio de drivers
Incluye soporte para sensores, almacenamiento, buses de comunicación y conectividad. Esto reduce tiempos de desarrollo y riesgos técnicos, al evitar implementar desde cero funcionalidades ya probadas por la comunidad.

Seguridad y estabilidad
Es un proyecto revisado y mantenido por una comunidad amplia y activa. Incorpora buenas prácticas habituales en producto, como actualizaciones seguras (OTA), arranque verificado y mecanismos de aislamiento, según las necesidades del caso.

Escalabilidad real de prototipo a producto
Permite comenzar en placas de desarrollo y evolucionar hacia hardware propio sin reescribir la lógica principal del firmware, desacoplando aplicación y hardware mediante DeviceTree y drivers internos.

Respaldo industrial
Cuenta con el apoyo de múltiples fabricantes de semiconductores y con la gobernanza de la Linux Foundation, lo que garantiza continuidad, mantenimiento a largo plazo y compatibilidad con nuevas plataformas.

En conjunto, estas características convierten a Zephyr en una base sólida para desarrollar dispositivos conectados preparados para entornos exigentes y ciclos de vida largos.

4. Lo que podemos construir con Zephyr

La versatilidad de Zephyr facilita el desarrollo de soluciones que integran múltiples tecnologías dentro de un mismo dispositivo, manteniendo una arquitectura limpia y escalable. Algunos ejemplos de lo que puede incorporar un producto basado en Zephyr:

  • GPS / GNSS para geolocalización precisa.
  • Conectividad (4G, NB-IoT, LTE-M, WiFi, Bluetooth) para comunicación con la nube o entre dispositivos.
  • Sensores (movimiento, temperatura, humedad, presión, luz, etc.) para aplicaciones de salud, seguridad o control ambiental.
  • Interfaces de usuario como LEDs, pantallas o botones físicos.
  • Buses industriales (CAN, I2C, SPI, UART) para integración con maquinaria, vehículos u otros sistemas electrónicos.
  • Almacenamiento y registro de datos para trazabilidad y análisis posterior.
  • Actualizaciones OTA que permiten mantener el firmware actualizado sin intervención física.

Esta combinación permite construir desde dispositivos IoT de bajo consumo hasta soluciones industriales robustas, adaptadas a entornos reales y exigentes.

5. Por qué Zephyr frente a otras tecnologías

La palabra clave es equilibrio. Zephyr combina la ligereza de un RTOS —ideal para sistemas con recursos limitados y bajo consumo— con un ecosistema moderno pensado para proyectos reales y entornos de producción.

En la práctica:

Frente a entornos orientados a prototipos
Zephyr está diseñado con mentalidad de producto: mantenibilidad, escalabilidad, soporte amplio de placas y periféricos, y una estructura de proyecto clara desde el inicio.

Frente a otros RTOS tradicionales
Ofrece un entorno más integrado (drivers, configuración y estructura del proyecto unificados), lo que puede acelerar el desarrollo y reducir la fragmentación habitual. Además, al ser open source, evita el bloqueo de proveedor presente en algunas soluciones comerciales.

Frente a Linux embebido
Resulta más adecuado cuando se busca bajo consumo, arranque rápido y un footprint reducido. Es especialmente útil en dispositivos que no requieren la complejidad de un sistema Linux completo.

Además, Zephyr utiliza conceptos familiares para equipos con experiencia en Linux embebido, como:

  • DeviceTree (DTS y overlays) para describir el hardware.
  • Kconfig / prj.conf para habilitar funcionalidades y ajustar el sistema.
  • Configuraciones por placa similares a un defconfig.

Esto facilita la adopción y permite mantener una filosofía de desarrollo reproducible, ordenada y orientada a producto.

6. Un ejemplo que demuestra por qué Zephyr escala mejor que el típico firmware

Una de las ventajas más diferenciales de Zephyr es que permite desacoplar la lógica del producto del hardware concreto. En lugar de “hardcodear” pines y gestionar interrupciones manualmente —como ocurre en muchos firmwares tradicionales— Zephyr permite describir el hardware en DeviceTree y apoyarse en drivers internos ya implementados.

El resultado: menos código, menor riesgo y mayor portabilidad al cambiar de placa o evolucionar hacia hardware propio.

Para ilustrarlo de forma práctica, veremos un ejemplo sencillo dividido en tres pasos progresivos:

  1. Encender y apagar un LED mediante un botón utilizando drivers internos.
  2. Añadir un segundo periférico sin rehacer la lógica del firmware.
  3. Cambiar de placa sin modificar el código de aplicación.

Con ello veremos cómo Zephyr permite evolucionar un proyecto manteniendo la arquitectura limpia y desacoplada del hardware concreto.

Paso 1 — LED con botón usando drivers internos

En este ejemplo utilizamos:

  • gpio-leds para describir LEDs como salidas GPIO
  • gpio-keys para generar eventos de entrada sin escribir ISR manuales

Primero habilitamos los módulos necesarios en prj.conf:

INI
# GPIO base
CONFIG_GPIO=y

# Driver interno: gpio-keys -> eventos de input (evita ISR manual)
CONFIG_INPUT=y
CONFIG_INPUT_GPIO_KEYS=y

# Logging por consola (util para el tutorial)
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
Configuración prj.conf Zephyr

Aquí activamos GPIO, el subsistema INPUT y el logging por consola.

A continuación, la aplicación en C se apoya en el subsistema de entrada sin necesidad de conocer números de pin, configurar pull-ups a mano, ni gestionar interrupciones:

C
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
#include <zephyr/device.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/input/input.h>

LOG_MODULE_REGISTER(app, LOG_LEVEL_INF);

#define LED0_NODE DT_ALIAS(led0)

#if !DT_NODE_HAS_STATUS(LED0_NODE, okay)
#error "No hay alias led0 en el DeviceTree"
#endif

static const struct gpio_dt_spec led0 = GPIO_DT_SPEC_GET(LED0_NODE, gpios);

static bool led_on;

static void set_led(bool on)
{
    led_on = on;
    gpio_pin_set_dt(&led0, on ? 1 : 0);
}

static void toggle_led(void)
{
    set_led(!led_on);
}

/* Este callback lo llama el subsistema INPUT cuando gpio-keys genera un evento */
static void input_cb(struct input_event *evt)
{
    /* Nota: evt->code sale de zephyr,code del DeviceTree (0x01) */
    if (evt->type == INPUT_EV_KEY &&
        evt->code == 0x01 &&
        evt->value == 1) {

        LOG_INF("Botón pulsado -> toggle LED");
        toggle_led();
    }
}

INPUT_CALLBACK_DEFINE(NULL, input_cb);

int main(void)
{
    if (!device_is_ready(led0.port)) {
        LOG_ERR("LED GPIO no está listo");
        return 0;
    }

    if (gpio_pin_configure_dt(&led0, GPIO_OUTPUT_INACTIVE) != 0) {
        LOG_ERR("No se pudo configurar el LED");
        return 0;
    }

    set_led(false);

    LOG_INF("Listo. Pulsa el botón para encender/apagar el LED.");
    return 0;
}
Código main.c Zephyr ejemplo LED

El callback input_cb() recibe el evento generado por gpio-keys y simplemente alterna el estado del LED.

Paso 2 — Añadir otro periférico sin rehacer el firmware

Para escalar el firmware añadimos un segundo LED.
La clave es que el cambio principal ocurre en el DeviceTree overlay, no en la lógica de aplicación.

C
/ {
    aliases {
        led0 = &user_led0;
        led1 = &user_led1;
        sw0  = &user_button0;
    };

    leds {
        compatible = "gpio-leds";

        user_led0: led_0 {
            gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
            label = "USER_LED0";
        };

        user_led1: led_1 {
            gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
            label = "USER_LED1";
        };
    };

    keys {
        compatible = "gpio-keys";

        user_button0: button_0 {
            gpios = <&gpio0 11 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
            label = "USER_BUTTON0";
            zephyr,code = <0x01>;
        };
    };
};
DeviceTree overlay Zephyr ejemplo leds y botón

Aquí:

  • Declaramos led0 y led1 en gpio-leds
  • Declaramos sw0 en gpio-keys
  • Asociamos los alias (led0, led1, sw0) que la aplicación utiliza

La aplicación no necesita conocer números de pin ni configuración eléctrica. Solo trabaja con alias.

Este patrón permite que el firmware crezca sin convertirse en un código rígido y difícil de mantener.

Paso 3 — Cambiar de placa: nRF52840 DK a nRF9160 DK

El último paso demuestra la verdadera escalabilidad: compilamos el mismo proyecto para dos placas distintas sin modificar el código C.

Bash
# nRF52840 DK
west build -b nrf52840dk/nrf52840 -p always .
west flash

# nRF9160 DK
west build -b nrf9160dk/nrf9160 -p always .
west flash
Compilación Zephyr con west build y west flash

El cambio de hardware se resuelve en el overlay específico de cada placa.
La aplicación permanece intacta.

Este enfoque es exactamente el que permite evolucionar un proyecto desde:

  • Placa de desarrollo
  • Prototipo funcional
  • Hardware propio

Sin que el firmware se convierta en un conjunto de dependencias rígidas ligadas a un microcontrolador concreto.

Ahí es donde Zephyr demuestra su ventaja frente al “firmware típico” escrito directamente contra registros y pines físicos.

7. Nuestro modo de trabajar con Zephyr

En Izertis abordamos los proyectos con Zephyr con una visión integral: no solo desarrollamos firmware, sino que construimos una base tecnológica preparada para evolucionar hacia producción con garantías.

Nuestro enfoque combina metodología, herramientas y experiencia en múltiples plataformas:

Entornos de desarrollo embebido avanzados
Configuramos entornos reproducibles, con compilación y depuración en tiempo real, integración con herramientas como west, control de configuración y gestión estructurada de dependencias.

Experiencia en múltiples fabricantes
Trabajamos con plataformas como Nordic (nRF52, nRF91), STMicroelectronics (STM32), NXP y otras arquitecturas soportadas por Zephyr, lo que nos permite seleccionar el hardware más adecuado para cada caso de uso.

Control de versiones y trazabilidad
Utilizamos Git como base para la colaboración, con estrategias de ramas claras y control de cambios desde el primer prototipo hasta la versión de producción.

Integración y calidad desde el inicio
Aplicamos pruebas tempranas, validación funcional y revisión continua del firmware para reducir riesgos técnicos y evitar acumulación de deuda técnica.

Este enfoque nos permite no solo entregar firmware funcional, sino construir productos conectados robustos, mantenibles y preparados para evolucionar.

8. Ejemplos reales

La versatilidad de Zephyr no es solo teórica. La hemos aplicado en distintos contextos donde fiabilidad, bajo consumo y conectividad son requisitos clave.

Control bucal para dispositivos electrónicos
Desarrollo de una férula personalizada con joystick molar y control por lengua para manejar PCs, tablets y móviles. El dispositivo integra detección de gestos de cabeza, bajo consumo y comunicación eficiente, priorizando ergonomía y autonomía.

Tracker de ganado
Solución de localización autónoma con conectividad híbrida, diseñada para operar en entornos rurales exigentes. El foco estuvo en la robustez, la eficiencia energética y la fiabilidad en campo durante largos periodos sin mantenimiento.

eBike conectada
Sistema de gestión de localización y antirrobo con comunicación por bus CAN e integración con la nube. La arquitectura permite registrar datos, gestionar eventos en tiempo real y actualizar el firmware de forma remota.

En Izertis lo elegimos porque nos ayuda a entregar productos que funcionan desde el primer día y que pueden evolucionar con el tiempo. En definitiva, Zephyr no es solo un sistema operativo: es una base tecnológica que nos permite crear soluciones conectadas, eficientes y mantenibles.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Ingeniero en Electrónica y Automática Industrial, especializado en sistemas embebidos. Actualmente trabaja como desarrollador de firmware en plataformas basadas en Zephyr y Linux embebido dentro del departamento Phygital de Izertis, participando en el diseño y puesta en producción de soluciones sobre hardware real que integran el mundo físico y digital.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

23/02/2026

Enrique Casado Díez

LoRa y LoRaWAN son tecnologías clave en el ecosistema IoT cuando se requiere largo alcance y bajo consumo energético. En este artículo analizamos su funcionamiento, Spreading Factor, link budget, arquitectura de red, frecuencias y clases de dispositivos, con un caso práctico real.

19/02/2026

Juan José Díaz Antuña

Copilot Chat es la forma más sencilla y segura de empezar a usar IA en Microsoft 365. En este artículo vemos cómo funciona, cómo activarlo y en qué se diferencia de Microsoft 365 Copilot, Copilot Studio y los Agentes Inteligentes, con ejemplos prácticos y una comparativa clara.

16/02/2026

Daniel Rosique Evangelista

Seguir ejecutando aplicaciones web sobre versiones obsoletas de PHP no es solo una decisión técnica cuestionable, sino un riesgo real para la seguridad, el rendimiento y la sostenibilidad del proyecto. PHP 8 supone un punto de inflexión que conviene abordar cuanto antes.