Arduino Portenta H7 + Vision Shield

The Portenta H7 is a powerful development board from Arduino with both a Cortex-M7 microcontroller and a Cortex-M4 microcontroller, a BLE/WiFi radio, and an extension slot to connect the Portenta vision shield - which adds a camera and dual microphones. The Portenta H7 and the vision shield are available directly from Arduino for ~$150 in total.

There are two versions of the vision shield: one that has an Ethernet connection and one with a LoRa radio. Both of these can be used with Edge Impulse.

The Edge Impulse firmware for this development board is open source and hosted on GitHub: edgeimpulse/firmware-arduino-portenta-h7.

Portenta H7 development board

Installing dependencies

To set this device up in Edge Impulse, you will need to install the following software:

  1. Arduino CLI.

  2. On Linux:

    • GNU Screen: install for example via sudo apt install screen.

Problems installing the CLI?

See the Installation and troubleshooting guide.

Connecting to Edge Impulse

With all the software in place it's time to connect the development board to Edge Impulse.

1. Connect the vision shield

Using the vision shield using two edge connectors on the back Portenta H7.

Portenta vision shield (with a LoRa radio) connected to the Portenta H7.

2. Connect the development board to your computer

Use a USB-C cable to connect the development board to your computer. Then, double-tap the RESET button to put the device into bootloader mode. You should see the green LED on the front pulsating.

3. Update the firmware

The development board does not come with the right firmware yet. To update the firmware:

  1. Double press on the RESET button on your board to put it in the bootloader mode.

  2. Open the flash script for your operating system (flash_windows.bat, flash_mac.command or flash_linux.sh) to flash the firmware.

  3. Wait until flashing is complete, and press the RESET button once to launch the new firmware.

4. Setting keys

From a command prompt or terminal, run:

edge-impulse-daemon

This will start a wizard which will ask you to log in, and choose an Edge Impulse project. If you want to switch projects run the command with --clean.

Alternatively, recent versions of Google Chrome and Microsoft Edge can collect data directly from your development board, without the need for the Edge Impulse CLI. See this blog post for more information.

5. Verifying that the device is connected

That's all! Your device is now connected to Edge Impulse. To verify this, go to your Edge Impulse project, and click Devices. The device will be listed here.

Device connected to Edge Impulse.

Next steps: building a machine learning model

With everything set up you can now build your first machine learning model with these tutorials:

Looking to connect different sensors? The Data forwarder lets you easily send data from any sensor into Edge Impulse.

Deploying back to device

  • Download your custom firmware from the Deployment tab in the Studio and install the firmware with the same method as in the "Update the firmware" section and run the edge-impulse-run-impulse command:

Note that it may take up to 10 minutes to compile the firmware for the Arduino Portenta H7

  • For an end-to-end example that classifies data and then sends the result over LoRaWAN. Please see the example-portenta-lorawan example.

Troubleshooting

If you come across this issue:

Finding Arduino Mbed core...
arduino:mbed_portenta 2.6.1     2.6.1  Arduino Mbed OS Portenta Boards                                                  
Finding Arduino Mbed core OK
Finding Arduino Portenta H7...
Finding Arduino Portenta H7 OK at Arduino
dfu-util 0.10-dev

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Warning: Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release
No DFU capable USB device available
Error during Upload: uploading error: uploading error: exit status 74
Flashing failed. Here are some options:
If your error is 'incorrect FQBN' you'll need to upgrade the Arduino core via:
     $ arduino-cli core update-index
     $ arduino-cli core install arduino:mbed_portenta@2.6.1
Otherwise, double tap the RESET button to load the bootloader and try again
Press any key to continue . . .

You probably forgot to double press the RESET button before running the flash script.

Last updated

Revision created

Merge branch 'main' into brickml