Arduino GIGA – kanón na vrabce?

Arduino nedávno vydalo novou desku s názvem „Arduino GIGA R1 WiFi“ s mottem „Step up your game“. Určení desky je pro robotiku, IoT, muziku, zpracování signálu, obrazu etc. Vzhledem k možnostem desky se obávám, že levný čínský klon asi jen tak neuvidíme, ale třeba se pletu.

Momentálně je deska „vyprodaná“, ale je vyprodaná pouze z oficiálního obchodu Arduino, v česku ji několik obchodů má stále na skladě. Pokud si ji chcete koupit, tak si připravte alespoň 2 000 Kč – což není zrovna málo a pokud po ní vyloženě netoužíte (například já jí prostě mít musel 😁), tak jí asi můžete oželet – její plný potenciál pravděpodobně nevyužijete.
Za zajímavost považuji, že Arduino GIGA má stále rozměry Arduino MEGA, takže pokud vlastníte nějaké shieldy pro MEGA, tak by vám měly fungovat, ovšem pozor na napěťové úrovně!

Arduino s dvoujádrem, opravdu?

Největším lákadlem je pravděpodobně osazení desky procesorem STM32H747XI s dvojicí jader, což zní parádně, ale jak si ukážeme, tak vývojaři udělali pár kompromisů, které radost z dvoujádrovosti trochu kazí…
Procesor má jádro M7 s frekvencí 480 MHz, které se chová jako hlavní procesor a druhé jádro M4 s frekvencí 240 MHz chovající se jako koprocesor (i dokumentace je takto označuje). Pokud neprovedete žádné úpravy, tak se Arduino GIGA bude chovat, jako kdyby mělo jádro pouze jedno (M7). Díky tomu dostanete 2 MB paměti flash pro program. Pro srovnání: Arduino UNO Rev3 má pouze 32 kB a kolik toho zvládne…
Budete-li požadovat dvoujádrovost, budete muset udělat pár úprav a přijmout pár omezení. Napřed budete muset v Arduino IDE změnit rozložení paměti flash, na výběr máte:

  • 2 MB pro M7, nic pro M4 (defaultní hodnota)
  • 1,5 MB pro M7 a 0,5 MB pro M4
  • 1 MB pro M7 a 1 MB pro M4

Pokud přiřadíte flash pamět pro M4 procesor, tak můžete nahrávat do každěho jádra program zvlášť, to by mělo být volitelné v menu podobně jako při výběru typu desky – zde budete navíc vybírat i do kterého jádra chcete sketch nahrát. Pokud si myslíte, že máte vyhráno, tak vás musím zklamat, koprocesor M4 se nabootuje pouze kódem z M7 a rovněž sériová linka z PC je zapojena pouze do M7. Tyto problémy lze vyřešit/obejít poměrně jednoduše za pomoci vzorových kódů z dokumentace.
Komunikace mezi jádry je vyřešena pomocí RPC, i zde nabízí dokumentace spoustu příkladů. Na výběr máte architekturu server/klient, kde některé funkce v jednom procesoru zaregistrujete a z druhého je voláte (volání jsou blokující) nebo můžete posílat mezi jádry „zprávičky“ podobně jako jste zvyklí ze sériové komunikace.

Co to umí? Všechno…

Následující tabulka ukazuje seznam periferií, které deska obsahuje:

PeriferiePoznámka
USB-C®pro programování a pro HID (připojení např. klávesnice), kabel není součástí balení
USB-A Hostdruhé USB, dokumentace nabízí ukázku jak si z desky udělat „USB Flashku“
GPIO76x
Analog input pins12x
PWM pins12x
DAC2x, deska obsahuje 2 DAC převodníky s rozlišením až 12 bitů (tzn. generování audio signálu by neměl být problém)
UART4x
I2C3x
SPI2x
RTC obvodintegrován na desce, deska má speciální pin pro napájení RTC obvodu (např. z baterie) a dokumentace uvádí kód jak pro manuální nastavení, tak pro NTP protokol (k připojení k serveru je využita zabudovaná WiFi)
RAMk dispozici je další 1 MB RAM paměti, inicializace probíhá pomocí knihovny, další práce s inicializovanou pamětí je stejná jako práce s polem

Jak je vidět, deska toho má opravdu hodně (některé periferie jsem ani neuváděl). Úroveň napětí je uváděna 3,3 V a pro výstupní proud je uváděna hodnota 8 mA/pin, takže určitě bude třeba být opatrný při připojování čehokoliv externího (za ty peníze by vás to asi mrzelo). Napájecí napětí se pohybuje v rozmezí 6-24 V, což je zlepšení oproti 7-12 V, které jsou u jiných desek doporučené.

Závěr

Osobně jsem z této nové desky nadšen – jak poznamenal kolega: „Arduino se asi snaží vyplnit mezeru mezi plnohodnotným PC a jednočipovými počítači“. Arduino GIGA mám objednané – hned jak mi přijde, tak se pokusím udělat několik testů. Nezbývá než doufat, že nebude deska trpět „poporodními“ bolestmi v podobě nějakých „design flaws“ 🙂.

Arduino GIGA R1 WiFi Pinout