2008-09-17 29 views
74

He desarrollado software en C++, Java, PHP, .NET y ahora soy interesante para aprender a programar cosas materiales. Me gustaría programar un sistema que podría interactuar con IR, LCD y poder volver a utilizar los motores de la impresora anterior para usarlo, etc.¿Cómo comenzar a programar un microcontrolador?

Mi problema es, ¿por dónde empezar? He buscado en la web y he encontrado una placa de código abierto llamada Arduino, pero ¿cómo reunir otros componentes electrónicos? ¿Qué libro o tutorial debería hacer para poder crear un proyecto pequeño?

+0

Adición a comentarios en otros lugares, me gustaría sugerirle que lea un libro titulado "[Así que desea ser un ingeniero incorporado: la guía de ingeniería integrada, de la consultoría a la escalera corporativa] (http://www.amazon.com/You- Wanna-Embedded-Engineer-Engineering/dp/0750679530) ". Te daría alguna pista. – avar

Respuesta

61

Parallax es muy caro. Se salen con la suya porque venden sus cosas a instituciones educativas que no conocen nada mejor.

El Arduino es un buen comienzo, repase algunos de sus ejemplos (haga clic en "Aprendizaje" en el sitio Arduino) y vea qué partes necesitan. Mi tienda de electrónica de hobby favorita es sparkfun.com. Tienen toneladas de piezas diseñadas para interactuar con cosas como el Arduino.

Puede programarlos en C, C++ o Ensamblaje de AVR. Personalmente, yo diría que evite los BÁSICOS, son mucho más lentos y si ya está en la programación, no vale la pena la molestia.

(FYI, el Arduino es básicamente una biblioteca bordo y software diseñado alrededor de la maravillosa microcontrolador AVR)

+0

¡Gran respuesta! solo para agregar un poco, similar a Arduino, está el proyecto Freeduino: http://www.freeduino.org/ –

+0

Personalmente sparkfun es un poco caro ... puedes encontrar muchas cosas mucho más baratas a través de eBay o aliexpress ... si están dispuestos a esperar un poco más de tiempo, ya que generalmente se envían desde China. Pero hay muchos vendedores de EE. UU. Que tienen buenos precios en sensores Arduino, etc. Pero eso es solo mi granito de arena. – jason

4

La serie de sellos BASIC es muy interesante. Tienen muchos tableros de control sencillos y bonitos para que comiences y la programación es muy simple. El controlador realmente ejecuta BASIC. Si bien eso puede no entusiasmar a mucha gente, escribir código de microcontrolador toma tiempo para entenderlo. Este sistema es ideal para mojarse los pies. Luego, cuando tenga un buen proyecto agradable (y simple), puede pasar a otros controladores más desafiantes. Estos probablemente sean ensamblados o C programados. La depuración será su mayor desafío.

Parallax BASIC Stamp

3

Cada microcontrolador es diferente. El BASIC stamp es muy popular entre los aficionados, ya que puede programarlo en un lenguaje de alto nivel.

Para trabajos de nivel inferior, una opción extremadamente común es el PIC, un chip barato (< $ 4) y rápido (~ 20   MHz) con casi ninguna memoria incorporada. Puede encontrar un list of development environments en Wikipedia.

Si necesita comprar componentes electrónicos para su microcontrolador, DigiKey es un excelente lugar para comenzar.

1

Tengo dos sugerencias.

  1. Los microcontroladores de estampillas son excelentes chips introductorios. Puede recoger los kits en eBay barato (< $ 30 típicamente). También puedo recomendar el libro Stamp2 Communications and Control Projects por Tom Petruzzellis http://www.amazon.com/STAMP-2-Communications-Control-Projects/dp/0071411976/ref=sr_11_1?ie=UTF8&qid=1221613350&sr=11-1

  2. Microchip (www.microship.com) fabrica el microcontrolador Stamp. También ofrecen muestras gratuitas de su sitio web, incluido el envío. Recogí un par de micros con radios integradas para hacer algunas comunicaciones de RF bidireccionales (no WIFI). Otro gran fabricante de microcontroladores es Dallas Semiconductor http://www.maxim-ic.com/ y también envían muestras gratuitas. Dallas/Maxim también tiene un Journal de Ingeniería que enviarán por correo gratis a su dirección y la revista tiene toneladas de implementaciones de muestra, usando sus chips, por supuesto, de los cuales también puede obtener gran cantidad de buena información.

+0

Este libro tiene una calificación terrible en amazon: P –

3

también tengo la impresión de que usted necesita para comenzar a partir de arquitectura microcontrolador cosas básicas. El PIC es bueno para empezar, porque los modelos básicos y las primeras series pueden ser muy útiles; no tienen demasiada funcionalidad adicional, así que no te perderás con los extras concentrándote en lo básico, que es bueno.

Después de esto, debe comprender muchas cosas sobre la organización de la memoria y la ejecución del programa en el contexto del ciclo de vida del microcontrolador y los modelos de temporización. Después de esto, puede continuar con el análisis inicial de ejemplos básicos de ensamblador para un microcontrolador de concreto y avanzar con técnicas más avanzadas. Luego puede pasar a series más avanzadas de PIC con DAC y otros módulos que son comunes para la mayoría de los microcontroladores modernos, pero en el PIC puede obtener muchos elementos básicos sin dolor adicional que funcionarán de manera similar para todos los demás chips.

28

Bueno, el campo de los microcontroladores es bastante grande. Usted tiene varias marcas, cada una con una gama completa de controladores, con diversos grados de capacidad, complejidad y capacidad.

Dicho esto, la forma de comenzar con la mayoría de los microcontroladores es leyendo el manual del fabricante. A diferencia de la programación "normal", donde la mayoría de los programadores siguen estándares y reglas y mejores prácticas y marcos, etc., la programación de microcontroladores todavía se hace de manera similar a la programación a principios de los años ochenta: leyendo el manual de un controlador, reproduciendo ejemplos y extendiéndose desde allí.

Microchip's manuals, por ejemplo, son excelentes. También tienen un muy buen community, y proporcionan algunas bibliotecas con funciones "estándar" que le gustaría usar (como matemática, E/S, hacer E/S en serie usando dos pines, y así sucesivamente). Muchas de las personas que trabajan con PIC son bastante abiertas y normalmente comparten su código fuente si creen que podría ser útil para otra persona.

Hay algunas opciones que debe tomar antes de comenzar. El primero es qué idioma vas a usar. Tiene tres opciones:

  1. Ensamblaje: la mayoría de los fabricantes ofrecen kits de desarrollo gratuitos o bastante baratos para sus microcontroladores (MCU, para abreviar). Esta es la opción más poderosa, y la que debe usar si se siente cómodo. También le enseñará mucho sobre computadoras en general.
  2. Algo más: si prefiere usar algo como C, tendrá que pagar bastante dinero por el compilador (aunque hay al menos one open source option para algunos dispositivos), y debe considerar el el código producido por los lenguajes de alto nivel normalmente requiere mucho espacio/memoria en el dispositivo. Además, dependiendo de la biblioteca estándar, de todos modos terminarás programando una buena cantidad de la funcionalidad.
  3. Lenguaje básico/similar a Pascal: algunos MCU vienen con un intérprete básico/similar a Pascal. Estos son excelentes para comenzar a hacer algunos proyectos de "juguetes", y tener la sensación de cómo funcionan estas cosas.

Luego, debe decidir qué tipo de dispositivo desea usar. Los precios por unidad varían mucho según el fabricante, ya sea PROM, EPROM, EEPROM, cuánta memoria tiene, cuánto espacio de almacenamiento tiene, cuántos pines programables, etc.

Mi recomendación, para empezar, sería:

  1. tratar de encontrar una "quemador" libre en Internet, si quieres experimentar la emoción de la programación de su MCU uso de algo que construyó . Hay muchos disponibles, solo google para "simple grabadora de PIC" o similar. Si eso no es un requisito, entonces puede comprar un quemador, pero le costará un poco de dinero.
  2. Obtenga una versión de EE. UU. de la MCU que crea que va a utilizar más. Esto le ahorrará el problema de tener que tirar un hardware de $ 5 solo porque tiene un error en su código.
  3. Compre un montón de la versión PROM de la MCU. Son baratos, y los necesitarás. Y una vez que comience, querrá poner un MCU en todas partes.
  4. Aprende a usar The Emulator. La mayoría de los SDK vienen con un emulador que puede usar para probar sus ideas antes de enviarlas a PROM.
  5. Búscate un primer proyecto simple e interesante. Debo enfatizar el SIMPLE allí. Si intentas encontrar la manera de controlar tu horno de microondas con un control remoto, prepárate para un largo período de aprendizaje.

Bueno, espero que esto te ayude! Si quieres más información, estoy a la vuelta de la esquina, ¡solo pito! :)

31

Definitivamente secundaré la sugerencia de Arduino. Son baratos, hay varios proveedores ya que el hardware es de código abierto (aunque el nombre no lo es), el IDE es gratuito, usted los programa en C, y son fáciles de conectar a casi cualquier cosa. La placa tiene 12 pines de E/S digitales (dos de los cuales son pines de comunicación en serie) y seis pines de E/S del convertidor A/D de 12 bits (que también se pueden configurar como pines digitales). Puede manejar modulación de ancho de pulso (PWM) para control de motor y servo, interrupciones, interfaces I2C, y la mayoría de las placas pueden funcionar independientemente o fuera del puerto USB. La comunicación a la computadora es manejada por un controlador USB serie FTDI.

Además de Sparkfun.com, también consulte www.adafruit.com para obtener algunas placas USB "Boarduino" baratas y pequeñas y varios protectores de prototipos agradables para el Arduino de tamaño completo.

El sitio principal de Arduino (Arduino.cc) tiene prácticamente todas las referencias y tutoriales que necesita para comenzar.

Aquí está el "¡Hola, mundo!" de la programación de Arduino como un ejemplo de lo fácil que es. El programa parpadea un LED conectado al pin digital 13:

int ledPin = 13;     // LED connected to digital pin 13 

void setup() 
{ 
    pinMode(ledPin, OUTPUT);  // sets the digital pin as output 
} 

void loop() 
{ 
    digitalWrite(ledPin, HIGH); // sets the LED on 
    delay(1000);     // waits for a second 
    digitalWrite(ledPin, LOW); // sets the LED off 
    delay(1000);     // waits for a second 
} 

En principio, cada programa de Arduino tiene una función de configuración() que se ejecuta cuando se aplica la potencia o la junta se pone a cero y una función de bucle() que se ejecuta siempre. Por supuesto, también tiene temporizadores y funciones de interrupción, o puede usar el bucle() para sondear las entradas y luego llamar a otras funciones.Arduino IDE se encuentra en la parte superior de GCC y utiliza las mismas bibliotecas e incluye lo que utilizarías si estuvieras escribiendo un programa barebones para el microcontrolador Atmega. Esto significa que (a) oculta las partes duras tanto tiempo como lo desee (cargadores de arranque, fusibles, etc.), (b) puede acceder a las partes internas del programa si lo desea, y (c) puede utilice una gran selección de bibliotecas que están disponibles para esta familia de microcontroladores.

14

Recientemente comencé a aprender la programación de microcontroladores usando el Arduino. Compré el Arduino Starter Pack de adafruit.com y caminé a través de su introductory tutorials. Su kit viene con algunos componentes electrónicos básicos (LED, botones, fotorresistencia) que le dan algunas cosas para experimentar desde el principio.

Si ya conoce C/C++, podrá comenzar a crear proyectos útiles e interesantes en cuestión de horas.

El Arduino también es genial porque una vez que te familiarizas con él puedes expandir a escribir C en bruto en cualquiera de los Atmel AVR line of microcontrollers con facilidad.

También recomiendo The Electronics Goldmine donde puede comprar surtidos de componentes electrónicos para obtener un buen juego de principiantes con bastante poco dinero.

+0

Gracias por la referencia del paquete Arduino Starter. Vi su video de ellos, se ve bastante interesante. El único inconveniente es el precio, pero todavía tienen que ganar dinero, supongo. ¡Gracias! – IvRRimUm

0

En una nota:
Si no quiere ensuciarse las manos soldadura de un montón de cosas o no está eléctricamente inclinado a hacerlo (como yo), intente buscar en PLC's.
Son controladores de hardware industriales con módulos para casi cualquier tarea como E/S digitales, E/S analógicas, controladores de motor paso a paso, E/S en serie, Ethernet, etc. Puede programarlos de diferentes maneras, como ensamblador, gráfico y un editor de texto con código que parece una mezcla de Pascal y Basic. Tienen multitarea incorporada y generalmente funcionan bastante bien, pero son un poco más caros que un microcontrolador regular. Siempre recomiendo Wago y su controlador 750-841.

3

Esto es probablemente exagerado para lo que estás tratando de hacer, pero la programación de un sistema basado en FPGA puede ser divertido. El lenguaje VHDL es más parecido a cablear circuitos que escribir código C. Se puede comprar una placa Nexys-2 por $ 130.

2

Otro voto para el Arduino que es muy bueno. Con una placa Arduino, un sensor de temperatura de un solo cable y Hyperterminal, puede comenzar a registrar datos sobre el mundo que lo rodea. Conecte el procesamiento y podrá registrar los datos, graficarlos, analizarlos en Excel, lo que sea. Ordenado.

3

Todo lo que necesitas para iniciar en Arduino y electrónica se puede encontrar aquí: http://www.smileymicros.com. Si recuerdo bien, el autor del libro tiene/tenía una columna para Arduino newbies en una de las revistas electrónicas. Además de eso, en general, debe aprender I2C, SPI, 1wire e intentar conectar sensores con tales interfaces. Lea muchas hojas de datos de tales sensores y trate de comprender todo lo que contiene. 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 incruste en el dispositivo. Aprenda electrónica general e intente interconectar relés, triacs, motores paso a paso, servos, qué es pull up y pull down, qué es sourcing y hundimiento, cómo dibujar esquemas y conectar controladores básicos a su MCU.

2

Si es un entusiasta de la electrónica, podría construir su propio sistema de desarrollo. Podría ser más complicado, pero es mucho más divertido.

Vea aquí un sistema de desarrollo simple para microncontrollers PIC16F628A, que incluye esquemas completos y PCB: http://www.bobtech.ro/proiecte/microcontrolere/1-bobdemo-sistem-pentru-dezvoltare-aplicatii-cu-microcontroler

Características:

  • 12 I/O con pulsadores para las entradas y LEDs para salidas
  • RS232 interfaz de puerto serie para PC
  • sensor de control remoto por infrarrojos
  • conector de programación ICSP a bordo
  • batería opcional a bordo de 9V (para fines de demostración)
  • de a bordo + 5V fuente de alimentación para el microcontrolador y los periféricos externos

Para la programación, puede utilizar BobProg - ICSP PIC programmer
Siga el enlace para ver los esquemas programador y PCB .

software:

  • (gratis) MPLAB IDE de Microchip para el desarrollo en C o ASM lenguaje
  • de software (libre) de programación flash IC-Prog utilizar para el programador ICSP
Cuestiones relacionadas