Volver

222 módulos Seeed Grove ya funcionan en el navegador

Grove es el sistema plug-and-play de Seeed Studio: un conector de cuatro pines, un cable y unos cientos de módulos que lo comparten. Un botón, un sensor de temperatura, un relé, un OLED, una cámara térmica y una radio LoRa se conectan al mismo zócalo, y por eso tantos primeros proyectos se construyen sobre él.

A fecha de septiembre de 2026, 222 de los 279 módulos del catálogo Grove de Seeed funcionan en Velxio. Cada uno tiene su propia pieza en el lienzo, dibujada a partir de la foto del producto, una ficha de datasheet con el enlace a la tienda de Seeed y un ejemplo de la galería adaptado del propio wiki de Seeed, cableado a una placa XIAO. Este artículo recorre qué significa eso en la práctica.

Cómo se ve un módulo Grove en el lienzo

Dieciséis módulos Grove tal como los dibuja Velxio: Button, Light Sensor v1.2, SHT31, OLED 0.96", Ultrasonic Distance Sensor, DHT22 Pro, Chainable RGB LED V2, Relay, cámara térmica MLX90640, Vision AI Module V2, LoRa Radio 868 MHz, NFC PN532, 16x2 LCD RGB Backlight, I2C Motor Driver TB6612FNG, Triple Color E-Ink 2.13" y el módulo CAN BUS

Cada módulo se dibuja a partir de la foto del producto de Seeed, con el conector, los componentes y la serigrafía donde están en la placa, y lleva el nombre de producto exacto de Seeed. Los pines son las cuatro líneas del conector, nombradas como las nombra la serigrafía, así que un cable desde SIG o SDA aterriza donde lo haría en la mesa de trabajo.

Lo que obtienes con cada pieza:

Para encontrarlos, abre el selector de componentes y escribe “Grove”, o abre la galería de ejemplos y filtra por Seeed Studio.

Prueba tres de ellos

Los pasos son los mismos para todos los ejemplos:

  1. Abre el enlace del ejemplo. No necesitas cuenta.
  2. Pulsa el botón de reproducir en la barra de herramientas. El sketch se compila en los servidores de Velxio y la placa arranca en tu navegador.
  3. Mueve los deslizadores del módulo, haz clic en sus botones o míralo dibujar.

Una cámara térmica. La MLX90640 es una matriz de 32 por 24 termopilas. El sketch lee la EEPROM de calibración del sensor, captura un fotograma y ejecuta las propias matemáticas radiométricas de Melexis, e imprime el fotograma en el monitor serie como arte ASCII. La pieza muestra el mismo fotograma como mapa de calor; el deslizador fija dónde está el punto caliente y cuánto calor hace.

La cámara térmica MLX90640 en el lienzo, cableada a una XIAO ESP32-C6, mostrando un punto caliente en el centro de su fotograma de 32 por 24

Dos motores en un solo driver. El I2C Motor Driver lleva un TB6612FNG detrás de un pequeño STM32 que habla un protocolo de comandos. El ejemplo hace girar dos motores DC hacia delante, hacia atrás y frenar; los rotores del lienzo giran a la velocidad y dirección comandadas, y el freno los bloquea.

El Grove I2C Motor Driver en el lienzo moviendo dos motores DC, cableado a una XIAO ESP32-C6

Un OLED. El SSD1315 de 0.96” es la pantalla con la que vienen la mayoría de los kits Grove. El ejemplo es el hello world de u8g2 de Seeed: una línea de texto y un contador, enviados por I2C en 0x3C, pintados por un modelo del controlador.

El Grove OLED 0.96" en el lienzo mostrando Hello World y un contador, cableado a una XIAO ESP32-C6

Cómo se emula un módulo

Aquí no se falsea nada a nivel de librería. El sketch lo compila un arduino-cli real para la placa que hayas elegido, el firmware se ejecuta en el emulador de Velxio para ese SoC, y el módulo responde por el cable tal como lo haría la pieza. Lo que cambia de un módulo a otro es qué es “el cable”:

Los modelos de dispositivo son cortos, porque la mayoría de las piezas siguen una de unas pocas formas: un mapa de registros con un puntero autoincremental, un dispositivo de comandos al estilo Sensirion con CRC-8 en cada palabra, o una trama plana que el sensor transmite en flujo. El modelo del SHT31 es todo el sensor de temperatura y humedad de Seeed, menos los comentarios:

