Per un programmatore esperto Arduino o qualcos'altro?


11

Il mio background:

Ho fatto software per un bel po 'e sono più o meno esperto in C, C ++, Java, Ruby, Erlang, Haskell, Lua e Python. Ho anche preso un corso di elettronica di laboratorio, ma a parte un breve laboratorio con una pompa, si trattava di ottenere un segnale in e A / D e da lì in un x86 con LabView ( non la mia scelta di ambienti di programmazione), vorrei tornare a armeggiare con l'hardware con un occhio verso l'automazione domestica. (Credo di poter fare di meglio allora questo per meno di $ 500)

Domanda:

Stavo per tagliare i denti su un Arduino, ma più leggo più sembra che il vantaggio principale di quel sistema sia che è semplice da programmare. È un buon posto per iniziare un ragazzo di software (che deve ancora comprare un saldatore) o c'è qualcosa che mi si adatti meglio?

(PS ho più tempo che denaro)

Risposte:


4

Per quanto riguarda le schede di valutazione del microcontrollore pronte per l'uso fuori dal cancello, c'è ovviamente la famiglia Arduino. ma considera anche il launchpad msp430 per $ 4,30. buon set di istruzioni e prestazioni simili a quelle dell'AVR con una tendenza verso bassi costi / potenza. Per $ 20 puoi ottenere il rilevamento stm32f4 (da non confondere con il rilevamento della linea di valore stm32 o la famiglia stm8) che è generalmente inferiore a quello che pagheresti per un arduino utilizzabile ($ 35- $ 50) ma gira intorno all'arduino 168Mhz, punto mobile unità, cache, ecc. Nell'estremità superiore della fascia di prezzo di Arduino c'è un altro braccio, il mbed (mbed.org), che è probabilmente il più vicino all'esperienza sandbox di Arduino.

Se vuoi rimanere in uno standbox e semplicemente effettuare chiamate API, probabilmente Arduino è dove vuoi vivere, c'è il mega per più prestazioni o vai con l'acero leaflabs che è basato sul braccio ma tenta di fornire l'esperienza sandbox Arduino.

Puoi ottenere molte più prestazioni, un buon rapporto qualità-prezzo, ecc. Se ti assumi un po 'più di responsabilità e conoscenza di ciò che sta succedendo. Raccomando tutte e tre le piattaforme (avr, msp, arm / thumb) e più fornitori (avr e msp sono bloccati ma arm è venduto da tutti con periferiche e I / O diversi). Ad esempio, potresti essere abituato a una piattaforma che non ha pull up sulle linee gpio e che deve utilizzare componenti esterni in cui un altro chip o fornitore lo fornisce su chip con un rapporto prezzo / prestazioni comparabile. Allo stesso modo potresti voler sbattere un po 'una porta seriale o un bus spi, ma scopri che per lo stesso prezzo, potenza, dimensioni, ecc., Alcuni altri fornitori hanno hardware per aiutare in quella interfaccia.

se non altro è nel tuo interesse come programmatore e qualcuno che vuole entrare nell'elettronica per hobby per saperne di più su ciò che sta accadendo al di fuori della sandbox. Come modo per entrare in questo mondo dell'elettronica per hobby, Arduino è una transizione molto comoda dalla programmazione dell'applicazione su un sistema operativo. sparkfun ora ha alcuni kit che includono l'interfaccia seriale e alcuni periperhal c'è un kit lilypad (una piattaforma arduino) e forse un kit pro, entrambi non sono il fattore di forma scudo arduino se questo conta. sparkfun vende al dettaglio in scatola e molti altri gusti di arduinos, l'uno, ecc. (le schede st e msp menzionate sopra dovresti iniziare dal sito web ti o st o andare su github.com/dwelch67 e ho collegamenti alle varie schede nel mio esempi).


8

