Entiendo Arduino: ¿y ahora qué?

18

Muy bien, he jugado lo suficiente con Arduino que me siento bastante cómodo con él. Todo lo que se hace ahora es más aprender la electrónica que el lado Arduino.

¿Cuál es el siguiente paso para mi aprendizaje? Arduino es un programador / controlador combinado, por lo que presumiblemente necesito romper ese enlace y comenzar a trabajar con un chip controlador separado del controlador, supongo. ¿Alguien puede señalarme en la dirección correcta?

Chris B. Behrens
fuente
¿Tienes un objetivo o proyecto en particular en mente?
Estoy de acuerdo. Para mí, esto se trata de hacer cosas específicas. Arduino es solo una herramienta como cualquier otra cosa.
Dirk
En lo que estoy trabajando ahora es en una matriz de LED multiplexada. No es tan difícil en Arduino, pero quiero deshacerme de las ruedas de entrenamiento. Quiero decir, en última instancia, hay un chip ATmega168 en la placa Arduino. Si pudiera descubrir cómo trabajar con él directamente, creo que eso satisfaría lo que estoy tratando de lograr.
Chris B. Behrens
De hecho, eres bastante directo al chip con el Arduino. No tiene tantos controladores ni nada conectado a los pines. Los encabezados van directamente allí. Tal vez un breadboarduino?
AngryEE
@angryee - Creo que Chris quiere decir, programar el chip ATmega directamente, sin las bibliotecas Arduino IDE +, que podrían verse como ruedas de entrenamiento.
J. Polfer

Respuestas:

12

Estoy de acuerdo con Joby: Arduino es genial, pero siempre me siento sofocado por el marco con el que me rodean. Pasaría a usar C directo en su Arduino y construiría una gran cantidad de la funcionalidad de la biblioteca que proporcionaron desde cero. Por lo general, prefiero la profundidad antes que la amplitud: no solo comience en otra familia de microcontroladores utilizando más marcos proporcionados. Aprenda un poco más sobre cómo implementar algunas de estas funciones usted mismo.

Comience con un programa que funcione y reemplace las llamadas de la biblioteca Arduino con sus propias versiones, una función a la vez. Aprenderá mucho sobre los registros de control, el tiempo, las operaciones de bits, etc., si aún no lo ha hecho. Lea la hoja de datos ATMega328 en profundidad: todo lo que necesita está ahí.

Pruebe con un IDE diferente, como AVR Studio o Code :: Blocks. Aprenda la cadena de herramientas GCC. Pruebe técnicas de codificación más avanzadas: pruebas unitarias, cobertura, creación de perfiles, verificación de pelusas / férulas. Pon un RTOS en el Arduino.

Un programador / controlador combinado no es un signo de debilidad, es solo una elección de diseño. La única 'debilidad' que podría surgir es la falta de depuración en circuito. Compre un AVR Dragon y lo lamirá por $ 50.

AngryEE
fuente
9

Creo que lo que debe aprender a continuación depende de lo que quiera hacer que Arduino no pueda hacer. Es decir, no veo mucho sentido en programar un chip similar para hacer las mismas cosas, pero con medios más difíciles.

Aquí hay algunas debilidades de Arduino:

  • Subprocesamiento, lo que significa ejecutar dos secciones de código intercaladas para que parezca que se están ejecutando al mismo tiempo
  • Cosas de Internet de ancho de banda medio o alto, como la transmisión de audio
  • Computación seria, o tareas que requieren computación rápida para una respuesta rápida
  • Cualquier cosa que sea más fácil al tener un sistema de archivos, como el registro de datos o el manejo de imágenes

Puedo imaginar dos direcciones a seguir:

  1. Placas integradas más potentes con pequeños sistemas operativos, como Beagleboard o Gumstix
  2. Exprimir más rendimiento de pequeños chips Atmega utilizando interrupciones de hardware.

Puedo agregar más detalles si comentas qué dirección es más atractiva. (El segundo es definitivamente más barato).

pingswept
fuente
Es divertido ... programar un chip similar para hacer las mismas cosas, pero con medios más difíciles es exactamente lo que tengo en mente :). Un poco de historia: soy un arquitecto de software con muchos años de experiencia. El software, la computación, el sistema de archivos ... eso es todo lo fácil para mí. Lo que realmente necesito para golpearme la cabeza es la electrónica. La razón por la que busco ir más allá de Arduino es simplemente que quiero poder producir dispositivos de un solo propósito que no tengan la sobrecarga física (y precio) de una placa Arduino. Creo que por lo que has dicho, # 2 es lo que estoy buscando.
Chris B. Behrens
Wow ... ese comentario sonaba muy egoísta. No lo dije de esa manera ... de todos modos, solo quería decir que quiero deshacerme de las ruedas de entrenamiento de hardware que Arduino me da. En particular, estoy trabajando en un conjunto de LED, similar al LOLShield, aunque creo que voy a multiplexarlo en su lugar. Puedo hacerlo con Arduino, pero sin él, necesito alguna dirección. TIA
Chris B. Behrens
Ah, más cosas electrónicas en lugar de software ... cosas. Tal vez obtendrías una buena experiencia haciendo interfaz de sensores / registro de datos. No es glamoroso, pero para conectar los sensores a su placa necesitaría aprender algunas cosas más sobre el hardware. El Arduino realmente no tiene tantas ruedas de entrenamiento de hardware, ciertamente no tantas como software. Tal vez un robot que incorpora varios tipos diferentes de sensores: ultrasonidos, distancia IR, codificador de eje, etc. Ciertamente posible solo con el Arduino y mucho más hardware.
AngryEE
7

Aprenda I2C, SPI, 1wire e intente interconectar sensores con tales interfaces. Lea muchas hojas de datos de dichos sensores e intente comprender todo lo que contienen. Haga preguntas cuando esté atascado. Aprenda MODBUS (RTU / ASCII / TCP) o un protocolo similar que pueda abrir su dispositivo al mundo una vez que lo inserte en el dispositivo. Aprenda electrónica general e intente interconectar relés, triacs, qué es pull up y pull down, qué es abastecimiento y hundimiento, cómo dibujar esquemas y conectar controladores básicos a su MCU.

avra
fuente
6

Para empezar, es posible que desee pasar de Arduino como plataforma a AVR como plataforma. Es decir, aprenda a programar / usar un microcontrolador AVR virgen para sus proyectos en lugar del Arduino. De esa manera, no tendrá que comprar otra placa Arduino para cada proyecto que realice, o para hacer proyectos con amigos. Este es un paso bastante simple (un Arduino es solo un microcontrolador Atmel AVR convencional pero con una placa especial y un gestor de arranque), pero es grande para vender / dar proyectos a amigos. La cadena de herramientas también es similar: usa avr-gcc o avr-g ++ con make junto con una utilidad de programación para instalar su programa.

J. Polfer
fuente
Es bastante simple cargar el gestor de arranque en un chip y soldar su propia placa si desea regalar un proyecto. O solicite un kit RBBB por $ 12.50 ( goo.gl/0yqr ) sin necesidad de comprar una placa de $ 30 + para cada proyecto Arduino.
Davorak