¿Para un programador experimentado Arduino o algo más?

11

Mi pasado:

He hecho software durante bastante tiempo, y soy más o menos competente en C, C ++, Java, Ruby, Erlang, Haskell, Lua y Python. También tomé una clase de electrónica de laboratorio, pero aparte de un breve laboratorio con una bomba, se trataba de obtener una señal y A / D y de allí a un x86 con LabView ( no es mi elección de entornos de programación) Me gustaría volver a jugar con el hardware con miras a la automatización del hogar. (Creo que puedo hacerlo mejor que esto por menos de $ 500)

Pregunta:

Iba a cortarme los dientes con un Arduino, pero cuanto más leo, más me parece que la principal ventaja de ese sistema es que es fácil de programar. ¿Es este un buen lugar para que comience un chico de software (que todavía necesita comprar un soldador) o hay algo que me convenga mejor?

(PD tengo más tiempo que dinero)

John F. Miller
fuente

Respuestas:

4

En cuanto a las placas de evaluación de microcontroladores listas para usar fuera de la puerta, existe la familia arduino, por supuesto. pero también considere la plataforma de lanzamiento msp430 por $ 4.30. Un buen conjunto de instrucciones y un rendimiento similar al AVR con una inclinación hacia la baja potencia / costo. Por $ 20, puede obtener el descubrimiento stm32f4 (que no debe confundirse con el descubrimiento de línea de valor stm32 o la familia stm8), que generalmente es menos de lo que pagaría por un arduino utilizable ($ 35- $ 50) pero recorre círculos alrededor del arduino 168Mhz, punto flotante unidad, cachés, etc. En el extremo superior del rango de precios de arduino hay otro brazo, el mbed (mbed.org), que es probablemente el más cercano a la experiencia de arduino sandbox.

Si desea permanecer en un standbox y simplemente hacer llamadas a la API, el arduino es probablemente el lugar donde desea vivir, existe el mega para obtener más rendimiento o ir con el arce leaflabs que se basa en el brazo pero intenta proporcionar la experiencia de arduino sandbox.

Puede obtener mucho más rendimiento, ganar su dinero, etc., si asume un poco más de responsabilidad y conocimiento sobre lo que está sucediendo. Recomiendo las tres plataformas (avr, msp, arm / thumb) y múltiples proveedores (avr y msp están bloqueados pero arm es vendido por todos con diferentes periféricos y E / S). Por ejemplo, puede estar acostumbrado a una plataforma que no tiene pull ups en las líneas de gpio y tiene que usar componentes externos donde otro chip o proveedor lo proporciona en un chip a un precio / punto de rendimiento comparable. Del mismo modo, es posible que le guste golpear un puerto serie o un bus spi, pero descubra que por el mismo dinero, potencia, tamaño, etc., otro proveedor tiene hardware para ayudar en esa interfaz.

Por lo menos, es lo mejor para usted como programador y alguien que quiera entrar en la electrónica de hobby para saber más sobre lo que está sucediendo fuera del sandbox. Como una forma de entrar en este mundo de la electrónica hobby, el arduino es una transición muy cómoda desde la programación de aplicaciones en un sistema operativo. sparkfun tiene algunos kits ahora que incluyen la interfaz en serie y algunos periperhals hay un kit de lilypad (una plataforma arduino) y tal vez un kit profesional, ambos no son el factor de forma del escudo arduino si eso es importante. sparkfun vende al por menor en caja y muchos otros sabores de arduinos, el uno, etc. (los paneles st y msp mencionados anteriormente deben comenzar en el sitio web de ti o st o ir a github.com/dwelch67 y tengo enlaces a los diversos tableros en mi ejemplos).

viejo contador de tiempo
fuente
8

