Sommario:

Coltello svizzero AVR: 14 passaggi (con immagini)
Coltello svizzero AVR: 14 passaggi (con immagini)

Video: Coltello svizzero AVR: 14 passaggi (con immagini)

Video: Coltello svizzero AVR: 14 passaggi (con immagini)
Video: Buona vacanza, commissario Maigret by Casimiro 2024, Luglio
Anonim
Coltello svizzero AVR
Coltello svizzero AVR
Coltello svizzero AVR
Coltello svizzero AVR
Coltello svizzero AVR
Coltello svizzero AVR
Coltello svizzero AVR
Coltello svizzero AVR

Lo Swiss AVR Knife raggruppa una serie di progetti di programmazione AVR in un unico conveniente Altoids Gum Tin. Grazie alla flessibilità offerta dalla programmazione del microcontrollore, fornisce anche un punto di partenza per qualsiasi numero di progetti basati su LED e uscita audio. Il SAK può contenere tanti programmi quanti ne permette gli 8K di memoria e mantiene otto stati per ogni programma. Il pulsante blu fa sì che il SAK scorra ciclicamente tra i programmi e gli stati: una pressione rapida lo fa rimanere nel programma ma passa allo stato successivo (comunque sia definito) e una pressione lunga lo fa avanzare al programma successivo. Il programma corrente e gli stati per tutti i programmi vengono conservati nella EEPROM tra gli utilizzi.

I progetti attualmente implementati nella SAK includono quanto segue. Questi, insieme a tutto il resto del codice e delle costanti (c'è una tabella dei caratteri completa), occupano circa 4K dello spazio disponibile. Molto più spazio! MiniMenorah -- Evil Mad Scientists Brain Machine -- Mitch AltmanMiniPOV -- Adafruit IndustriesGiocattolo rumoroso -- Oggetti rumorosi Luci correnti a LED Candela a LED Torcia a LED Questo progetto non esisterebbe senza la notevole generosità di tutti coloro che hanno contribuito in un modo o nell'altro. Oltre a quanto sopra, vorrei ringraziare gli sviluppatori degli strumenti software utilizzati (vedi in altri passaggi) e chiunque abbia creato un sito Web utile che ha favorito la mia comprensione di questi argomenti. Posso prendermi il merito diretto per pochissimo del codice utilizzato in questo progetto. Se ritieni che il codice sia tuo, potrebbe esserlo. Fammi sapere e sarò felice di darti credito. Grazie comunque per il tuo contributo:-)

Passaggio 1: parti

Le parti possono essere ottenute da uno qualsiasi dei numerosi fornitori di elettronica. A causa del vincolo di spazio, la maggior parte dei componenti è richiesta come indicato. Tutto si adatta a malapena; assicurarsi che eventuali parti sostitutive non occupino spazio aggiuntivo. Non sostituire l'ATtiny84 a meno che non si sia assolutamente certi che i pin corrispondano. I collegamenti che seguono le parti sono per DigiKey e per tutta l'elettronica. resistori -- abbinati ai tuoi LED2 x R1, R2 -- 100 ohm 1/4W 1% pellicola metallica -- 100XBK-ND2 x C7, C8 -- 47uF -- P5151-NDVariePorta batterie 1-AA 6" cavi (1) 2461K-NDPresa telefonica stereo da 3,5 mm (1) MJW-22Interruttore a levetta SPDT 1/4" on-on (1) MTS-4Interruttore a pulsante (1) 450-1654-NDMinty BoostIl SAK è alimentato da una singola batteria AA potenziata da un chip Maxim MAX756 (il componente essenziale del MintyBoost!). I componenti sottostanti sono quelli necessari per questa parte del circuito.1 x U1 -- MAX756CPA DC/DC 3.3/5V DIP -- MAX756CPA+-ND1 x Ux -- Presa IC DIP 8 pin -- A32878-ND2 x C7, C8 -- 0.1uF -- 399-4151-ND2 x C3, C5 -- 100uF -- P5152-ND1 x L1 -- 22uH radiale -- M9985-ND1 x D1 -- 1N5818 Schottky 1A 30V -- 1N5818-E3/1GI- ns