Sono anche un ragazzo software di giorno. Circa dieci anni fa ho iniziato con i francobolli BASIC di Parallax, e dopo un lungo periodo sono tornato di recente a progetti integrati. Inizialmente ho guardato l'Arduino e le sue diverse parti e mi sono reso conto che potevo semplicemente saltare il prezzo della scheda Arduino e prendere alcuni ATMega168 e ricominciare. Questo ha funzionato per la maggior parte, tuttavia mi sono imbattuto spesso in problemi in cui avere una scheda prefabbricata sarebbe stato bello poiché non avrei potuto rovinare l'assemblaggio di base.

Alla fine ho ordinato un Arduino e adoro tutto ciò che riguarda la lavagna e le biblioteche. Non sono un fan di "IDE", quindi faccio clic su "Usa editor esterno" e utilizzo l'IDE esclusivamente per compilare e eseguire il flashing del software sulla scheda. Di solito inizio un progetto o un'idea con la scheda Arduino e poi lo porto in un mega chip. Questo aiuta a contenere i costi utilizzando solo le parti necessarie per un progetto, ma mi consente comunque di realizzare rapidamente un prototipo.

In bocca al lupo!


6

Arduino è un'ottima introduzione alla programmazione di un microcontrollore.

C'è una grande differenza tra scrivere software per PC e scrivere firmware per un microcontrollore.

L'Arduino sarebbe un buon punto di partenza per orientarsi con l'interfaccia con le periferiche, ecc. Senza impantanarsi nel gestire stranezze specifiche del chip e simili.

Ma, come ho detto, è un'introduzione.

Inizia con Arduino, quindi passa a cose più grandi e migliori.

Uso parecchio la famiglia di microcontrollori PIC, ma ho ancora il mio fedele Arduino che utilizzo per provare idee e testare le cose rapidamente.


6

Poiché "Arduino" comprende diverse cose, penso che potrebbe essere utile guardarle separatamente:

  • Sul lato hardware, un dispositivo compatibile con Arduino è fondamentalmente un microcontrollore ATMega con un certo bootloader. Di solito una scheda compatibile con Arduino già pronta includerà anche altri dispositivi elettronici di supporto, come un'interfaccia porta USB o seriale, regolatore di tensione, intestazioni dei pin per un facile accesso ai pin, ecc. I dispositivi hardware sono abbastanza convenienti se si desidera la funzionalità USB e insieme al bootloader preprogrammato ti fa risparmiare la necessità di acquistare un programmatore separato per caricare il tuo software. Quindi sì, Arduino (e cloni compatibili) sono utili come dispositivi hardware durante la prototipazione; per la build finale potresti voler creare il tuo solo con le parti di cui hai bisogno, quindi non è necessario inserire un Arduino completo in ogni progetto.

  • Dal punto di vista software, la libreria Arduino è come qualsiasi libreria di programmazione e la sua utilità dipende dalle tue esigenze. Personalmente lo trovo occasionalmente utile per la prototipazione rapida (ad es. La funzionalità della porta seriale), ma come programmatore esperto non mi piacciono molte delle semplificazioni (specialmente la numerazione dei pin). In ogni caso è possibile utilizzare facilmente le librerie AVR originali anziché o in aggiunta alla libreria Arduino anche se si programma per un dispositivo Arduino e / o si utilizza l'IDE Arduino. Quindi, usa qualsiasi libreria Arduino che ritieni utile, specialmente durante la prototipazione, ma impara l'AVR sottostante mentre procedi (vedi fonti Arduino e scheda tecnica ATMega).

  • Infine, l'IDE di Arduino è l'ambiente di programmazione grafica con un semplice editor, una console con porta seriale, un sistema di build simile a "make" (nascosto all'utente) e strumenti (un front-end per) per caricare il software sul dispositivo reale . Personalmente odio l'IDE e non lo uso mai, preferendo lavorare sulla riga di comando, ma ovviamente questa è solo una questione di preferenze personali.


1
Non so come possano chiamare quella mostruosità un IDE. È il pezzo più orribile di [espletivo cancellato] immaginabile. Ho Anjuta quasi pronto a fare tutto per me ora che l'IDE (non molto) dell'Arduino fa.
Majenko,

4

La tua domanda è troppo aperta per una risposta diretta, quindi tutto ciò che possiamo fare è mostrarti i compromessi.

L'adruino è un microcontrollore ricoperto di zucchero silente per le masse. È ottimizzato per eseguire rapidamente le operazioni di base con il minimo di dover imparare cose.

Al centro di un arduino c'è un normale microcontrollore, che puoi usare anche direttamente. Il vantaggio è che puoi scegliere il tuo micro esattamente per quello che vuoi fare, non avere l'idea di qualcun altro di cosa dovresti fare tra te e il micro e puoi fare tutto ciò che il micro nudo è in grado di fare, che è un molto più che emerso attraverso l'astrazione arduino. Il rovescio della medaglia è che dovrai effettivamente imparare qualcosa, leggere alcune 100 pagine del foglio dati è solo l'inizio e non otterrai una gratificazione immediata.

Solo tu puoi dire cosa è meglio per te. Vuoi abbracciare il tuo idiota interiore ed essere guidato felicemente attraverso il giardino per sempre essere relegato a dire "eh?", "Cosa?" E "Oh, è così carino!" alle cose elettroniche? O preferiresti percorrere il lungo sentiero oscuro per emergere con un singolo LED lampeggiante dopo molta fatica e difficoltà? Vuoi solo guidare l'auto o imparare come funziona il motore in modo da poter ottenere le massime prestazioni e modificarlo tu stesso?


1
Olin, sei una vecchia scuola! Lo dico assolutamente come un complimento ... Ma non sono rispettosamente d'accordo con te su questo problema. Trattare con software mediocre progettato su un sistema operativo mal concepito ha aggiunto zero alla mia comprensione dell'elettronica. In effetti ha assorbito giorni di tempo prezioso in cui avrei potuto imparare cose utili da persone ben informate come te. Dico "Lunga vita ad Arduino!"
Kaelin Colclasure il

2
@KaelinColclasure Il tuo commento è un po 'confuso per me. Hai problemi con software e sistemi operativi scadenti, ma Olin non lo affronta affatto. Semmai puoi considerare ciò che Arduino fa per te un livello di astrazione come il modo in cui un sistema operativo è un livello di astrazione. Imparare a usare un arduino fa ben poco per aiutarti a diventare un ingegnere migliore poiché l'overhead comporterà costi aggiuntivi che non sono necessari. Detto questo, penso che Arduino sia un'ottima piattaforma, ma non dovrebbe essere considerato un sostituto per comprendere veramente il mondo dell'elettronica integrata.
Kellenjb il

Yay analogie con le auto! Olin, per molte persone non si tratta di arrancare e apprendere il grintoso nocciolo dell'elettronica e diventare un ingegnere. Molte persone vogliono solo scegliere uno strumento che consenta loro di raggiungere il loro obiettivo e risolvere il loro problema. L'apprendimento dell'elettronica è un mezzo per raggiungere un fine in molti casi e non è il fine stesso. Non tutti sono in questo gioco per gli stessi motivi per cui lo sei.
nemik,

2
Sì? Allora di cosa parla "abbraccia il tuo idiota interiore"? Andiamo, forza. Stai abbracciando il tuo idiota interiore con Windows o Linux o OS X invece di scrivere il tuo sistema operativo come un Real Man ™? Quelli sono sistemi operativi ricoperti di zucchero, stupiti per le masse.
nemik,

1
@nemik: Abbracciare il tuo idiota interiore era una specie di scherzo, proprio come arrancare lungo il lungo sentiero oscuro ... Naturalmente c'è anche un po 'di verità in entrambi.
Olin Lathrop il

4

Come programmatore, preferisco di gran lunga programmare in un linguaggio utilizzato da molte altre persone, in questo modo ci sono molti libri, articoli, colleghi, ecc. Disponibili per aiutarmi ad imparare.

Nel mondo dei computer a scheda singola, Arduino è senza dubbio il più popolare con il massimo respiro di supporto. È una scelta eccellente per il tuo primo microcomputer.

Considerando quanto sono economiche queste cose (la maggior parte sono meno di $ 50), potresti prendere in considerazione l'idea di ottenere più di un tipo.

Per chi ha familiarità con Microsoft Visual Studio e C #, Netduino è una scelta eccellente in quanto ha una toolchain che già conoscerai.

Se il tuo ambiente preferito è Unix, ti potrebbe piacere una scheda come il Raspberry Pi che uscirà a gennaio 2012:

Che cos'è un Raspberry Pi? Raspberry Pi è un computer delle dimensioni di una carta di credito che si collega alla TV e alla tastiera. È un piccolo PC capace che può essere utilizzato per molte delle cose che fa il tuo PC desktop, come fogli di calcolo, elaborazione testi e giochi. Riproduce anche video ad alta definizione. Vogliamo vederlo essere utilizzato dai bambini di tutto il mondo per imparare a programmare.

Quando sarà disponibile il dispositivo per l'acquisto? Speravamo di avere il Raspberry Pi disponibile su ordinazione entro la fine del 2011. Ci aspettiamo ancora di mettere all'asta alcuni dei nostri primi lotti di schede beta prima della fine dell'anno (tieni d'occhio il sito dopo Natale); ci trasferiremo alla produzione principale a gennaio.

Quanto costerà? Il modello A costerà $ 25 e il modello B $ 35.

La buona notizia è che ci sono molti microcontrollori a basso costo disponibili e molti altri ne escono continuamente.

Infine c'è il Launchpad Texas Instruments MSP-430 che è disponibile per $ 4,30 con spedizione gratuita. Ad un prezzo così economico, come non ne compri uno?


4

Inizia con Arduino per dare forma alla tua idea e realizzare un prototipo funzionante minimo e impara a interfacciarti con le basi di cui avrai bisogno per il tuo prodotto (motori, sensori, seriale per la comunicazione).

Successivamente, quando si desidera più funzionalità (dispositivi USB, Ethernet), passare ai chip ARM Cortex serie M. ARM a 32 bit significa che sono molto potenti e ora spesso più economici e con più periferiche rispetto ai chip di fascia alta 8 o 16 bit come AVR e PIC. Il mbed di NXP (http://mbed.org) è un'introduzione molto delicata a quella piattaforma se venite da Arduino.


2

Quando la gente dice che Arduino è "semplice da programmare", ciò che realmente intendono è che la toolchain praticamente funziona. Funziona su un Mac, funziona su Windows e funziona su Linux. Colleghi la tua scheda, scrivi il tuo codice, lo carichi e il gioco è fatto.

Per offrire un po 'di contrasto aneddotico, io stesso ho semplicemente "aggiornato" l'STK600 di Atmel e il loro ambiente di sviluppo AVR Studio 5. Funziona solo su Windows, quindi ho dovuto installare e far funzionare VMware sul mio Mac. Quindi ho dovuto installare il complicato driver USB Jengo, che ha impiegato una giornata a leggere post sul forum pignoli. Quindi ho dovuto capire perché potevo parlare con la scheda di sviluppo dall'IDE, ma non con la scheda figlia ATmega2560 fornita con l'STK600 ... (Il cavo JTAG è stato inserito male, perché ho seguito un tutorial illustrato sul Web che si è rivelato avere un'immagine che mostra il cavo collegato all'indietro.)

Finora non ho scritto una riga di codice con AVR Studio 5, ma probabilmente ho trascorso più tempo a manipolarlo di quanto non abbia tempo totale usando l'IDE di Arduino. E ho scritto dozzine di schizzi di Arduino.

Il linguaggio in cui stai programmando è fondamentalmente C ++ con un po 'di pre-elaborazione. Con il tuo background non avrai problemi a capire come trapiantare gli schizzi che vuoi in un ambiente "pro" in caso di necessità. Per me, la necessità è nata solo una volta che sono andato oltre a armeggiare con l'hardware Arduino e ho iniziato a progettare la mia scheda. YMMV, ovviamente ...

Spero che questo ti aiuti. :-)


3
Non prendertela con te ... ma non sono di nuovo d'accordo con te. Il motivo per cui la gente dice che un Arduino è semplice da programmare è perché hanno essenzialmente aggiunto uno strato di astrazione che altrimenti non otterresti. Si richiama anche C ++, questo è molto raro da vedere nel mondo embedded. A volte è necessario per progetti specifici, ma aggiunge anche alcune spese generali che non puoi avere quando stai cercando di tagliare ogni centesimo.
Kellenjb,

@Kellenjb, posso codificare C ++ quasi senza overhead, a volte le sezioni possono avere fino al 10%, ma molte sezioni con 0 overhead. Ma sì, è raro perché devi prestare maggiore attenzione a ciò che stai facendo con la tua lingua, ma aspetta, lo stesso è vero in C. Ho visto gli utenti provare malloc () in c prima su incorporato per non ottenere grandi risultati.
Kortuk,

1

Arduino rende una piattaforma di passaggio flessibile che fornisce A / D, D / A (almeno come PWM) un sacco di I / O digitali, un LED programmabile sulla scheda, da seriale a USB e moduli già pronti disponibili per molti altri tipi di hardware. Se vuoi fare il roll-per-te per l'esperienza di apprendimento, allora non ne hai bisogno. Se vuoi che una piattaforma faccia funzionare qualcosa solo per divertimento o mentre stai progettando la versione hardware a basso costo di quel qualcosa, allora è pronto per andare quando lo sei. Si tratta di decisioni di progettazione, strategiche ed economiche che sono perfettamente valide da prendere in qualunque modo si adatti ai tuoi obiettivi. Non c'è niente di "stupido" nel fare compromessi - questo è quello che fanno gli ingegneri - e dovrebbero fare - ogni giorno.


1

L'esperienza di John coincide quasi esattamente con la mia 15 anni fa, quando mi sono ritirato dall'insegnamento dell'informatica (fondamentalmente Assembly Language Programming e C) agli studenti universitari. Mi sono reso conto che tenere il passo con i progressi dell'informatica sarebbe stato proibitivo, quindi mia moglie ha suggerito di tornare all'elettronica come hobby, visto che mi era piaciuto fare l'ingegnere elettrico negli anni '50. Questo l'ho fatto, anche se avevo incontrato solo brevemente i transistor e non avevo mai visto un amplificatore operazionale, quindi avevo un sacco di delizioso apprendimento da fare. Ho mantenuto il mio amore per Assembly Language e quando Microchip Pics è apparso a metà degli anni '90 mi sono appassionato.

Non posso confrontarli con Arduino, di cui non so nulla, ma un vantaggio dell'uso di Pics è che è economico da configurare, poiché Microchip fornisce tutte le informazioni gratuitamente, con un IDE brillante, e puoi imparare a usarle , come ho fatto io, da ciò che pubblicano. Puoi iniziare con un programmatore fatto in casa, un sacco di progetti su Internet, quindi costerebbe solo qualche chilo per un paio di chip Pic per iniziare. Ma consiglierei PicKit 2 che ha molte funzionalità integrate per facilitare lo sviluppo del programma. Forse non PicKit 3, però, vedi:

http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/ Sebbene sia stato aggiornato, vedere le note su questo riferimento.

C'è un gran numero di libri su Pics, ma alcuni sono spazzatura, attenzione. Per un facile inizio, un'eccellente introduzione a Pic è:

"Progettazione di sistemi integrati con microcontrollori PIC: principi e applicazioni" [Libro in brossura] di Tim Wilmshurst, £ 22-66 su Amazon, che include sia Assembler che C. Ho evitato C per un po 'perché sembrava togliermi l'intimità con l'hardware fornito da Assembler, ma con il compilatore C fornito da Microchip è possibile visualizzare anche il codice Assembler generato.

Per una copertura complessiva, buona e tecnica (non temere di inserire la matematica) dell'elettronica moderna, consiglio: "Elettronica pratica per inventori" 2 / E [libro in brossura] di Paul Scherz, £ 19-95 su Amazon.

Ho pagato £ 26-99 e £ 22-99 rispettivamente per questi libri nei negozi e non me ne pento affatto.

Non riesco a coprire abbastanza qui, sarei felice di corrispondere via e-mail su questo argomento: 417weston@gmail.com (e, per ogni evenienza, sono molto diffidente nei confronti di ciò che leggo, scarico o rispondo).

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.