También soy un chico de software por día. Hace unos diez años comencé con los sellos BASIC de Parallax, y después de un largo lapso recientemente volví a los proyectos integrados. Inicialmente, miré el Arduino y sus diferentes partes y me di cuenta de que podía saltear el precio de la placa Arduino y tomar algunos ATMega168 y comenzar de nuevo. Esto funcionó en su mayor parte, sin embargo, con frecuencia me encontré con problemas donde tener una placa preconstruida hubiera sido bueno ya que no podría haber arruinado el ensamblaje básico.

Finalmente ordené un Arduino y me encanta todo sobre el tablero y las bibliotecas. No soy un fanático del "IDE", así que hago clic en 'Usar editor externo' y uso el IDE únicamente para compilar y actualizar el software a la placa. Normalmente comienzo un proyecto o idea con la placa Arduino y luego la transfiero a un mega chip. Esto ayuda a mantener bajos los costos al usar solo las partes necesarias para un proyecto, pero aún así me permite encontrar rápidamente un prototipo.

¡Buena suerte!

Michael Dillon
fuente
6

El Arduino es una gran introducción a la programación de un microcontrolador.

Hay una gran diferencia entre escribir software para una PC y escribir firmware para un microcontrolador.

El Arduino sería un buen punto de partida para entender cómo interactuar con periféricos, etc., sin tener que atascarse al tratar con peculiaridades de chip específicas y demás.

Pero, como digo, es una introducción.

Comience con el Arduino y luego continúe con cosas más grandes y mejores.

Utilizo bastante la familia de microcontroladores PIC, pero todavía tengo mi confiable Arduino que utilizo para probar ideas y probar cosas rápidamente.

Majenko
fuente
6

Dado que "Arduino" comprende varias cosas, creo que puede ser útil mirarlas por separado:

  • En el lado del hardware, un dispositivo compatible con Arduino es básicamente un microcontrolador ATMega con un cierto cargador de arranque. Por lo general, una placa compatible con Arduino lista para usar también incluirá otros dispositivos electrónicos de soporte, como una interfaz de puerto serie o USB, regulador de voltaje, encabezados de clavijas para facilitar el acceso a las clavijas, etc. Los dispositivos de hardware son bastante asequibles si desea la funcionalidad USB y junto con el gestor de arranque preprogramado, le ahorra la necesidad de comprar un programador separado para cargar su software. Entonces, sí, los Arduino (y los clones compatibles) son útiles como dispositivos de hardware durante la creación de prototipos; para la compilación final, es posible que desee construir la suya propia con solo las piezas que necesita, por lo que no necesita poner un Arduino completo en cada proyecto.

  • En el lado del software, la biblioteca Arduino es como cualquier biblioteca de programación y su utilidad depende de sus necesidades. Personalmente, a veces me resulta útil para la creación rápida de prototipos (por ejemplo, la funcionalidad del puerto serie), pero como programador experimentado no me gustan muchas de las simplificaciones (especialmente la numeración de pines). En cualquier caso, puede usar fácilmente las bibliotecas AVR originales en lugar de, o además de, la biblioteca Arduino, incluso si programa para un dispositivo Arduino y / o usa el IDE Arduino. Por lo tanto, use las bibliotecas de Arduino que le resulten útiles, especialmente al crear prototipos, pero aprenda el AVR subyacente a medida que avanza (consulte las fuentes de Arduino y la hoja de datos de ATMega).

  • Finalmente, el Arduino IDE es el entorno de programación gráfica con un editor simple, una consola de puerto serie, un sistema de compilación tipo "make" (oculto para el usuario) y (un front-end para) herramientas para cargar su software en el dispositivo real. . Personalmente odio el IDE y nunca lo uso, prefiero trabajar en la línea de comando, pero obviamente esto es solo una cuestión de preferencia personal.

Arkku
fuente
1
No sé cómo pueden llamar a esa monstruosidad un IDE. Es la pieza más horrenda de [improperio eliminado] imaginable. Anjuta casi lo configuró para hacer todo por mí ahora que lo hace (no muy) IDE del Arduino.
Majenko
4

Su pregunta es demasiado abierta para una respuesta directa, por lo que todo lo que podemos hacer es mostrarle las compensaciones.

