Arduino / Processing versus .NET Micro Framework? ¿Mejor idioma? ¿Mejor hardware?

10

He estado jugando con Arduino por un tiempo, y estoy en el proceso de pasar de principiante a intermedio. Me gustaría recibir algunas opiniones sobre el .NET Micro Framework , en términos de rendimiento y disponibilidad de hardware.

Soy un programador .NET, pero he encontrado Procesando para que Arduino sea bonito mucho cero fricción ... Es tan cerca de C # que cualquier cosa que quiera hacer ni siquiera requiere un viaje a la documentación.

De todos modos, ¿cuál es mejor?

    
pregunta Chris B. Behrens

9 respuestas

16

Si desea pasar de principiante a intermedio, el lenguaje que necesita aprender es C. Incluso si deja de lado todo el debate de bloqueo de Windows, debe ser muy bueno en la programación en C antes de poder hacer calidad trabaja en un microcontrolador en un lenguaje de nivel superior como .NET Micro o C ++.

Los sistemas integrados se componen de una pirámide de conocimiento, y realmente necesitas saber al menos algunos de cada paso para ser un buen diseñador:
^ Código de usuario
^^ Sistemas operativos
^^^ El lenguaje C
^^^^ Lenguaje ensamblador
^^^^^ Arquitectura del microcontrolador
^^^^^^ Diseño digital
^^^^^^^ Semiconductores
^^^^^^^^ Electrónica básica (ley de Ohm)

El marco Arduino proporciona un gancho conveniente para los aficionados en la pirámide en algún lugar entre el lenguaje C y un sistema operativo.

Específico a su pregunta de .NET Micro Framework, el Acerca de dice:

  

El típico .NET Micro Framework   El dispositivo tiene un procesador de 32 bits sin   unidad de gestión de memoria externa (MMU)   y podría tener tan poco como 64K de   memoria de acceso aleatorio (RAM).

Además, el folleto lo diferencia de Windows Mobile , Windows Embedded , CE 6.0 y .NET Compact Framework, y lo compara con los sistemas operativos Linux, en tiempo real, Java y personalizados. Este es un gran salto desde el framework Arduino / Processing.

Su Arduino tiene un procesador de 8 bits con 1k de RAM. Además de la pérdida de potencia de 8 bits frente a la de 32 bits, también se ejecuta menos de la mitad de la velocidad que la mayoría de los procesadores enumerados. Si bien no lo desalentaría para que no se mueva a un procesador de 32 bits, lo recomendaría como un movimiento intermedio a avanzado.

Es realmente fácil gastar mucho tiempo y memoria con algunas líneas en C # o C ++, que son insignificantes en un procesador de doble núcleo que se ejecuta en un par de gigahercios con gigabytes de RAM, pero que pueden hacer una gran diferencia en un dispositivo embebido Hasta que no seas bueno en lenguaje ensamblador y / o C, o un gurú en C # o C ++, no recomendaría usarlo para la programación integrada.

Entonces, comenzaría con la descarga de WinAVR , y programaría una simple rutina de parpadeo de LED en C. Si C es totalmente confuso para Usted, haga un poco de código nativo ("Hello World") en su PC, y luego pase al microcontrolador, pero eso no debería ser necesario. Luego, continúe con la comunicación a través de UART, comience a usar interrupciones y rehaga algunos de sus proyectos Arduino en C. Luego, encuentre (o cree) una nueva placa de desarrollo con un microcontrolador diferente, tal vez un PIC o una ARM , y algunas golosinas como una pantalla LCD, Ethernet, SD card , o lo que quieras, e intenta aprender un nuevo sistema. Una vez que llegues allí, sabrás mejor a dónde quieres ir.

¡Estaremos aquí para ayudarte en el camino!

    
respondido por el Kevin Vermeer
7

No tengo experiencia con ".NET Micro Framework", pero desconfío mucho de cualquier cosa que implique ejecutar una máquina virtual en plataformas integradas de baja potencia. Simplemente me parece un desperdicio para mí. Necesita más procesadores de energía, más memoria, más consumo de energía, para lograr el mismo efecto que ejecutar una plataforma más dedicada que se compile en un código de máquina nativo. Posiblemente el motivo por el que mi teléfono Android de 528 MHz que ejecuta una máquina virtual (similar a JVM) a menudo se siente más lento que mi Palm Treo de 312 MHz, que tiene varios años, y que ejecuta aplicaciones compiladas para código de máquina nativo.