static uint32_t handle(sn_dev* d, uint16_t cmd, const uint16_t* args, uint32_t nargs, uint16_t* w) {
  (void)d; (void)args; (void)nargs;
  switch (cmd) {
    case 0x306D: heater = true;  return 0;
    case 0x3066: heater = false; return 0;
    case 0x30A2: heater = false; return 0;   /* soft reset */
    case 0x3093: return 0;                    /* break */
    case 0x3041: return 0;                    /* clear status */
    case 0xF32D: {                            /* status register */
      uint16_t st = heater ? 0x2000 : 0x0000;
      w[0] = st; return 1;
    }
    default: break;
  }
  /* Everything else is a measurement request (single shot, periodic, fetch). */
  double t = vx_attr_read(A_temp) + (heater ? 2.0 : 0.0);
  double h = vx_attr_read(A_hum);
  w[0] = gc_u16((gc_clamp(t, -45, 130) + 45.0) * 65535.0 / 175.0);
  w[1] = gc_u16(gc_clamp(h, 0, 100) * 65535.0 / 100.0);
  return 2;
}

A_temp y A_hum son los dos deslizadores. La conversión es la del datasheet del SHT31, ejecutada al revés: el deslizador dice 25 grados, el modelo produce la palabra en bruto que el driver volverá a convertir en 25 grados, con CRC y todo.

De dónde vienen los modelos

Cada modelo se escribe a partir de un documento: la hoja de datos de la pieza, o la librería del fabricante que se comunica con ella, leída línea por línea. Cuando no existía ninguno de los dos, el módulo se dejaba fuera en lugar de adivinarlo. Tres casos muestran lo que eso significó.

Las cámaras térmicas tuvieron que derivarse, no transcribirse. Un driver térmico nunca lee una temperatura. Extrae 832 palabras de EEPROM, obtiene unos doscientos constantes de calibración, lee 832 palabras de datos de fotograma y ejecuta el modelo del fabricante. Así que el modelo del MLX90640 sirve una calibración degenerada en la que todos los términos de corrección se anulan, y hace los cálculos a la inversa desde la temperatura que pide el deslizador hasta la palabra en bruto que la produce. Se verificó contra un port del driver antes de escribir ningún C; un objetivo de -20 a 300 grados va y vuelve con un margen de 0,02 grados. El MLX90641 necesitó el mismo truco más una EEPROM codificada en Hamming, y el MLX90621, para el que Seeed no publica nada, salió del driver de referencia de Melexis.

El ejemplo del driver de motor usa Wire en bruto. La librería de Seeed para la placa TB6612FNG incluye un helper I2C de la era AVR que no compila para un ESP32, así que el ejemplo habla el protocolo directamente. Es un byte de comando y su carga útil:

const uint8_t ADDR = 0x14;
const uint8_t BRAKE = 0x00, CW = 0x02, CCW = 0x03;
const uint8_t STANDBY = 0x04, NOT_STANDBY = 0x05;
const uint8_t CHA = 0, CHB = 1;

void cmd(uint8_t c, const uint8_t* payload, uint8_t n) {
  Wire.beginTransmission(ADDR);
  Wire.write(c);
  for (uint8_t i = 0; i < n; i++) Wire.write(payload[i]);
  Wire.endTransmission();
  delay(1);
}

void run(uint8_t channel, int speed) {
  uint8_t p[2] = { channel, (uint8_t)(speed < 0 ? -speed : speed) };
  cmd(speed >= 0 ? CW : CCW, p, 2);
}

El módulo CAN BUS no es un diseño de Seeed. En un principio se dejó fuera porque Seeed no publica ningún protocolo ni librería para él. La placa la fabrica Longan Labs, que publica ambos, y el modelo sigue su estructura de trama: 0xAA, una longitud, un comando, la carga útil y un CRC de MODBUS.

Cada modelo tiene una prueba que lo controla tal y como lo hace su driver, byte a byte: 1.804 en todo el catálogo en septiembre de 2026. Los ejemplos de la galería también se ejecutaron en la aplicación desplegada, no solo en la suite de pruebas.

Siendo sinceros sobre las lagunas: 57 de los 279 SKU no están modelados, y tres grupos explican los que podrían estarlo.

El resto son cables, hardware de montaje y kits.

A dónde ir ahora

La ilustración de los módulos está dibujada a partir de las fotografías de producto de Seeed Studio.


Compartir en:
David Montero

Escrito por

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Artículos relacionados


Artículo siguiente
Las nuevas placas XIAO IPS Display de Seeed, funcionando en tu navegador días después del lanzamiento