Grove — это система «подключи и работай» от Seeed Studio: четырёхконтактный разъём, один кабель и несколько сотен модулей, которые его используют. Кнопка, датчик температуры, реле, OLED, тепловизионная камера и радиомодуль LoRa — всё это подключается в один и тот же разъём, поэтому так много первых проектов строится на нём.
По состоянию на сентябрь 2026 года 222 из 279 модулей каталога Grove от Seeed работают в Velxio. У каждого есть собственная деталь на холсте, нарисованная по фотографии продукта, карточка с даташитом и ссылкой на магазин Seeed, а также пример из галереи, адаптированный из вики Seeed и подключённый к плате XIAO. Эта статья рассказывает, что это значит на практике.
Как модуль Grove выглядит на холсте

Каждый модуль нарисован по фотографии продукта Seeed, с разъёмом, компонентами и шелкографией там, где они находятся на плате, и носит точное название продукта Seeed. Контакты — это четыре линии разъёма, названные так, как их обозначает шелкография, поэтому провод от SIG или SDA попадает туда, куда попал бы на столе.
Что вы получаете с каждой деталью:
- Карточку с даташитом. Нажмите на деталь, и в диалоге появится, что это за модуль, какой чип он несёт, его I2C-адрес, если он есть, и кнопка Product page для перехода в магазин Seeed.
- Элементы управления, которые нужны настоящему модулю. Аналоговый датчик получает ползунок для измеряемой величины. Кнопку можно нажать. Реле щёлкает и зажигает свой светодиод. Дисплей отображает то, что отправляет скетч. Радиомодуль получает панель, которая отыгрывает другой конец канала связи.
- Пример из галереи. Каждый модуль поставляется со скетчем, адаптированным из вики Seeed, подключённым к XIAO ESP32-C6, с уже объявленными нужными библиотеками. Откройте его, нажмите Run, и модуль отзовётся.
Чтобы найти их, откройте выбор компонентов и введите «Grove» или откройте галерею примеров и отфильтруйте по Seeed Studio.
Попробуйте три из них
Шаги одинаковы для каждого примера:
- Откройте ссылку на пример. Учётная запись не нужна.
- Нажмите кнопку воспроизведения на панели инструментов. Скетч компилируется на серверах Velxio, а плата загружается в вашем браузере.
- Двигайте ползунки модуля, нажимайте его кнопки или наблюдайте, как он рисует.
Тепловизионная камера. MLX90640 — это матрица термопар размером 32 на 24. Скетч считывает калибровочный EEPROM датчика, получает кадр и выполняет собственную радиометрическую математику Melexis, а затем выводит кадр в монитор последовательного порта в виде ASCII-графики. Деталь показывает тот же кадр в виде тепловой карты; ползунок задаёт, где находится горячая точка и насколько она тёплая.

Два мотора на одном драйвере. I2C Motor Driver несёт TB6612FNG за небольшим STM32, который говорит на командном протоколе. Пример запускает два двигателя постоянного тока вперёд, назад и тормозит; роторы на холсте вращаются с заданной скоростью и в заданном направлении, а торможение их блокирует.

OLED. 0.96” SSD1315 — это дисплей, с которым поставляется большинство наборов Grove. Пример — это Seeed-версия u8g2 hello world: строка текста и счётчик, отправляемые по I2C на адрес 0x3C и отрисовываемые моделью контроллера.

Как эмулируется модуль
Здесь ничего не подделывается на уровне библиотек. Скетч компилируется настоящим arduino-cli для выбранной вами платы, прошивка выполняется на эмуляторе Velxio для этого SoC, а модуль отвечает по линии так, как ответила бы настоящая деталь. От модуля к модулю различается то, что представляет собой «линия»:
- Аналоговые модули (32 из них: свет, звук, влажность, газ, ток, температура) подают напряжение на
SIG, задаваемое ползунком. Скетч считывает его черезanalogRead()с помощью модели АЦП платы. - Цифровые входы и выходы — это уровень на
SIG: кнопки, переключатели, датчики PIR и касания с одной стороны, светодиоды, реле и зуммеры с другой. - Модули импульсов и таймингов, такие как Ultrasonic Ranger и семейство DHT, используют модель линии: фронты планируются на собственных часах эмулируемого процессора, потому что кадр DHT22 — это микросекунды, а кадр браузера — шестнадцать миллисекунд.
- Модули NeoPixel и PWM декодируют форму сигнала, которую создаёт скетч.
- Модули I2C, UART и SPI — самая большая группа: 84 модуля на 78 моделях устройств, написанных на C и скомпилированных в WebAssembly. Каждая модель отвечает на чтения регистров и команды, которые отправляет драйвер производителя, и один и тот же исходный код на C выполняется и внутри браузера, и внутри облачных эмуляторов Velxio для плат, которые там работают.
Модели устройств короткие, потому что большинство деталей следуют одной из нескольких форм: карта регистров с автоинкрементным указателем, командное устройство в стиле Sensirion с CRC-8 на каждом слове или плоский кадр, который потоково передаёт датчик. Модель 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 с кодом Хэмминга, а MLX90621, для которого Seeed ничего не публикует, был сделан по референсному драйверу Melexis.
Пример драйвера мотора использует сырой Wire. Библиотека Seeed для
платы TB6612FNG включает I2C-помощник эпохи AVR, который не компилируется
для 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, длина, команда, полезная нагрузка и CRC по
MODBUS.
У каждой модели есть тест, который управляет ею так же, как её драйвер, байт за байтом: 1804 таких теста по всему каталогу в сентябре 2026 года. Примеры из галереи тоже запускались на развёрнутом приложении, а не только в наборе тестов.
Чего нет в каталоге
Скажем прямо о пробелах: 57 из 279 артикулов не смоделированы, и три группы объясняют те из них, которые можно было бы сделать.
- Модуль DMX512. Плата — это линейный драйвер; сложность в том, что ни одна библиотека Arduino не формирует кадр DMX на XIAO так, как этого ожидает плата.
- Набор Simple RF Link на 433 МГц. Его скетчи используют VirtualWire, которого нет в индексе библиотек Arduino, а принимающей половине потребовалось бы, чтобы модуль генерировал битовый поток в плату, а не отвечал ей.
- Три платы, продаваемые под именем Grove: Grove Beginner Kit, Arduino Sensor Kit Base и GrovePi+. Это платы с микроконтроллером, а не модули, и им нужны собственные определения плат.
Остальное — кабели, крепёж и наборы.
Куда двигаться дальше
- Выбор компонентов: нажмите Add Component на холсте и введите “Grove”. Каждая карточка — это модуль; описание говорит, что он делает.
- Галерея примеров на velxio.dev/examples с фильтром по Seeed Studio содержит по одному примеру на модуль.
- Модули есть в магазине Seeed в разделе Grove; карточка даташита каждого компонента ссылается на его страницу.
Графика модулей отрисована по продуктовым фотографиям Seeed Studio.