Complete update on how to get going. (3/25/25) You can read all about the project after this, but this is important!
As a preliminary, install Arduino 2.0 or later for your system.
First you must install STM32 support to Arduino. Follow the instructions here . Start with "Installing STM32 Cores" and proceed through "Extra step" to install the STM32CubeProgrammer.
Install the STM32CubeProgrammer following the instructions here. Download the software by scrolling down to Get Software and choose the correct version for your operating system. More information can be found here. To program the WeAct Duino, you will need an St-Link. The one from WeAct works well. You may need to install the ST-Link Driver. If using an ST-Link on a Nucleo board, you may need to update the software. Google should get you to the right areas.
The final step is to install the files to support the WeAct Duino variant. That process is described in the below, but is included here for simplicity. Find your Arduino Sketchbook location from the Arduino IDE using File > Preferences. The Sketchbook location is the first entry in the window. In that location, create a new directory named "hardware" (without the quotes). Then download WeActDuino.zip from the Files area of this project. Unzip it into the hardware directory you just created. once the files are in place, select the tools menu in Arduino and click Reload Board Data. You should see an entry in the Tools -> Board menu named "WeActDuino Boads (in sketchbook)" with a single entry "weActDuinoG431". The old way to force new Board Data to be read was : "Once the files are in place in the hardware directory, you must close Arduino if it's open, delete ~/.config/arduino-ide, and restart Arduino. Do this anytime the files in the WeActDuino directory are changed. (It's a bug in Arduino.)" This is no longer necessary as of 4/15/25. I leave these old details just in case things don't work as expected, you can try the old method.
OK, now you can read about how we got here. Please note that all the items in tArmDuino that were indicated as "broken" have been fixed and are working well. Further, I'm now running Ubuntu 24.04 and using Arduino 2.3.4.
My first serious work with STM processors as powerful ARM-based Arduinos started with ST32L071 and is documented here. As part of that article, I found a way to integrate a custom board into the Arduino environment and how to use the ST-Link to upload a sketch from the Arduino IDE. Satisfied as I am with that work, I realize that no one is likely to build any of my L071 based Arduinos, even if they can be itsy-bitsy, low power, etc. However, my work may still be very useful!
Let's talk about the WeAct Duino. As discussed in the Description section above, the STM32G431 on the WeAct Mini Core Board offers a lot of power along with many peripherals. WeAct offers this unit at a very affordable price - less than three bucks! (Even in quantity, the G431 chip from Digikey costs more than the cost of the system from WeAct. How can they make it so cheap? Who knows! But we can all benefit!) While the G4xx draws more power than the L0xx, it is an M4 core with floating point hardware, runs over 4 times faster, and has additional resources. The version from WeAct is in a 48 pin package, so more of the resources are accessible. ST Nucleo versions of the G431 are available from Digikey (and others). The 32 pin version costs $12 and the 64 pin version is $16. Both are significantly larger than the WeAct board, but not any more powerful (same chip).
As a useful bonus, WeAct also offers a clone of the ST-LINK_2.1 programmer. Not only does it cost half what the cheapest ST version costs, it also provides a serial interface. The usual sort of Serial.print() debug can be easily used for program debug; for harder problems, gdb (g-debugger) can be invoked as described here NOTE: As of 3/24/25, the STML071 project is fixed and the explanations and details are updated...
I followed the clear instructions and got my WeAct STM32G431 board running Blink pretty quick. I am now trying to figure out how to use the 4 UART interfaces in ways that I am used to using the single UART of the other Arduino capable boards! Thanks Doktek