Voltar

222 módulos Seeed Grove agora rodam no navegador

Grove é o sistema plug-and-play da Seeed Studio: um conector de quatro pinos, um cabo e algumas centenas de módulos que o compartilham. Um botão, um sensor de temperatura, um relé, um OLED, uma câmera térmica e um rádio LoRa se conectam à mesma tomada, e é por isso que tantos primeiros projetos são construídos sobre ele.

Em setembro de 2026, 222 dos 279 módulos do catálogo Grove da Seeed rodam no Velxio. Cada um tem sua própria peça na tela, desenhada a partir da foto do produto, um cartão de datasheet com o link para a loja da Seeed e um exemplo da galeria adaptado da própria wiki da Seeed, conectado a uma placa XIAO. Este artigo percorre o que isso significa na prática.

Como um módulo Grove aparece na tela

Dezesseis módulos Grove como o Velxio os desenha: Button, Light Sensor v1.2, SHT31, OLED 0.96", Ultrasonic Distance Sensor, DHT22 Pro, Chainable RGB LED V2, Relay, câmera 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" e o módulo CAN BUS

Cada módulo é desenhado a partir da foto do produto da Seeed, com o conector, os componentes e a serigrafia onde estão na placa, e carrega o nome exato do produto da Seeed. Os pinos são as quatro linhas do conector, nomeados como a serigrafia os nomeia, então um fio de SIG ou SDA chega onde chegaria na bancada.

O que você recebe com cada peça:

Para encontrá-los, abra o seletor de componentes e digite “Grove”, ou abra a galeria de exemplos e filtre por Seeed Studio.

Experimente três deles

Os passos são os mesmos para todos os exemplos:

  1. Abra o link do exemplo. Você não precisa de uma conta.
  2. Pressione o botão de play na barra de ferramentas. O sketch compila nos servidores do Velxio e a placa inicializa no seu navegador.
  3. Mova os controles deslizantes do módulo, clique em seus botões ou observe-o desenhar.

Uma câmera térmica. A MLX90640 é um arranjo 32 por 24 de termopilhas. O sketch lê a EEPROM de calibração do sensor, lê um quadro e executa a própria matemática radiométrica da Melexis, e imprime o quadro no monitor serial como arte ASCII. A peça mostra o mesmo quadro como um mapa de calor; o controle deslizante define onde está o ponto quente e quão quente.

A câmera térmica MLX90640 na tela, conectada a um XIAO ESP32-C6, mostrando um ponto quente no meio de seu quadro 32 por 24

Dois motores em um driver. O I2C Motor Driver carrega um TB6612FNG atrás de um pequeno STM32 que fala um protocolo de comandos. O exemplo aciona dois motores DC para frente, para trás e freia; os rotores na tela giram na velocidade e direção comandadas, e o freio os trava.

O Grove I2C Motor Driver na tela acionando dois motores DC, conectado a um XIAO ESP32-C6

Um OLED. O SSD1315 de 0.96” é o display com que a maioria dos kits Grove vem. O exemplo é o hello world do u8g2 da Seeed: uma linha de texto e um contador, enviados por I2C em 0x3C, pintados por um modelo do controlador.

O Grove OLED 0.96" na tela mostrando Hello World e um contador, conectado a um XIAO ESP32-C6

Como um módulo é emulado

Nada aqui é simulado no nível da biblioteca. O sketch é compilado por um arduino-cli de verdade para a placa que você escolheu, o firmware roda no emulador do Velxio para aquele SoC, e o módulo responde no fio como a peça responderia. O que difere de módulo para módulo é o que “o fio” é:

Os modelos de dispositivos são curtos, porque a maioria das peças segue uma de algumas formas: um mapa de registradores com um ponteiro de incremento automático, um dispositivo de comando no estilo Sensirion com CRC-8 em cada palavra, ou um quadro plano que o sensor transmite. O modelo do SHT31 é o sensor de temperatura e umidade da Seeed por inteiro, menos os comentários:

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 e A_hum são os dois controles deslizantes. A conversão é a do datasheet do SHT31, executada ao contrário: o controle deslizante diz 25 graus, o modelo produz a palavra bruta que o driver transformará de volta em 25 graus, com CRC e tudo.

De onde vêm os modelos

Cada modelo é escrito com base em um documento: o datasheet da peça, ou a biblioteca do fabricante que se comunica com ela, lida linha por linha. Quando nenhum dos dois existia, o módulo era deixado de fora em vez de ser adivinhado. Três casos mostram o que isso significou.

As câmeras térmicas tiveram que ser derivadas, não transcritas. Um driver térmico nunca lê uma temperatura. Ele extrai 832 palavras de EEPROM, obtém cerca de duzentas constantes de calibração, lê 832 palavras de dados de quadro e executa o modelo do fabricante. Então o modelo do MLX90640 fornece uma calibração degenerada na qual todos os termos de correção se anulam, e faz a matemática de trás para frente, partindo da temperatura que o slider pede até a palavra bruta que a produz. Ele foi verificado contra um port do driver antes de qualquer linha de C ser escrita; um alvo de -20 a 300 graus faz o caminho de ida e volta com erro inferior a 0,02 graus. O MLX90641 precisou do mesmo truque mais uma EEPROM codificada em Hamming, e o MLX90621, para o qual a Seeed não publica nada, veio do driver de referência da Melexis.

O exemplo do driver de motor usa Wire diretamente. A biblioteca da Seeed para a placa TB6612FNG inclui um helper I2C da era AVR que não compila para um ESP32, então o exemplo fala o protocolo diretamente. É um byte de comando e seu payload:

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);
}

O módulo CAN BUS não é um design da Seeed. Ele foi deixado de fora inicialmente porque a Seeed não publica nenhum protocolo nem biblioteca para ele. A placa é feita pela Longan Labs, que publica ambos, e o modelo segue o layout de quadro deles: 0xAA, um comprimento, um comando, o payload e um CRC MODBUS.

Todo modelo tem um teste que o aciona da mesma forma que seu driver, byte a byte: 1.804 deles em todo o catálogo em setembro de 2026. Os exemplos da galeria também foram executados no app implantado, não apenas na suíte de testes.

Sendo honesto sobre as lacunas: 57 dos 279 SKUs não estão modelados, e três grupos explicam os que poderiam estar.

O restante são cabos, ferragens de montagem e kits.

Para onde ir agora

A arte dos módulos é desenhada a partir das fotografias de produto da Seeed Studio.


Compartilhar em:
David Montero

Escrito por

David Montero

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

GitHub velxio.dev

Artigos relacionados


Próximo artigo
As novas placas XIAO IPS Display da Seeed, rodando no seu navegador dias após o lançamento