Close

Arduino 2v1

HoodLoader2
HoodLoader2

Druhá verze bootloaderu HoodLoader

Možná si říkáte, co chci nadpisem říct. Je to ale jednoduché. Některé desky totiž obsahují dva čipy ATmega, které spolu vzájemně komunikují a tvoří tak funkční celek. Menší čip slouží jako překladač mezi USB a hlavním čipem a samotný program běží v hlavním čipu (ATmega328/2560…). Není ale škoda, že poměrně výkonný čip dělá jen tuto „podřadnou“ práci překladače? Stejnou otázku si položil i NicoHood a vytvořil alternativní bootloader pro čip ATmega16u2, který  sice zachová jeho funkci překladače mezi USB a hlavním čipem, ale navíc umožňuje nahrávání vlastních programů, včetně možnosti využití sedmi volných I/O pinů čipu. Programy pro 16u2 je možné psát i v prostředí Arduino IDE. Tato technika však nelze použít na všech deskách.

Novější desky, jako je například Arduino Leonardo už totiž mají pouze jeden čip. Tento čip je ze stejné řady, jako ATmega16u2 (konkrétně se jedná o ATmega32u4). Procesory této řady již podporují přímé připojení k USB a nepotřebují tak přídavný hardware. Bootloader HoodLoader2 proto můžeme použít pouze na starších deskách, jako Arduino UNO, nebo Arduino Mega, a to pouze ve verzi R3 (starší mají čip 8u2, který nelze použít). Nahráním bootloaderu do čipu dostaneme možnost emulování vstupních zařízení počítače (HID) a ovládání volných pinů. Arduino se tak může vydávat za klávesnici, myš, ale i multimediální ovladač. Čip však přeprogramováním neztratí svůj původní účel – jako prostředník mezi hlavním procesorem a USB bude fungovat i nadále. Získáte tedy desku s dvěma procesory kompatibilními s Arduinem. Musíte ale mít na paměti, že ATmega16u2 má pouze 500bytů RAM paměti a 16 kB paměti flash (z čehož 4 Kb jsou použity HoodLoaderem). Program tak musí být poměrně úsporný na paměť.

Je spoustu různých cest, jak spolu mohou čipy na desce spolupracovat. Jestli všechny výpočty budete provádět v hlavním čipu a menšímu budete posílat pouze příkazy ke stisku kláves, nebo bude celý program běžet na malém čipu, to je pouze na vás. Zajímavé je, že 16u2 může restartovat větší čip, což někdy může přijít vhod. Výhodou také je, že 16u2 má vlastní ICSP hlavici. Současně tak může Arduino pracovat se dvěma SPI zařízeními (jedno na větším a druhé na menším čipu).

Vypálení bootloaderu do ATmegu16u2 je možné provést pomocí externího SPI programátoru, ale i samotné Arduino desky, kterou programujeme. Stačí propojit vhodné piny ICSP hlavice obou čipů. Tento postup je ale pouze na vlastní nebezpečí. Při nevhodném použití totiž může dojít až k nefunkčnosti celé desky. Pokud si vše chcete vyzkoušet, podívejte se na GitHub projektu, kde je celý postup popsán.

Autor na projektu pracoval přibližně tři čtvrtě roku. Vynaložené práce ale nelituje a přeje všem mnoho úspěchů při hackování.

 

Blog autora – http://nicohood.wordpress.com/2014/11/30/hoodloader2-ready-to-use-usb-hid-for-arduino-unomega/#more-234
GitHub projektu – https://github.com/NicoHood/HoodLoader2/blob/master/Readme.md

Zbyšek Voda

Napsat komentář