The Arduino series of development boards has been a staple in the electronics prototyping scene for over a decade. In 2020, a new Arduino device: the Arduino Portenta H7 was launched to become one of the most powerful microcontroller platforms on the market. Today we will examine this platform and learn what sets it apart from the Arduino you may already know.
Notice of Non-Affiliation and Disclaimer: As of the publication date, we are not affiliated, associated, authorized, endorsed by, compensated by, or in any way officially connected with Arduino, Arduino.cc, Arduino LLC, Genuino, Arduino AG, ARM Limited, ARM Holdings, Google Brain Team, or their owners, subsidiaries or affiliates.
External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
Unboxing the Arduino Pro Portenta H7
Right off the bat, you can tell the platform has new end-uses in mind; with its change in color scheme and its high-density circuit layout. It also boasts some substantially more powerful specifications. These were conveniently printed right on the bottom of the package. Luckily, there are also dual rows of 0.1-inch (2.54 mm) plated holes—meaning you can adapt the system to use pin headers and sockets much like you can with previous Arduinos.
As always, I recommend doing any assembly work at an anti-static workstation. This should help prevent electrostatic discharge (ESD) to maximize the reliability of your project. If you plan on installing anything new, you should also consider backing up any data you consider important.
The kit includes the Arduino Portenta H7 itself and a compatible flexible antenna assembly for wireless connectivity. The antenna and its attached cable are very small, so be sure to look for it inside the package before you discard anything. There was also the standard printed disclaimer. A hyperlink on the bottom cover will direct you to the official webpage for the platform.
Hardware Overview
From the “pro” designation and other features, we gathered this is a platform with industrial and similar end-uses in mind. This includes the Industrial Internet of Things (IIoT). It also helps explain why the system has a small form factor and a wide operating temperature range of -40 °C to +85 °C.
Devices
The Portenta H7 is the namesake of the STMicroelectronics STM32H7 series processor. Specifically, the STM32H747XIH6. This system utilizes an ARM Cortex M7 running at 480 MHz and a Cortex M4 running at 240 MHz. To put that in perspective, the upper clock speed of the ATmega328p of the Arduino Uno was a nominal 16 MHz. When you upload Arduino applications (called sketches) to the processor, you have the option of selecting either the M7 core or the M4 each time you do so.
For exact details on the hardware: Arduino maintains the relevant documentation at store.arduino.cc/portenta-h7.
Portenta H7’s wireless capabilities are provided by a Murata LBEE5KL1DX 2.4 GHz Wi-Fi + Bluetooth 4.1 Enhanced Data Rate (EDR) module. This is where the kit’s flexible 2.4 GHz/5 GHz antenna and its matching U.FL connector come in.
The system can receive power either through the USB-C connector or through the 5-volt power input pin: VIN. The USB-C connector not only supports power delivery and debugging, but can act as a USB host or push video to an external DisplayPort display. This video is supported by a USB-C bridge with DisplayPort conversion capabilities.
On the bottom layer, two 80-pin high-density connectors allow for direct expansion beyond what the larger, plated through holes can deliver. The high-density approach also couples with the larger Portenta Carrier board. The carrier board supplies physical connectors for USB, RJ-45 for Gigabit Ethernet, CANbus, audio connectors, DisplayPort and others. As of June 2020, the Portenta Carrier is marked “coming soon” on the official site, so for now we’ll focus on the Portenta H7’s software capabilities…
Last but not least, I should mention that apparently Arduino can customize your Portenta H7 to some extent. This means you can request a different memory configuration, crypto chip, antenna, etc. The Portenta H7 featured here is effectively a default configuration. For details on other configurations, use the official Arduino page sections on “Special Configuration Request.”
Software Capabilities
Arduino Pro Software is available through the https://www.arduino.cc/pro/software webpage.
The Portenta H7 system supports multiple languages: including Arduino, MicroPython, and Javascript. For low-power machine-learning applications, this supports the TensorFlow library, which itself also supports Python 3.
Fans of the ARM Mbed OS Real-Time Operating System (RTOS) will also be pleased to know the RTOS is also supported.
Despite all these capabilities, you can apparently build some applications in the same “standard” Arduino development environment as others such as the Arduino Uno. That is the development tool I will be using today.
Creating a Project (LED Blink)
The Arduino.cc/pro website features a tutorial area that I recommend visiting as soon as you unpack everything. If you plan on trying it, I suggest you reference their site directly, but I will document my own experience below.
At the time, there were 4 tutorials available:
- Setting up the Portenta H7 for Arduino (an LED Blink project)
- Dual Core Processing
- Portenta H7 as a Wi-Fi Access Point
- Portenta H7 as a USB Host
The LED Blink project should help you become familiar with the functions provided by the Application Programming Interface (API). These functions include classic staples like digitalRead() and millis() that operate on the Arduino hardware itself rather than on the cloud. This also serves as a primer to the Mbed operating system (Mbed OS) stack.
To get started, prepare to use:
- The Portenta H7 board itself
- A USB-C cable (USB A –> USB C or USB C –> USB C)
- Arduino IDE 1.8.10+ or Arduino Pro IDE 0.0.4+
As always: please back up any data you consider important first, and scan anything you download off the internet using your favorite anti-malware software.
With that in mind, it was time to plug the Portenta H7 into a Windows PC…
I have updated my Windows 10-based Arduino IDE from version 1.8.9 to 1.8.13, which was the latest available. To do so, respond “yes” when your IDE offers an upgrade. Alternatively, you can visit the official Arduino website and navigate to the “Software” section containing the Arduino IDE.
While the executable downloaded, I went ahead and plugged in the Arduino Pro using a Type A to USB-C cable. The Portenta H7 was immediately recognized by Windows 10 as a “USB Serial Device.”
Arduino Pro IDE
The Arduino Pro Integrated Development Environment (IDE) effectively takes the place of the classic desktop IDE, while retaining the basic look and feature set of the original. However, the Arduino Create Web Editor was billed as the faster way to get started developing.
After installing the newer Arduino IDE 1.8.13, start the application.
Navigate to Tools –> Board –> Boards Manager.
In the Boards Manager window, look for the “Arduino mBed-enabled Boards” option. You can filter this list by typing “mbed” in the search field near the top of the window.
During installation, you may notice the USB device disconnecting and reconnecting automatically.
After the installation completes, you may be asked to approve the USB driver installer: dpins_amd64.exe.
The guide advises you check Windows Device Manager for a new device labelled “Portenta H7 Bootloader.” And you may need to unplug and re-plug the Portenta H7 so it is recognized properly by Windows.
This is where I ran into some trouble, because back in Windows Device Manager, “Portenta H7 Bootloader” was nowhere to be found. This persisted after trying:
- Rebooting the system
- Reinstalling with the Board Manager
- Reinstalling the Arduino IDE
- Running Arduino IDE as administrator
- Reinstalling as administrator
- Trying a different computer
I also tried a different USB-C cable that I knew to work with other development kits.
At this point, I checked the Arduino forum and found one user with a similar problem who solved their problem using the post_install.bat batch file included with the IDE. The default file path is:
C:\Users\YourUserName\AppData\Local\Arduino15\packages\arduino-beta\hardware\mbed\1.2.0
…where you should substitute YourUserName with your own username.
I execute post_install.bat, which didn’t seem to do anything at first. But it was time to try and upload the example program anyway…
Successfully Uploading the Example Program: Blink
Back in the Arduino IDE, load the “Blink” example by navigating to File –> Examples –> 01.Basics –> Blink.
Now, navigate to Tools –> Board. Adjust this setting to make sure the Arduino Portenta H7 (M7 core) is selected.
Navigate to Tools –> Port to make sure the COM port matching the Portenta is selected. In my case, the Arduino did a good job of detecting the Portenta H7 for me and labelling the correct COM port. This turned out to be COM4, but your COM port number could be just about anything.
In spite of the Device Manager problem, I pressed the “upload” button (near the top-left part of the Arduino IDE). To my surprise, Windows 10 pushed a notification saying the Arduino was being set up, and shortly later the upload succeeded!
The Portenta H7 board itself could be seen blinking its green LED as intended!
Closing Remarks
Overall, USB driver difficulties seem to be a common experience in Windows 10. This includes many other unrelated devices like software defined radios (SDRs) that have also encountered problems with either Device Manager or had their drivers removed Windows 10 updates. So the device visibility issue in Device Manager isn’t necessarily endemic to this platform.
I should also note that I never got the Portenta H7 Bootloader to appear anywhere in Device Manager, even though the Blink application uploaded successfully via the COM device.
Overall, setting up the Arduino Pro Portenta H7 was substantially easier than many other embedded systems I have tried. If you are looking for a very compact embedded system with some serious hardware capabilities, this is definitely worth checking out!
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
The names Arduino, Arduino.cc, Arduino LLC, Genuino, Arduino AG, Portenta H7, Arduino Uno, STM32, ARM Cortex, TensorFlow, RED-V as well as related names, marks, emblems, and images are trademarks of their respective owners.
References
[1] | Arduino, “PORTENTA H7,” Arduino, [Online]. Available: https://store.arduino.cc/usa/portenta-h7. [Accessed 22 June 2020]. |
[2] | Arduino, “Introducing the Arduino Portenta H7,” Arduino, 11 Feb. 2020. [Online]. Available: https://www.youtube.com/watch?v=NIHBaKVVAGo. [Accessed 21 June 2020]. |
[3] | Arduino, “Arduino Pro (Portenta Carrier),” Arduino, [Online]. Available: https://www.arduino.cc/pro/hardware/product/portenta-carrier. [Accessed 22 June 2020]. |
[4] | Arduino, “Setting Up Portenta H7 For Arduino,” Arduino, [Online]. Available: https://www.arduino.cc/pro/tutorials/portenta-h7/por-ard-gs. [Accessed 22 June 2020]. |