Lekce 22 – Arduino bez Arduina

Při vývoji našich aplikací se dostaneme jednou do stádia, kdy budeme chtít něco praktického postavit. Jistě by to asi šlo. Celé Arduino by jsme dali do nějaké pěkné krabičky i s ostatními součástkami. Ale není to škoda? Trošku Vám dnes nastíním způsob jak by se to dalo elegantně vyřešit. Když se podíváme na Arduino UNO vidíme mikroprocesor ATMega328 zasazený v 28 pinové patici. To je jádro celého Arduina. Na tomto obvodu je již nahrán bootloader (zavaděč), který je potřebný pro komunikaci s počítačem. Takže když si koupíte nový ATMega328 a zasadíte do do patice fungovat Arduino nebude. Na trhu se ovšem již dají sehnat náhrady již s nahraným bootloaderem.

Co budeme tedy potřebovat. Připravíme si buď mikroprocesor ATmega328 s již nahraným booloaderem nebo budeme používat ten co je tam zasazený. Já jsem si sehnal jiný náhradní (ovšem původní v UNU stejně musím vyndat – později pochopíte). Dále budeme potřebovat krystal 16MHz dva kondenzátory 18-22pF a jeden odpor 10kOhm. Samozřejmě také nějaké nepájivé kontaktní pole (do desky plošných spojů si můžete napájet již vyzkoušený prototyp 🙂 ).

Pro základní zapojení Arduina bez Arduina není opravdu potřeba mnoho součástek

Při vyndavání mikroprocesoru postupujte velmi opatrně ať nepoškodíte patici ani samotnou ATMega328. Pozornost věnujte také jak se procesor orientován. Při pohledu shora na Arduino Uno je značka napravo, takže text na procesoru je vzhůru nohama. Když ho tam budete vracet tak orientaci dodržujte! Jinak to fungovat potom už nebude a mohlo by dojít k poškození :-(.

Pomožte si třeba menším šroubováčkem. Hlavně opatrně a nezohýbejte vývody mikroprocesoru.

Mikroprocesor zasuneme do desky nepájivého kontaktního pole tak aby jsme měli text na něm normálně čitelný a neyl vzhůru nohama – takže klasicky značka (výřez) bude vlevo. Na internetu jsem našel fotografii, jak si někdo vyrobil na tento mikroprocesor nálepku pro lepší orientaci, vypadá takto a nám i teď tento obrázek trošku pomůže.

Pro jistotu tabulka zapojení vývodů:

1 RESET
2 DIGITAL PIN 0 TX
3 DIGITAL PIN 1 RX
4 DIGITAL PIN 2
5 DIGITAL PIN 3
6 DIGITAL PIN 4
7 Vcc (+)
8 GND (-)
9 XT1 krystal
10 XT2 krystal
11 DIGITAL PIN 5
12 DIGITAL PIN 6
13 DIGITAL PIN 7
14 DIGITAL PIN 8
15 DIGITAL PIN 9
16 DIGITAL PIN 10
17 DIGITAL PIN 11
18 DIGITAL PIN 12
19 DIGITAL PIN 13
20 Vcc (+)
21 AREF
22 GND
23 ANALOG PIN 0
24 ANALOG PIN 1
25 ANALOG PIN 2
26 ANALOG PIN 3
27 ANALOG PIN 4 SDA
28 ANALOG PIN 5 SCL

 

Těch pár součástek si hravě zapojíme. Krystal na vývody 9 a 10 (u krystalu polarita není tak jedno jak) a kondenzátory 18-22 pF také k těmto vývodům a k zemi.

Pak si připojíme odpor 10kOhm u vývodu 1 k Vcc (+). To je vývod RESETU, jakmile by jsme přivedli k tomuto vývodu GND (-) obvod by byl v resetu. Na desce Arduina je k tomuto zapojeno tlačítko RESET. A zapojíme napájení (+ na 7 a – na 8). Tím je úplné základní zapojení hotové. Opravdu jednoduché 🙂

Aby jsme si ukázali, že to něco bude dělat připojíme k vývodu 14 (což pro nás znamená podle tabulky digital pin 8) LED diodu přes odpor 1,2KOhm. Napájení zatím pro pokus vezmeme z desky Arduina (5V a GND)

Na něco jsme, ale asi zapomněli :-). V mikroprocesoru nemám žádný program, který by nám něco dělal (nebo to co by jsme chtěli). Takže ho z kontaktního pole vyndáme a opatrně vložíme do Arduina, kde do něj normálně nahrajeme tento program:

