¿Debo comprar un Netduino o Arduino?

17

Estoy buscando comprar un NetDuino para algunos divertidos proyectos hobby hogareños.

¿Alguno de ustedes lo usó y cómo fue su experiencia?

¿Debería mirar la gama Arduino o FreeDuino en su lugar (o algo totalmente diferente)?

Decidí apegarme a NetDuino debido a mi conocimiento de C #, pero eso no es un requisito.

Gracias

PD. No estoy seguro de si esto pertenece a la wiki de la comunidad o no (orientación apreciada).

SetiSeeker
fuente
55
¿Qué quieres hacer con el tablero? Eso afectará tu elección.
Toby Jaffey
3
El microcontrolador ARM7 en NetDuino y el AVR de 8 bits en Arduino están en una clase completamente diferente. Es como si preguntaras si comprar un servidor o una netbook. Sin embargo, está ralentizando su servidor al ejecutar una máquina virtual inadecuada: el rendimiento será similar y está utilizando ambas herramientas para la misma tarea. ¿Realmente necesitas esa capa de abstracción?
Kevin Vermeer
@reemrevnivek - "Mal adaptado" uh ... es una capa de abstracción, pero ciertamente no está mal adaptado (y tampoco es un vm).
Connor Wolf
2
@Fake Name Parece que netduino (TinyCLR) no tiene un compilador JIT. Entonces, es una VM / intérprete. tinyclr.com/faq/#13
Toby Jaffey
1
Las máquinas virtuales son las que ejecutan Smalltalk, Java, Python, etc. Significa cualquier máquina abstraída, ejecutando un conjunto de instrucciones diferente del "metal desnudo". No solo una PC virtualizada.
Joe Koberg

Respuestas:

16

Me encanta C # y encuentro que los beneficios de productividad del desarrollo en C # con Visual Studio son un factor muy fuerte a favor de Netduino. No quisiera pooh-pooh Netduino porque "C # no es para microcontroladores / entornos integrados" como indican otras respuestas aquí.

Puede hacer proyectos muy divertidos y aprender mucho sobre la conexión de diferentes entradas físicas y dispositivos de salida utilizando Netduino de la misma manera que puede hacerlo con Arduino o ir "desnudo" y hacer la gestión directa de MCU del AVR, PIC u otros microcontroladores.

Dicho esto, me quedo con Arduino por las siguientes razones:

  • Mejor apoyo de la comunidad. Arduino solo tiene muchas más muestras, ejemplos y una comunidad más grande a la que puede recurrir.
  • Netduino no tiene una historia para ir más allá del costoso enfoque de kit / prototipos. ¿Vas a implementar una exhibición de arte interactiva que requiera docenas de microcontroladores que ejecutan tu código? Prepárese para pagar $ 35 cada uno para los Netduinos. Con Arduino, puede crear un prototipo en el Arduino y luego implementarlo en una solución única de MCU con el microcontrolador AVR por menos de $ 10 cada uno.

Entonces, diría que si sus habilidades en C son polvorientas o inexistentes, le encanta C # y Visual Studio, y solo quiere jugar algunos proyectos de pasatiempo que no necesitarán escalar a un costo mayor, vaya a Netduino.

Si se siente cómodo en C, o se siente cómodo con la ayuda de muestras de código y la comunidad, y desea estar más cerca del metal y mirar eventualmente alejarse del enfoque "prototipo" de Netduino y Arduino, vaya Arduino para comenzar.

Pat James
fuente
1
Sé que esta es una respuesta un poco antigua, pero quería agregar que, dado que Netduino es de código abierto (incluido el hardware), puede comprar el uC de cualquier persona y actualizar el firmware de Netduino. Entonces podría usar la plataforma Netduino en un producto de producción.
Unkwntech
"De todos modos, su conocimiento de C # es casi inútil en una plataforma integrada, así que no ponga demasiado peso en eso". - Qué tontería decir. Netduino está incrustado, es genial, y es C # ...
Jonesome Reinstate Monica
11

De todos modos, su conocimiento de C # es casi inútil en una plataforma integrada, así que no le dé demasiada importancia a eso.

Iría con un Arduino o uno de los clones, no porque .Net es el demonio, sino porque eso es lo que todos los demás están usando, por lo que será mucho más fácil obtener ayuda y obtener el código de las personas.

Una vez que haya mojado los pies, bájese y pruebe diferentes cosas.

dren.dk
fuente
¿Está abogando por el lenguaje de cableado utilizado en Arduino, o está eliminando (y contribuyendo) el código C en avrfreaks ?
Kevin Vermeer
1
@reemrevnivek Arduino es solo C ++ con algunas bibliotecas. No lo clasificaría como un "lenguaje" - es C ++ con un encabezado y pie de página adjunto
Toby Jaffey
Whoops, cableado es lo que quise decir.
Kevin Vermeer
Encuentro esto un poco extraño, casi tomaría "Una vez que hayas mojado los pies, por supuesto, bifurca" como una sugerencia para ir con Netduino para comenzar porque el elemento de programación debería ser mucho menos problemático, lo que permite desarrollar las "otras" habilidades necesarias.
Murph
1
Mal comentario, dren.dk simplemente está equivocado. Yo y muchos otros usamos netduino y C # todo el día.
Jonesome Reinstate a Monica
7

Actualmente tengo un Arduino, mbed y, por último, un Netduino a mi disposición para el desarrollo / uso de aficionados. Nunca me gustó trabajar con Arduino, tal vez porque el editor no es muy bueno, y definitivamente estoy mimado como desarrollador de C #. Cuando recibí mi mbed, me gustó mucho el desarrollo, pero la depuración sigue siendo dolorosa porque tienes que usar declaraciones impresas para descubrir qué está pasando.

Cuando está desarrollando un producto, o simplemente jugando, la mayor parte de su tiempo al principio se dedica a la depuración ... y cuando está depurando, desea tener puntos de interrupción. Me resulta muy difícil volver al hardware integrado que no ofrece ningún tipo de puntos de interrupción.

Todavía no tengo experiencia con JTAG, pero cada micro que he visto hasta ahora (además de los módulos RabbitCore) requiere que permita la depuración a través de puntos de interrupción. ¡Imagine mi sorpresa cuando conecté mi Netduino hoy y pude pasar mi código en VS2010! Estaba extremadamente complacido por esto.

Personalmente, no me preocuparía por el tamaño de la huella, los males de .NET y Microsoft, etc., etc. Solo me importaría poder depurar de manera rápida y eficiente, para poder hacer las cosas .

Dave
fuente
Hacer las cosas es una lección que se aprende mejor por las malas
@kurtnelle, ¿parece que estás abogando por no usar .NET MF?
Dave
@Dave, sí, lo estoy. Esto es solo porque probé el viejo microcontrolador de 8 bits basado en c y hice muy poco para un gran esfuerzo.
@kurtnelle, pero con .NET MF en realidad estoy haciendo mucho con muy poco esfuerzo.
Dave
2
@Dave, perdón por la respuesta disléctica anterior; Estoy abogando por .NET MF
5

Como usuario de BasicStamp durante casi 20 años y usuario de NetDuino durante solo 2 semanas (nunca he usado un Arduino), diría que NetDuino es una gran plataforma. Las dos características principales que estoy disfrutando: la facilidad de programación (¡y los puntos de interrupción!) En VisualStudio y el ADC de alta resolución en el tablero son razones clave. Los pocos escudos Arduino que probé de SparkFun han funcionado perfectamente con NetDuino.

AlfredBr
fuente
4

Personalmente, no soy fanático de C # o .NET. Soy un C ludita. Entonces, mi elección de plataforma se reduce a la que tiene las características de hardware que quiero (flash, RAM, velocidad de reloj, número de ADC, número de temporizadores, etc.).

Dicho esto, puedo imaginar que C # / .NET sea útil para la creación rápida de prototipos:

  • El manejo de cadenas probablemente será mucho más simple
  • La serialización de RPC y objetos es probablemente fácil. Sospecho que solo puede empujar objetos C # sobre un enlace en serie. RPC probablemente "simplemente funciona"
  • Portabilidad: .NET es una máquina virtual, por lo que el código debe ejecutarse en otras placas o incluso en PC
  • La recolección de basura simplifica la implementación de muchos algoritmos

Por supuesto, todo esto tiene un costo:

  • La huella del código es mayor (especialmente cuando se tienen en cuenta las bibliotecas estándar)
  • El uso de RAM es mayor (todo es un objeto, ¿está todo escrito?)
  • El recolector de basura probablemente se entromete con el rendimiento en tiempo real
  • Si una característica de hardware no es compatible con las bibliotecas .NET, no puede usarla (a menos que implemente las características usted mismo, para lo cual necesitará C / C ++, vea los comentarios)

Y, sobre todo, al usar sus habilidades de C # en una plataforma integrada, realmente no está aprendiendo nada sobre dispositivos integrados.

Sí, hará el trabajo, pero, ¿dónde está la diversión en eso?

Toby Jaffey
fuente
Me pregunto qué tan difícil es parchear las bibliotecas .NET utilizadas en NetDuino con una nueva función. Parece que están usando C ++ para construir su .NET SDK, en SecretLabs.NETMF.Hardware / Stubs - archivos fuente . Suspiro.
Kevin Vermeer
@reemrevnivek No es mi idea de diversión. Si está reparando el tiempo de ejecución, podría comenzar con C / C ++
Toby Jaffey
1
@Joby: soy un ludito en C como tú, pero solo quería señalar que era posible: dijiste "Si una característica de hardware no es compatible con las bibliotecas .NET, no puedes usarla", que No es del todo cierto.
Kevin Vermeer
1
¿Has visto realmente algún punto de referencia? Es difícil para mí imaginar que un 16MHz 8bit ejecuta cosas a la misma velocidad que un micro de 60MHz 32bit. Especialmente porque las bibliotecas Arduino también ralentizan las cosas, ninguna de las cuales está realmente optimizada para la velocidad tampoco. Y también tiene objetos (si no tantos como se usan en .NET). ¿Y es muy diferente de Arduino? Si no hay una biblioteca Arduino que admita una función ... debe implementarla usted mismo (llamando directamente a los registros de hardware, etc.)
davr
@davr Respuesta editada
Toby Jaffey
3

Encontré que el mbed es un maravilloso sustituto del Arduino.

La biblioteca de software está más orientada a C ++, completa con todo el azúcar sintáctico de la sobrecarga del operador de asignación. Además, se configura un sistema para que los usuarios puedan publicar y documentar bibliotecas de códigos, que luego pueden buscarse e importarse fácilmente en proyectos.

Otra buena característica es la capacidad de tratar el dispositivo como una memoria USB y simplemente colocar los .binarchivos directamente en la unidad.

Desafortunadamente, el IDE es comparable al del arduino. Además, está en línea . Esto es muy bueno (se puede usar en cualquier PC, no requiere instalación) y muy malo (no se puede reprogramar fácilmente sin una conexión a Internet).

El costo de la junta es de $ 60, pero tienen un esquema de patrocinio, donde donarán juntas a proyectos interesantes siempre que se documente el progreso y se haga público el código fuente.

Eric
fuente
Me encanta la idea de patrocinio, tendré que investigar eso.
Dave
2

Soy principalmente un desarrollador de C #. Compré un Arduino en lugar de un Netduino debido a la disponibilidad del código fuente. No sería fácil integrar Netduino con ladrillos electrónicos Arduino porque tendrás que reescribir algunas de las muestras desde cero.

