9. diel - Arduino - Samostatný čip ATmega 328p
Aby sme ale mohli na čip nahrávať programy ako do klasického Arduino, tak
do neho budeme musieť v prvom rade nahrať Arduino Bootloader, bez ktorého do
neho cez Arduino IDE nič nenahrajú. Aby sme mohli na čip bootloader nahrať,
budeme potrebovať aspoň funkčné Arduino. A aby sme mohli pracovať so
samostatným čipom bez kryštálu, budeme si do IDE musieť pridať ďalšie
"dosku". Takže IDE vypneme (ak je zapnuté) a do zložky pre Sketche (C: \
Users \ Ja \ Documents \ Arduino) pridáme zložku hardware
, v nej
zložku Breadboard
a v nej bude txt súbor. Všetko si to môžete
stiahnuť v súboroch tutoriálu nižšie. Teraz Arduino IDE zapneme a v Tools
-> Board by sa nám mala na konci objaviť nová možnosť -
ATMega328 on a breadboard (8MHz internal clock)
. Na tú ešte
neprepne! Zvolíme si takú dosku, s ktorou budeme chcieť ATmega naprogramovať
a v examples si otvoríme Arduino ISP. To do Arduino nahráme a presunieme sa k
pripájanie čipu.
ATmega má 28 nožičiek. Tie nie sú popísané, takže si odporúčam na čip nalepiť nálepku s popisom pinov. Mne sa podarilo nájsť tieto od Adafruitu,, ktoré si len vytlačíte a nalepíte (najlepšie obojstrannú izolepou).
Čip pootočíme zúbkom doľava a pozrieme sa na neho z vrchu a vysvetlíme si jednotlivé nožičky.
V hornom rade máme zľava:
- 6 analógových pinov A6-A0
- GND je zem
- AREF a AVCC sú vstup 5V
- D13-D9 sú digitálne piny
V dolnej potom:
- RST je resetující pin
- RX a TX sú pre sériovú komunikáciu a zároveň piny 0 a 1
- D2-D4 sú ďalšie digitálne piny
- V + je vstup 5V
- GND ide na zem
- XTL 1 a 2 sú pre pripojenie kryštálu. Tie nás nezaujímajú.
- D5-D8 sú posledné digitálne piny
Späť k nahrávanie bootloaderu. Vo Sketch Arduino ISP máme na začiatku časť:
// pin name: not-mega: mega(1280 and 2560) // slave reset: 10: 53 // MOSI(11): 11: 51 // MISO(12): 12: 50 // SCK(13): 13: 52
Sú tu popísané piny - kam ktoré pripojiť. Takže pripojíme piny reset a D11-D13 na čipe k Arduino. U MEGA podľa pravého stĺpca, u ostatných podľa ľavého. Tieto 4 ale nestačí! Čip má dvakrát GND, tú na zem a na V +, AREF a AVCC pripojíme 5V. Teraz by čip mal pripojiť nejako takto:
Keďže na schéme nie sú popísané piny, odporúčam držať sa radšej
popisu v kóde. Takže máme čip pripojený, v Arduino je nahraný sketch ISP a
môžeme ísť nahrávať. V Tools -> Board zvolíme poslednú položku
ATMega328 on a breadboard (8MHz internal clock)
. Ďalej si v Tool
-> Programmer zvolíme Arduino as ISP
. Sériový port zvolíme
taký, na akom je pripojené Arduino, ktorým budeme nahrávať bootloader. V
kóde sa pod popisy pinov odporúča pripojiť na piny 7,8 a 9 LEDky, ktoré
budú informovať o stave nahrávania. Ja ich ale nepoužívam, všetko
potrebné je v IDE. Teraz v Tools zvolíme Burn Bootloader
. Začne
sa vypaľovať bootloader, toto môže chvíľku trvať (vraj až niekoľko
minút), takže sa nezľaknite, že sa IDE seklo. Pokiaľ bude vypaľovanie
úspešné, tak sa nám v IDE napíše "Done burning bootloader". Ak k tomu
nedôjde, skontrolujte, či máte všetko správne. Pokiaľ je i toto v
poriadku, tak je čip asi chybný. Takže na čipe máme bootloader, ale ako do
neho nahrať kód?
Ak máme Arduino s odnímateľným čipom (UNO, Duemilanove, ..), tak stačí z Arduino vybrať čip, náš nový pripojíme na napájanie a piny RX a TX pripojíme na piny RX a TX na doske Arduino bez čipu. Tu sa RX a TX neprohazuje! Potom môžeme nahrávať ako normálne (ale stále musíme mať ako board zvolené ATmega328 on a breadboard). Ak sa nám čip odendávat nechce, alebo to na Arduino jednoducho nejde (MEGA, ...), tak potrebujeme sériový prevodník. Ten má USB pre pripojenie k počítaču a aspoň 4 piny - VCC, GND, TX, RX. Ak ich je viac, tak nás momentálne nezaujímajú. VCC a GND je napájanie, to normálne pripojíme, ale TX pripojíme na RX a RX pripojíme na TX! Je to tým, že RX je príjem, a TX odosielanie, takže nemôžeme pripojiť vstup do vstupu a výstup do výstupu. Ak budeme používať sériový prevodník, tak to znamená ďalší COM port, na ktorý budeme musieť prepnúť v IDE (Tools -> Serial Port), ale stále zostáva doska ATmega 328 on a breadboard. Z minulosti už vieme používať DHT11, takže si čip naprogramujeme, aby po sériovej linke posielal teplotu.
K čipu pripojíme sériový prevodník (poprípade Arduino bez čipu), pripojíme napájanie, sériovú komunikáciu (pamätajte na prehodenie RX a TX) a dht11 na pin 8.
Potom si v IDE napíšeme tento kód:
#include <dht11.h> dht11 cidlo; void setup() { Serial.begin(9600); } void loop() { cidlo.read(8); Serial.print("Teplota: "); Serial.println(cidlo.temperature); delay(1000); }
V Tools -> Board sa uistíme, že máme ATmega328 on a breadboard. V Serial ports si zvolíme port, na ktorom je prevodník Arduino bez čipu a sketch nahráme ako do normálneho Arduino. Otvoríme serial monitor a uvidíme výpis teploty. Niekedy sa nahrávanie nepodarí na prvýkrát, niekedy trvá dlhšie a niekedy sa odmieta sketch nahrať aj po niekoľkonásobnom pokuse. Neviem, v čom je problém, ale keď sa sketch odmieta nahrať, tak znovu vypálite do čipu bootloader a potom ide všetko zas nejakú dobu bez problémov.
Pri používaní samostatného čipu je treba dbať na to, že je to len čip a nič viac. To, že do MEGA môžete pustiť podľa dokumentácie až 12 V, tak tu to jednoducho NEDÁ. Je to len čip bez všetkých regulátorov a ďalších vecí ako sú na doske. Ak by sme chceli ako napájanie použiť 9V batériu, ktorú možno k Arduino normálne pripojiť, budeme musieť použiť nejaký regulátor napätia. Pri projektoch s nízkym odberom stačí regulátor LM7805, ktorý prebytočnú energiu mení na teplo.
Takto LM7805 vyzerá. Na vstup (pin 1) sa pripojí vstupné napätie 9V (zvláda aj 12) a na zem (2) sa pripojí zem batérie. Potom na výstupe (3) je 5V, pre ktoré je zem tiež pin 2, teda je zem spoločná.
Ak by sme ale mali projekt s väčšou spotrebou, tak by sme ním skôr topili a to sa hodí použiť 5V convertor, ktoré majú 2 vstupné piny a 2 výstupné a sú schopné držať stálych 5V bez veľkých strát. Niektoré zvládajú fungovať už od 3V do 30V.
To by bolo pre dnešné diel všetko, nabudúce bude pravdepodobne 7-segmentový display.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 938x (1.02 kB)
Aplikácia je vrátane zdrojových kódov