Výběr mikrokontrolérové desky

V době vzrůstající obliby práce s moderní elektronikou jako koníčku pro nadšence se objevují stále nové varianty počítačů snadno použitelných jako řídicí jednotka kutilského projektu. V přehršli různých modelů může být složité se vyznat, proto si v následujícím článku přibližně shrneme jejich typy a hlavní vlastnosti.

Pro začátek je vhodné definovat některé důležité pojmy:

  1. Vývojová deska je komplexní zařízení pro vývoj počítačově řízených řešení. Kromě řídicí jednotky obsahuje i další komponenty nutné pro uživatelsky co nejsnazší provoz – k těmto patří například regulátory napětí, USB-TTL převodníky pro výstup dat a nahrávání programu a další. Také zajišťuje praktické vyvedení vstupů a výstupů řídicí jednotky na piny, ke kterým pak můžeme snadno připojovat další periferie (kupříkladu teplotní čidlo nebo tlačítko je typickým příkladem vstupního zařízení, reproduktor, displej nebo svítivá dioda [LED – Light Emiting Diode] jsou pak zástupci výstupních zařízení). V obvyklém případě desku připojíme k osobnímu počítači a nahrajeme do její paměti námi napsaný program. Po nahrání programu je deska schopná pracovat nezávisle na druhém počítači a obsluhovat připojené periferie.

Ilustrační obrázek vývojové desky – Arduino UNO Rev3

  1. Mikrokontroler je srdcem každé vývojové desky – hlavní řídicí jednotkou. Nazýváme jej také jednočipový počítač, protože skutečně tvoří v zásadě kompletní počítač schopný samostatné funkce na jediném čipu – vývojová deska nám k němu pouze usnadňuje přístup a zajišťuje jeho programování. Každý mikrokontroler obsahuje jedno či více výpočetních jader, které dohromady tvoří procesor (CPU – Central Processing Unit) a kde se provádějí veškeré výpočty. Další součástí je operační paměť RAM (Random Access Memory), nezbytná pro ukládání mezivýsledků a tím i funkci každého programu. V neposlední řadě patří k nezbytným součástem každého jednočipového počítače programovatelná paměť ROM (Read Only Memory; dnes obvykle technologie Flash), která má obvykle 2 části: v první je zapsán tzv. firmware – neuživatelský program, který zajišťuje chod procesoru a načtení uživatelského programu do části druhé.

Ilustrační obrázek mikrokontroleru – Raspberry Pi RP2040

  1. Programovací jazyk definuje způsob zápisu programu a způsob jeho provozu na samotném procesoru – program je totiž vždy nutno přeložit do přirozeného jazyka procesoru. Známe jazyky nízkoúrovňové (C, C++, částečně i jazyk Wiring z prostředí Arduino) a vysokoúrovňové (v prostředí mikrokontrolerů převážně MicroPython, dále JavaScript, různé grafické jazyky a jiné). Programy napsané v nízkoúrovňových jazycích vyžadují menší režii procesoru a jsou tedy obecně rychlejší, mohou však být komplikovanější a jejich psaní méně pohodlné. Vysokoúrovňové jazyky obvykle tvoří programy relativně dobře čitelné, jejichž tvorba je lépe přístupná, ale nároky na výpočetní výkon v porovnání vysoké – v závislosti na aplikaci tak nemusí poskytovat dostatečně rychlý běh programu.

Správná kombinace těchto tří prvků podle námi požadovaných vlastností nám dá ideální počítač pro náš projekt.

Nyní si uvedeme výčet běžných typů mikrokontrolerů používaných ve vývojových deskách:

Architektura AVR – ATmega, ATtiny

K této architektuře patří čipy, na kterých byly založeny originální desky Arduino a dodnes jsou v mnoha oblastech nenahraditelné. Najdeme zde mnoho mikrokontrolerů, od nejjednodušších modelů řady ATtiny s osmi vývody a dnes až neuvěřitelně skromnými parametry, po relativně výkonné a schopné čipy řady ATmega s širokou nabídkou rozhraní a vývodů.

Pro srovnání:

  • jeden z nejjednodušších zástupců řady ATtiny, ATtiny 13A, má 64 bytů RAM a 1 kB Flash paměti, jedno SPI rozhraní a 5 GPIO pinů. Takový kontrolér je vhodný skutečně jen pro nejnenáročnější z aplikací, například jednoduché zobrazování (či jiná indikace) informací, časování různých procesů apod.
  • Známý čip ATmega 328P, používaný ve velmi rozšířené desce Arduino Uno (Rev3), již obsahuje 2 kB RAM a 32 kB Flash, především však mnohem vetší možnosti připojení periferií – rozhraní SPI, I2C, sériový port a 20 vstupně/výstupních pinů (z toho pět A/D). Zvládá tak již řízení mnohem složitějších systémů s větším počtem připojených zařízení, nehledě na vyšší výkon.

Řada ATmega je hlavním stavebním kamenem systémů Arduino, pro celou architekturu AVR však platí, že se jedná o spolehlivé čipy význačné nízkou cenou, velmi nízkou energetickou náročností a nižší složitostí. Obecně jsou vhodné pro projekty, ve kterých nepožadujeme vysoký výpočetní výkon, ale oceníme jednoduchost a dobrý přehled o tom, jak systém funguje.

Většinu AVR mikrokontrolérů můžeme programovat jako originální desky Arduino ve vývojovém prostředí Arduino IDE a jazyce Wiring. Máme tak k dispozici mnoho knihoven, které nám zásadním způsobem usnadní ovládání většiny periferií.

Raspberry Pi RP2040