Jader Dias
fuente
2

Cuando lea 'C # no es adecuado para plataformas integradas', recuerde que las personas mayores de cierta edad ya han escuchado lo que dijeron al menos una vez sobre 'C' y luego nuevamente sobre C ++ en sus vidas ...

Por supuesto, es monumentalmente un `` desperdicio '' de las capacidades subyacentes del procesador, pero la capacidad de ejecutar su bucle inactivo 1000 veces más rápido de lo que necesita en lugar de 10 veces más rápido de lo que necesita nunca enriqueció a nadie.

usuario1844
fuente
Los bucles inactivos no son relevantes. Hay algunos usos de MCU en los que los ciclos son importantes, como la captura o generación de señales de video, la fabricación de su propio osciloscopio, el análisis FFT en tiempo real de la señal de entrada y muchos otros. Puedes olvidarte de C # por estos. Por otro lado, si sus requisitos son más para hacer "software similar a una PC en un paquete pequeño", entonces C # y .NET MF no son una mala opción en absoluto ...
Avra
2
... Para tal experiencia, preferiría elegir una placa ARM integrada basada en Linux, pero ese es un tema para alguna otra discusión. El punto es que para alguien que acaba de ingresar al mundo incrustado con un fondo C #, .NET MF no es un mal primer paso en absoluto.
Avra
1

Si desea sentir el metal desnudo y, por ejemplo, poder generar o capturar la señal de video directamente, ahí es donde cada ciclo importa y AVR / Arduino le permitirá hacerlo. Si desea un mayor nivel de abstracción, un mayor nivel de programación y comodidad de depuración, recolector de basura y puede vivir con el hecho de que, como en Windows, no controla todo, elija NetDuino o FEZ Domino. Dado que ambos tienen ARM en su hogar, apuesto a que si es necesario, puede matar .NET MF en el tablero y mostrar el código GCC ARM de metal desnudo directamente desde algún Eclipse como IDE con la ayuda de un pequeño depurador JTAG. Investigar un poco. El problema podría ser que si falta el encabezado JTAG, deberá realizar algunas soldaduras.

revs avra
fuente
C y C ++ no son lo suficientemente buenos para el video. Necesitarás Verilog para eso :)
Hay al menos 10 proyectos que crean videos con solo software. La mayoría son B / N o gris, pero incluso hay sistemas de color y juegos con solo video generado por software AVR. Los proyectos OSD también existen. También hay algunos ejemplos de captura de cuadros de video de baja resolución con AVR sin FPGA. Simplemente google alrededor ...
avra
Cuando digo video me refiero a 1080p 24bit color. ¿Puede C ++ incrustado hacer eso?
0

Después de un largo paréntesis de electrónica y programación, volví a él debido a un proyecto que uno de mis hijos está haciendo en la universidad. Aprendí electrónica cuando los tubos eran la norma y la programación con interruptores (configurar dirección, configurar datos, cargar, almacenar, en binario) y tarjetas perforadas. Con los años, aprendí y utilicé cada avance de lenguaje electrónico y de programación que requirió mucho esfuerzo y tiempo concentrados. En consecuencia, estoy muy agradecido por los avances en los microcontroladores y lo increíblemente baratos que son, incluidas las placas de desarrollo como Arduino, Netduino, etc. Los argumentos sobre Arduino vs Netduino, etc., me recuerdan las batallas de Microsoft vs Apple. como línea de comando vs GUI. No importa qué plataforma, lenguaje de programación, etc., se use siempre que sea apropiado para el resultado.

usuario3175
fuente
-1

Si .net MF proporcionó bibliotecas que son capaces de lo que puede hacer el código máquina / metal puro, ... entonces la única abstracción (. Net MF) se convierte en una buena. Además de tomar más espacio y ejecutar un GC (¿qué debería ser eficiente?)

Vijay
fuente