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

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:
- Una ficha de datasheet. Haz clic en la pieza y el diálogo muestra qué es el módulo, qué chip lleva, su dirección I2C cuando la tiene y un botón Product page a la tienda de Seeed.
- Los controles que necesitaría uno real. Un sensor analógico recibe un deslizador para la magnitud que mide. Un botón es clicable. Un relé hace clic y enciende su LED. Una pantalla pinta lo que le envía el sketch. Una radio recibe un panel que reproduce el otro extremo del enlace.
- Un ejemplo de la galería. Cada módulo viene con un sketch adaptado del wiki de Seeed, cableado a una XIAO ESP32-C6, con las librerías que el sketch necesita ya declaradas. Ábrelo, pulsa Run y el módulo responde.
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:
- Abre el enlace del ejemplo. No necesitas cuenta.
- 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.
- 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.

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.

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.

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 módulos analógicos (32 de ellos: luz, sonido, humedad, gas, corriente,
temperatura) ponen un voltaje en
SIG, fijado por el deslizador. El sketch lo lee conanalogRead()a través del modelo de ADC de la placa. - Las entradas y salidas digitales son un nivel en
SIG: botones, interruptores, sensores PIR y táctiles por un lado, LEDs, relés y zumbadores por el otro. - Los módulos de pulso y temporización, como el Ultrasonic Ranger y la familia DHT, usan un modelo de línea: los flancos se programan en el propio reloj de la CPU emulada, porque una trama de un DHT22 son microsegundos y un fotograma del navegador son dieciséis milisegundos.
- Los módulos NeoPixel y PWM decodifican la forma de onda que produce el sketch.
- Los módulos I2C, UART y SPI son el grupo más grande: 84 módulos sobre 78 modelos de dispositivo escritos en C y compilados a WebAssembly. Cada modelo responde a las lecturas de registro y a los comandos que envía el driver del fabricante, y el mismo código C se ejecuta dentro del navegador y dentro de los emuladores en la nube de Velxio para las placas que corren allí.
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.
Qué no está en el catálogo
Siendo sinceros sobre las lagunas: 57 de los 279 SKU no están modelados, y tres grupos explican los que podrían estarlo.
- El módulo DMX512. La placa es un driver de línea; la parte difícil es que ninguna librería de Arduino produce una trama DMX en un XIAO tal y como espera la placa.
- El kit 433 MHz Simple RF Link. Sus sketches usan VirtualWire, que no está en el índice de librerías de Arduino, y la mitad receptora necesitaría que el módulo generara un flujo de bits hacia la placa en lugar de responderle.
- Tres placas vendidas bajo el nombre Grove: el Grove Beginner Kit, el Arduino Sensor Kit Base y el GrovePi+. Son placas con un microcontrolador en lugar de módulos, y necesitan sus propias definiciones de placa.
El resto son cables, hardware de montaje y kits.
A dónde ir ahora
- El selector de componentes: pulsa Add Component en el lienzo y escribe “Grove”. Cada tarjeta es un módulo; la descripción dice qué hace.
- La galería de ejemplos en velxio.dev/examples, filtrada por Seeed Studio, tiene un ejemplo por módulo.
- Los módulos están en la tienda de Seeed bajo Grove; la ficha de hoja de datos de cada pieza enlaza a su página.
La ilustración de los módulos está dibujada a partir de las fotografías de producto de Seeed Studio.