RP2040 je v lednu 2021 uvedený mikrokontrolér vyráběný společností Raspberry Pi. Původně představený jako mozek vývojové desky Rapsberry Pi Pico, nyní je součástí řady zařízení od jiných výrobců.

Raspberry Pi Pico WH

V případě desky Raspberry Pi Pico získáme jednotku se základními funkcemi čipu (a 2 MB uživatelské paměti), která nabízí snadné programování v jazyce MicroPython a oficiální podporu od Raspberry Pi. Desky ostatních výrobců pak mohou přidávat další funkce.

Stručné specifikace^1^ ^2^:

VlastnostRP2040
CPU2x Cortex-M0+ @ max. 133 MHz
SRAM264 kB
GPIO pinů26, z toho 16 PWM a 3 A/D převodníky
Rozhraní2xUART, 2xI2C, 2xSPI, 8xPIO (programovatelné I/O piny)
USBverze 1.1, programování kopírováním souborů do flash paměti
Typická spotřeba~25 mA při aktivitě; 0,39 mA v režimu spánku; 0,18 mA v režimu „dormant“

Obecně platí, že mikrokontrolér RP2040 byl vyvinut s ohledem na nízkou cenu, snadné použití i začátečníky, energetickou efektivitu a masovou dostupnost. Můžeme jej tak využít všude tam, kde je potřeba řídit větší množství periferií bez požadavku na bezdrátovou konektivitu. RP2040 nabízí vyšší výkon, než čipy AVR při zachování nízké provozní spotřeby.

Vyžaduje-li náš projekt vyšší výkon, bezdrátovou konektivitu, případně velmi nízkou spotřebu v režimu spánku, mohou být lepší volbou zařízení s čipy ESP32:

Rodina ESP32

Je skupina modernějších mikrokontrolerů vyvíjených společností Espressif, jejichž hlavní zaměřením jsou bezdrátové technologie.

Mají původ v čipu ESP8266, který byl vyvinut pro potřeby WiFi adaptérů a byly (a dodnes jsou) na něm stavěny přídavné bezdrátové karty pro desky bez integrované WiFi.

ESP32 pak označuje celou modelovou řadu více či méně odlišných čipů, které mají společnou integrovanou WiFi a nízkou cenu, přičemž většina integruje i technologii Bluetooth.

Firma Espressif vyrábí pouze samotné mikrokontrolery ESP. Výrobou vývojových desek, které můžeme použít v našem projektu, se zaobírá nespočet společností – můžeme tak zakoupit desky zcela miniaturizované, obsahující kromě samotného kontroléru jen USB port a několik pinů, i desky s mnoha pomocnými obvody a rozhraními.

Zde je srovnání výběru parametrů nejčastěji používaných čipů rodiny ESP^3^:

VlastnostESP8266ESP32ESP32-S2ESP32-S3ESP32-C3ESP32-C6
vydání8/20149/20169/201912/202011/20204/2021
CPUL106 1×160 MHzLX6 1-2×240 MHzLX7 1×240 MHzLX7 2×240 MHzRISC-V@160 MHzRISC-V@160 MHz
SRAM160 KB520 KB320 KB512 KB400 KB400 KB
ROM0 KB448 KB128 KB384 KB384 KB384 KB
WiFiWiFi 4(72.2Mb/s)WiFi 4WiFi 4WiFi 4WiFi 4WiFi 4
Bluetooth vnení4.2 nativněnení5.05.05.0
GPIO pinů173443442222

Espressif vývojová deska ESP32-C3-DevKitC-02

Čipy ESP32 jsou v porovnání s původními deskami Arduino o mnoho výkonnější a dovolují řešení úkolů, na které výkon AVR mikrokontrolérů jednoduše nestačí – například podporují kamerové rozhraní CSI (je ale vyvedeno jen na některých deskách) a zvládají zpracování obrazu o relativně vysokém rozlišení (naproti tomu k Arduinu lze připojit jen senzory s velmi nízkým rozlišením [obvykle 0,3 Mpx] při nízké rychlosti snímkování).

Různé desky (můžeme si vybrat dle našich požadavků) založené na ESP32 tak využijeme všude tam, kde potřebujeme WiFi či Bluetooth nebo vyšší výpočetní výkon, případně obsluhu mnoha periferií. Oproti Arduinu se musíme smířit s relativně vyšší energetickou náročností, která je daní za výkon a bezdrátovou konektivitu (platí zejména při komunikaci, čipy lze uspat a spotřebu tak výrazně snížit).

ESP32 lze programovat jak pomocí jazyka Wiring (potažmo C/C++ z nichž je odvozen) z prosředí Arduino, ale díky vyššímu výkonu i interpretovaným jazykem MicroPython a dalšími.


Výběr konkrétní vývojové desky nakonec vždy záleží na předpokládané aplikaci: musíme pečlivě zvážit, jaké jsou naše požadavky a při nákupu je zohlednit.

Pro nenáročné aplikace, jako například měření různých veličin a jejich zobrazování na jednoduchý displej, řízení motorů nebo jiných akčních členů na základě příkazů uživatele apod., můžeme s klidem zvolit vhodný čip z rodiny Arduino, případně Raspberry Pi RP2040, potřebujeme-li vyšší výkon.

Naopak pro aplikace s požadavkem na bezdrátovou komunikaci či vysoký výkon – potřebujeme-li například využít technologií strojového učení, zpracovávat komplexní (např. obrazová) data nebo rychle provádět náročnější výpočty – bude lepší volbou deska s některou z variant ESP32 (opět dle našich konkrétních požadavků).

Po výběru konkrétní desky můžeme přistoupit k jejímu programování – základy práce s některými z nich si popíšeme v dalším článku.


Podobné příspěvky

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *