E' possibile "staccare" il processore oppure acquistarne uno (un ATMEGA8 si acquista in un negozio di elettronica o su web a circa 3€) ed utilizzarlo standalone ovvero senza la nevessità di abbinarlo ad un Arduino.
Vantaggi:
- Dimensioni estremamente compatte (paragonabili ad un Arduino mini)
- Costo decisamente minore rispetto ad un Arduino (3€ rispetto 25€ di un Arduino)
- Consumi minori dovuti a:
- tensioni minori necessarie (dai 3V --due batterie da 1,5V in serie-- ai 5V contro i 5V-9V-12V di un Arduino)
- frequenza di clock minore (8Mhz riducibile anche a 1Mhz contro i 20Mhz di un Arduino)
- Oggetto completamente standalone
- Maggiore spazio a disposizione (dato che non necessita del bootloader inserito in Arduino: il firmware viene flashato direttamente in esadecimale)
- Utilizzo del IDE Arduino e non del linguaggio ASSEMBLY
In questo minitutorial verrà spiegato come usare un Arduino per programmare un ATMEGA.
Passi preliminari
Preparazione dell'Arduino
Prima di tutto è necessario prendere un Arduino e caricare lo sketch presente in questa pagina come si è soliti caricare un qualsiasi sketch:http://code.google.com/p/mega-isp/
Questo firmware permette di usare il nostro Arduino come programmatore del ATMEGA; in pratica, alla fine di questo tutorial è possibile passare un firmware al Arduino e questo, grazie al programma linkato lo trasferisce sul processore.
Successivamente è necessario dissaldare o tagliare in modo netto con un taglierino il jumper del reset presente subito sotto alla porta USB nella seguente immagine:
Questo passaggio è indispensabile per evitare di resettare sia l'ATMEGA sia l'arduino quando si passeranno i firmware.
Preparazione del ATMEGA
A questo punto si prenda l'ATMEGA e lo si sistemi sulla breadboard a cavallo della scanalatura.Collegare Arduino al ATMEGA
L'arduino e l'ATMEGA comunicano con il protocollo ISP che sfrutta le porte MISO, MOSI, SCK, RESET come nello schema seguente
In pratica si colleghino i PIN dell'arduino posti in fondo alla scheda (che nella figura qui sopra si trovano nell'immagine in alto a destra) all'ATMEGA (come indicato nella figura qui sopra in fondo la penultima).
Per maggiore chiarezza riporto una immagine esplicativa rilevata dal sito tinker.it dove si vedono schematicamente le connessioni:
Si tenga conto che la connessione XTAL2 non è necessaria.
Ciò che viene fuori è la seguente figura:
Preparazione software e caricamento sketch
A questo punto tutto è pronto a livello hardware e si può procedere alla parte software.
L'IDE di Arduino contiene il programma avrdude.
Si deve preparare l'ATMEGA a ricevere i comandi. Per fare questo si apra una console, ci si sposti in dir_arduino/hardware/tools e si troverà l'eseguibile avrdude.
Quindi, da shell (per gli utenti windows sarebbe il prompt del dos) si digiti il seguente comando:
avrdude -pm8 -P/dev/ttyUSB0 -cavrisp -b19200
Ora l'ATMEGA è pronto per ricevere gli sketch.
Io ho provato il Blink ed il Fade.
Dall'IDE Arduino si prenda lo sketch desiderato (nel nostro esempio Blink), da Tools->Boards si scelga la scheda Arduino NG or older w/ATMEGA 8. Si compili e si faccia l'upload (questo passaggio genererà un errore ma serve per generare il file .HEX da caricare).
A questo punto ci si sposti nella directory sketckbook/Blink/applet e si digiti il comando:
avrdude -p m8 -c avrisp -U flash:w:/home/enkel/sketchbook/Blink/applet/Blink.hex -P
Dopo una serie di messaggi si dovrebbe ricevere la scritta "Thank you!" e se tutto va bene il nostro LED si accenderà e si spegnerà.
Nel mio caso si è usato un ATMEGA8; se si usasse un 168 o un 328 i comandi contemplerebbero m168 o m328 al posto di m8.
Note: opzioni particolari
E' possibile, tramite varie opzioni, fare in modo che l'ATMEGA funzioni in modalità differenti.
A questo proposito si può seguire il seguente sito:
http://code.rancidbacon.com/LearningAboutArduinoATMega8