Passaggio 2: Microcontrollore ATtiny84

ATtiny84 Microcontrollore
ATtiny84 Microcontrollore

Molti progetti utilizzano il microcontrollore ATtiny2313 a 20 pin o ATtiny85 a 8 pin. Ho trovato l'ATtiny2313 troppo grande (per la custodia) e l'ATtiny85 troppo piccolo (memoria insufficiente, pin di uscita insufficienti). L'ATtiny84 è perfetto:-) L'ATtiny84 ha 8K di memoria flash programmabile (abbastanza per contenere molti piccoli programmi), 512K di EEPROM (per memorizzare lo stato tra gli usi), fino a 12 pin di uscita (per i 9 LED, 2 canali di uscita audio e un interruttore a pulsante) e molte altre chicche che non vengono utilizzate in questo progetto. Se hai intenzione di aggiungere programmi, procurati una copia della scheda tecnica ATtiny84. Ci sono molte guide didattiche per imparare a programmare questa famiglia di microcontrollori su Internet. Per un utile riepilogo dei microcontrollori, vedere Come scegliere un microcontrollore. Nota Il progetto qui descritto non ha effettivamente MiniMenorah completamente abilitato. Il MM richiede nove pin di uscita, il Brain Machine due e il pulsante per cambiare stato uno, per un totale di dodici. Mentre ATtiny84 può essere configurato per avere dodici pin di uscita, è a spese del pin RESET. Disabilitare il pin RESET e renderlo I/O rende l'ATtiny84 incapace di essere programmato con il programmatore USBtinyISP (che non l'ha fatto:-) e richiede la programmazione ad alta tensione. Tutto è a posto per abilitare il MM, ma è necessario un programmatore diverso e non ne ho uno.

Passaggio 3: strumenti di programmazione AVR

Strumenti di programmazione AVR
Strumenti di programmazione AVR
Strumenti di programmazione AVR
Strumenti di programmazione AVR

Per programmare i microcontrollori AVR sono necessari alcuni componenti, sia hardware che software. Di seguito sono riportati gli strumenti che utilizzo. Molti, molti altri esistono nella stessa fascia di prezzo, da liberi a economici. Trova un set che funzioni per te e mantienilo. Meglio ancora, trova un amico che ha elaborato un sistema e usa i suoi strumenti. Niente è particolarmente difficile se tutto va come pubblicizzato, ma far funzionare tutti gli strumenti insieme può essere una vera sfida. La culla della programmazione Ho basato la mia sull'ambiente di programmazione Ghetto. I pin lunghi del supporto del chip wirewrap si estendono fino a una breadboard e costituiscono una comoda configurazione sperimentale. L'unico problema che ho riscontrato è che i componenti dei pin di programmazione non possono essere messi a terra durante la programmazione. Ho adottato due approcci per risolvere questo problema. Il primo è di avere due chip holder, uno per la programmazione e uno per il funzionamento (vedi culla a 8 pin). Questo non è l'ideale perché rende inutilizzabile gran parte della breadboard ed è abbastanza fastidioso spostare il chip. Il secondo è installare un piccolo interruttore per scollegare il pin di massa dalla massa della breadboard durante la programmazione. Funziona meglio e lascia più spazio sulla breadboard per i componenti. ProgrammerUSBtinyISP kit di Adafruit Industries. Con una piccola modifica (rimuovere il cavo a 10 pin e piegare i LED) il programmatore si inserisce in un Altoids Gum Tin. Il cavo a 6 pin può anche essere avvolto nella scatola per l'archiviazione. SoftwareWinAVR è una raccolta di strumenti di sviluppo software open source per la programmazione di microcontrollori AVR su macchine Windows. Funziona bene con il programmatore USBtinyISP (vedi il tutorial AVR). Recentemente sono passato dall'utilizzo dell'applicazione Blocco note del programmatore fornita in bundle con WinAVR all'utilizzo di Eclipse con il plug-in AVR Eclipse. Eclipse può usare avrdude, quindi dovrai comunque installare WinAVR. Eclipse offre una migliore gestione dei progetti, utili tutorial ed è gratuito. Ci sono voluti solo pochi minuti per installarlo, seguire un tutorial e programmare un chip. Telefona a un amicoCi sono molte risorse su Internet. Cercali, chiedi aiuto. Le persone possono essere competenti e disponibili. Che bello:-) Possono anche essere sprezzanti. Non è carino:-(

