STM32duino I. — Jak začít s STM32 jako Arduino (2025)

Arduino je velmi populární platforma s rozsáhlou komunitní podporou.

Kromě originálních vývojových kitů Arduino můžete zakoupit desítky typů klonů ať už se stejnými mikrokontroléry, které používá i Arduino — typicky ATmega328 a SAMD21 — nebo jinými čipy jako je například ESP32 nebo ESP8266.

Mezi posledně jmenované patří i mikrokontroléry STM32. Pro ně vytvořila komunita a STMicroelectronics podporu jazyka Wiring (Arduino) v podobě knihovny STM32duino. Prvním a základním mikrokontrolérem, pro který byla knihovna vytvořena, byl STM32F103 — ten využívají velmi levné vývojové desky BluePill a BlackPill (novější verze), nebo vývojové desky od LeafLabs nazvané Maple Mini. [zdroj a seznam klonů vývojových desek]

Všechny díly seriálu o STM32duino:
STM32duino I. — Jak začít s STM32 jako Arduino
STM32duino II. — Ovládáme GPIO
STM32duino III. — Komunikujeme pomocí Serial (USART)
STM32duino IV. — Čteme teplotu a vlhkost z Si7021 (I2C sběrnice)

Podporované mikrokontroléry

Kromě komunitní podpory STM32F103 se podpora rozšířila na desítky dalších mikrokontrolérů díky STMicroelectronics a knihovně STM32duino. Každý typ je něčím jiný — nízkoodběrový, vysoký výkon, hodně typů periférie, přesný timer, přesný ADC, různá velikost FLASH a SRAM.

Přehled podporovaných STM32 desek najdete na GitHub stm32duino/Arduino_Core_STM32.

Nejčastěji podporované periférie: GPIO, UART, SPI, I2C, Timer, ADC, DAC, USB HID, USB CDC a další.

V tomto i následujících článcích budu používat originální vývojové desky Nucleo od STMicroelectronics, jmenovitě STM32F411 Nucleo-64. Ke koupi na TME.eu a Farnell.

Instalace knihovny do Arduino IDE

Instalace je velmi jednoduchá — funguje v Arduino IDE 1.x i 2.x.

Otevřete File → Preferences (na macOS Arduino IDE → Preferences) a do pole Additional Boards Manager URLs přidejte tento řádek:

https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json

Pozor — stará URL z roku 2018 (…/master/STM32/package_stm_index.json) již nefunguje. Použijte výše uvedenou aktuální adresu.

V záložce Tools → Board → Boards Manager vyhledejte STM32 a nainstalujte balíček „STM32 MCU based boards“ od STMicroelectronics.

Po instalaci přejděte na Tools → Board → STM32 MCU based boards a vyberte typ vaší desky.

Nastavení pro Nucleo-64 (STM32F411)

V záložce Board vyberte Nucleo-64.

V Board part number pak vyberte přímo danou vývojovou desku s mikrokontrolérem:

Mikrokontroléry STM32 mají typicky více UART rozhraní — v nabídce Serial interface si zvolte, které chcete použít.

Záložka USB interface označuje možnost použití hardwarového USB. STM32duino podporuje USB HID i USB CDC (virtuální sériový port) — záleží na konkrétním mikrokontroléru a verzi knihovny.

Nastavení pro BluePill / BlackPill

BluePill (STM32F103C8T6) a BlackPill (STM32F401/F411) jsou nejlevnější a nejrozšířenější STM32 desky — za pár desîtek korun z AliExpressu nebo za pár stovek z českých e-shopů. Pokud máte jednu z nich, nastavení se mírně liší od Nuclea.

BluePill (STM32F103):

  • Board: Generic STM32F1 series
  • Board Part Number: BluePill F103C8 (nebo F103CB pro 128KB verzi)
  • Upload method: STM32CubeProgrammer (Serial)

BlackPill (STM32F411):

  • Board: Generic STM32F4 series
  • Board Part Number: BlackPill F411CE
  • USB Support: CDC (generic „Serial“ supersede U(S)ART)
  • Upload method: STM32CubeProgrammer (DFU)

Nahrání kódu

Nucleo a Discovery desky obsahují vestavěný programátor STLink v2.1 — připojí se k počítači jako klasický flash disk. Arduino IDE při volbě Mass Storage zkompilovaný kód zkopíruje automaticky. Druhou možností je STLink pro starší typy.

BluePill / BlackPill STLink vestavěný nemají. Potřebujete buď:

  • STLink V2 — externí debugger/programátor (~150 Kč), nejspolehlivější metoda
  • USB-UART převodník (CH340, CP2102) + nastavení BOOT0 do polohy 1 pro bootloader mód

Pro obě metody platí, že Arduino IDE vyžaduje nainstalovaný STM32CubeProgrammer jako externí nástroj. Stáhnete ho zdarma na webu STMicroelectronics (nutná bezplatná registrace).

Po kompilaci si můžete zvolit úroveň optimalizace kódu. Pro ladění (debugging) v Arduino IDE 2.x: v menu Sketch povolte Optimize for Debugging a IDE se připojí k vestavěnému debuggeru přes STLink.

První program — blikání LED

Zda všechno funguje, vyzkoušíme klasickým programem pro blikání vestavěné LED.

// setup se spustí jednou po resetu nebo zapnutí
void setup() {
  // nastav vestavěnou LED jako výstup
  pinMode(LED_BUILTIN, OUTPUT);
}

// loop se opakuje donekonecna
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // LED zapnout
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);   // LED vypnout
  delay(500);
}

Pozor pro BluePill/BlackPill: vestavěná LED je na pinu PC13, ne na standardním Arduino pinu 13. Pokud LED_BUILTIN nefunguje, nahradte ho přímo PC13.

Funguje? Výborně. V příštím článku si trochu více „ošaháme“ GPIO.

Pokud se vám článek líbil, pošlete odkaz i dalším bastlířům s hashtagem #STM32duino

Sdílejte článek:
Ukaž světu,
že jsi Maker!
Koupit tričko
Kafe pro Chiptrona
Dodej energii dalšímu článku

Související články

V návaznosti na mou LinuxDays 2017 přednášku bych zde rád zmínil několik velmi levných desek, které obsahují mikrokontrolér STM32 a stojí doslova pár desetinkorun – do (bez pošty).

Další články o STM32(F7): Tutorial: STM32F746 (STM32F7 Discovery) – Tlačítkem rozsvítit/zhasnout LED Tutorial: STM32F746 (STM32F7 Discovery) – jak zapnout LED (ovládání GPIO) STM32F746 discovery a IDE AC6 (System Workbench for STM32) Jak začít s moderními mikrokontroléry a proč – STM32…

Náš čtenář LuBoss se na foru podělil o své zkušenosti s touto platformou pro STM32 sehnatelnou za pár dolarů a populárním vývojovým studiem Arduino.

Každý elektro nadšenec přinejmenším slyšel o Arduino, které získalo obrovskou popularitu díky svým jedinečným vlastnostem.

Ve čtvrtém díle našeho seriálu o STM32duino se konečně podíváme na slibovanou I2C sběrnici.

Ve třetím díle si ukážeme použití snad nejpopulárnější sběrnice – USART, v Arduino světě je nazývána jako Serial.

Trendy