Capisco Arduino: e adesso?


18

Bene, ho giocato abbastanza con Arduino da sentirmi abbastanza a mio agio. Qualunque cosa sia fatta ora sta imparando più l'elettronica di quanto non lo sia il lato Arduino.

Qual è il prossimo passo per il mio apprendimento? Arduino è un programmatore / controller combinato, quindi presumibilmente ho bisogno di interrompere quel collegamento e iniziare a lavorare con un chip controller separato dal controller, immagino? Qualcuno può indicarmi la giusta direzione?


Hai in mente un obiettivo o un progetto particolare?

Sono d'accordo. Per me si tratta solo di fare cose specifiche. Arduino è solo uno strumento come qualsiasi altra cosa.
Dirk,

Quello su cui sto lavorando in questo momento è un array LED multiplexato. Non è così difficile in Arduino, ma voglio liberarmi delle ruote da allenamento. Voglio dire, alla fine, c'è un chip ATmega168 sulla scheda Arduino. Se potessi capire come lavorarci direttamente, penso che soddisferebbe ciò che sto cercando di ottenere.
Chris B. Behrens,

In realtà sei abbastanza diretto con il chip con Arduino. Non ha molti driver o altro attaccato ai pin. Le intestazioni vanno direttamente lì. Forse un breadboarduino?
AngryEE,

@angryee - Penso che Chris intenda programmare direttamente il chip ATmega, senza le librerie Arduino IDE +, che potrebbero essere viste come ruote di allenamento.
J. Polfer,

Risposte:



12

Sono d'accordo con Joby - Arduino è fantastico, ma mi sento sempre soffocato dal quadro in cui mi circondano. Passerei ad usare direttamente la C sul tuo Arduino e creerei molte funzionalità di libreria fornite da zero. In genere preferisco la profondità prima dell'ampiezza: non iniziare solo su un'altra famiglia di microcontrollori utilizzando framework più forniti. Ulteriori informazioni su come implementare alcune di queste funzioni da soli.

Inizia con un programma funzionante e sostituisci le chiamate della libreria Arduino con le tue versioni una funzione alla volta. Imparerai molto sui registri di controllo, i tempi, le operazioni sui bit, ecc. Se non lo hai già fatto. Leggi la scheda tecnica ATMega328 in profondità: tutto ciò di cui hai bisogno è lì.

Prova un IDE diverso come AVR Studio o Code :: Blocks. Scopri la toolchain GCC. Prova tecniche di codifica più avanzate: test unitari, copertura, profilazione, controllo di lanugine / stecche. Metti un RTOS su Arduino.

Un programmatore / controller combinato non è un segno di debolezza, è solo una scelta progettuale. L'unica "debolezza" che potrebbe derivarne è la mancanza di debug in-circuit. Compra un Drago AVR e avrai leccato per $ 50.


9

Penso che cosa imparare dopo dipende da cosa vuoi che Arduino non possa fare. Cioè, non vedo molto senso programmare un chip simile per fare le stesse cose, ma con mezzi più difficili.

Ecco alcuni punti deboli di Arduino:

  • Threading, ovvero esecuzione di due sezioni di codice interlacciate in modo che sembra che vengano eseguite contemporaneamente
  • Materiale Internet con larghezza di banda media o elevata, come lo streaming audio
  • Calcolo serio o attività che richiedono un calcolo rapido per una risposta rapida
  • Tutto ciò che è reso più semplice dalla presenza di un filesystem, come la registrazione dei dati o la gestione delle immagini

Posso immaginare due direzioni da seguire:

  1. Schede integrate più potenti con piccoli sistemi operativi, come Beagleboard o Gumstix
  2. Aumenta le prestazioni dei piccoli chip Atmega usando gli interrupt di processo.

Posso aggiungere maggiori dettagli se commentate quale direzione è più attraente. (Il secondo è decisamente più economico.)


È divertente ... programmare un chip simile per fare le stesse cose, ma con mezzi più difficili è esattamente quello che ho in mente :). Un po 'di storia - Sono un architetto del software con molti anni di esperienza. Il software, il calcolo, il file system ... sono tutte cose facili per me. Ciò di cui ho davvero bisogno per sbattere la testa è l'elettronica. Il motivo per cui sto cercando di andare oltre Arduino è semplicemente che voglio essere in grado di produrre dispositivi monouso che non hanno il sovraccarico fisico (e di prezzo) di una scheda Arduino. Penso da quello che hai detto, # 2 è quello che sto cercando.
Chris B. Behrens,

Caspita ... quel commento sembrava davvero egoistico. Non intendevo in questo modo ... comunque, volevo solo liberarmi delle ruote di allenamento hardware che Arduino mi offre. In particolare, sto lavorando su un array di LED, simile a LOLShield, anche se penso che lo farò invece su multiplex. Posso farlo con Arduino, ma senza di esso, ho bisogno di una direzione. TIA.
Chris B. Behrens,

Ah, più cose elettroniche invece di cose software ... Forse avresti avuto una bella esperienza con l'interfacciamento dei sensori / registrazione dati. Non è glamour ma per interfacciare i sensori con la tua scheda dovresti imparare qualche altra cosa sull'hardware. Arduino in realtà non ha molte ruote di allenamento hardware - certamente non tante quanto il software. Forse un robot che incorpora diversi tipi di sensori: ultrasuoni, distanza IR, encoder dell'albero, ecc. Certamente possibile solo con Arduino e molto altro hardware.
AngryEE,

7

Impara I2C, SPI, 1wire e prova a interfacciare i sensori con tali interfacce. Leggi molti fogli di dati di tali sensori e cerca di capire tutto in essi. Poni domande quando sei bloccato. Scopri MODBUS (RTU / ASCII / TCP) o un protocollo simile che può aprire il tuo dispositivo al mondo dopo averlo incorporato nel dispositivo. Impara l'elettronica generale e prova a interfacciare relè, triac, cos'è pull up e pull down, cos'è sourcing e sink, come disegnare schemi e collegare driver di base al tuo MCU.


6

Per iniziare, potresti voler passare da Arduino come piattaforma ad AVR come piattaforma. Cioè, impara come programmare / utilizzare un microcontrollore AVR vergine per i tuoi progetti anziché Arduino. In questo modo, non dovrai acquistare un'altra scheda Arduino per ogni progetto che fai o per fare progetti con gli amici. Questo è un passaggio abbastanza semplice (un Arduino è solo un microcontrollore Atmel AVR convenzionale ma con una scheda e un bootloader speciali), ma è un grande passo per vendere / dare progetti agli amici. Anche la toolchain è simile: usi avr-gcc o avr-g ++ con make in combinazione con un'utilità di programmazione per installare il tuo programma.


È abbastanza semplice caricare il bootloader su un chip e saldare la propria scheda se si desidera dare via un progetto. Oppure ordina un kit RBBB per $ 12,50 ( goo.gl/0yqr ) senza bisogno di acquistare una scheda da $ 30 + per ogni progetto Arduino.
Davorak,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.