Ciao a tutti!
Dopo un po' di esperienza con arduino, ho deciso di costruirmi uno standalone, almeno potrò conservarmi i miei progetti funzionanti senza dover ogni volta rismontare tutto!
Dopo aver "googolato" a lungo mi sono rimasti alcuni dubbi riguardo tre particolari (alquando essenziali):
Il tipo di Atmega da utilizzare
Il tipo di circuito accompagnatore
La modalità di upload degli sketch
Ho visto in giro vari tipi di Atmega 328, 328p, 328p-pu, 128, ecc..
Ma non ho bene capito quale scegliere, le ho viste in giro usate indistintamente (mi pare, ma forse mi sbaglio )
Riguardo al comprarla con o senza il bootloader integrato, io farei senza poichè è semplicissimo da installare e non è necessario sradicare l'atmega da arduino (cosa che non vorrei assolutamente fare :0)
Per quanto riguarda il circuito che accompagna il microcontrollore, ne ho viste di tutte : da chi usava resistenze, quarzo, led, condensatori di vario tipo a chi usava un quarzo solitario.
Io sarei per usare 2 condensatori da 22µF e un quarzo a 16MHz (circuito più gettonato in giro, ma ho dubbi)
Per uploadare gli sketch pensavo ad un convertitore tipo questo, proprio per il fatto che non vorrei smontarmi l'arduino!
il chip usato sull'Arduino è l'ATmega328P-PU.
La "P" rossa indica la versione con il core "PicoPower" che permette di gestire anche le modalità di sleep. PU in verde indica il package DIP28 del chip.
Concordo con te. Meglio senza bootloader, tanto se vuoi mettercelo sopra è una cavolata.
Il circuito che "accompagna" il chip dipende molto da cosa vuoi fare tu. Se vuoi replicare l'Arduino, ti serve il quarzo da 16 MHz con i suoi 2 condensatori perché questa frequenza è quella usata sulle schede UNO. Se vuoi fare uno standalone con clock diverso puoi anche ometterlo: il chip ha integrato un oscillatore che può andare a 1 o 8 MHz.
Per fare l'upload degli sketch puoi usare anche la stessa scheda Arduino che già hai, vedi guida di Michele Menniti
Gono:
Per uploadare gli sketch pensavo ad un convertitore tipo questo, proprio per il fatto che non vorrei smontarmi l'arduino!
No.
Se prendi l'ATmega328P senza bootloader non puoi usare quel convertitore per caricarlo e ne tanto meno per caricare gli sketch.
Ti serve un programmatore ISP, ovvero un Arduino con dentro lo sketch "Arduino as ISP"
Dopo che hai caricato il bootloader tramite ISP allore puoi usare un convertitore, ma non quello perche manca del segnale reset.
Prendine uno con le uscite compatibili FTDI.
Ci sono altri topic su cui si è discuso della cosa. Con suggerimenti, spiegazioni , immagini...
il chip usato sull'Arduino è l'ATmega328P-PU.
La "P" rossa indica la versione con il core "PicoPower" che permette di gestire anche le modalità di sleep. PU in verde indica il package DIP28 del chip.
Per quello che devo fare io la modalità sleep non dovrebbe servire, cos'è il package DIP28 ?
leo72:
2) Concordo con te. Meglio senza bootloader, tanto se vuoi mettercelo sopra è una cavolata.
Perfetto!
leo72:
3) Il circuito che "accompagna" il chip dipende molto da cosa vuoi fare tu. Se vuoi replicare l'Arduino, ti serve il quarzo da 16 MHz con i suoi 2 condensatori perché questa frequenza è quella usata sulle schede UNO. Se vuoi fare uno standalone con clock diverso puoi anche ometterlo: il chip ha integrato un oscillatore che può andare a 1 o 8 MHz.
Penso che metterò il quarzo a 16 MHz sia perchè mi trovo bene e non vedo il motivo di rallentare arduino sia perchè ho visto che configurare altre frequenze è cosa ardua.
I due condensatori da aggiungere sarebbero dei ceramici da 22µF ?
leo72:
4) Per fare l'upload degli sketch puoi usare anche la stessa scheda Arduino che già hai, vedi guida di Michele Menniti
Quel papiro manuale l'ho letto più volte e se non mi ricordo male diceva che bisognava o staccare il chip atmega oppure parlava di un metodo alternativo e "contorto", il quale diceva lui stesso poteva non funzionare perfettamente.
PaoloP:
No.
Se prendi l'ATmega328P senza bootloader non puoi usare quel convertitore per caricarlo e ne tanto meno per caricare gli sketch.
Ti serve un programmatore ISP, ovvero un Arduino con dentro lo sketch "Arduino as ISP"
Dopo che hai caricato il bootloader tramite ISP allore puoi usare un convertitore, ma non quello perche manca del segnale reset.
Prendine uno con le uscite compatibili FTDI.
Ci sono altri topic su cui si è discuso della cosa. Con suggerimenti, spiegazioni , immagini...
Io pensavo di comprarlo senza bootloader per poi caricarlo con il mio arduino UNO!
Mi pareva di aver visto che quei convertitori, funzionano con il bootloader.
Di ISP non me ne intendo :~
Quel papiro manuale l'ho letto più volte e se non mi ricordo male diceva che bisognava o staccare il chip atmega oppure parlava di un metodo alternativo e "contorto", il quale diceva lui stesso poteva non funzionare perfettamente.
Certi papiri non sono come i Topolino o similari, non vanno letti mentre si è seduti comodamente sulla tazza di un WC, magari con sigaretta in mano; sai, il fumo, gli sforzi sfinterali, non aiutano la concentrazione e quindi la comprensione. Se due utenti del Forum, con così tanta esperienza, ed uno dei quali è addirittura il Moderatore, ti consigliano di leggere una Guida, implicitamente ti dicono che trovi ciò che ti serve e anche scritto bene. Il caricamento seriale e quello ISP sono ben trattati, nella versione attuale è ben spiegata anche la questione dei convertitori usb-seriali esterni. Davvero non capisco cosa ci sia di così poco chiaro nel passo che hai menzionato. Come ti ha detto Paolo, se l'avessi letta come si deve non avresti aperto proprio il TOPIC, visto che c'è risposta ad ogni tuo quesito, compreso il fatto che i condensatori sono da 22pF e non da 22µF, tanto per aggiungere una info. Vuoi comprare un micro vergine e poi caricarci il bootloader mediante Arduino e senza disporre di altre schede? Puoi farlo, ti serve la tecnica ISP, non tene intendi? scaricati la Guida e leggila nello studio
Salve Michele Menniti, volevo innanzitutto chiedere scusa se i miei commenti fossero stati offensivi o non graditi. La tua guida è completissima e ti faccio i miei complimenti; quando dicevo è un papiro non volevo alludere alla noiosità delle guida (cosa che non penso assolutamente) bensì alla lunghezza (cosa oggettiva).
Mentre quando accennavo ad un metodo alternativo con possibilità di non funzionamento mi riferivo al capitolo 7A1.
Ho notato in questo forum da parte di alcuni utente un'ostilità verso gli utenti neofiti (gruppo di cui faccio parte), io non volevo né rubare tempo a nessuno né annoiare nessuno per la monotonia delle mie domande.
Detto questo passerò a una lettura più profonda e meticolosa della guida
Ma dai, te la prendi troppo! Io volevo solo sottolineare il fatto che quel lavoraccio merita per la lettura almeno una parte del lungo tempo impiegato per la scrittura; proprio perché è molto lungo il lavoro è stato anche suddiviso in capitoli e paragrafi ben ordinati. Quindi non mi sono offeso ma ho solo voluto evidenziare la cosa. Il fatto è che ormai gli abituée del Forum sanno che in quel lavoro c'è il 90% delle risposte alle domande più frequenti, quindi quando si indirizza in modo netto non è per ostilità ma per risolvere rapidamente la cosa; altro è quando qualcuno si mette a denigrare il lavoro o i consigli dati da altri, in genere succede che qualche neofita (non tutti, e non c'è nessuna black list, e la cosa è casuale) arriva qui con la sapienza di Salomone e spara a 0; la reazione è un po' di tutti coloro che, frequentando il Forum, sanno che qui c'è moltissima gente che per lavoro fa altro e che si dedica ad aiutare senza nulla pretendere da alcuno; se a questo aggiungi come ringraziamento le critiche un po' girerebbero anche a te no? QUindi u non annoi e non rubi tempo a nessuno, visto che nessuno è obbligato a risponderti, se uno lo fa è per aiutarti e se invece di una risposta alla domanda ti si dice di leggere quel tale Topic o il regolamento e di usare il search è solo per non ripetere inutilmente cose trite e ritrite ed ormai note alla comunità. Hai idea di quante volte è stato trattato l'argomento "programmazione ISP"? fai una ricerca e vedrai risultati oltre le tue comuni aspettative.
Poi invece arriva quello che esordisce dicendo "salve, ho studiato a fondo la guida di tal dé tali (non c'è solo la mia, ce ne sono altre su altri argomenti...), ed avrei un dubbio...." chiaro che gli si risponde al volo, perché non ti verrà a chiedere le cose che sono scritte lì ma qualche particolare, che può sempre sfuggire.
Per quanto mi riguarda nessun problema, sono qui, se posso essere utile, peraltro un paio di risposte te le ho già date, se hai altro da chiedere, dopo la lettura della parte di Guida che ti serve, vedrai che avrai risposta certa. XD
Gono:
I due condensatori da aggiungere sarebbero dei ceramici da 22µF ?
Non ho letto per conferma sul datasheet, ma dovrebbero andare bene con valore tra 15 e 22 pF, prendi quelli che ha il tuo negozio. Se li ordini da internet, prendili da 22 pF allora così tagli la testa al toro.
Michele Menniti, hai ragione! Me la sono presa troppo
Il torrido caldo fiorentino fa davvero brutti effetti!
Ho avuto tempo di rileggere (in luoghi più freschi) la tua mitica guida e mi sono reso conto che inizialmente non avevo capito proprio nulla e pensavo addirittura che l'ISP fosse qualcosa di arcano e complesso.
A questo punto mi viene spontanea una domanda: perchè c'è gente che smonta l'arduino quando con il metodo ISP si può caricare uno sketch con facilità e non invasivamente?
In questo caso i condensatori a cosa servono? sono realmente necessari?
Ho notato che nella guida spesso vengono usati passaggi diversi per le diverse IDE (in questo caso 0022 e 1.0.1); adesso vi è la versione 1.0.4. Cambia qualcosa o mi posso comportare come nella 1.0.1?
Colgo l'occasione per ringraziare tutti per il supporto e per sopportami ]
Gono:
Il torrido caldo fiorentino fa davvero brutti effetti!
Sei di Firenze? Anch'io
A questo punto mi viene spontanea una domanda: perchè c'è gente che smonta l'arduino quando con il metodo ISP si può caricare uno sketch con facilità e non invasivamente?
Aspetta, stai facendo confusione. Il metodo ISP serve proprio per caricare uno sketch su un chip non montato sull'Arduino. Quando il chip è montato sull'Arduino, non lo programmi via ISP ma via seriale grazie al bootloader che il microcontrollore ha installato sopra.
In questo caso i condensatori a cosa servono? sono realmente necessari?
Se usi il quarzo esterno, sono necessari. Per non usarli devi comprare un risuonatore ceramico che li ha integrati. Ma è più impreciso di un quarzo.
Ho notato che nella guida spesso vengono usati passaggi diversi per le diverse IDE (in questo caso 0022 e 1.0.1); adesso vi è la versione 1.0.4. Cambia qualcosa o mi posso comportare come nella 1.0.1?
leo72:
Aspetta, stai facendo confusione. Il metodo ISP serve proprio per caricare uno sketch su un chip non montato sull'Arduino. Quando il chip è montato sull'Arduino, non lo programmi via ISP ma via seriale grazie al bootloader che il microcontrollore ha installato sopra.
Appunto, dicevo: perchè la gente utilizza il metodo seriale smontando l'arduino quando può usare il metodo ISP che è semplice e non invasivo.
leo72:
Se usi il quarzo esterno, sono necessari. Per non usarli devi comprare un risuonatore ceramico che li ha integrati. Ma è più impreciso di un quarzo.
Ok, meglio usare il quarzo con i due condensatori!
Ci vengo solo per lavoro, quando mi sono sposato mi sono trasferito a Campi Bisenzio. In città era improponibile poter acquistare casa $) $)
Appunto, dicevo: perchè la gente utilizza il metodo seriale smontando l'arduino quando può usare il metodo ISP che è semplice e non invasivo.
Mah, non so risponderti. Principalmente perché devi mettere in conto che i pin ISP sono l'11/12/13 e che su questi pin devi prevedere che non ci siano segnali parassiti quando andrai a programmare il chip, segnali che potrebbero dare noia al processo. Mentre i pin RX e TX sono generalmente "persi a prescindere", perché se usi la seriale non ci attacchi nient'altro.
aggiungi il fatto che la seriale è anche più familiare e la gente non ama lanciarsi in avventure ISP, poi una volta visto che non ci vuole nulla sceglie la via più pratica, io ho usato la seriale solo per poter scrivere la Guida. COme ti ha detto Leo le istruzioni per 1.0.1 valgono anche per tutte le subversion successive (fino alla 1.0.5)
leo72:
Ci vengo solo per lavoro, quando mi sono sposato mi sono trasferito a Campi Bisenzio. In città era improponibile poter acquistare casa $) $)
Eh già :~
Ti posso chiedere una cosa un po' off-topic? Conosci qualche negozio di elettronica a Firenze? Perchè io non ho mai trovato nulla in giro e mi è sempre toccato comprare per internet; il che va bene però per molte cose fa comodo avere un negozio di riferimento.
leo72:
Mah, non so risponderti. Principalmente perché devi mettere in conto che i pin ISP sono l'11/12/13 e che su questi pin devi prevedere che non ci siano segnali parassiti quando andrai a programmare il chip, segnali che potrebbero dare noia al processo. Mentre i pin RX e TX sono generalmente "persi a prescindere", perché se usi la seriale non ci attacchi nient'altro.
Hai ragione, però penso che uno standalone solitamente si programmi una volta per tutte (o quasi); per fare esperimenti e prove usi arduino
Vero! Io stesso pensavo fosse una tecnica arcana, poi ho capito che è qualcosa di semplice e molto funzionale.
Gono:
Ti posso chiedere una cosa un po' off-topic? Conosci qualche negozio di elettronica a Firenze? Perchè io non ho mai trovato nulla in giro e mi è sempre toccato comprare per internet; il che va bene però per molte cose fa comodo avere un negozio di riferimento.
Ho iniziato ad interessarmi all'elettronica con l'Arduino 3 anni fa ed i primi acquisti li ho fatti dal Paoletti in via Pratese (è poco distante dal Tenax). Però non lo trovavo fornitissimo. E poi siccome sto a Campi, mi toccava prendere la macchina ed andarci apposta. Mi faceva un pò fatica
Altri non ne conoscevo per cui alla fine ho iniziato ad acquistare su internet anch'io tutto quello che mi serve
Hai presente quando comperi un modem, o un cellulare, o un ricevitore TV ? Hai presente che il produttore ti può fornire il nuovo firmware da aggiornare? Come lo aggiorni? Se il dispositivo ha una "presa" SD o USB che legge gli stick mettendo il firmware su questi supporti, ma potrebbe avere solo una porta rs232 o usb slave da collegare ad un pc, allora ti fornisce un piccolo software sul pc che si connette alla porta seriale del pc per aggiornare il firmware, quindi SENZA usare alcun hardware, inoltre il bootloader inserito nel microcontrollore è codificato, cioè accetta solo eseguibili codificati in modo che "nessuno" possa clonare la scheda riprogettandola e usare il firmware fornito dal produttore, il produttore così taglia completamente i costi mettendo gli eventuali aggiornamenti in internet e quindi se ci sono errori nel firmware non serve più rispedire la macchina al produttore perchè l'utente finale può aggiornarla da solo a casa
Il bootloader codificato (quello di arduino NON è codificato) DEVE essere inserito dal produttore tramite ISP seriale o Parallel programmer mentre il firmware applicativo verrà inserito tramite una porta qualsiasi : rs232 o USB o SD o CAN o RS485 o ethernet.
Per terminare dico come funziona la codifica: Il fimware .hex originale viene completamente modificato usando una chiave di codifica software che può andare da 4 a 32 bytes , il bootloader codificato legge il firmware modificato e decripta il codice facendo il procedimento inverso e scrivendo il firmware corretto nella flash. Se non si conosce la chiave è quasi impossibile decodificare il firmware, Il bootloader codificato non è accessibile all'utente finale perchè l'area flash destinata al bootloader viene protetta dal produttore, se l'utente finale cancella il bootloader codificato e ne mette uno non modificato il firmware applicativo non funzionerà.
leo72:
Ho iniziato ad interessarmi all'elettronica con l'Arduino 3 anni fa ed i primi acquisti li ho fatti dal Paoletti in via Pratese (è poco distante dal Tenax). Però non lo trovavo fornitissimo. E poi siccome sto a Campi, mi toccava prendere la macchina ed andarci apposta. Mi faceva un pò fatica
Altri non ne conoscevo per cui alla fine ho iniziato ad acquistare su internet anch'io tutto quello che mi serve
Accidenti, è lontano anche da casa mia!
Mi converrà anche a me comprare su internet (cosa che sto facendo da circa un anno).
icio:
Hai presente quando comperi un modem, o un cellulare, o un ricevitore TV ? Hai presente che il produttore ti può fornire il nuovo firmware da aggiornare? Come lo aggiorni? Se il dispositivo ha una "presa" SD o USB che legge gli stick mettendo il firmware su questi supporti, ma potrebbe avere solo una porta rs232 o usb slave da collegare ad un pc, allora ti fornisce un piccolo software sul pc che si connette alla porta seriale del pc per aggiornare il firmware, quindi SENZA usare alcun hardware, inoltre il bootloader inserito nel microcontrollore è codificato, cioè accetta solo eseguibili codificati in modo che "nessuno" possa clonare la scheda riprogettandola e usare il firmware fornito dal produttore, il produttore così taglia completamente i costi mettendo gli eventuali aggiornamenti in internet e quindi se ci sono errori nel firmware non serve più rispedire la macchina al produttore perchè l'utente finale può aggiornarla da solo a casa
Il bootloader codificato (quello di arduino NON è codificato) DEVE essere inserito dal produttore tramite ISP seriale o Parallel programmer mentre il firmware applicativo verrà inserito tramite una porta qualsiasi : rs232 o USB o SD o CAN o RS485 o ethernet.
Per terminare dico come funziona la codifica: Il fimware .hex originale viene completamente modificato usando una chiave di codifica software che può andare da 4 a 32 bytes , il bootloader codificato legge il firmware modificato e decripta il codice facendo il procedimento inverso e scrivendo il firmware corretto nella flash. Se non si conosce la chiave è quasi impossibile decodificare il firmware, Il bootloader codificato non è accessibile all'utente finale perchè l'area flash destinata al bootloader viene protetta dal produttore, se l'utente finale cancella il bootloader codificato e ne mette uno non modificato il firmware applicativo non funzionerà.
Interessante! Anche se penso che non mi servirà codificare poichè il mio progetto sarà per uso personale (o quasi); sicuramente non commerciale.