Tento program nedělá nic jiného než, že v cyklu rozsvítí LED diodu na digitálním pinu 8 na 0,3 sekundy a poté jí zase na 1,7 sekundy zhasne. Já jsem již program nekomentoval v kódu, z předchozích tutoriálů musí být vše již jasné. Z obrázku vidíte, že jsem použil napájení z Arduina, takže taková malá „pupeční šňůra“ nám zůstala. To se dá vyřešit následovně. Vezmeme jiný zdroj 5V a nebo použijeme např. 9V baterii. Ovšem k 9V baterii musíme, aby jsme získali napětí 5V použít stabilizátor např. 7805, který na výstupu nám dá již potřebné napětí.

Jedná se taktéž o velmi levnou součástku. Na internetu najdete spoustu zapojení s tímto obvodem, ale funguje snad i bez dalších součástek. Já jsem vzhledem k tomu, že používám 9V baterii dal před a za stabilizátor kondenzátor 10nF podle nějakého návodu (na internetu se hodnoty kondenzátorů značně liší ve schématech) já použil 10n, ale můžete i 100nF – sami si vyzkoušejte. Tyto kondenzátory pouze blokují rozkmitání.

Ve stabilizátoru se přebytečná energie mění na teplo. Naše aplikace odebírá cca 30mA, ztrátový výkon je tedy I * (Uvstupní – Uvýstupní) což je 0,03*(9-5)=0,12W. V případě. že by naše zařízení mohlo odebírat více např. 0,5A by jsme si spíše z naší baterie topili a nevydržela by moc dlouho. V tomto případě by jsme napětí mohli snížit spínaným zdrojem, ale o tom si tady vyprávět nebudeme :-).

Zapojení s napájením z 9V baterie s použitím stabilizátoru 7805

Takže i napájení jsme nějakým způsobem vyřešili a můžeme si zkusit připojit třena displej na I2C. Víme že ho máme na A4 (SDA) což je teď vývod 27 a A5 (SCL) je na vývodu 28. Program k tomu můžeme zkopírovat z tutoriálu, kde jsme LCD na I2C zkoušeli. Nezapomeňte opatrně vyndat mikrokontrolér z desky kontaktního pole a vložit jej snad bez poškození do Arduina a značkou vpravo (obráceně). Program nahrajeme, a vložíme zpět na naše kontaktní pole.

Nápis „Ahoj lidi“ se nám zobrazí ihned po zapojení baterie. Já jsem si ještě připojil RTC modul a na displeji jsem zobrazoval hodiny:

Sami vidíte, že si Arduino můžete osamostatnit pokud budete potřebovat. Pro konečnou aplikaci si vyrobíte svůj plošný spoj, kde mikrokontrolér bude mít vlastní místo a celé zařízení bude vypadat daleko profesionálněji, než Arduino s napíchanými vodiči :-).

5 Komentářů

  1. thehekycz

    Ahoj, mám dotaz, když mám ke krystalu zapojeny ty 2 18pF kondenzátory, tak mi to NEFUNGUJE, a když tam nejsou tak to FUNGUJE. A mě by zajímalo jakto? 🙂

    1. marty

      Obvykle to funguje bez problémů. Ovšem parazitní kapacity nepájivého pole jsou také v řádu pf … Rozhodně plošňák bych navrhnul s kondenzátory 🙂

  2. Martin

    Jeden by měl mít 22pF, avšak já používám 2*22pF.

  3. arthur

    Pěkný článek, díky za inspiraci. Jak bych to měl ještě rozšířit, aby se dal update provádět bez přenášení brouka do arduina? Micro usb by se mi na tu destičku ještě vešlo a bylo by to pohodlnější. Dík za info.

    1. marty

      Na arduinu je rozhraní ISP (vývody MISO / MOSI / SCK), tím se dá pomocí programátoru (např. paralell programmer, asp ISP a pod,) nahrát program do atmegy, ale třeba taky bootloader. No a pokud programátor není k dispozici, lze vlastní arduino použít jako programátor jiné atmegy, v balíku IDE je sketch pro arduino UNO as a ISP programmer …

Napsat komentář

Translate »