Archivo de la etiqueta: Microcontroladores

Práctica: Uso de Memoria en Arduino.

Práctica: Calcula memoria RAM de tu Arduino UNO sin ejecutar ningún programa con la función free() y comparalo con el dato que da al compilar, también averigua cuánto ocupa la memoria Flash. Luego calcula la memoria RAM y la Flash utilizada con un programa que cada loop saque por puerto serie cada 5 segundos el siguiente texto:

Desde octubre de 2012, Arduino se usa también con microcontroladoras CortexM3 de ARM de 32 bits,5 que coexistirán con las más limitadas, pero también económicas AVR de 8 bits. ARM y AVR no son plataformas compatibles a nivel binario, pero se pueden programar con el mismo IDE de Arduino y hacerse programas que compilen sin cambios en las dos plataformas. Eso sí, las microcontroladoras CortexM3 usan 3,3V, a diferencia de la mayoría de las placas con AVR que generalmente usan 5V. Sin embargo ya anteriormente se lanzaron placas Arduino con Atmel AVR a 3,3V como la Arduino Fio y existen compatibles de Arduino Nano y Pro como Meduino en que se puede conmutar el voltaje.

Luego haz que aumente la RAM con el modificador F y compruebalo.

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/blob/master/Ejercicio05-Memoria/Ejercicio05-Memoria.ino

Microcontrolador vs Microprocesador

Diferencia principal entre un ordenador y un Arduino: las entradas y salidas que conectamos.

Analogía: Arduino es un Autómata programable, Raspberry Pi es un Ordenador, así que a la hora de decidirse que utilizar para un proyecto pensar que usaríamos un autómata o un Ordenador.

Para programación en tiempo real el HW a utilizar es el Arduino, para programación intensiva con gran cantidad de datos usaríamos una Raspberry Pi o un PC.

En un proyecto grande la elección es usar ambos, cada uno en la tarea que mejor hace. Por ejemplo, la recolección de datos, supervisión del entorno, envío de alarmas, accionar motores, etc.. lo dejaremos para el arduino, el tratamiento de los datos recogidos, el interfaz gráfico de usuario, envío de correos, etc… lo dejaremos para un ordenador o una raspberry pi o similar.

Diferencias entre el microprocesador y el microcontrolador, características al usarlos en la implementación de sistemas digitales programables:

  • CPU
  • Memorias RAM y ROM
  • Velocidad de Operación
  • Tamaño
  • Costes
  • Interferencias (ruido)
  • Tiempo de desarrollo

El uso de una u otra tecnología depende del fin que se espera, pues debido a sus características propias, los microcontroladores y los microprocesadores pueden adquirir variados y diferentes espacios de implementación, por ejemplo, los microprocesadores se han desarrollado fundamentalmente orientados al mercado de los ordenadores personales y las estaciones de trabajo, pues allí se requiere una elevada potencia de cálculo, el manejo de gran cantidad de memoria y una gran velocidad de procesamiento. Mientras que los microcontroladores están concebidos fundamentalmente para ser utilizados en aplicaciones puntuales, es decir, aplicaciones donde el microcontrolador debe realizar un pequeño número de tareas, al menor costo posible. En estas aplicaciones el microcontrolador ejecuta un programa almacenado permanentemente en su memoria, el cual trabaja con algunos datos almacenados temporalmente e interactúa con el exterior a través de las líneas de entrada y salida de que dispone.

Microprocesadores Microcontroladores
CPU El microprocesador tiene mucha más potencia de cálculo, por lo cual solamente realiza sus funciones con lo que tiene (datos) y su algoritmo o programa establecida. Es una de sus partes principales, la cual se encarga de dirigir sus operaciones.
Memorias RAM y ROM Son dispositivos externos que lo complementan para su óptimo funcionamiento. Las incluye en un solo circuito integrado.
Velocidad de Operación Rápida Lenta en comparación con la de un microprocesador
Tamaño La configuración mínima básica de un Microprocesador está constituida por un Microprocesador, una memoria RAM, una memoria ROM, un decodificador de direcciones, lo cual lo convierte en un circuito bastante engorroso. El Microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo que implica una gran ventaja en varios factores,  como por ejemplo, la disminución en el tamaño del circuito impreso por la reducción de los circuitos externos.
Costos Para el Microprocesador, el costo es muy alto en la actualidad. El costo para un sistema basado en Microcontrolador es mucho menor.
Interferencias Son más susceptibles a la interferencia electromagnética debido a su tamaño y a su cableado externo que lo hace más propenso al ruido. El alto nivel de integración reduce los niveles de interferencia electromagnética
Tiempo de desarrollo El tiempo de desarrollo de un microprocesador es lento. Por el contrario, el de un microcontrolador es rápido.