Passaggio 4: Programmazione del microcontrollore

Programmazione del microcontrollore
Programmazione del microcontrollore

Codice C Non criticare ciò che non capisco. Non sono un programmatore, il C non è la mia lingua madre e mi aggrappo a un thread Java e a molte ricerche sul Web quando lavoro in C. Anche se gran parte del codice proviene da altri progetti (vedi crediti), Ho dovuto fare alcune aggiunte e modifiche. Il codice sorgente dello Swiss AVR Knife è allegato di seguito sia come file sorgente c che come file esadecimale. Gradirei sapere dove il codice potrebbe essere migliorato. Ci sono alcune modifiche che prevedo di apportare al codice. Gli aggiornamenti sono in arrivo. Nel frattempo, il codice funziona come pubblicizzato. Fusibili I fusibili del microcontrollore creano confusione. Ho disabilitato alcuni microcontrollori sia impostandoli accidentalmente per cercare un oscillatore esterno sia disabilitando il pin RESET. Possono essere recuperati, ma fino ad allora sono solo insetti morti. Fai attenzione se scegli di cambiare i fusibili. Per calcolare i valori corretti dei fusibili, utilizzare un calcolatore di fusibili online. Selezionare la parte di destinazione (ATtiny84) e le impostazioni appropriate: oscillatore RC interno che funziona a 8 MHz (valore predefinito), NON dividere il clock per 8 internamente, abilitare il download del programma seriale e disabilitare il rilevamento del brownout. Il risultato dovrebbe essere il seguente. -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m (basso 0xE2 alto 0xDF ext 0xFF). Hai solo bisogno di bruciare i fusibili una volta (a meno che tu non abbia intenzione di cambiarli). Eclipse lo rende facile, come, ne sono certo, fanno altri IDE. Domande a cui vorrei una risposta Qualsiasi idea sull'ottimizzazione del codice Perché le luci lampeggianti nella macchina del suono e della luce causano un'oscillazione nel tono quando sono abilitate nel barattolo ma non sulla breadboard? Perché a Eclipse non piacciono le funzioni lightOn e lightOff, anche se sembrano funzionare?

Passaggio 5: breadboarding del progetto

Breadboard del progetto
Breadboard del progetto
Breadboard del progetto
Breadboard del progetto

Poiché gran parte del lavoro di questo progetto è svolto dal microcontrollore, ci sono pochissime parti esterne. Dopo aver verificato che il programmatore e la catena di strumenti siano in ordine, sarebbe una buona idea eseguire il breadboard del circuito e assicurarsi che tutto funzioni come pubblicizzato. Le immagini sottostanti sono versioni incasinate della breadboard effettiva che avevo impostato. Ho usato i LED nel modello di latta e ho estratto la base e il chip da utilizzare in diverse fotografie. Il cablaggio generale collega sostanzialmente i pin attivi ad alcune parti e quindi a massa. Nota L'ordine di pin e LED non è lo stesso sulla breadboard e sul PCB (anche se suppongo che potresti renderli uguali). Nel codice, vedrai parti di codice che devono essere abilitate o commentate a seconda che l'obiettivo sia la breadboard o il PCB.

Passaggio 6: preparare la latta di gomma degli Altoids

