Arduino Nano

Descripción General

El Arduino Nano es una pequeña y completa placa basada en el ATmega328 (Arduino Nano 3.0) o ATmega168 (Arduino Nano 2.x) que se usa conectándola a una protoboard. Tiene más o menos la misma funcionalidad que el Arduino Duemilanove, pero con una presentación diferente. No posee conector para alimentación externa, y funciona con un cable USB Mini-B en vez de el cable estandar. El nano fue diseñado y está siendo producido por Gravitech.

Esquemático y Diseño

Arduino Nano 3.0 (ATmega328): Esquemático, Archivos Eagle.

Arduino Nano 2.3 (ATmega168): manual (pdf), Archivos Eagle. Nota: debido a que la versión gratuita de Eagle no permite trabajar con más de dos capas, y esta versión del Nano posee 4 capas, se ha publicado aquí sin ser enrutado, así los usuarios pueden abrirlo y usarlo en la versión gratuita de Eagle.

Especificaciones:

MicrocontroladorAtmel ATmega168 o ATmega328
Tensión de Operación (nivel lógico)5 V
Tensión de Entrada (recomendado)7-12 V
Tensión de Entrada (límites)6-20 V
Pines E/S Digitales14 (de los cuales 6 proveen de salida PWM
Entradas Analógicas8
Corriente máx por cada PIN de E/S40 mA
Memoria Flash16 KB (ATmega168) o 32 KB (ATmega328) de los cuales 2KB son usados por el bootloader
SRAM1 KB (ATmega168) o 2 KB (ATmega328)
EEPROM512 bytes (ATmega168) o 1 KB (ATmega328)
Frecuencia de reloj16 MHz
Dimensiones18,5mm x 43.2mm

Alimentación:

El Arduino Nano puede ser alimentado usando el cable USB Mini-B , con una fuente externa no regulada de 6-20V (pin 30), o con una fuente externa regulada de 5V (pin 27). La fuente de alimentación es seleccionada automáticamente a aquella con mayor tensión.

El chip FTDI FT232RL que posee el Nano solo es alimentado si la placa esta siendo alimentada usando el cable USB. como resultado, cuando se utiliza una fuente externa (no USB), la salida de 3.3V (la cual es proporcionada por el chip FTDI) no está disponible y los pines 1 y 0 parpadearán si los pines digitales 0 o 1 están a nivel alto.

Memoria

El ATmega168 posee 16KB de memoria flash para almacenar el codigo (de los cuales 2KB son usados por el bootloader); el ATmega 328 posee 32KB, (también con 2 KB usados por el bootloader). El Atmega168 posee 1KB de SRAM y 512 bytes de EEPROM (la cual puede ser leida y escrita con la librería EEPROM); el ATmega328 posee 2 KB de SRAM y 1KB de EEPROM.

Entrada y Salida

Cada uno de los 14 pines digitales del Nano puede ser usado como entrada o salida, usando las funciones pinMode(), digitalWrite(), y digitalRead(). Operan a 5 voltios. Cada pin puede proveer o recibir un máximo de 40mA y poseen una resistencia de pull-up (desconectada por defecto) de 20 a 50 kOhms. Además algunos pines poseen funciones especializadas:

  • Serial: 0 (RX) y 1 (TX). (RX) usado para recibir y (TX)usado para transmitir datos TTL vía serie. Estos pines están conectados a los pines correspondientes del chip USB-a-TTL de FTDI.

  • Interrupciones Externas: pines 2 y 3. Estos pines pueden ser configurados para activar una interrupción por paso a nivel bajo, por flanco de bajada o flanco de subida, o por un cambio de valor. Mira la función attachInterrupt() para más detalles.

  • PWM: pines 3, 5, 6, 9, 10, y 11. Proveen de una salida PWM de 8-bits cuando se usa la función analogWrite().

  • SPI: pines 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines soportan la comunicación SPI, la cual, a pesar de poseer el hardware, no está actualmente soportada en el lenguaje Arduino.

  • LED: Pin 13. Existe un LED conectado al pin digital 13. Cuando el pin se encuentra en nivel alto, el LED está encendido, cuando el pin está a nivel bajo, el LED estará apagado.

El Nano posee 8 entradas analógicas, cada unas de ellas provee de 10 bits de resolución (1024 valores diferentes). Por defecto miden entre 5 voltios y masa, sin embargo es posible cambiar el rango superior usando la función analogReference(). También, algunos de estos pines poseen funciones especiales:

  • I2C: Pines 4 (SDA) y 5 (SCL). Soporta comunicación I2C (TWI) usando la librería Wire (documentación en la web Wiring).

Hay algunos otros pines en la placa:

  • AREF. Tensión de referencia por las entradas analógicas. Se configura con la función analogReference().

  • Reset. Pon esta linea a nivel bajo para resetear el microcontrolador. Normalmente se usa para añadir un botón de reset que mantiene a nivel alto el pin reset mientras no es pulsado.

Mira también el cableado entre los pines Arduino y los puertos del ATmega168.

Comunicación

El Arduino Nao tiene algunos métodos para la comunicación con un PC, otro Arduino, u otros microcontroladores. El ATmega168 y el ATmega328 poseen un módulo UART que funciona con TTL (5V)el cual permite una comunicación vía serie, la cual está disponible usando los pines 0 (RX) y 1 (TX). El chip FTDI FT232RL en la placa hace de puente a través de USB para la comunicación serial y los controladores FTDI (incluidos con el software de Arduino) provee al PC de un puerto com vitual para el software en el PC. El software Arduino incluye un monitor serial que permite visualizar en forma de texto los datos enviados desde y hacia la placa Arduino. Los LEDs RX y TX en la placa parpadearán cuando los datos se estén enviando a través del chip FTDI y la conexión USB con el PC (Pero no para la comunicación directa a través de los pines 0 y 1)

La librería SoftwareSerial permite llevar a cabo una comunicación serie usando cualquiera de los pines digitales del Nano.

El ATmega168 y el ATmega328 también soporta comunicación I2C (TWI) y SPI. El software Arduino incluye la librería Wire para simplificar el uso del bus I2C; mira la documentación para más detalles. Para usar la comunicación SPI, por favor mira la hoja de datos del ATmega168 o el ATmega328.

Programación

El Arduino Nano puede ser programado con el software de Arduino (descarga). Selecciona "Arduino Diecimila, Duemilanove, o Nano w/ ATmega168" o "Arduino Duemilanove or Nano w/ ATmega328" de el menú Tools > Board (seleccionando el modelo del microcontrolador en tu placa). Para más detalles, mira la referencia y los tutoriales.

El ATmega168 o ATmega328 del Arduino Nano vienen preprogramados con un bootloader que te permite subir tu código al Arduino sin la necesidad de un programador externo. Se comunica usando el protocolo STK500 original (referencia, Archivos cabecera C).

También puedes programar el microcontrolador usando un programador ICSP (In-Circuit Serial Programming, Pogramación Serie En-Circuito); visita estasinstrucciones para más detalles.

Reset Automático (Software)

En vez de necesitar pulsar un botón físico de reset, el Arduino Nano ha sido diseñado de tal manera que permite ser reseteado por el software del PC al que está conectado. Una de las líneas de control de flujo por hardware (DTR) del chip FT232RL está conectada a la línea de reset del ATmega168 o ATmega328 a través de un condensador de 100 nanofaradios. Cuando esta línea se pone a nivel bajo, la linea de reset se mantiene a nivel bajo el suficiente tiempo para causar el reset del chip. El software de Arduino usa esta capacidad para permitir cargar código en el Arduino pulsando simplemente el botón "upload" en el entorno software de Arduino. Esto significa que el tiempo de espera del bootloader es más pequeño, ya que el tiempo en el que se encuentra a nivel bajo el DTR puede ser cordinado bien con el inicio de la carga del código.

Esta configuración tiene otras implicaciones. Cuando el Nano se conecta a un PC que funciona con Mac OS X o Linux, se resetea cada vez que se hace la conexión con el software (a través del USB). Durante el siguiente medio segundo más o menos, el bootloader está corriendo en el Nano. Como el bootloader ha sido para programado para ignorar cualquier dato erróneo (cualquier dato que no sea la carga de nuevo código), por lo tanto ignorará los primeros bytes que se reciban justo después de hacer la conexión. Si un sketch cargado en la placa recibe algún tipo de configuración o algún otro tipo de dato importante nada más iniciarse, asegúrate de que el software con el que se comunique, espere al menos un segundo antes de enviar datos para que no sean ignorados por el bootloader.

Share