Close

Řešení potíží: Proč nemohu nahrát své programy na Arduino?

Arduino FTDIchip

Proces nahrávání programu do Arduina se skládá z mnoha částí a pokud některá z nich není v pořádku, nahrávání může selhat. Mezi tyto části patří: ovladače desky, deska a sériový port pro výběry v softwaru Arduino IDE, přístup do sériového portu, fyzické připojení k desce, firmware na 8U2 (převodník mezi USB a čipem – na Uno a Mega 2560 a dalších), bootloader (zavaděč) programů do hlavního mikroprocesoru desky, pojistka nastavení mikroregulátoru a další. Zde jsou rady pro odstranění problémů každé ze zmíněných částí.

 

Arduino Software

• Ujistěte se, že máte správně zvolenou desku v Tools > Board menu. Příklad: Máte-li Arduino Uno, budete si muset zvolit Arduino UNO. Také například existují dvě verze s Arduino Duemilanove. Ta novější má procesor ATmega328 a starší ATmega168. Každá z nich má svoji vlastní položku v menu Boards. Pro zjištění verze čipu se podívejte na desku – každý čip má na sobě jeho typ napsaný.

• Poté zkontrolujte, že máte zvolen správný port v Tools > Serial Port menu (když se váš port neobjeví, zkuste restartovat IDE). V Macu by mohl sériový port být označen jako: /dev/tty.usbmodem621 (pro Uno nebo Mega 2560) nebo /dev/tty.usbserial-A02f8e (pro starší desky na bázi FTDI). V Linuxu by to mohl být /dev/ttyACM0 nebo podobný (pro Uno nebo Mega 2560) či /dev/ttyUSB0 nebo podobný (pro starší desky). Ve Windows to bude COM port, jehož přesnou adresu můžete nalézt v Ovládací panely > Správce zařízení. Více o sériových portech naleznete ve článku Seznamte se s Arduino vývojovým prostředím. Jestliže se vám zdá, že se Arduino v seznamu zařízení nezobrazuje, zkuste zkontrolovat správnou instalaci driverů.

 

Ovladače

Ovladače umožňují, aby software vašeho počítače (tj. Arduino software) mohl komunikovat s hardwarem připojeným k vašemu počítači (Arduino). V případě Arduina ovladače vytvářejí virtuální sériový port (COM port). Adruino Uno a Mega 2560 používají standardní ovladače operačního systému (USB CDC) pro komunikaci s ATmega8U2 na desce. Ten slouží jako převodník mezi USB a hlavním čipem. Další Arduina užívají FTDI ovladače pro komunikaci s FTDI čipem na desce (nebo v USB-serial převodníku). Nejjednodušší cesta jak zkontrolovat, zda je ovladač pro vaši desku instalován správně, je otevřít Tools > Serial Port menu v Arduino IDE a podívat se, jestli se v něm vaše Arduino zobrazuje.

  • Ve Windows 7 (zejména v 64bitové verzi) budete potřebovat v Ovládací panely > Správce zařízení aktualizovat ovladače pro Uno nebo Mega 2560. Deska se většinou zobrazí jen pokud je připojena k PC. Pokud jsou ovladače špatně nainstalované, pravděpodobně ji naleznete v Neznámá zařízení. Poté pravým tlačítkem klikněte na vaši desku a vyberte možnost Aktualizovat software ovladače. Poté vyberte možnost Vyhledat ovladač v počítači a pomocí Procházet naveďte program do umístění s nainstalovaným Arduino IDE, kde naleznete složku Drivers. Po stisknutí na Další chvíli počkejte. Software by měl sám najít vhodný ovladač a nainstalovat ho.
  • Ve Windows 8.1 je situace ještě o něco komplikovanější. Před spuštěním instalace ovladačů pro Arduino je totiž zapotřebí udělat následující kroky:
    1. Na ploše stiskněte Win + i
    2. Vpravo dole vyberte Změnit nastavení počítače
    3. Klikněte na Aktualizace a obnovení
    4. Vyberte Obnovení
    5. V části Spuštění s rozšířeným nastavením klikněte na Restartovat
    6. Po restartu vyberte Odstranit potíže
    7. Dále pokračujte na Nastavení spouštění
    8. Následuje výběr Restartovat
    9. Po chvíli naběhne plocha s nabídkou, na které zvolíte možnost 7, tj. zmáčknete klávesu 7 (Disable driver signature enforcement – Zakázat vynucení podpisu ovladače)
    10. Počítač naběhne a nyní můžete spustit instalaci SW pro Arduino, při této instalaci se automaticky nainstaluje driwer pro arduino.V průběhu instalace musíte souhlasit, že ovladač není digitálně podepsaný. Tato vlastnost možné instalace nepodepsaných ovladačů se automaticky zruší po restartu Windows.

    Za návod pro Windows 8.1 děkujeme uživateli Lukáš Beran.

  • V Linuxu se desky jako Uno a Mega 2560 připojují k sériové lince s názvem /dev/ttyACM0 a podobným. Tento tvar není podporován standardní verzí RXTX knihovny, kterou Arduino software používá pro sériovou komunikaci. Proto Arduino IDE obsahuje upravenou verzi této knihovny, která umí s tvarem/dev/ttyACM* pracovat. Existuje package pro Ubuntu, který tento typ adres také umožňuje. Problém s adresami sériových portů se dá v některých distribucích obejít pomoví vytvoření symbolického odkazu z /dev/ttyACM* na /dev/ttyUSB*, což je tvar se kterým už IDE zvládne pracovat.

 

 

Přístup do sériového portu

•Může se stát, že software ve Windows pomalu startuje, při spuštění „padá“, nebo se menu Tools pomalu otevírá. To může být způsobeno tím, že jsou k počítači připojena i jiná zařízení přes sériovou linku (například bluetooth modul – může být i interní). Arduino IDE při otevření menu Tools kontroluje všechna sériová zařízení, což může způsobovat zamrzání. Řešením je zakázat ostatní zařízení. Poznámka redakce: Ve Windows někdy stačí vypnout bluetooth, nebo ho odpojit z USB a restartovat počítač. Je to mírnější řešení, než zakázat zařízení. Horší je, že při dalším zapnutí či připojení bluetooth se problém znovu opakuje.

• Zkontrolujte, že v PC neběží programy skenující sériové porty, jako je například software pro USB Wifi Dongle (například Spirit nebo Verizonu, aplikace pro synchronizaci PDA, Bluetooth-USB ovladač (např. BlueSoleil), virtuální Daemon Tools atd.

• Ujistěte se, že nemáte firewall, který by mohl blokovat přístup k sériovému portu (kupříkladu ZoneAlarm).

• Někdy také bude nutné vypnout programy, které dostávají data z Arduina po sériové lince (Processing, Pure Data, vvvv, …).

• V Linuxu můžete zkusit rozběhnout Arduino IDE jako root.  Když nic jiného, tak aspoň zjistíte, jestli je problém přístupu k sériové lince zapříčiněn nedostatečnými právy uživatele.

 

Fyzické připojení

• Nejprve se ujistěte, že je vaše deska zapnutá (zelená LED svítí) a je připojena k počítači.

• Arduino Uno a Mega 2560 mohou mít problémy připojit se k Macu přes USB hub (USB rozbočovač). Pokud se v Tools > Serial Port menu nic nezobrazí, zkuste připojit desku přímo k USB počítače a restartujte Arduino IDE.

• Pokud máte něco připojeno na piny 0 a 1, odpojte to. Na většině desek je totiž na piny 0 a 1 vyveden výstup ze sériové linky a připojená zařízení ji mohou blokovat. Po nahrání kódu můžete opět oba piny zapojit.

• Zkuste nahrát program do desky, ke které není nic jiného připojeno (samozřejmě kromě USB kabelu).

• Ujistěte se, že se deska nedotýká ničeho kovového či vodivého.

• Vyzkoušejte odlišný USB kabel – někdy je problém v nich.

 

Auto-Reset

• Pokud vlastníte desku, která nepodporuje auto-reset, resetujte desku pár sekund před nahráváním.
• V závislosti na rychlosti komunikace a čipu mohou být potřeba různé intervaly mezi stiskem reset tlačítka a nahrání programu.

 

Bootloader

Ujistěte se, že je do vaší desky nahrán bootloader. Poznáte to tak, že led připojená na pin 13 po restartu desky blikne. Pokud se nic neděje, může to znamenat, že do desky není nahrán bootloader.

 

Další méně časté problémy s Arduinem a jejich řešení naleznete na oficiálních stránkách[EN].

Tento text je pod licencí Creative Commons Attribution-ShareAlike 3.0 License a je přeložen ze stránky https://arduino.cc/en/Guide/Troubleshooting

Zbyšek Voda

Zbyšek Voda

Už nějaký čas se zajímám o věci kolem Internetu věcí a otevřeného hardware a software. Tak jsem se také v roce 2010 dostal k Arduinu, pro které dodnes programuji a taky píšu články o práci s ním. Baví mě vymýšlet, jak staré věci používat novým způsobem.
Zbyšek Voda

11 Comments on “Řešení potíží: Proč nemohu nahrát své programy na Arduino?

JH
2.8.2017 at 11:13

Dobrý den. Koupil jsem si Arduino Uno s nahraným GRBL. Nainstaloval jsem GRBL controler. Několikrát jsem si přečetl tuto diskuzi, ale přenos dat mezi oběma zařízeními se nezdařil. GRBL hlásí: >(Ctrl-X)
No data from COM port after connect. Expecting Grbl version sting. Jsem absolutní začátečník a prosím o radu.
Počítač: WIN 10, 64bit

JH
1.8.2017 at 18:19

Vážený pane. Obracím se na Vás o radu. Nejméně desetkrát jsem přečetl tuto diskuzi, ale nepomohlo mě to. Koupil jsem Arduino Uno s nainstalovaným GRBL. Do počítače jsem nainstaloval GRBL controller. Ovšem přenos dat mezi Arduno-GRBL se mi nepodařilo uskutečnit. Na controleru mi to vypíše COM6. Když se podívám do počítače na ovladače, je tam napsáno Arduino Uno(COM6). Hlášení v GRBL vypíše:>No data from COM port aftter connect. Expecting Grbl version ststring. A jsem v koncích. Asi se Vám bude zdát můj dotaz hloupý, ale jsem naprostý začátečník.
PS: zkoušel jsem to také na jiném počítači s WIN XP 32bit ale bezúspěšně. Zdraví JH

pavel
11.11.2016 at 21:02

Zdravim, nelze mi nahrat program do arduina a i kdyz zmenim programator dela to to same

avrdude: no programmer has been specified on the command line or the config file
Specify a programmer using the -c option and try again

co s tim, diky.

Zbyšek Voda
Zbyšek Voda
13.11.2016 at 19:44

Dobrý den, podle https://forum.arduino.cc/index.php?topic=400338.0 by mělo jít o problém v Arduino IDE. Jakou verzi máte? Asi bych zkusil nějakou jinou (třeba i starší). Já mám 1.6.6.

JH
4.8.2017 at 8:56

Dobrý den. Vážený příteli, určitě jsem se špatně vyjádřil. Arduino se připojí bez problému, ale nepřipojí se GRBL k PC. Když jsem to poprvé nainstaloval(GBRL), tak se implicitně nastavil v GRBL port COM6(Arduino/Grbl-to asi není úplně přesně, to si již nepamatuji) a totéž se objevilo v Systém-Správce zařízení-Porty. Ale k připojení nedošlo a byla vypsána výše zmíněná hláška. Ve své něvědomosti jsem to tak rozvrtal, že ani po reinstalaci, se toto přednastavení neobjeví, ani v portech. Jsem v koncích. Zkoušel jsem Mach3, zkoušel jsem Marlin a nevím co ještě, ale vždy jsem se do toho tak zamotal, že jsem nevěděl kudy kam. nakonec se mi zdálo Arduino nejpřístupnější, ale jak je vidět, motám se v tom dál. Jsem přesvědčen, že se jedná o nějaký elementární problém, ale kde vězí, na to nejsem schopen přijít. J. Hudec

Pavel Novotný
14.8.2016 at 18:56

Dobrý den,
teprve se s arduinem učím. Chtěl jsem se zeptat jestli je možné že si paměť arduina může pamatovat něco ze strarých programů co jsem nahrával předtím. Výstupy na kterých mám zapojené led, jako by si pamatovali nastavení rychlosti spínání. Lze nějak paměť smazat pokud tomu tak je ?

Zbyšek Voda
Zbyšek Voda
15.8.2016 at 10:12

Dobrý den, předchozí programy neovlivňují nové programy.
Respektive to možné je (například pomocí paměti EEPROM), ale to byste musel úmyslně udělat. Je velice nepravděpodobné, že by se vám to povedlo omylem.

Zkuste sem poslat kód a trochu více popište, co program dělá, a můžeme to zkusit nějak vyřešit. Nebo možná radši napište problém na naše fórum arduino.cz/forum. Bude to tam přehlednější, než tady 🙂

Maxwel
11.3.2016 at 20:46

Dobrý den,
chtěl bych se zeptat, jest-li je možné nahrát program, který je v arduinu zpět do pc, že bych získal jeho strojový kod.
Předem děkuji za odpověď

Zbyšek Voda
Zbyšek Voda
13.3.2016 at 12:53

Dobrý den,
pokud Vám jde o to získat strojový kód nebo assembler programu, nemusíte ani použít Arduino viz http://rcarduino.blogspot.cz/2012/09/how-to-view-arduino-assembly.html.
Pokud opravdu chcete získat program, který třeba nemáte v PC, ale je jen v Arduinu, vizte například http://electronics.stackexchange.com/questions/33433/how-to-read-the-current-program-from-an-arduino.

Ondřej Nováček
21.12.2015 at 7:44

Dobrý den.
Chci se zeptat, jak na Linuxu, konkrétně na Ubuntu, udělám ten symbolický odkaz z /dev/ttyACM* na /dev/ttyUSB*.
Děkuji.

Zbyšek Voda
Zbyšek Voda
21.12.2015 at 9:04

Dobry den, s Linuxem bohuzel moc neumim,ake zkuste napsat na nase forum. Treba nekdo bude vedet 🙂

Napsat komentář