El adruino es un microcontrolador recubierto de azúcar tonto para las masas. Está optimizado para hacer cosas básicas rápidamente con el mínimo de tener que aprender cosas.

En el corazón de un arduino hay un microcontrolador ordinario, que también puede usar directamente. La ventaja es que puede elegir su micro por exactamente lo que quiere hacer, no tener la idea de otra persona de lo que debe hacer entre usted y el micro, y puede hacer lo que sea capaz de hacer el micro desnudo, que es una Mucho más que surgió a través de la abstracción arduino. La desventaja es que realmente tendrá que aprender algo, leer unas 100 páginas de hoja de datos es solo el comienzo, y no obtendrá una gratificación instantánea.

Solo tú puedes decir qué es mejor para ti. ¿Quieres abrazar a tu imbécil interior y ser conducido felizmente por el jardín para siempre relegado a decir "¿eh?", "¿Qué?" Y "¡Oh, qué lindo!" a las cosas electrónicas? ¿O prefiere caminar por el largo y oscuro camino para emerger con un solo LED parpadeante después de mucho trabajo y problemas? ¿Solo desea conducir el automóvil o aprender cómo funciona el motor para que pueda obtener el máximo rendimiento y ajustarlo usted mismo?

Olin Lathrop
fuente
1
Olin, eres de la vieja escuela! Me refiero a eso como un cumplido ... Pero estoy respetuosamente en desacuerdo con usted sobre este tema. Tratar con software diseñado de manera mediocre en un sistema operativo mal concebido ha agregado cero a mi comprensión de la electrónica. De hecho, ha absorbido días de tiempo valioso cuando podría haber estado aprendiendo cosas útiles de personas conocedoras como usted. Yo digo "¡Viva Arduino!"
Kaelin Colclasure
2
@KaelinColclasure Tu comentario es algo confuso para mí. Tiene problemas con el software y el sistema operativo deficientes, pero Olin no está abordando eso en absoluto. En todo caso, puede considerar lo que arduino hace por usted una capa de abstracción como la forma en que un sistema operativo es una capa de abstracción. Aprender a usar un arduino hace muy poco para ayudarlo a convertirse en un mejor ingeniero, ya que los gastos generales generarán costos adicionales que no son necesarios. Dicho esto, creo que Arduino es una gran plataforma, pero no debería considerarse un reemplazo para comprender verdaderamente el mundo de la electrónica integrada.
Kellenjb
¡Yay analogías de autos! Olin, para mucha gente, no se trata de caminar y aprender lo esencial de la electrónica y de convertirse en ingeniero. Mucha gente solo quiere elegir una herramienta que les permita lograr su objetivo y resolver su problema. Aprender la electrónica es un medio para un fin en muchos casos, y no es el fin en sí mismo. No todos están en este juego por las mismas razones que tú.
nemik
2
¿Sí? Entonces, ¿qué es esa charla sobre "abraza a tu idiota interior"? Vamos. ¿Está abrazando a su imbécil interno que ejecuta Windows o Linux o OS X en lugar de escribir su propio sistema operativo como un Real Man ™? Esos son sistemas operativos recubiertos de azúcar para las masas.
nemik
1
@nemik: Abrazar a tu imbécil interno fue una especie de broma, como caminar por el largo y oscuro camino ... Por supuesto, también hay algo de verdad en ambos.
Olin Lathrop
4

Como programador, prefiero programar en un lenguaje utilizado por muchas otras personas, de esa manera hay muchos libros, artículos, compañeros, etc. disponibles para ayudarme a aprender.

En el mundo de las computadoras de placa única, el Arduino es sin duda el más popular con el mayor aliento de apoyo. Es una excelente opción para su primer microordenador.

Teniendo en cuenta lo baratas que son estas cosas (la mayoría son menos de $ 50), es posible que desee considerar obtener más de un tipo.

