返回

222 个 Seeed Grove 模块现已在浏览器中运行

Grove 是 Seeed Studio 的即插即用系统:一个四针连接器、一根线缆,以及数百个共用它的模块。一个按钮、一个温度传感器、一个继电器、一块 OLED、一台热成像相机和一个 LoRa 无线电,全都插在同一个插座上,这也是为什么如此多的入门项目都建立在它之上。

截至 2026 年 9 月,Seeed 的 Grove 目录中 279 个模块里有 222 个可以在 Velxio 中运行。每一个模块在画布上都有自己的元件,依据产品照片绘制,带有一张数据手册卡片(内含 Seeed 商店的链接),以及一个改编自 Seeed 自家 wiki 的示例库示例,并已连接到一块 XIAO 开发板。本文带你了解这在实践中意味着什么。

Grove 模块在画布上是什么样子

十六个 Grove 模块在 Velxio 中的绘制效果:Button、Light Sensor v1.2、SHT31、OLED 0.96"、Ultrasonic Distance Sensor、DHT22 Pro、Chainable RGB LED V2、Relay、热成像相机 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" 以及 CAN BUS 模块

每个模块都依据 Seeed 的产品照片绘制,连接器、元件和丝印都位于它们在板子上的实际位置,并且使用 Seeed 的准确产品名称。引脚就是连接器的四条线,按照丝印上的名称命名,因此从 SIG 或 SDA 引出的导线会落在它在实验台上该落的位置。

每个元件你都能得到:

要找到它们,打开元件选择器并输入 “Grove”,或者打开示例库并按 Seeed Studio 筛选。

试试其中三个

每个示例的步骤都一样:

  1. 打开示例链接。你不需要账号。
  2. 按下工具栏上的播放按钮。sketch 会在 Velxio 的服务器上编译,开发板会在你的浏览器中启动。
  3. 移动模块的滑块、点击它的按钮,或者看着它绘制。

一台热成像相机。 MLX90640 是一个 32 乘 24 的热电堆阵列。该 sketch 会读取传感器的校准 EEPROM,读取一帧并运行 Melexis 自家的辐射测量数学运算,然后将该帧以 ASCII 艺术的形式打印到串口监视器。元件会以热力图的形式显示同一帧;滑块设定热点在哪里以及有多热。

画布上的 MLX90640 热成像相机,连接到一块 XIAO ESP32-C6,在其 32 乘 24 帧的中央显示一个热点

一个驱动器上的两个电机。 I2C Motor Driver 在一颗小型 STM32 后面搭载了一颗 TB6612FNG,该 STM32 使用一种命令协议通信。该示例让两个直流电机正转、反转和制动;画布上的转子会按命令的速度和方向转动,而制动会将它们锁住。

画布上的 Grove I2C Motor Driver 驱动两个直流电机,连接到一块 XIAO ESP32-C6

一块 OLED。 0.96” SSD1315 是大多数 Grove 套件附带的显示屏。该示例是 Seeed 的 u8g2 hello world:一行文本和一个计数器,通过 I2C 在 0x3C 地址发送,由控制器的模型绘制出来。

画布上的 Grove OLED 0.96" 显示 Hello World 和一个计数器,连接到一块 XIAO ESP32-C6

模块是如何被仿真的

这里没有任何东西是在库层面伪造的。sketch 由真正的 arduino-cli 针对你所选的开发板编译,固件在 Velxio 针对该 SoC 的仿真器上运行,模块会像真实元件那样在总线上响应。模块与模块之间的区别在于”总线”是什么:

设备模型都很短,因为大多数元件都遵循少数几种形态之一:带自动递增指针的寄存器映射、每个字都带 CRC-8 的 Sensirion 风格命令设备,或者传感器流式输出的扁平帧。SHT31 模型就是 Seeed 温湿度传感器的全部内容,去掉注释后:

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 和 A_hum 就是那两个滑块。转换就是 SHT31 数据手册中的那个,反向运行:滑块说 25 度,模型产生驱动会再转回 25 度的原始字,CRC 等等一应俱全。

模型从何而来

每个模型都是依据一份文档编写的:要么是元件的数据手册,要么是与它通信的厂商库,逐行阅读。当两者都不存在时,该模块会被略过,而不是靠猜测。有三个案例可以说明这意味着什么。

热成像相机必须推导,而非照搬。 热成像驱动从不直接读取温度。它会拉取 832 字的 EEPROM,提取约两百个校准常数,读取 832 字的帧数据,然后运行厂商的模型。因此,MLX90640 模型提供了一份退化校准,其中每一项修正项都为零,并从滑块所要求的温度反向推算出产生该温度的原始字。在编写任何 C 代码之前,它已对照该驱动的移植版本进行了验证;目标范围 -20 到 300 度,往返误差在 0.02 度以内。MLX90641 需要同样的技巧,外加一个汉明编码的 EEPROM;而 Seeed 未发布任何资料的 MLX90621,则来自 Melexis 的参考驱动。

电机驱动示例使用原生 Wire。 Seeed 为 TB6612FNG 板提供的库内置了一个 AVR 时代的 I2C 辅助程序,无法为 ESP32 编译,因此该示例直接使用协议通信。它是一个命令字节及其负载:

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

CAN BUS 模块并非 Seeed 的设计。 它最初被略过,因为 Seeed 没有为其发布任何协议和库。该板由 Longan Labs 制造,他们两者都发布了,模型遵循他们的帧格式:0xAA、一个长度、一个命令、负载以及一个 MODBUS CRC。

每个模型都有一个测试,按照其驱动的方式逐字节驱动它:截至 2026 年 9 月,整个目录中共有 1,804 个测试。图库示例也已在部署的应用上运行过,而不仅仅是在测试套件中。

目录中缺少什么

坦诚面对这些缺口:279 个 SKU 中有 57 个尚未建模,而其中本可以建模的部分由三个类别构成。

其余的是线缆、安装硬件和套件。

接下来去哪里

模块插图取自 Seeed Studio 的产品照片。


分享到:
David Montero

作者

David Montero

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

GitHub velxio.dev

相关文章


下一篇
Seeed 全新 XIAO IPS 显示屏开发板,发布数日后即可在浏览器中运行