Sensor fusion design project, coding help request!

Hello,
I’m working on a project using edge impulse on a seed studios grove vision.ai version1. The object detection model has been working amazing when I run the live inference through the serial daemon. However, I now need to integrate the hardware(vision.ai module)with a microcontroller. The vision.ai board has a programmable i/o that I’d like to make an output that is 1 when the object detection is true and 0 anytime else. I’ve been digging in the firmware from github, but could use any advice on where to attempt to make these coding changes and how to build the new firmware once I’ve made them.
This is for a senior project for my ee degree, thanks!

Hi @ncharlesw1,

Rather than trying to decipher the Edge Impulse-created pre-compiled firmware source code, I might recommend one of the following approaches:

  1. Write your own application using the C++ or Arduino libraries downloaded from your project
  2. Load the pre-compiled firmware from your project onto your Vision AI board, but then communicate with it using the following serial AT commands rather than having it toggle a pin.

Would using the serial AT commands be similar to using I2C? I had seen that that was the advertised serial connection. I think I’d prefer to just run the edge impulse firmware and communicate with the board via i2c serial if that is an option, my microcontroller(MSP430) has i2c.

Hi @ncharlesw1,

The AT commands use serial (e.g. UART) connection, not I2C. Your MSP430 should have a UART peripheral you can use.

This is perfect, thanks!

1 Like

Where can i find documentation on which pins are for the UART on my hardware? Would it be from the maker of the hardware or is it specific to the edge impulse firmware that is running on the board?

Hi @ncharlesw1,

I recommend looking for the datasheet or documentation for the board that you purchased. That will provide you with the pinout and how to use the UART peripheral.

@ncharlesw1
You have two options to achieve your goal:

  1. Modify the firmware on your own.Here is the firmware source code together with build instructions. Around our firmware, there is a whole SDK from Synopsys (unfortunately, it is partially closed, so only headers are available to figure out how to use it). You can use it as a base for your firmware and add a custom GPIO operation. I’ve never used GPIO on this board, so I can’t help directly. But the source code is your friend :slight_smile:
  2. Our standalone firmware exposes two interfaces, UART (over USB) and I2C, which you can use to connect Vision AI to another board (master). That way, you can control the inference process (start/stop) and get inference results.
    a. Edge Impulse makes UART protocol and its full documentation can be found here
    b. I2C protocol is a Seeed invention. Its documentation is here. There is also an example of how to connect the Vision AI to XIAO and control the Vision AI over I2C.

I hope it will help you!

BR,
Mateusz

2 Likes

I’m going to try to implement the i2c communication, thank you so much for the advice! I’m also going to be posting some results and questions regarding my object detection model in another post soon.

One further question. With the i2c protocol being written by seeed for their firmware, is the documentation for it completely compatible with the edge impulse firmware? This was where some of my confusion has come from, basically where is the factory firmware different from the edge impulse firmeware.

@ncharlesw1
I think the I2C protocol in the Seeed factory firmware is exactly the same as in the Edge Impulse firmware. However, I can’t guarantee that. In case of any issues you have to reach out the Seeed for support.

Kind regards,
Mateusz