Raspberry Pi es un ordenador de placa reducida o (placa única) (SBC) de bajo coste, desarrollado en Reino Unido por la Fundación Raspberry Pi. El diseño incluye un System-on-a-chip Broadcom BCM2835, que contiene un procesador central (CPU) ARM1176JZF-S a 700 MHz, un procesador gráfico (GPU) VideoCore IV, y 512 MiB de memoria RAM.

Los sistemas operativos soportados son distribuciones Linux para arquitectura ARM, Raspbian (derivada de Debian), RISC OS 5, Arch Linux ARM (derivado de Arch Linux) y Pidora (derivado de Fedora)

Web principal: http://www.raspberrypi.org/

Especificaciones técnicas: http://es.wikipedia.org/wiki/Raspberry_Pi#Especificaciones_t.C3.A9cnicas

El System-on-a-chip Broadcom BCM2835: http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

GPIO:

También intel saca su alternativa a raspberry: http://www.intel.es/content/www/es/es/do-it-yourself/edison.html

Vídeo que lo explica todo esto de una forma muy clara: https://www.youtube.com/watch?v=7vhvnaWUZjE&feature=youtu.be

Ejercicio: ¿Puedo convertir un arduino en un ordenador? ¿Cómo? ¿Es práctico?

Arduino como un ordenador:

Microcontroladores 8 bits, 16 bits, 32 bits

El tamaño de la palabra es un aspecto importante en la arquitectura de procesadores.

La mayoría de los registros de un Microprocesador/Microcontrolador tienen el tamaño de la palabra y las operaciones que hace la ALU es manejando operandos cuyo tamaño es el tamaño de la palabra, así como la cantidad de datos transferidos a memoria y dirección utilizada para designar una localización de memoria a menudo ocupa una palabra.

También los valores que pueden tomar las variables dependen del tamaño de la palabra.

http://es.wikipedia.org/wiki/Palabra_%28inform%C3%A1tica%29

Microcontroladores