Immagini sulla stradaAppiattire il fondo. Il fondo dello stagno si curva verso l'alto e verso l'interno. Deve essere appiattito in modo che la batteria e il circuito si adattino e si siedano in modo uniforme. Facendo attenzione a non distorcere lo stampo, spingere il fondo verso l'esterno fino a renderlo sostanzialmente piatto. Lo stampo necessita di tre serie di fori. Uso un punzone di metallo per segnare le posizioni dei fori e punte a punta (per il legno) per praticare i fori. Le punte Brad Point hanno una punta centrale e due taglienti. Non pattinano e i bordi tagliano lentamente il metallo. Le punte Brad sono disponibili da Lee Valley (tra gli altri posti). Il primo è un set di nove fori da 5 mm nella parte superiore della latta per i LED. Sono disponibili punte a punta metrica metrica che creano fori puliti e comodi per i LED. Crea un modello di carta con i fori segnati e trasferisci i segni sulla parte superiore dello stampo. Per evitare di spingere la parte superiore della latta all'interno, appoggiare la parte interna del coperchio su un piccolo blocco di legno quando si perfora e si fora la parte superiore. Con la carta e il legno a posto, foro lo stampo con il punzone. Durante la perforazione, all'inizio procedi lentamente. I bordi taglienti delle punte dei chiodi dovrebbero formare un cerchio uniforme. Forare con la punta tutto tranne che perpendicolare alla superficie può far sì che la punta afferri e strappi il metallo. La punta del chiodo da 5 mm crea un bel foro pulito, ma ho scoperto che dovevo allargarlo leggermente. L'ho fatto perforando dall'interno con una normale punta da 13/64". Il secondo set è composto da due fori da 1/4" sul lato destro della scatola per l'interruttore e il jack audio. A causa della curvatura stretta all'estremità del barattolo, questi fori devono essere abbastanza vicini. Assicurati di distanziarli in modo che i componenti si adattino alla scatola. Centrateli verticalmente sulla porzione del lato visibile quando il coperchio è chiuso. Segna con un punzone e fora con molta attenzione. La cautela sui bit che afferrano lo stagno si applica più fortemente con i bit più grandi. L'ultimo foro è per l'interruttore a pulsante. Posizionare il foro verso il basso a destra in modo che il pulsante non interferisca con gli altri componenti della latta.

Passaggio 7: progettazione e realizzazione del PCB

Progettazione e realizzazione del PCB
Progettazione e realizzazione del PCB
Progettazione e realizzazione del PCB
Progettazione e realizzazione del PCB
Progettazione e realizzazione del PCB
Progettazione e realizzazione del PCB

Esistono numerose risorse su Internet che descrivono il processo di creazione dei PCB. Nessuno dei metodi è infallibile o facile, ma è importante familiarizzarsi con almeno uno. Uso la versione freeware di EAGLE Layout Editor di CadSoft per creare lo schema e il layout del circuito stampato. Il mio approccio alla produzione del PCB è descritto nella fase Realizzazione e preparazione del PCB dell'Altoids Tin Speaker istruibile. Dopo il trasferimento, l'incisione e la perforazione della scheda, sei pronto per saldare tutto insieme. Nota La mia esperienza più recente per il trasferimento delle immagini su circuiti stampati è il seguente. Lava bene la tavola con detersivo per i piatti e strofinala con uno scrub verde. Levigare delicatamente eventuali sbavature dai bordi della tavola in modo che la carta di trasferimento e il ferro facciano un buon contatto con la tavola. Preriscaldare il ferro. Metti un pezzo di carta sull'asse e scalda l'asse con il ferro. Dopo che la tavola è abbastanza calda, posiziona con attenzione la carta di trasferimento preparata sulla tavola. Si attaccherà subito (perché la tavola è calda), quindi assicurati che sia posizionata correttamente. Quindi stirare direttamente sul retro lucido della carta transfer. Questo non mi ha mai causato problemi, ma stai usando il tuo ferro. Prova prima. Lascia raffreddare la tavola e poi passala sotto l'acqua fredda. La carta di trasferimento dovrebbe staccarsi e lasciare l'intera immagine. Usa un visualizzatore di diapositive/negativo 8x per esaminare il trasferimento e riempire eventuali pezzi mancanti. Buona fortuna.

Passaggio 8: saldatura delle parti sul PCB

Parti di saldatura su PCB
Parti di saldatura su PCB
Parti di saldatura su PCB
Parti di saldatura su PCB
Parti di saldatura su PCB
Parti di saldatura su PCB

Esistono numerose risorse su Internet che descrivono il processo di saldatura dei componenti elettronici ai PCB. Vedi, ad esempio, il tutorial sulla saldatura su ladyada.net. L'ordine in cui si installano i componenti non ha molta importanza, anche se ho scoperto che lavorare dal più piccolo al più grande è il più semplice. I cavi LED/lampeggiante sono abbastanza lunghi da poterli modellare in un motivo simile a una menorah nella latta. Montare con cura i LED e piegare i cavi in modo che la parte superiore di ciascun LED sia posizionata in modo che possa sporgere dal rispettivo foro. Questo può essere impegnativo, ma sembra davvero bello quando finalmente funziona. Se i cavi vengono lasciati troppo a lungo, i LED potrebbero essere schiacciati e fuori posizione dal coperchio del barattolo. Nota Il LED più a destra non è nello stesso orientamento degli altri otto. Assicurati di controllare la polarità dei LED rispetto al layout della scheda quando li installi. Questo LED è collegato al pin RESET, quindi puoi scegliere di non installarlo. Nota I fili del jack audio e dei resistori condividono un foro. Per comodità, metti i resistori in posizione verticale in modo tale che il corpo del resistore non sia sopra il foro con il cavo audio. Preparare e installare il jack audio a questo punto o attendere che sia pronto per la saldatura nei resistori. Non è divertente dissaldare le resistenze in seguito.

Passaggio 9: lampeggianti

Blinkenlights
Blinkenlights

I LED devono essere protetti da resistori. Determina la caduta di tensione e i requisiti di corrente dei tuoi LED e calcola i resistori appropriati assumendo una sorgente da 5 V dal chip. Ci sono calcolatori online prontamente disponibili per farlo. Preparati un mucchio di luci lampeggianti. Quando li realizzi per questo progetto, taglia il catodo (cavo negativo/corto del LED dal lato appiattito) e salda il resistore molto vicino alla lente del LED. I LED formano una forma di menorah nella latta. Anche con il resistore che tocca quasi l'obiettivo, il LED più corto al centro sarà leggermente schiacciato dal coperchio del barattolo. Per evitare che si verifichino cortocircuiti negli stretti confini del barattolo, coprire ciascun resistore con un pezzo di tubo termoretraibile.

Passaggio 10: preparazione del portabatteria

Preparazione del portabatterie
Preparazione del portabatterie

Far scorrere piccoli pezzi di tubo termoretraibile lungo entrambi i cavi del supporto della batteria. Inserirli con cura nei fori del supporto e farli restringere in posizione. Questi forniscono un certo grado di protezione per i fili. (Questa istruzione è duplicata nella pagina Preparazione dell'interruttore a levetta.) Tagliare il filo nero a misura e saldare nel foro appropriato sul PCB. Il filo rosso è saldato direttamente all'interruttore a levetta; vedere le istruzioni in quella pagina per come procedere. In progetti precedenti ho tagliato le linguette di fissaggio del supporto della batteria. Dopo averlo fatto sul prototipo, ora me ne pento. La batteria non vuole rimanere saldamente in posizione. Lascia le linguette per avviarle e rimuovile solo se hai problemi a estrarre la batteria. Nonostante ciò, l'immagine mostra un portabatteria con le linguette tagliate. Questo perché l'ho recuperato da un altro progetto.

Passaggio 11: preparazione dell'interruttore a levetta

Preparazione dell'interruttore a levetta
Preparazione dell'interruttore a levetta

A seconda del tuo interruttore, potresti dover tagliare uno dei pin. Lo faccio con gli interruttori che uso, anche se potrebbe non essere del tutto necessario. Fai scorrere un piccolo pezzo di tubo termoretraibile lungo il cavo rosso del supporto della batteria. Spingere con cautela nel foro del supporto e restringersi in posizione. Fornisce un certo grado di protezione per il filo. (Questa istruzione duplica l'istruzione in Preparazione del portabatterie.) Far scorrere un altro piccolo pezzo di tubo termoretraibile sul filo rosso. Taglia e spella il filo a misura e applica della saldatura sia al pin sull'interruttore che all'estremità del filo. Saldare il cavo rosso dal supporto della batteria direttamente al pin esterno dell'interruttore. Far scorrere il pezzo di tubo termoretraibile sul giunto per proteggerlo e rinforzarlo. Il secondo filo va dal pin centrale dell'interruttore al PCB. Saldare il filo all'interruttore come descritto sopra. Proteggere il giunto con tubi termoretraibili. Saldare l'altra estremità al foro appropriato sul PCB.

Passaggio 12: preparazione del jack audio

Preparazione del jack audio
Preparazione del jack audio
Preparazione del jack audio
Preparazione del jack audio
Preparazione del jack audio
Preparazione del jack audio

I cavi per il jack audio sono tutti piuttosto corti. Applicare un po' di saldatura ai pin del jack e al filo, quindi saldarli in posizione. Far scorrere pezzi di tubo termoretraibile sulle articolazioni per proteggerle e rinforzarle. Il filo di terra può essere saldato direttamente nel suo foro. Le estremità dei fili di segnale condividono ciascuna un foro con un'estremità di un resistore. Preparare il filo e la resistenza attorcigliando le estremità e applicando un po' di saldatura. Il foro in cui vanno devono essere praticati a 3/64 per accogliere i due fili. Saldare in posizione.

Passaggio 13: preparazione dell'interruttore a pulsante

Preparazione dell'interruttore a pulsante
Preparazione dell'interruttore a pulsante
Preparazione dell'interruttore a pulsante
Preparazione dell'interruttore a pulsante
Preparazione dell'interruttore a pulsante
Preparazione dell'interruttore a pulsante

Preparare un pezzo corto di filo solido formandolo a forma di U in modo che si adatti perfettamente alla parte inferiore dell'interruttore. Applicare una goccia di saldatura su entrambi i lati del foro - lasciare spazio per l'interruttore - e posizionare l'interruttore in posizione. Fondere la saldatura e spingere il filo in posizione. Lascia che la saldatura si indurisca e ripeti sull'altro lato. Questo dovrebbe posizionare e fissare l'interruttore in posizione. Preparare due pezzi di filo intrecciato tagliando a misura e spelando entrambe le estremità. Assicurati che i fili siano abbastanza lunghi da consentire l'apertura completa del coperchio della teglia. Saldare a due pin appropriati sull'interruttore e quindi far scorrere pezzi di tubo termoretraibile sui giunti per proteggerli e rafforzarli. Saldare ad altre estremità nei rispettivi fori sulla scheda. Infilare con cura i fili tra i LED e assicurarsi che non si trovino sopra le batterie. Ho allargato i due pin sull'interruttore in modo che il LED più a destra scivoli tra di loro. I pin dell'interruttore sono MOLTO fragili (gli altri due si sono staccati). Nota che il pin PA7 PCINT7 6 è impostato per ascoltare un cambiamento di stato. Premendo l'interruttore a pulsante si alza il pin e viene eseguito SIGNAL(PCINT0_vect). In base alla durata della pressione del pulsante, o non succede nulla (antirimbalzo grezzo), lo stato è avanzato (pressione breve) o il programma è avanzato (pressione lunga).

Passaggio 14: chiusura del coperchio

Chiusura del coperchio
Chiusura del coperchio

Se tutto va bene a questo punto, vorrai chiudere la scatola. Nel fare ciò, devi stare molto attento alla posizione dei LED. Trovo che devo spingerli in posizione con un cacciavite a lama sottile in modo che siano posizionati correttamente nei loro fori. Applica una leggera pressione verso il basso sul coperchio mentre muovi i LED in posizione e alla fine scivoleranno al loro posto. Potrebbe essere necessario posizionare i fili in modo che cadano tra e non sui componenti. Inoltre, potrebbe essere necessario piegare i perni dell'interruttore a pulsante.

Consigliato: