Terminál pro Arduino

Z ModelWiki
Skočit na navigaci Skočit na vyhledávání

Desky založené na Arduinu se programují pomocí USB kabelu, a také je možné přes USB kabel komunikovat s Arduinem: v Arduino IDE je k dispozici Sériová konzole. Ale konzole, který je v Arduino IDE je nedokonalá, neumí ANSI sekvence ani pořádně návrat řádku. Pro lepší práci je možné použít jiné programy.

Windows, Linux, MacOS - Arduino IDE

Arduino IDE je "nejjednodušší" na použití, protože skoro každý, kdo používá Arduino jej má - minimálně kvůli samotnému nahrání programu/sketche do Arduina. Jeho terminálová podpora je ale velmi omezená:

díky tomu vypadají i celkem použitelné terminálové aplikace špatně, a některé se nedají použít vůbec.

Na druhou stranu má Arduino IDE oddělený řádek pro vstup, a tak se nepletou (např.) probíhající výpisy do toho, co se snaží uživatel napsat a posléze odeslat do aplikace.

Sériový terminál se jmenuje "Sériový Monitor" a rychlost připojení se nastavuje až v něm.

Spuštění terminálu ve starém IDE
Spuštění terminálu ve vývojové verzi IDE

Windows - PuTTy

Kdysi dávno obsahovaly Windows modemový a sériový program Hyperterminál, jenže ten už ve Windows 7 a Windows 10 nenajdeme. Asi nejlepší náhrada za něj je víceúčelový terminál PuTTy. Jedná se o volný program, bez nutnosti platit licenční poplatky. Stáhnout s dá například ze Slunečnice. Archív obsahuje jediný spustitelný soubor, nejedná se o instalátor, ale přímo terminálový program. Doporučuji umístit jej někam do C:\Program Files a na plochu či do menu pořídit zástupce.

Nalezení USB COM portu

Windows si USB komunikační port vyloží jako port COM. Ale jeho číslo se bude lišit podle USB portu, do kterého kabel z Arduina zapíchnete. K nalezení správného čísla USB portu můžeme použít Správce zařízení.

Nalezení COM portu ve Správci zařízení

Konfigurace PuTTy

Po spuštění PuTTy se zobrazí konfigurační okno. Je univerzální pro spojení s jinými počítači (protokoly Rlogin, SSH, telnet) a také (což je zajímavé pro nás) pro spojení sériovým kabelem (ať již starým sériovým portem nebo USB).

Konfigurace PuTTy
  • Nastavíme protokol "Serial" - pozor, obsah konfiguračního okna se změní; nastavovat jako první.
  • Do pole "Serial" vepíšeme název sériového portu - COMx (x je číslo 1-99)
  • V poli "Speed" musíme zapsat komunikační rychlost, ta může být u různých Arduino sketchů různá. Nejvyšší možná je 115200

Tím je PuTTy v zásadě nastavené. Ale je lepší si hodnoty pojmenovat a uložit jako "spojení"

  • Do editačního pole "Uložená spojení" si konfiguraci pojmenujeme - třeba Arduino, nebo podle sketche, se kterým se bude komunikovat (např. "ReflexShield")
  • Stisknout tlačítko "Uložit" - v seznamu uložených spojení se objeví nová položka

Nyní bude spojení vidět v seznamu při startu PuTTy, a jde vybrat a otevřít dvojklikem do seznamu.

Linux - minicom

Na OS Linux je k dispozici komunikační program minicom. Na Debianu či Ubuntu se nainstaluje pomocí

apt install minicom

Arduino po připojení USB vytváří znaková zařízení /dev/ttyUSBx (x je číslo 0 - 9). Terminálový program se spustí pomocí

minicom -b 115200 -D /dev/ttyUSB0
  • důležité: terminál opustíte pomoci dvojklávesové zkratky CTRL-A Q
  • je možné, že váš účet nemá právo zápisu. Musí být ve skupině dialout. Pro přidání použijte sudo addgroup user dialout, poté se musíte znovu zalogovat, aby měl shell správné id skupin.
  • při odpojení Arduina a znovu připojení se může vytvořit nové zařízení /dev/ttyUSBx - děje se tak tehdy, když je při připojení znakové zařízení stále ještě otevřené - typicky vyškubnete Arduino s ještě spuštěným terminálem

Nastavení parametrů sériového portu

Různé Arduino aplikace mohou používat různé komunikační rychlosti. Nejpoužívanější rychlosti jsou:

  • 9600 - kompatibilni s megapomalými zařízeníni jako XpressNet
  • 19200
  • 38400 (rychlost starého telefonního modemu)
  • 57600 (novější telefonní modem)
  • 115200 - nejvyšší rychlost co Arduino zvládne

Dále se sice používá různý počet datových a stop bitů, ale pokud je program v Arduinu "normální", používá vždy 8 datových a 1 stop bit, nemusíme to Minicomu zvlášť vysvětlovat. Postačí pomocí parametru -b zvolit rychlost:

minicom -b 115200 -D /dev/ttyUSB0

Nastavení lze provést i pomocí CTRL-A P (= comm parameters):

OPTIONS: I18n         +---------[Comm Parameters]----------+
Compiled on May  3 201|                                    |
Port /dev/ttyUSB0, 23:|     Current: 115200 8N1            |
                      | Speed            Parity      Data  |
Press CTRL-A Z for hel| A: <next>        L: None     S: 5  |
                      | B: <prev>        M: Even     T: 6  |
AS88 connection lost  | C:   9600        N: Odd      U: 7  |
S88 connection lost   | D:  38400        O: Mark     V: 8  |
S88 connection lost   | E: 115200        P: Space          |
S88 connection lost   |                                    |
S88 connection lost   | Stopbits                           |
S88 connection lost   | W: 1             Q: 8-N-1          |
88 connection lost    | X: 2             R: 7-E-1          |
                      |                                    |
                      |                                    |
                      | Choice, or <Enter> to exit?        |
                      +------------------------------------+

Jendotlivými klávesami "A", "B", ... "R" se mění jednotlivé parametry. Pomocí CTRL-A O se dostaneme do menu, kde je možné nastavení uložit jako výchozí ("Save setup as dfl"):

                                                            
AS88 connect+-----[configuration]------+                    
S88 connecti| Filenames and paths      |                    
S88 connecti| File transfer protocols  |                    
S88 connecti| Serial port setup        |                    
S88 connecti| Modem and dialing        |                    
S88 connecti| Screen and keyboard      |                    
88 connectio| Save setup as dfl        |                    
88 connectio| Save setup as..          |                    
S88 connecti| Exit                     |                    
S88 connecti+--------------------------+                    
                                                            

Konflikty mezi terminálovým programem a Arduino IDE

Budete-li používat zároveň Arduino IDE - například pro nahrávání SW do Arduina a třeba k úpravám SW, a zároveň terminálový program jiný než ten co je v Arduino IDE, potlučou se. Před nahráním sketche do Arduina je nutné terminálové programy zavřít, jinak Arduino IDE nebude schopné sketch přenést. Arduino IDE je schopné na dobu co přenáší sketch interní terminál vypnout, na externí programy je ale krátké.