He estado jugando con Arduino por un tiempo y estoy en el proceso de pasar de principiante a intermedio. Quisiera algunas opiniones sobre .NET Micro Framework , en términos de rendimiento y disponibilidad de hardware.
Soy un programador de .NET, pero descubrí que Processing for Arduino es prácticamente cero fricción ... Está 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?
arduino
.net-micro-framework
Chris B. Behrens
fuente
fuente
Respuestas:
Si desea pasar de principiante a intermedio, el lenguaje que necesita aprender es C. Incluso si deja de lado todo el debate sobre el bloqueo de Windows, debe ser muy bueno programando en C antes de poder realizar un trabajo de calidad en un microcontrolador en un lenguaje de nivel superior como .NET Micro o C ++.
Los sistemas integrados están compuestos por una pirámide de conocimiento, y realmente necesita 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 de microcontroladores
^^^^^^ Diseño digital ^^^^^^^
Semiconductores
^^^^^^^^ Electrónica básica (Ley de Ohm)
El marco Arduino proporciona un enlace conveniente para los aficionados a la pirámide en algún lugar entre el lenguaje C y un sistema operativo.
Específico a su pregunta sobre .NET Micro Framework, el Acerca de dice:
Además, el folleto lo diferencia de Windows Mobile , Windows Embedded , CE 6.0 y .NET Compact Framework, y lo compara con Linux, Real-Time, Java y sistemas operativos personalizados. Este es un gran salto desde el marco 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 32 bits, también funciona a menos de la mitad de la velocidad de la mayoría de los procesadores enumerados. Si bien no te desanimaría de pasar a un procesador de 32 bits, lo recomendaría como un movimiento intermedio a avanzado.
Es realmente fácil usar mucho tiempo y memoria con unas pocas líneas en C # o C ++, que son insignificantes en un procesador de doble núcleo que funciona a un par de gigahercios con gigabytes de RAM, pero que puede hacer una gran diferencia en un dispositivo integrado . Hasta que sea bueno en lenguaje ensamblador y / o C, o sea 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 a microcontrolador, pero eso no debería ser necesario. Luego, avance a la comunicación a través del UART, comience a usar interrupciones y rehaga algunos de sus proyectos de Arduino en C. Luego, busque (¡o cree!) Una nueva placa de desarrollo con un microcontrolador diferente, tal vez un PIC o un ARM , y algunos extras como una pantalla LCD, Ethernet, tarjeta SD o lo que quieras, y trata de aprender un nuevo sistema. Una vez que llegues allí, sabrás mejor a dónde quieres ir.
¡Estaremos aquí para ayudarlo en el camino!
fuente
No tengo experiencia con el ".NET Micro Framework", pero sospecho mucho de cualquier cosa que implique ejecutar una máquina virtual en plataformas integradas de baja potencia. Simplemente me parece un desperdicio. 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 compila en código máquina nativo. Posiblemente por qué mi teléfono Android de 528MHz con una máquina virtual (similar a JVM) a menudo se siente más lento que mi Palm Treo de 312MHz de varios años que ejecuta aplicaciones compiladas para el código de máquina nativo.
De un vistazo rápido, .NET MF requiere un procesador ARM, que está un paso por encima en potencia y complejidad de los chips ATMega de 8 bits utilizados en Arduino.
Mi sugerencia es que si Arduino hace lo que quieres, quédate con eso. De lo contrario, puede buscar los chips ATMega o ATXmega más potentes y, por encima, trabajar con ARM directamente en C / C ++, sin la capa de traducción .NET adicional encima.
fuente
Si desea pasar a 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. Utilice un IDE, escriba el lenguaje del código C, comprenda cómo funciona una MCU, escriba su propio código del gestor de arranque o use un programador en circuito y siga avanzando.
Pero si realmente quiere intentar escribir en C # para microcontroladores, intente esto: http://www.trygtech.com/products/sh7619_evb.php
Utiliza una MCU mucho más grande, la huella .NET típica es de aproximadamente 512K de memoria flash y 256k de RAM.
fuente
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 utiliza .NET Micro, por lo que parece una buena manera de al menos probar ese marco.
fuente
El mayor problema 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 tiene errores, o (b) la depuración en Eclipse es simplemente lenta y, aunque no tanto, todavía tiene errores. No he tenido la oportunidad de probarlo en WinAVR, pero ese es el siguiente en la lista.
Por supuesto, no hay depurador en Arduino IDE.
Una vez que salga de las aplicaciones simples y comience a crear aplicaciones que tienen que hacer cosas involucradas a nivel de red cableada e inalámbrica, es bastante frustrante. Esta es principalmente la razón por la que estoy analizando seriamente el .NET MF: he estado jugando con el SDK y tengo un poco de hardware apareciendo pronto.
fuente
Es posible que desee ver el Netduino . Está diseñado para ser compatible con el diseño y los pines de arduino, y ejecuta .NET Micro Framework. ¡Entonces puede 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. Siendo yo un novato, pude portar fácilmente una configuración y código de fotorresistencia / fotocélula de un tutorial de Arduino.
fuente
Podría considerar hacer el desarrollo de Arduino estilo C en un STM32 (ARM M3), a través de uno de varios proyectos de código abierto. LeafLabs y xduino tienen hardware de trabajo y cadenas de herramientas basadas en Arduino. He estado usando la placa Leaflabs Maple cuando necesito un microcontrolador de 32 bits, sobre chips Atmega normales
fuente
Podrías mirar http://www.hpinfotech.ro/html/cvavr.htm, que es un IDE fácil de usar para Atmel y escribir algunos CI que has usado profesionalmente y es muy bueno, más como el nivel de conveniencia que tienes obtener de IDE como Visual Studio. Tengo Eclipse para ser un poco torpe para el desarrollo de Android, no tan elegante como uno comprado.
Tengo Netduino, que he implementado un sistema de control Tricopter para divertirme, que es en tiempo real y funciona de manera confiable, escrito en C # con Visual Studio 2010. La depuración en el dispositivo es generalmente excelente, la sincronizo automáticamente a través de datos wifi y tengo un pequeño servidor HTTP en el avión.
fuente
Utilizamos .NET Micro Framework en aplicaciones de producción (dispositivos de medición de precisión). Funciona bien.
Los microprocesadores actuales han alcanzado el estado en el que puede usar el paradigma 'crear-ver-cambiar-ver-ver ...'. Las cantidades de memoria son bastante grandes y baratas ahora, por lo que probablemente no se acumulará con condiciones de falta de memoria.
Y como desarrollador de C #, sabe que un perfil adecuado para alcanzar la condición deseada es una mejor manera de vivir que adivinar qué más y más complicado debe hacer al crear su código para que su código (y tal vez no) sea un poco más rápido.
fuente