Desde una vista rápida, .NET MF requiere un procesador ARM, que es un paso más arriba en power & La complejidad de los chips ATMega de 8 bits utilizados en Arduino.

Mi sugerencia es que si Arduino hace lo que usted quiere, quédese con eso. De lo contrario, puede ver los chips ATMega o ATXmega más potentes, y por encima de eso, trabajar con ARM directamente en C / C ++, sin la capa adicional de traducción .NET encima.

    
respondido por el davr
4

Si desea pasar al nivel intermedio, debe probar una plataforma fuera del entorno de Arduino. Hay muchos de ellos para elegir, puede permanecer en 8 bits, incluso con un MCU Atmel o pasar a uno de otro proveedor. Use un IDE, escriba el código C, entienda cómo funciona una MCU, escriba su propio código de cargador de arranque o use un programador en el circuito y siga moviéndose.

Pero si realmente quieres intentar escribir en C # para los microcontroladores, prueba esto: enlace

Utiliza una MCU mucho más grande, la huella típica de .NET es aproximadamente 512K de memoria flash y 256k de RAM.

    
respondido por el Andre Oliveira
4

Acabo de ver el Netduino que puede ser un compromiso interesante para usted. No tengo idea de las especificaciones o detalles del sistema, pero parece que usa .NET Micro, por lo que suena como una buena manera de al menos probar ese marco.

    
respondido por el Otherdave
3

El mayor problema individual para mí con Processing / Arduino es la falta de un depurador decente. Tengo un dragón AVR, pero esto no ayuda mucho porque (a) el depurador de AVR Studio es lento y con errores, o (b) la depuración en Eclipse es simplemente lenta y, aunque no tanto, todavía con errores. No he tenido la oportunidad de probarlo en WinAVR, pero eso es lo siguiente en la lista.

Por supuesto, no hay ningún depurador en el IDE de Arduino.

Una vez que se sale de las aplicaciones simples y comienza a crear aplicaciones que tienen que hacer cosas involucradas a nivel de red cableada e inalámbrica, es bastante frustrante. Esta es la razón principal por la que estoy analizando seriamente el .NET MF: he estado jugando con el SDK y pronto tendré un poco de hardware.

    
respondido por el user3247
2

Es posible que desee revisar Netduino . Está diseñado para ser compatible con el diseño y los pines de arduino, y ejecuta .NET Micro Framework. ¡Así que puedes codificar en C # e incluso depurar dentro de Visual Studio!

Hasta ahora he encontrado que es muy bueno y fácil de trabajar. Si bien no he encontrado muchos tutoriales, creo que puedes portar muchas cosas de Arduino. Como soy un experto, pude portar fácilmente la configuración y el código de un fotoresistor / fotocélula desde un tutorial de Arduino.

    
respondido por el John Bubriski
1

Podrías considerar hacer un desarrollo C de estilo Arduino en un STM32 (ARM M3), a través de uno de varios proyectos de código abierto. LeafLabs y xduino tiene hardware en funcionamiento y cadenas de herramientas basadas en Arduino. He estado usando la placa Leaflabs Maple cuando necesito un microcontrolador de 32 bits, sobre los chips Atmega normales

    
respondido por el Lepton
1

Puede consultar enlace , que es un IDE agradable y fácil de usar para Atmel y escribir algunos IC lo usé profesionalmente y es muy bueno, más como el nivel de conveniencia que obtienes de IDE como Visual Studio. Tengo que Eclipse ser un poco torpe para el desarrollo de Android, no tan elegante como uno comprado.

Tengo Netduino en el que he implementado un sistema de control Tricopter por diversión, que es en tiempo real y funciona de manera confiable, escrito en C # con Visual Studio 2010. La depuración en el dispositivo generalmente es excelente, lo tengo automáticamente sincronizando datos a través de wifi y tengo un pequeño servidor HTTP en el avión.

    
respondido por el Nick
0

Usamos .NET Micro Framework en aplicaciones de producción (dispositivos de medición de precisión). Funciona bien.

Los microprocesadores de hoy han alcanzado el estado en el que se puede usar el paradigma 'crear-ver-cambiar-ver-ver ...'. Las cantidades de memoria son bastante grandes y baratas ahora, por lo que es muy probable que no se acumulen en condiciones de falta de memoria.

Y como desarrollador de C #, sabes que crear un perfil adecuado para alcanzar una condición deseada es una mejor manera de vivir que adivinar qué más y más complicado debes hacer al crear tu código para hacer que tu código (y tal vez no) sea un poco más rápido.

    
respondido por el MajesticRa

Lea otras preguntas en las etiquetas