Un microcontrolador (abreviado µC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.

Características de un Microcontrolador:

  • Velocidad del reloj u oscilador
  • Tamaño de palabra
  • Memoria: SRAM, Flash, EEPROM, ROM, etc..
  • I/O Digitales
  • DAC
  • Buses
  • UART

microcontrolador
Microcontrolador: http://es.wikipedia.org/wiki/Microcontrolador

Estructura genérica de un microcontrolador:

microcontrolador2

Existen MCUs genéricas y otros de propósito especial como los DSP, para aplicaciones de voz y video por ejemplo.

Microntroladores AVR: AVR son una familia de microcontroladores RISC del fabricante estadounidense Atmel. La arquitectura de los AVR fue concebida por dos estudiantes en el Norwegian Institute of Los AVR son una familia de microcontroladores RISC del fabricante estadounidense Atmel. http://es.wikipedia.org/wiki/AVR

RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse.

El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución.

Existen muchos fabricantes de microcontroladores pero los principales son:

Ejemplo de otro microcontrolador:

http://es.wikipedia.org/wiki/MSP430

Y su software: http://www.ti.com/tool/msp430ware?DCMP=msp430ware&HQS=msp430ware

Lo importante es saber que arduino no es el único microcontrolador ni la única plataforma. Lo mismo que hacemos con arduino se puede hacer con otros microcontroladores.

Un sistema embebido es un sistema diseñado para realizar una o algunas pocas funciones dedicadas, frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre con los ordenadores de propósito general que están diseñados para cubrir un amplio rango de necesidades, los sistemas embebidos se diseñan para cubrir necesidades específicas. En un sistema embebido la mayoría de los componentes se encuentran incluidos en la placa base (la tarjeta de vídeo, audio, módem, etc.) Algunos ejemplos de sistemas embebidos podrían ser dispositivos como un termostato, un sistema de control de acceso, la electrónica que controla una máquina expendedora o el sistema de control de una fotocopiadora entre otras múltiples aplicaciones.

El firmware es la programación que lleva dentro y es lo que vamos a aprender a programar en Arduino o mejor dicho en el microcontrolador que tiene Arduino.

Un buen artículo de Atmel sobre Microcontroladores vs Microprocesadores: http://www.atmel.com/Images/MCU_vs_MPU_Article.pdf

Reference Guide para AVR MCUs, un poco antiguo pero muy interesante para saber la gama de MCUs de Atmel y donde situarlos: http://www.atmel.com/Images/doc4064.pdf

Un enlace muy interesante con mucha información sobre microcontroladores para ampliar conocimientos: http://www.mikroe.com/chapters/view/79/capitulo-1-el-mundo-de-los-microcontroladores/

Y mucha más información sobre como programar microcontroladores PIC: http://www.mikroe.com/products/view/285/book-pic-microcontrollers-programming-in-c/

Otras utilidades y placas en lugar de Arduino para programar MCUs de Atmel:

Programador: http://www.mikroe.com/mikroprog/avr/AVRAVR

Presentación del curso

ArduinoCommunityLogo_EPS

Objetivos

El objetivo de este curso es iniciar al alumno en el mundo del hardware libre y los microcontroladores utilizando la plataforma Arduino.

Al finalizar el curso el alumno será capaz de comprender qué es la plataforma hardware Arduino, conocer su potencial, así como implementar proyectos sencillos en un Arduino. Aprenderá a usar el entorno de programación utilizado por Arduino, el lenguaje de programación usado, realizar programas y ejecutarlos sobre la plataforma.

Otros objetivos de este curso son: conocer los componentes de hardware básicos para recibir señales externas y controlar elementos que le rodean para interactuar con el mundo físico.

Requisitos

Este curso parte desde cero, por lo que no son necesarios unos conocimientos previos, pero sí son recomendables conocimientos básicos de programación (especialmente C++), electricidad y electrónica.

Es recomendable un conocimiento medio de Inglés puesto que gran parte de la documentación está en Inglés.

Metodología

El curso se compone de una combinación de teoría y práctica que establecen las bases necesarias para entender la plataforma Hardware y Software de Arduino, con una duración total de 21 horas. Tras finalizar el periodo lectivo propiamente dicho se proponen varios proyectos a realizar por el alumno por su cuenta y tras unas semanas se realizará un taller de 4 horas donde los alumnos expondrán sus proyectos, se resolverán las dudas y se ofrecerá una solución a los proyectos propuestos.

Durante el periodo en el que el alumno realizará los proyectos propuestos o uno de su libre elección, se resolverán todas las dudas y se podrán compartir los resultados en la comunidad de google+ o por correo electrónico, siendo preferiblemente el primer método para poder compartirlo con todos los alumnos y resto de la comunidad.

Los recursos utilizados para la realización de este curso son:

Para realizar las prácticas de este curso se incluye un Arduino Starter Kit (http://store.arduino.cc/index.php?main_page=product_info&cPath=2&products_id=185) que contiene un Arduino Uno, una serie de sensores y actuadores y diversos elementos electrónicos necesarios para realizar los proyectos.

La documentación será toda on line con el objetivo de mantener todo actualizado y no con un documento físico que se queda obsoleto al día siguiente. Además la documentación irá creciendo durante el curso y después de finalizar el curso, estando disponible para todos.

La documentación principal se encuentra en el blog https://aprendiendoarduino.wordpress.com/, esto permite acceder a una documentación actualizada en todo momento y poder acceder a los recursos con un solo clic. Además se dispone de otros recurso disponibles como las presentaciones en http://prezi.com/user/um-quxxu46su/, repositorio en github http://github.com/jecrespo, y otros recursos que se seguirán añadiendo.

Las prácticas se realizarán con el Arduino Starter Kit y usaremos el libro como base para las primeras prácticas como referencia y proponiendose más ejemplos.

Todo el material entregado es en préstamo y debe cuidarse al máximo, a la hora del montaje de las prácticas se seguirán las instrucciones para evitar dañar los componentes.

Toda la documentación está liberada con licencia Creative Commons:

Reconocimiento – NoComercial – CompartirIgual (by-nc-sa): No se permite un uso comercial de la obra original ni de las posibles obras derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original.

Aprendiendo Arduino by Enrique Crespo is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.

Organización del curso

El curso se divide en dos partes: Curso y Taller. Duración total de 25 horas.

El curso se celebra del 23 al 31 de marzo de 2015 de Lunes a Viernes en horario de 18.30 a 21.30. Se hará un descanso de 5-10 minutos aproximadamente a mitad de la sesión.

El Taller se hará el viernes 17 de abril de 17:30 a 21:30.

Temario del curso:

  • Tema 1 – Plataforma Hardware Arduino
  • Tema 2 – Plataforma Software Arduino
  • Tema 3 – Programación en Arduino
  • Tema 4 – Conceptos Básicos de Microcontroladores y Electrónica
  • Tema 5 – Taller de Proyectos con Arduino

En detalle: https://aprendiendoarduino.wordpress.com/arduino-iniciacion-2015/

Otros cursos anteriores:

Artículos:

Presentaciones. Arduino tiene muchos ámbitos de aplicación, desde el sector agrícola, fabricación, eficiencia energética, etc… hasta para la educación.

  • Como conoces Arduino
  • Motivaciones para aprender a usar Arduino
  • Conocimientos de electrónica/electricidad y programación.
  • Algún proyecto o entorno de aplicación donde usar Arduino.

Normas de uso del kit del curso.

Contacto

Para cualquier consulta durante el curso y en cualquier otro momento mediante email: aprendiendoarduino@gmail.com

Twitter @jecrespo: https://twitter.com/jecrespom

Y más información sobre el curso y el autor: https://aprendiendoarduino.wordpress.com/acerca-de/

Aclaraciones sobre el curso

A pesar que Arduino es una plataforma ampliamente usada por aficionados (makers) y para prototipado y puede verse como un “juguete”, en este curso vamos a aprender a programarlo y usarlo para implantarlo en cualquier aplicación que necesitemos para un uso profesional, siendo la principal ventaja de usar una plataforma de este tipo el rápido despliegue de una nueva aplicación ya la facilidad de programar.

Arduino se trata principalmente como una herramienta para prototipado y usada en el mundo del hobby, pero aquí vamos a ir más allá y lo trataremos como una herramienta profesional que puede abarcar multitud de sectores.

A lo largo del curso se van a ver muchos conceptos de diferentes tecnología que a priori no tienen nada que ver entre ellos: electronica digital y analogica, electricidad, programación, microcontroladores, tratamiento de señales, bases de datos, protocolos de comunicación, arquitectura de procesadores, mecánica, motores, diseño de placas electrónicas etc…

En unos casos se profundizará más y en otros menos, pero sin ponerse demasiado académico, de hecho la filosofía con la que nació  arduino es facilitar las cosas, lo que ocurre es que cuando las necesidades crecen, la aplicación en un microcontrolador se hace más compleja y hay que profundizar en la teoría.

Hay conceptos muy importantes a aprender y avisaré de ello y luego otras cosas que daré las nociones y las herramientas para que quien lo necesite amplíe su conocimiento..

Existe mucha documentación sobre arduino en Internet, pero eso es un problema y a veces está desordenado o es demasiado básico, así que una parte de mi trabajo es recopilar la información más interesante y ordenarla y estructurarla.

Vamos mezclar la práctica con la teoría para que sea el curso ameno.

Cómo conseguir un “Arduino” Gratis

Para conseguir un “Arduino” gratis, se puede recurrir a la opción de solicitar muestras gratuitas a Atmel en http://www.atmel.com/ en el apartado “buy” y luego “request a sample”.

Atmel como el resto de fabricantes de componentes electrónicos disponen de programas de muestras gratuitas que podemos usar para probar sus productos y hacer nuestros prototipos.

Otros fabricantes donde solicitar muestras gratuitas de sus microcontroladores:

Obviamente de esta forma, no vamos a tener un Arduino gratis, sino el microcontrolador que es el principal componente de un Arduino. Para dejar claro qué es un Arduino y qué es un microcontrolador, en esta página del curso #aprendiendoarduino explico qué es Arduino y el hardware libre: https://aprendiendoarduino.wordpress.com/2014/11/23/tema-1-plataforma-hardware-arduino/

Dado que quería testear varios microcontroladores con el IDE de Arduino, pedí varios componentes a Atmel a través de su programa de muestras gratuitas. Estos son los elementos que pedí:

En la imagen siguiente dejo el albarán de lo que llegó a mi casa, donde se puede ver el precio de cada uno de ellos, en concreto el microcontrolador ATmega328P que tiene el Arduino UNO cuesta 1.56 dólares:

albaran

En total pedí 4 microcontroladores de la familia megaAVR de 8 bits: http://www.atmel.com/products/microcontrollers/avr/megaAVR.aspx, un microcontrolador de la familia tinyAVR http://www.atmel.com/products/microcontrollers/avr/tinyavr.aspx y una EEPROM de 512Kb diseñada para almacenar programas de FPGAs pero que quiero tratar de usar como memoria externa.

Centrándonos en los microcontroladores, tanto el ATmega328P como el ATmega168P son soportados de forma nativa por el software de Arduino. Viendo el fichero boards.txt del IDE de Arduino en su versión 1.6, se observa que son varias las placas oficiales de Arduino que tienen estos microcontroladores.

Para el ATtiny85, tenemos que recurrir al playground de Arduino para saber como configurar el IDE de Arduino y poder usarlo con esta MCU. En este enlace está la información necesaria: http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips. En este otro enlace explica perfectamente como usarlo: http://highlowtech.org/?p=1695 y finalmente en este tutorial explica como programar un ATtiny con el IDE de Arduino: http://www.instructables.com/id/Program-an-ATtiny-with-Arduino/

Los microcontroladores ATtiny son especialmente útiles en pequeñas aplicaciones que no necesiten un gran número de entradas y salidas, en mi caso lo uso para descargar tareas al arduino principal y que sean hechas por el ATtiny comunicándolos por puerto serie o inalámbricamente por RF.

ATtiny dispone de 6 entradas/salidas programables, un interfaz serie, sensor de temperatura integrado on-chip, programación vía puerto SPI, oscilador interno, etc… y sobre todo muy bajo consumo, que lo hace idóneo para aplicaciones con baterías.

Este el el pinout de un ATtiny85:

Para el ATmega88PA, el proceso es similar. En este enlace tenéis toda la información en este enlace: http://www.morethantechnical.com/2012/04/04/bootloading-an-atmega88-for-arduino-w-code/. En este caso tenemos un bootloader para este microcontrolador, basado en el bootloader del ATmega168.

El ATmega88PA es un microcontrolador muy similar al ATmega168PA y al ATmega 328P, compartiendo el mismo mapa de pines pero con solo 8 Kbytes de memoria flash, 1 Kbyte de SRAM y 512 bytes de EEPROM, lo que nos permitirá ponerlo en la placa de un Arduino UNO para poder usarlo.

En el caso  del ATmega32A, este tutorial explica paso a paso como usar el IDE de Arduino con el ATmega32: http://www.instructables.com/id/Using-Atmega32-with-Arduino-IDE/

Este microcontrolador tiene una flash de 32 Kbytes, una frecuencia máxima operativa algo menor que el ATmega328p, pero más pines de entrada y salida que la MCU del Arduino UNO , así como algunas limitaciones de funcionalidad sobre el ATmega328p.

Para más información sobre cómo personalizar el IDE de Arduino para soportar otros microcontroladores, está perfectamente explicado en este enlace: http://playground.arduino.cc/Main/CustomizeArduinoIDE

Por último, en este fantástico tutorial de ladyada, explica como usar avrdude, que en definitiva es el programa que usa el IDE de Arduino para cargar los programas en la flash de los microcontroladores de la familia AVR de Atmel: http://www.ladyada.net/learn/avr/avrdude.html y la web del proyecto avrdude es: http://savannah.nongnu.org/projects/avrdude.

Por lo tanto según el manual de avrdude que puedes encontrar en http://www.nongnu.org/avrdude/user-manual/avrdude.html, los microncontroladores que puedes programar con avrdude y por ende con el IDE de Arduino son los que aparecen en este listado: http://www.nongnu.org/avrdude/user-manual/avrdude_4.html#Option-Descriptions, así como los programadores soportados.

Después de esta explicación sobre varios microcontroladores, veamos los pasos para conseguirlos con el programa de muestras gratuitas de Atmel.

Primero es necesario registrarse en Atmel, obtener un usuario de myAtmel y entrar en el apartado Buy/Request a Sample:

request a sample

Después de esto aparece un listado para buscar las muestras gratuitas que deseamos:

listado samples

Aquí tenemos muchísimas referencias, en este caso para buscar los microcontroladores compatibles con el IDE de arduino, selecciono en part type “MCU AVR”. Aun así las referencias son muchísimas.

Si queremos por ejemplo un ATmega328p que es el microcontrolador que usa el Arduino UNO al poner “328p” en part number, nos salen 12 opciones:

328p

Ahora veamos las diferencias de esos doce part numbers que tiene Atmel para el ATmega328P. Para ello, vamos al apartado “Ordering Information” del documento resumen que ofrece Atmel para el ATmega328P http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Summary.pdf y vemos que existen estos doce tipos de microcontroladres ATmega328p:

Ordering Codes

Se divide en dos partes en función de la rango de temperaturas de trabajo y dentro de ellos el tipo de package o formato. Para saber a qué tipo de encapsulado corresponde cada formato, simplemente leer el documento resumen de Atmel anteriormente mencionado a partir de la página 24 donde describe cada uno de ellos.

En estas imágenes también se puede ver algunos de los formatos con otra codificación.

Packaging Range 2

Packaging Range 1

En nuestro caso como queremos un ATmega328P para sustituirlo en nuestra placa de Arduino UNO, necesitamos el formato PDIP-28 o 28DIP o 28P3, que son el mismo formato con diferente nomenclatura, pero en definitiva un formato de 28 pines para poder poner en una protoboard o en un Arduino UNO.

Después de seleccionar el microcontrolador o los elementos que queramos probar, se envía la solicitud (Submit Request) y debemos rellenar un formulario indicando el tipo de aplicación, el equipo final y el cliente final. Además se debe rellenar los detalles del proyecto.

Dejo una captura de pantalla de los datos a rellenar:

Formulario

En mi caso expliqué el proyecto al que iba a destinar el material, en concreto un prototipo para monitorización industrial. Tras enviar el pedido, en unos minutos recibí un email confirmándolo y en menos de 24 horas recibes otro email con el estado del envío y el número de seguimiento del pedido.

En aproximadamente una semana llega el “Arduino”, solo me queda quitar el ATmega328P del Arduino UNO y sustituirlo por este.

ATmega328P

Pero aún nos queda un paso para poder usar este microcontrolador gratuito en el Arduino UNO, se trata de cargar el bootloader.

Lógicamente, los microcontroladores que vende Atmel tiene la flash vacía y si quiero programarlos tan fácilmente como la plataforma Arduino nos permite simplemente conectando a un puerto USB de nuestro ordenador y cargar el código en la flash de la MCU pulsando un botón, necesito que el ATmega328P tenga cargado el bootloader que hace que todo sea mucho más simple.

Para cargar el bootloader y entender mejor porqué es necesario para usar un microcontrolador en el Arduino UNO, lo explico en el apartado de bootloader del curso #aprendiendoarduino https://aprendiendoarduino.wordpress.com/2014/11/17/tema-7-conceptos-avanzados-de-hardware/

Para cargar el bootloader es necesario o bien un programador ISP o bien tener otro Arduino y convertirlo en un programador como muy bien queda explicado en este tutorial: http://arduino.cc/en/pmwiki.php?n=Tutorial/ArduinoISP

Con este artículo no he pretendido solo hacer un paso a paso de como conseguir gratis un microcontrolador como el usado en el Arduino UNO, sino que lo he aprovechado para hablar de otros microcontroladores, intentar explicar un poco mejor que Arduino es una plataforma para programar de forma sencilla MCUs de la familia AVR de Atmel y como programas otros microcontroladores de Atmel con el IDE de Arduino.

Referencias: