Dovrei comprare un Netduino o un Arduino?


17

Sto cercando di acquistare un NetDuino per alcuni divertenti progetti di home hobby.

Qualcuno di voi l'ha usato e come è stata la sua esperienza?

Dovrei guardare invece la gamma Arduino o FreeDuino (o qualcosa di totalmente diverso)?

Ho deciso di attenermi a NetDuino a causa della mia conoscenza di C #, ma questo non è un requisito.

Grazie

PS. Non sono sicuro che appartenga o meno al wiki della community (guida apprezzata).


5
Cosa vuoi fare con la tavola? Ciò influenzerà la tua scelta.
Toby Jaffey,

3
Il microcontrollore ARM7 su NetDuino e l'AVR a 8 bit su Arduino rientrano in una classe completamente diversa. È come se stessi chiedendo se acquistare un server o un netbook. Tuttavia, stai rallentando il tuo server eseguendo una macchina virtuale inadatta: le prestazioni saranno simili e utilizzerai entrambi gli strumenti per la stessa attività. Hai davvero bisogno di quello strato di astrazione?
Kevin Vermeer,

@reemrevnivek - "Disadattato" uh ... è uno strato di astrazione, ma non è certamente inadatto (e nemmeno un vm, in realtà).
Connor Wolf,

2
@Fake Name Sembra che netduino (TinyCLR) non abbia un compilatore JIT. Quindi, è una macchina virtuale / interprete. tinyclr.com/faq/#13
Toby Jaffey,

1
Le macchine virtuali sono ciò su cui eseguono Smalltalk, Java, Python, ecc. Significa qualsiasi macchina sottratta, che esegue un set di istruzioni diverso dal "bare metal". Non solo un PC virtualizzato.
Joe Koberg,

Risposte:


16

Adoro C # e trovo che i vantaggi in termini di produttività dello sviluppo in C # con Visual Studio siano un fattore molto forte a favore di Netduino. Non farei Netohino pooh-pooh perché "C # non è per microcontrollori / ambienti embedded" come indicano altre risposte qui.

Puoi realizzare progetti molto divertenti e imparare molto sul collegamento di diversi input fisici e dispositivi di output usando Netduino proprio come puoi con Arduino o andando "bare metal" e facendo la gestione MCU diretta di AVR, PIC o altri microcontrollori.

Detto questo, sto attaccando Arduino per i seguenti motivi:

  • Migliore supporto della comunità. Arduino ha solo molti più esempi, esempi e una comunità più grande su cui puoi attingere.
  • Netduino non ha una storia per andare oltre il costoso approccio kit / prototipazione. Stai per implementare una mostra d'arte interattiva che richiede decine di microcontrollori che eseguono il tuo codice? Preparati a sborsare $ 35 ciascuno per i Netduinos. Con Arduino puoi prototipare su Arduino e quindi implementare su una soluzione MCU a ossa nude con il microcontrollore AVR per meno di $ 10 ciascuno.

Quindi direi che se le tue abilità in C sono polverose o inesistenti, ami C # e Visual Studio e vuoi solo armeggiare su alcuni progetti di hobby che non dovranno ridimensionare dove il costo diventa un problema più grande, vai su Netduino.

Se ti senti a tuo agio in C, o ti senti a tuo agio con l'aiuto di esempi di codice e della community, e vuoi essere più vicino al metal e guardare alla fine allontanarsi dall'approccio "prototipo" di Netduino e Arduino, vai Arduino per iniziare.


1
So che questa è una risposta un po 'vecchia, ma volevo aggiungere che, dal momento che Netduino è completamente open-source (incluso l'hardware), puoi acquistare l'UC da chiunque e inviare il firmware Netduino ad esso. Quindi potresti usare la piattaforma Netduino in un prodotto di produzione.
Unkwntech,

"La tua conoscenza di C # è quasi inutile su una piattaforma integrata, quindi non dare troppo peso a questo." - Che cosa sciocca da dire. Netduino è incorporato, oscilla, ed è C # ...
Jonesome Ripristina Monica

11

La tua conoscenza di C # è quasi inutile su una piattaforma integrata, quindi non dare troppo peso a questo.

Andrei con un Arduino o uno dei cloni, non perché .Net è il diavolo, ma perché è quello che usano tutti gli altri, quindi avrai un tempo molto più semplice per ottenere aiuto e sottrarti al codice delle persone.

Una volta bagnati i piedi, diramati e prova cose diverse.


Stai sostenendo il linguaggio Wiring usato su Arduino o stai facendo il mooping di (e contribuendo a) il codice C su avrfreaks ?
Kevin Vermeer,

1
@reemrevnivek Arduino è solo C ++ con alcune librerie. Non lo classificherei come un "linguaggio" - è C ++ con un'intestazione e un piè di pagina collegati
Toby Jaffey,

Whoops, Wiring è ciò che intendevo.
Kevin Vermeer,

Trovo che sia un po 'strano prenderei quasi "Una volta bagnati i piedi, senz'altro diramati" come suggerimento per iniziare con Netduino perché l' elemento di programmazione dovrebbe essere molto meno un problema - permettendo a uno di sviluppare le "altre" competenze necessarie.
Murph,

1
Cattivo commento, dren.dk è semplicemente sbagliato. Io e molti altri utilizziamo netduino e C # tutto il giorno.
Jonesome ripristina Monica

7

Al momento ho un Arduino, mbed e, infine, un Netduino a mia disposizione per lo sviluppo / uso hobbistico. Non mi è mai piaciuto lavorare con Arduino, forse perché l'editor non è molto buono e sono sicuramente viziato come sviluppatore C #. Quando ho ricevuto il mio mbed, mi è piaciuto molto lo sviluppo di questo, molto meglio, ma il debug è ancora doloroso perché devi usare le istruzioni di stampa per capire cosa sta succedendo.

Quando stai sviluppando un prodotto o stai semplicemente rovinando, all'inizio gran parte del tuo tempo è dedicato al debug ... e quando esegui il debug, vuoi avere punti di interruzione. Ho un momento molto difficile tornare all'hardware incorporato che non offre alcun tipo di breakpoint.

Non ho ancora esperienza con JTAG, ma ogni micro che ho visto finora (oltre ai moduli RabbitCore) lo richiede per consentire il debug tramite punti di interruzione. Immagina la mia sorpresa quando ho collegato Netduino oggi e sono stato in grado di scorrere il mio codice in VS2010! Sono stato estremamente contento di questo.

Personalmente, non mi preoccuperei delle dimensioni del footprint, dei mali di .NET, di Microsoft, ecc. Mi interesserebbe solo poter eseguire il debug in modo rapido ed efficiente, quindi posso solo fare cose .


Fare cose è una lezione che è meglio apprendere nel modo più duro

@kurtnelle sembra che tu stia sostenendo di non utilizzare .NET MF?
Dave,

@Dave, Sì, lo sono. Questo solo perché ho provato il vecchio microcontrollore a 8 bit basato su c e ho fatto ben poco per molto sforzo.

@kurtnelle ma con .NET MF sto davvero facendo molto con il minimo sforzo.
Dave,

2
@Dave, scusa per la risposta dislessica in precedenza; Sto sostenendo .NET MF

5

Come utente BasicStamp da quasi 20 anni e un utente NetDuino per sole 2 settimane (non ho mai usato un Arduino), direi che NetDuino è una piattaforma eccezionale. Le due caratteristiche principali che mi piacciono: la facilità di programmazione (e punti di interruzione!) In VisualStudio e l'ADC ad alta risoluzione sulla scheda sono le ragioni principali. I pochi scudi Arduino che ho provato da SparkFun hanno funzionato perfettamente con NetDuino.


4

Personalmente, non sono un fan di C # o .NET. Sono un cuddite. Quindi, la mia scelta della piattaforma dipende dalle caratteristiche hardware che desidero (flash, RAM, velocità di clock, numero di ADC, numero di timer, ecc.).

Detto questo, posso immaginare che C # /. NET sia utile per la prototipazione rapida:

  • La gestione delle stringhe sarà probabilmente molto più semplice
  • La serializzazione di RPC e oggetti è probabilmente semplice. Ho il sospetto che tu possa semplicemente spingere oggetti C # su un collegamento seriale. RPC probabilmente "funziona"
  • Portabilità: .NET è una macchina virtuale, quindi il codice dovrebbe essere eseguito su altre schede o anche su PC
  • La garbage collection rende molti algoritmi più semplici da implementare

Naturalmente, tutto ciò ha un costo:

  • L'impronta del codice è maggiore (specialmente quando si tiene conto delle librerie standard)
  • L'utilizzo della RAM è maggiore (tutto è un oggetto, tutto è digitato?)
  • Il garbage collector probabilmente si intromette con prestazioni in tempo reale
  • Se una funzionalità hardware non è supportata dalle librerie .NET, non è possibile utilizzarla (a meno che non si implementino le funzionalità da soli, per le quali è necessario C / C ++, vedere i commenti)

E, soprattutto, usando le tue abilità C # su una piattaforma integrata non stai davvero imparando nulla sui dispositivi integrati.

Sì, farà il lavoro, ma dov'è il divertimento?


Mi chiedo quanto sia difficile patchare le librerie .NET utilizzate su NetDuino con una nuova funzionalità. Sembra che stiano usando C ++ per creare il loro .NET SDK, in fondo a SecretLabs.NETMF.Hardware / Stubs - file di origine . Sospiro.
Kevin Vermeer,

@reemrevnivek Non è la mia idea di divertimento. Se stai rattoppando il runtime, potresti anche iniziare con C / C ++
Toby Jaffey,

1
@Joby - Sono un Luddite come te, ma volevo solo sottolineare che era possibile - Hai detto "Se una funzionalità hardware non è supportata dalle librerie .NET, non puoi usarla", che non è del tutto vero.
Kevin Vermeer,

1
Hai visto dei benchmark? È difficile per me immaginare che un 16MHz a 8 bit funzioni alla stessa velocità di un 60MHz a 32 bit micro. Soprattutto dal momento che anche le librerie di Arduino rallentano le cose - nessuna di queste è davvero ottimizzata per la velocità. E ha anche oggetti (se non quanti ne sono usati in .NET). Ed è molto diverso da Arduino? Se non esiste una libreria Arduino che supporti una funzione ... devi implementarla tu stesso (chiamando direttamente i registri hardware ecc.)
davr

@davr Risposta modificata
Toby Jaffey,

3

Ho trovato il mbed un meraviglioso sostituto dell'Arduino.

La libreria software è più orientata al C ++, completa di tutto lo zucchero sintattico del sovraccarico dell'operatore di assegnazione. Inoltre, viene creato un sistema in modo tale che gli utenti possano pubblicare e documentare librerie di codici, che possono quindi essere facilmente ricercate e importate in progetti.

Un'altra buona caratteristica è la capacità di trattare il dispositivo come una chiavetta USB e di inserire semplicemente i .binfile nell'unità.

Sfortunatamente, l'IDE è paragonabile a quello dell'arduino. Inoltre, è online . Questo è sia molto buono (può essere utilizzato su qualsiasi PC, nessuna installazione richiesta), sia molto male (non può essere facilmente riprogrammato senza una connessione Internet).

Il costo del consiglio è di $ 60, ma hanno uno schema di sponsorizzazione, in cui doneranno consigli a progetti interessanti a condizione che i progressi siano documentati e il codice sorgente reso pubblico.


Adoro l'idea della sponsorizzazione - dovrò esaminarla.
Dave,

2

Sono principalmente uno sviluppatore C #. Ho comprato un Arduino invece di un Netduino a causa della disponibilità del codice sorgente. Integrare Netduino con i mattoncini elettronici Arduino non sarebbe facile perché dovrai riscrivere alcuni dei campioni da zero.


2

Quando leggi "C # non è adatto alle piattaforme integrate", ricorda che le persone di età superiore a una certa età hanno già sentito dire almeno una volta di "C" e poi di nuovo di C ++ nelle loro vite ...

Ovviamente è enormemente "dispendioso" per le capacità sottostanti del processore, ma la possibilità di eseguire il ciclo di inattività 1000 volte più veloce del necessario anziché 10 volte più veloce di quanto non sia mai necessario arricchire nessuno.


I loop inattivi non sono rilevanti. Ci sono alcuni usi della MCU in cui i cicli contano, come l'acquisizione o la generazione del segnale video, la creazione del proprio oscilloscopio, l'analisi FFT in tempo reale del segnale di ingresso e molti altri. Puoi dimenticare C # per questi. D'altra parte, se i tuoi requisiti sono più orientati alla creazione di "software simile a un PC in un piccolo pacchetto", C # e .NET MF non sono affatto una cattiva scelta ...
avra

2
... Per una tale esperienza, preferirei scegliere qualche scheda ARM incorporata basata su Linux, ma questo è un argomento per qualche altra discussione. Il punto è che per chi sta appena entrando nel mondo embedded con uno sfondo C #, .NET MF non è affatto un primo passo negativo.
avra

1

Se vuoi sentire il bare metal e, ad esempio, essere in grado di generare o acquisire direttamente il segnale video, è lì che ogni ciclo è importante e AVR / Arduino ti consentiranno di farlo. Se desideri un livello superiore di astrazione, programmazione di livello superiore e comfort di debug, garbage collector e puoi vivere con il fatto che, come in Windows, non controlli tutto, scegli NetDuino o FEZ Domino. Poiché entrambi hanno ARM nel loro focolare, scommetto che se necessario puoi uccidere .NET MF sulla scheda e eseguire il flashing del codice ARM GCC in metallo nudo direttamente da alcuni Eclipse come IDE con l'aiuto di un piccolo debugger JTAG. Indaga un po '. Il problema potrebbe essere che se manca l'intestazione JTAG, dovrai eseguire delle saldature.


C e C ++ non sono abbastanza buoni per i video. Per questo avrai bisogno di Verilog :)

Ci sono almeno 10 progetti che creano video con solo software. La maggior parte sono in bianco e nero o in grigio, ma ci sono anche sistemi a colori e sistemi di gioco con solo video generati dal software AVR. Esistono anche progetti OSD. Ci sono anche alcuni esempi di acquisizione di fotogrammi video a bassa risoluzione con AVR senza FPGA. Solo google around ...
avra

Quando dico video intendo il colore a 1080p a 24 bit. Il C ++ incorporato può farlo?

0

Dopo una lunghissima pausa dall'elettronica e dalla programmazione, sono tornato a farlo a causa di un progetto che uno dei miei figli sta facendo all'università. Ho imparato l'elettronica quando le valvole erano la norma e la programmazione con interruttori a levetta (impostare indirizzo, impostare dati, caricare, memorizzare, in binario) e schede perforate. Nel corso degli anni, ho imparato e usato ogni progresso del linguaggio elettronico e di programmazione che ha richiesto molto tempo e sforzi concentrati. Di conseguenza, sono molto grato per i progressi nei microcontrollori e per quanto siano incredibilmente economici, comprese le schede di sviluppo come Arduino, Netduino, ecc. Gli argomenti su Arduino vs Netduino, ecc., Mi ricordano le battaglie Microsoft vs Apple come come riga di comando vs GUI. Non importa quale piattaforma, lingua di programmazione, ecc., Venga utilizzata purché sia ​​appropriata per il risultato.


-1

Se .net MF forniva librerie in grado di fare ciò che il puro codice macchina / metallo può fare, ... allora l'unica astrazione (. Net MF) diventa buona. Oltre a prendere più footprint ed eseguire un GC (che dovrebbe renderlo efficiente ??)

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.