How to connect wio terminal with grove vision ai module v2

Hi, is there an example of the correct steps to connect the Wio terminal and Grove Vision Ai module v2 with the Grove connector? I have followed the coding example at Deploying Models from Datasets to Grove Vision AI V2 | Seeed Studio Wiki, but it doesn’t work.

Hi there,

And Welcome here,

So there are more examples, in the IDE you can look at SCCMA and glean some info, connections for SPI, I2C, and others. Serial also.
What type of errors do you get ?
What is your dev environment ?
After a few reply’s you’ll gain enough forum credz to post links, pics, etc.
Not sure which end you start with, the Wio-terminal or the GVAIM2 :grin: They both have UART and I2C so my guess would be one of those two.

HTH
GL :slight_smile: PJ :v:

Here’s how AL recommend connecting the Wio Terminal to the Grove Vision AI Module V2, along with some practical caveats:

Physical Connection

  1. Use a Grove Cable
    Connect the Grove Vision AI V2 to the Wio Terminal’s Grove I²C port. The Vision module supports both UART and I²C via this port—use I²C for reliability. github.com+12wiki.seeedstudio.com+12forum.seeedstudio.com+12
  2. Power Considerations
    The I2C Grove port provides 3.3 V power, which is sufficient. Ensure a good connection—any misalignment can cause intermittent issues.
  3. Cable Order
    Plug the cable firmly so that SCL/SDA, GND, and 3.3 V line up correctly. Mis-wiring leads to the most common issues. smi

Software Setup

A) If Using UART (Bleed-through)

#include <Seeed_Arduino_SSCMA.h>
#include <HardwareSerial.h>

HardwareSerial atSerial(2); // For Wio Terminal: use UART2

SSCMA AI;

void setup() {
  Serial.begin(115200);
  atSerial.begin(921600, SERIAL_8N1, RX2, TX2);
  AI.begin(&atSerial);
}

:point_right: Replace RX2, TX2 with the correct GROVE UART pins.

If Using I²C (Recommended) this is PJ choice :grin:

#include <Seeed_Arduino_SSCMA.h>
#include <Wire.h>

SSCMA AI;

void setup() {
  Serial.begin(115200);
  Wire.begin();         // Initialize I²C on standard SDA/SCL
  AI.begin(&Wire);      // Comm via I²C
}

Make sure you’re using the I²C Grove port, not UART. :+1:

Common Pitfalls & Tips

  • Firmware Support
    The Vision module firmware must support I²C mode. AT commands via I²C only work if the firmware includes that stack.
  • Baud Rate for UART
    If switching to UART mode, note that the default Baude is 921600—slower speeds may fail. wiki.seeedstudio.com+1github.com+1
  • Module Bootloader
    If communication fails, double-click the boot button to reflash firmware, ensuring full protocol support. wiki.seeedstudio.com

Recommended Troubleshooting Steps

  1. Use a standard Grove I²C port & cable—avoid custom wiring.
  2. In your code, begin communication with AI.begin(&Wire); after calling Wire.begin();
  3. Check the module’s firmware supports I²C AT commands.
  4. Monitor Serial logs to verify AI.invoke() results or errors.

If you still have issue’s and have verified the above. come back I have some communication test code I can post to test further, but I would bet it’s in the above somewhere. You are not the first forsure, so Stay at it and double check the connections if the hardware is updated firmware wise the only option is the connections.

I would assume you have run the basic examples for each device and can move around in your IDE and dev environment, thus far :crossed_fingers:

It’s not rocket science but does require attention to detail is all. you’ll get there.

HTH
GL :slight_smile: PJ :v:

previously thank you, I use grove connector cable from vision ai v2 to wio terminal port i2c. for the output 22:48:39.576 → perf: prepocess = 7ms, inference = 49ms, postpocess = 0ms
22:48:39.576 → Box [0] target = 0, score = 59, x = 117, y = 115, w = 235, h = 240
22:48:39.576 →
22:48:41.600 → Invoke failed
22:48:43.627 → Invoke failed
22:48:45.706 → Invoke failed
22:48:47.696 → Invoke failed

with this code #include <Seeed_Arduino_SSCMA.h>
#include <Wire.h>

SSCMA AI;

void setup()
{
Serial.begin(115200);
while (!Serial);

Wire.begin();         

AI.begin(&Wire);      

}

void loop()
{
if (AI.invoke() == 0)
{
Serial.println(“Invoke success”);

    Serial.print("perf: prepocess=");
    Serial.print(AI.perf().prepocess);
    Serial.print("ms, inference=");
    Serial.print(AI.perf().inference);
    Serial.print("ms, postpocess=");
    Serial.print(AI.perf().postprocess);
    Serial.println("ms");

    for (int i = 0; i < AI.boxes().size(); i++)
    {
        Serial.print("Box[");
        Serial.print(i);
        Serial.print("] target=");
        Serial.print(AI.boxes()[i].target);
        Serial.print(", score=");
        Serial.print(AI.boxes()[i].score);
        Serial.print(", x=");
        Serial.print(AI.boxes()[i].x);
        Serial.print(", y=");
        Serial.print(AI.boxes()[i].y);
        Serial.print(", w=");
        Serial.print(AI.boxes()[i].w);
        Serial.print(", h=");
        Serial.println(AI.boxes()[i].h);
    }

    for (int i = 0; i < AI.classes().size(); i++)
    {
        Serial.print("Class[");
        Serial.print(i);
        Serial.print("] target=");
        Serial.print(AI.classes()[i].target);
        Serial.print(", score=");
        Serial.println(AI.classes()[i].score);
    }

    for (int i = 0; i < AI.points().size(); i++)
    {
        Serial.print("Point[");
        Serial.print(i);
        Serial.print("] target=");
        Serial.print(AI.points()[i].target);
        Serial.print(", score=");
        Serial.print(AI.points()[i].score);
        Serial.print(", x=");
        Serial.print(AI.points()[i].x);
        Serial.print(", y=");
        Serial.println(AI.points()[i].y);
    }
    Serial.println(); 
}
else
{
    Serial.println("Invoke failed");
}
delay(1000); 

}

so it only connects for a moment and then it fails

Hi there,

Ok, so that is something, Sounds like you are close. Let me see if I can duplicate your setup, give me some time to put it together. Look at the links and see if anything else looks different in the meantime. :+1:

HTH
GL :slight_smile: PJ :v:

Be sure if it needs a serial port attached that it is or comment out if not.

Sorry for butting in, are you sure the Grove Vision v2 works with 3.3v? I am having several issues with the grove vision v2 using 3.3v (grove port). With the official library I am getting errors with invoke too. I did a post a few days ago about my issue (Grove Vision AI V2 timeouts (Grove-I2C)) I bought a shield for Arduino with grove ports and I will test it tomorrow (to check if using 5v works), Thanks!

1 Like

Hi there,

The more the better, comments and info is welcome, I have two Grove AI v2’S and the Wio-termnal I’ll load up the demo’s and see what shakes out. I’m in the middle of some SensorNode BLE stuff… so as time permits this weekend I will setup a test. :crossed_fingers:

HTH
GL :slight_smile: PJ :v: