Moje nové Arduino Diecimila



První pokusy aneb Tak mi konečně dorazilo Arduino ;)

Asi po půlhodině pobíhání na poště od okýnka k okýnku (čekal jsem že to bude balík, ale nakonec šlo pouze o doporučený dopis a u dopisů je vždycky hrozná fronta) jsem konečně dostal kýžený balíček (samozřejmě po prokázání občankou a zaplacení 770+90 CZK).

Když jsem přišel domů a roztrhl obálku, první co jsem v ní nahmatal bylo osobní věnování od Billa.jr, to už jsem ale věděl, že tam je také tištěný spoj s příslušným čipem – tj. Atmel ATMega168 (8mi bitový s 8KB paměti), který je jistě vhodný pro začátečníky.

Než desku zapojíme, doporučuji ji položit na nějaký papír, abychom předešli zkratu (hlavně ne na antistatickou obálku, ve které je dodávána – vypadá sice jako igelit, ale asi bude vodivá).

Po zapojení do počítače jsem do konzole napsal:
harvie@harvie-ntb:~$ lsusb
Bus 001 Device 002: ID 0403:6001 Future Technology Devices International, Ltd 8-bit FIFO
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 002: ID 0458:0056 KYE Systems Corp. (Mouse Systems)
Bus 002 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000

kde první řádka výpisu je jak jsem čekal USB-to-RS232 převodník (přece jste nečekali něco lepšího, když původní verze měla jenom RS232 tj. klasický sériový port ;) Zařízení se mi potom v systému (Linuxu) ukázalo jako /dev/ttyUSB0, což je stejné chování jako u mého USB-to-RS232 převodníku.

Další zajímavá věc, které jsem si všiml už při zapojení je to, že si můžete pomocí jumperu vybrat, jestli se bude napájet pomocí 5V přímo z USB nebo pomocí 9V z externího napáječe.

Potom jsem spustil již připravený obslužný program, který slouží k programování této hračky. Program je napsaný v Javě a prakticky je to klasické IDE – tj. editor se zvýrazněnou syntaxí a možností jedním kliknutím vše zkompilovat a nahrát do mikročipu. Instalace programu byla prakticky jenom o rozbalení javové části (javu už jsem měl nainstalovanou dávno) a instalaci avr-gcc a libc-avr (v mém případě z repozitářů Debianu). Kromě vývojového prostředí obsahuje toto SDK také hlavičkové soubory a příklady kódu, které mnohem zjednoduší práci s naším jednočipem. Samozřejmě bychom mohli programovat i bez dodávaného SDK pouze s avr-gcc a libc-avr – třeba jenom přes příkazový řádek. Potom bychom ale přišli o výhody, které nám poskytuje Arduino (nebo spíše toto SDK) a museli bychom podrobněji nastudovat dokumentaci k našemu čipu.

První co jsem vyzkoušel do Arduina nahrát byl program pro blikání led. Přitom jsem si všiml, že na 13 pinu je SMD LEDka, kterou si můžete blikat, pokud zrovna nemáte jako já v poruce šuplíku nějakou jinou. Celý program se dá vyresetovat pomocí mikrospínače, což bylo dříve nutné udělat po každém nahrání nového programu.

Tyto první kroky můžete vidět na videu tady:

Chtěl bych ještě poznamenat, že kit jako takový neobsahuje programátor, ale v čipu je předvypálený tzv. bootloader, který dělá to, že ze sériové linky (u nás tím pádem USB) načte program a nahraje ho někam do paměti za sebe. To je sice OK, ale nejsem si jistý, jestli by se tento program nedal poškodit pomocí například chyby v nahraném programu, která by způsobila přetečení do této oblasti paměti. Potom by bylo nutné najít někoho s ISP (In System Programer) a bootloader vypálit znovu. Oprava z 14.4. 2oo8: Přímé přetečení do paměti s bootloaderem není možné, k přepsání by mohlo dojít, ale šlo by o tak velkou náhodu, že se to může stát snad jen záměrně – tudíž to nepovažuji za riziko.

Tady je něco málo informací o mikropočítači z datasheetu:
Features
• High Performance, Low Power AVR® 8-Bit Microcontroller
• Advanced RISC Architecture
– 131 Powerful Instructions – Most Single Clock Cycle Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 20 MIPS Throughput at 20 MHz
– On-chip 2-cycle Multiplier
• High Endurance Non-volatile Memory segments
– 4/8/16K Bytes of In-System Self-programmable Flash program memory
8-bit
– 256/512/512 Bytes EEPROM
– 512/1K/1K Bytes Internal SRAM
Microcontroller
– Write/Erase cyles: 10,000 Flash/100,000 EEPROM
– Data retention: 20 years at 85°C/100 years at 25°C(1)
with 8K Bytes
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
In-System
True Read-While-Write Operation
– Programming Lock for Software Security
• Peripheral Features
Programmable
– Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode
Flash
– Real Time Counter with Separate Oscillator
– Six PWM Channels
– 8-channel 10-bit ADC in TQFP and QFN/MLF package
– 6-channel 10-bit ADC in PDIP Package
ATmega48/V
– Programmable Serial USART
– Master/Slave SPI Serial Interface
– Byte-oriented 2-wire Serial Interface (Philips I2C compatible)
ATmega88/V
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
ATmega168/V
– Interrupt and Wake-up on Pin Change
• Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated Oscillator
– External and Internal Interrupt Sources
– Five Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, and Standby
• I/O and Packages
– 23 Programmable I/O Lines
– 28-pin PDIP, 32-lead TQFP, 28-pad QFN/MLF and 32-pad QFN/MLF
• Operating Voltage:
– 1.8 - 5.5V for ATmega48V/88V/168V
– 2.7 - 5.5V for ATmega48/88/168
• Temperature Range:
– -40°C to 85°C
• Speed Grade:
– ATmega48V/88V/168V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
– ATmega48/88/168: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
• Low Power Consumption
– Active Mode:
250 µA at 1 MHz, 1.8V
15 µA at 32 kHz, 1.8V (including Oscillator)
– Power-down Mode:
0.1µA at 1.8V

No a teď mi už nezbývá než s novým gadgetem začít experimentovat ;D

Odkazy

Informace:
http://Arduino.cc/ (Oficiální web výrobce)
http://www.Arduino.cz/ (Oficiální web prodejce)
http://Techdot.eu/ (Blog prodejce)
Dokumentace k Atmel ATMega168 na Atmel.com
Moje fotky

Zajímavé nápady:
http://hackaday.com
http://blog.makezine.com/




Líbí se vám článek? Chcete se o něj podělit? Přidejte ho! (volba topclanky.cz nevyžaduje registraci)

19 Responses to “Moje nové Arduino Diecimila”

  1. XGeniuS Says:

    Ja si ho asi kupim
    velmi sa mi paci

  2. Harvie Says:

    XGeniuS: Mohu jen doporučit… Rozhodně je to zábavnější než ta robokostka od lega (kvůli který mimochodem zakázali zaměstnancům v několika sillicon valleyských společnostech nosit lego do práce) – i když je to celkem podobný, tohle je profesionálnější a univerzálnější…

  3. XGeniuS Says:

    A co profesionalnejsie s tym vlastne mozes robit (ak sa smiem opytat)

  4. Harvie Says:

    XGeniuS: pokud to nemyslis ironicky, tak si muzes prohledat odkazy, jinak jako s vetsinou jinych microprocesoru. ja se to zrovna snazim donutit, aby to hralo oldskool hudbu ;D

  5. pcp Says:

    Mno, ja jsem nedavno pomoci ICSP jedno arduino zachranoval. A dotycny vubec nevi jak se mu ten bootloader povedlo zlikvidovat :) . Ale jak pises, sance je dost mala..

  6. Harvie Says:

    pcp: Pokud vim, tak arduino.cc ani nedokumentuje funkce na praci s flash, takze by musel cist referencni prirucku atmelu a nebo omylem do ty funkce skocit, treba prepsanim pointeru na svoji funkci nejakym nesmyslem…. ;(

  7. Janicek Trnecka Says:

    Nikdy jsem s mikroprocesory nedělal, díky své rigitě jsem stále trval na řešení obvodů pomocí 7400 či 4000 obvodů. Nedokázal jsem přejít na mikroprocesory, nakonec jsem sebral odvahu a objednal arduino. Hned jak přišlo nemohl jsem se dočkat na "hello world"… ledka se rozblikala a ja jasal. Postupně jsem zkoušel další a další a nyní mohu říct že jsem k mikroprocesorům získal kladný vztah.. takže kdo váháte neváhejte dlouho :-)

  8. A. Says:

    Mně osobně se Arduino líbí, ale uvítal bych nějakou levnější a jednodušší verzi, plánuji mikrokontroléry ATmega8 použít v robotovi a kupovat pět destiček po osmi stovkách se mi moc nechce, takže si nechám vyrobit vlastní :-)

  9. Harvie Says:

    A.: Arduino je prototypovací deska… tj. odskoušíš a pak jenom rozkopíruješ ten program na další Atmely a vyrobíš si jenom desku s minimem komponent, jaký budeš na svuj projekt potřebovat…

    A nebo si s tim můžeš jentak hrát ;o)

  10. rezna007 Says:

    Pořídil jsem si Arduino. Pořád mi tam bliká LED (L). Mam OS XP. A program se mi vecne ,,kouše”. Neporadí mi nekdo co mam za problém. Díky

  11. Harvie Says:

    rezna007: Ou… To mi momentalne dela taky… Mam dojem ze to je problem s bootloaderem, můžeš ho tedy zkusit nějak obnovit (buď přes paralelní port, nebo to prej de i přes USB). Nebo zkus zmáčknout restart těsně před nahráváním nového sketche (programu).

  12. Tom Says:

    Ahoj, chci se zeptat, má Arduino vstupy a výstupy galvanicky oddělené? Dík.

  13. Harvie Says:

    Tom: Bohuzel… kdyz bys chtel neco odolneho opravdu, muzes si tam treba pridelat treba MOSFETy a s nima ridit relatka… to uz je asi otazka toho udelat z toho treba nejakou vyukovou pomucku, dat to vsechno do nejake krabicky, pridelat poradne konektory atd…

  14. Michal Says:

    Asi muj dotaz bude znit divne, ale kdyz naprogramuju ten mikrochip, muzu ho z te desky vyndat a pouzit nekde samostatne nebo budu potrebovat zase nake mensi arduino ktere dam treba do robota?

  15. Harvie Says:

    Michal: To neni divny dotaz, ja uvazoval o tom stejnym. Samozrejme to de, ale ten mikrocip musi mit ve tvym systemu stejny podminky jako v arduinu – stejnej krystal a vsechno ostatni musi bejt podobny – samozrejme treba nebudes potrebovat USB, nebo vsechny piny, tak je proste nezapojis.

    No, ale kdyz si pak do arduina koupis novej (prázdnej) cip, budes ho muset stejne preprogramovat pomoci In System Programátoru, takže to zas tak produktivní neni. Arduino totiž potřebuje, aby v čipu byl tzv. bootloader, kterej ti umožní programovat čip přes USB nebo RS232 bez potřeby programátoru.

  16. Harvie Says:
  17. Mard Says:

    [14] Nesmysl. Cip vyndas a co pak pouzijes misto nej do Arduina? Jak nahrajes bootloader kdyz mas jen Arduino? Takze radeji pouzij Arduino jako ISP programmer a napal si program do jineho AVR ktery strcis do nejake patice a pridas k nemu Clock,Ucc a GND (to vsechno vytahnes z Arduina, takze jde o 3 draty).

  18. Harvie Says:

    Mard, Michal: asi pred tydnem jsem preprogramoval arduino pomoci paralelniho programatoru. Ale Arduino lze pouzit jako programator hned nekolika zpusoby:

    1.) nejjednodussi metoda je pomoci paralelniho ICSP programatoru. staci 5 dratu, 3 rezistory, 2 konektory: http://arduino.cc/en/Hacking/ParallelProgrammer

    2.) pomoci FTDI cipu na arduinu, ktery se prepne do tzv. “bit-bang” modu. pak opet lze programovat jak arduino, tak dalsi ICSP aplikace pomoci nekolika malo dratu a konektoru – to je reseni pro ty, kdo nemaji dostupny paralelni port a nechteji si koupit paralelni radic do usb. je to jen o trochu slozitejsi, nez reseni 1: http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html

    3.) pomoci externiho ICSP programatoru.

    4.) pomoci druheho arduina.

    ve chvili, kdy jednu z techto metod ovladnete, muzete v arduinu libovolne menit mikrokontroler za jiny odpovidajici, ale vetsinou je snazsi na vas druhy projekt proste pripajet ICSP konektor, aby bylo mozne cip programovat primo v systemu, bez neustaleho prendavani do arduina…

  19. Harvie Says:

    Michal: zajimavy reseni je taky vypalit si cip pomoci arduina a pak ho zkusit zapojit jinde. zkus googlovat veci jako “minimal arduino”, nebo mrkni sem: http://interface.khm.de/index.php/lab/experiments/sleep_watchdog_battery/ mimo jiny se tam taky doctes o tom, jak rapidne snizit spotrebu arduina pomoci uspavani vypocetni jednotky tak, ze na stejnou baterku misto 4 dnu vydrzi bezet treba 3 roky…

Leave a Reply