Para alguien familiarizado con Microsoft Visual Studio y C #, Netduino es una excelente opción ya que tiene una cadena de herramientas que ya conocerá.

Si su entorno preferido es Unix, es posible que le guste una placa como la Raspberry Pi que saldrá en enero de 2012:

¿Qué es una Raspberry Pi? La Raspberry Pi es una computadora del tamaño de una tarjeta de crédito que se conecta a su televisor y un teclado. Es una pequeña PC capaz que se puede usar para muchas de las cosas que hace su PC de escritorio, como hojas de cálculo, procesamiento de textos y juegos. También reproduce videos de alta definición. Queremos ver que los niños de todo el mundo lo utilicen para aprender a programar.

¿Cuándo estará disponible el dispositivo para comprar? Esperábamos tener el Raspberry Pi disponible para ordenar a fines de 2011. Todavía esperamos subastar algunos de nuestros primeros lotes de placas beta antes de fin de año (vigile el sitio después de Navidad); Nos trasladaremos a la producción principal en enero.

¿Cuanto costara? El Modelo A costará $ 25 y el Modelo B $ 35.

La muy buena noticia es que hay muchos microcontroladores de bajo costo disponibles y salen más constantemente.

Finalmente, está el Launchpad MSP-430 de Texas Instruments que está disponible por $ 4.30 con envío gratis. A un precio tan barato, ¿cómo no comprar uno?

JonnyBoats
fuente
4

Comience con Arduino para desarrollar su idea y hacer un prototipo de trabajo mínimo y simplemente aprenda a interactuar con los conceptos básicos que necesitará para su producto (motores, sensores, serie para comunicación).

Más adelante, cuando desee más funcionalidad (dispositivos USB, Ethernet), pase a los chips ARM Cortex M-series. ARM de 32 bits significa que son muy potentes y ahora a menudo más baratos y con más periféricos que los chips de 8 o 16 bits de gama alta como los AVR y PIC. Mbed de NXP (http://mbed.org) es una introducción muy amable a esa plataforma si vienes de Arduino.

nemik
fuente
2

Cuando la gente dice que Arduino es "fácil de programar", lo que realmente quieren decir es que la cadena de herramientas básicamente funciona. Funciona en una Mac, funciona en Windows y en Linux. Conectas tu pizarra, escribes tu código, lo subes y listo.

Para ofrecer un poco de contraste anecdótico, yo solo "actualicé" al STK600 de Atmel y su entorno de desarrollo AVR Studio 5. Solo funciona en Windows, así que tuve que instalar y ejecutar VMware en mi Mac. Luego tuve que instalar el meticuloso controlador USB de Jengo, que tardó un día en leer publicaciones exigentes en el foro. Luego tuve que descubrir por qué podía hablar con la placa de desarrollo desde el IDE, pero no con la tarjeta secundaria ATmega2560 que venía con el STK600 ... (El cable JTAG estaba enchufado incorrectamente, porque seguí un tutorial ilustrado en el Web que resultó tener una imagen que muestra el cable conectado al revés).

Hasta ahora no he escrito una línea de código con AVR Studio 5, pero probablemente he pasado más tiempo jugando con él que el tiempo total usando el IDE de Arduino. Y he escrito docenas de bocetos de Arduino.

El lenguaje en el que está programando es básicamente C ++ con un poco de preprocesamiento. Con su experiencia, no tendrá problemas para descubrir cómo trasplantar cualquier boceto que desee a un entorno "profesional" más tarde si surge la necesidad. Para mí, la necesidad surgió solo una vez que fui más allá de jugar con el hardware Arduino y comencé a diseñar mi propia placa. YMMV, por supuesto ...

Espero que esto ayude. :-)

Kaelin Colclasure
fuente
3
No para molestarte ... pero no estoy de acuerdo contigo otra vez. La razón por la que la gente dice que un Arduino es simple de programar es porque esencialmente han agregado una capa de abstracción que de otro modo no obtendrías. También aparece C ++, esto es muy raro de ver en el mundo incrustado. A veces es necesario para proyectos específicos, pero también agrega algunos gastos generales que simplemente no puede tener cuando intenta cortar cada centavo.
Kellenjb
@Kellenjb, puedo codificar C ++ casi sin sobrecarga, a veces las secciones pueden tener hasta un 10%, pero muchas secciones con 0 sobrecarga. Pero sí, es raro porque tiene que prestar más atención a lo que está haciendo con su idioma, pero espere, lo mismo es cierto en C. He visto a los usuarios probar malloc () en c antes en incrustados para obtener excelentes resultados.
Kortuk
1

El Arduino hace una plataforma flexible de bajada que proporciona A / D, D / A (al menos como PWM) gran cantidad de E / S digitales, un LED programable en la placa, serie a USB y módulos listos para usar disponibles para muchos otros tipos de hardware Si desea rodar su propia experiencia de aprendizaje, entonces no la necesita. Si desea que una plataforma ponga en funcionamiento algo solo por el gusto de hacerlo o mientras diseña la versión de hardware de bajo costo de ese algo, entonces está listo para funcionar cuando lo desee. Estas son decisiones de diseño, estratégicas y económicas que son perfectamente válidas para tomar de cualquier manera que se adapte a sus objetivos. No hay nada "tonto" en hacer compensaciones, eso es lo que hacen los ingenieros, y se supone que deben hacer, todos los días.

JRobert
fuente
1

La experiencia de John coincide casi exactamente con la mía hace 15 años cuando me retiré de la enseñanza de ciencias de la computación (básicamente programación en lenguaje ensamblador y C) para estudiantes universitarios. Entonces me di cuenta de que mantenerse al día con los avances en informática sería prohibitivamente costoso, por lo que mi esposa sugirió volver a la electrónica como un pasatiempo, ya que había disfrutado ser ingeniero eléctrico en la década de 1950. Esto lo hice, aunque solo había conocido transistores brevemente, y nunca había visto un amplificador operacional, por lo que tuve que aprender mucho. Retuve mi amor por el lenguaje ensamblador, y cuando aparecieron las fotos de Microchip a mediados de los 90, me enganché a ellas.

No puedo compararlos con Arduino, del que no sé nada, pero una ventaja de usar Pics es que es barato de configurar, ya que Microchip proporciona toda la información gratis, con un IDE brillante, y puedes aprender a usarlos. , como hice yo, por lo que publican. Puede comenzar con un programador casero, muchos diseños en Internet, por lo que costaría solo unas pocas libras para comenzar con unas pocas fichas Pic. Pero recomendaría el PicKit 2 que tiene muchas características integradas para facilitar el desarrollo del programa. Sin embargo, quizás no PicKit 3, vea:

http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/ Aunque esto se ha actualizado, vea las notas en esta referencia.

Hay una gran cantidad de libros sobre fotos, pero algunos son basura, ten cuidado. Para un comienzo fácil, una excelente introducción a Pic es:

"Diseño de sistemas embebidos con microcontroladores PIC: principios y aplicaciones" [Libro en rústica] por Tim Wilmshurst, £ 22-66 en Amazon, que incluye tanto a Assembler como a C. Evité C por un tiempo porque parecía eliminar la intimidad con el hardware que proporciona el ensamblador, pero con el compilador C proporcionado por Microchip puede ver el código del ensamblador que también se genera.

Para una cobertura general, buena y técnica (sin temor a poner matemáticas) de la electrónica moderna, recomiendo: "Electrónica práctica para inventores" 2 / E [Paperback] de Paul Scherz, £ 19-95 en Amazon.

Pagué £ 26-99 y £ 22-99 respectivamente por estos libros en las tiendas, y no me arrepiento en absoluto.

No puedo cubrir lo suficiente aquí, me complacería comunicarme por correo electrónico sobre este tema: [email protected] (y, por si acaso, tengo mucho cuidado con lo que leo, descargo o respondo).

Harry Weston
fuente