miércoles, 10 de agosto de 2016

Baterias para Arduino


Cuando estás trabajando con tu Arduino normalmente lo alimentas a través del cable USB que va al ordenador. Sin embargo, una vez terminas de programarlo, o bien te resignas a dejarlo conectado todo el día conectado a tu pc (sin poder apagarlo) o bien buscas otra forma alimentar Arduino.
– Yo no busco otra forma de alimentar Arduino… ¡Ya la he encontrado! Se llama pila de 9V, no era tan difícil…
Probablemente la forma más habitual de alimentar Arduino (sin utilizar tu ordenador) es mediante una pila de 9V. En parte es porque son los conectores más comunes para alimentar Arduino que puedes encontrar en el mercado, lo que lo convierte en una opción simple, fácil y que funciona pero… ¿Te has parado a pensar alguna vez cuánto te están durando las pilas? Estoy seguro de que el conejo de Duracell está ahora mismo en su madriguera frotándose las manos.
– A mí ese conejo no me la juega. Uso pilas recargables.
Evidentemente existen pilas recargables de 9V, lo que, sin duda, haría que te ahorrases un dinerito a la larga (que nunca viene mal). Pero aunque te saldrá algo más barato (sigue sin ser la forma más barata, eso seguro), sigues teniendo el problema de que las baterías apenas tienen duración.
Espero que te haya quedado claro que si algún día hago un post sobre cómo NO alimentar Arduino, este será el primer punto.
Este post va destinado a mostrarte las que considero son las 3 mejores formas de alimentar Arduino. Aun así, todavía hay un par de conceptos que tienes que tener en cuenta.

Conceptos Previos: Voltaje Sobrante y mAh



  • Voltaje Sobrante.

Cuando te hablo de voltaje sobrante me refiero a todos los voltios que tu Arduino gasta pero no usa.
La mayor parte de los Arduinos funcionan a 5V, otros como la placa DUE lo hacen a 3.3V (Si todavía no tienes muy claro que Arduino te conviene, te recomiendo que visites este post). Sea cual sea tu modelo, todos tienen unregulador de tensión, que básicamente es un componente que convierte el voltaje que con el que tú alimentas la placa (lo recomendado es entre 7 y 12V) a 5V (o 3.3V), tirando por tierra el resto (en realidad no lo tira por tierra, es peor aun, ese voltaje calienta tu placa Arduino. Por ejemplo, alimentar Arduino con más de 20V lo destruiría).
Este regulador del que te he hablado necesita un voltaje mínimo para para proporcionar 5V que está entorno 6.5-7V pero todo lo que esté por encima de ese valor se desperdicia.
– … Y yo que estaba pensando en comprarme una pila de 12V para meterle más caña… :(
  • mAh

mAh o miliamperio hora es el término que se utiliza para determinar la duración de una batería. Si tu batería o pila tienen 1000 mAh, podrás alimentar algo que consuma 1000 mA durante una hora (o 100 mA durante 10 horas) ¿Simple, verdad?
En realidad esto que te acabo de decir solo se cumple en la teoría. En la práctica, cuanto más rápido se descargue tu batería, más potencia se estará disipando en la resistencia interna que tiene. Eso quiere decir que si realmente durase 10 horas alimentando un dispositivo que consume 100 mA, probablemente no duraría una hora alimentando algo con un consumo de 1000 mA.
– ¿Me pregunto cuántos mAh consumirá mi Arduino?
Para que te hagas una idea del consumo de tu proyecto, un pequeño circuito con una placa de Arduino y un Display ya suponen un consumo por encima de los 200 mAh, mientras que una pila recargable de 9V tiene entorno a los 300 mAh (y eso si está nueva). ¿Entiendes ahora por qué alimentar Arduino con una pila de 9V es tan mala opción?
Ya sabes en qué datos te tienes que fijar para alimentar Arduino en función de tus necesidades. Ahora sí, vamos con las 3 mejores formas de alimentar Arduino.

1. Adaptador de Corriente



Es básicamente la versión Arduinica de tu cargador del móvil. Si quieres alimentar Arduino de forma permantente y no necesitas que tu proyecto se mueva (está claro que para un coche a radiocontrol esta opción no te vale). Puedes conectarlo a la pared de tu casa y olvidarte de comprar pilas.
Quiero aprovechar para contarte que yo siempre compro en la misma web (porque tiene muy buenos precios y hasta ahora todo me ha llegado bien). Al crear EducaChip decidí que si recomendaba algo tenía que ser un producto que conociese y me gustase, así que me afilié a esa web aunque mi comisión no fuese la mejor. Dicho esto te pongo ellink del Adaptador que tengo yo en casa por si te decides por esta opción (recuerda que no te costará más por comprarlo a través de ese link).

2. Pilas AA



Las típicas pilas de toda la vida te proporcionan 1,5V. Puedes poner varias en serie hasta llegar al voltaje que necesites (lo ideal es poner 6) y alimentar Arduino con ellas.
La diferencia entre utilizar estas pilas y utilizar las de 9V es enorme. Una sola pila alcalina AA tiene entre 2700-2900 mAh (por los 300 mAh de una recargable de 9V), por lo que son una muy buena opción. La única pega que tiene esta opción es que como pilas que son se gastan, y tendrás que comprar pilas a menudo. Aun así una opción muy recomendable.

3. Baterías LiPo



Alimentar-Arduino-LiPoSi la primera forma de alimentar Arduino de la que te hablé consistía en algo similar un cargador de móvil, esta opción es alimentarlo con una batería de móvil.
Las baterías LiPo están muy de moda gracias a su duración (tienen muchos mAh). Piensa que si es la opción que eligen las grandes empresas para fabricar sus smartphones, tablets y demás, por algo será. Tienen una vida útil bastante larga, lo que hace que compense utilizar este recurso aunque sean un pelín más caras que las pilas AA.
Sin lugar a dudas son la mejor opción para alimentar tu coche a radiocontrol, dron o cualquier dispositivo móvil que se te ocurra.
Existen baterías LiPo de distintos voltajes y capacidades. En el caso de alimentar Arduino, la mejor opción es utilizar una batería de 7,4V y, al menos, 1600 mAh.
Aquí te dejo el link con una que, sin duda, me compraré antes o después. Tiene una pinta estupenda.

jueves, 4 de agosto de 2016

Programación en Arduino

Estructura de un programa

La estructura básica del lenguaje de programación de Arduino es bastante simple y se compone de al menos dos partes. Estas dos partes necesarias, o funciones, encierran bloques que contienen declaraciones, estamentos o instrucciones.
void setup() //Primera Parte
{
  estamentos;
}
void loop() //Segunda Parte
{
  estamentos;
}

En donde setup() es la parte encargada de recoger la configuración y loop() es la que contiene el programa que se ejecutará cíclicamente (de ahí el término loop –bucle-). Ambas funciones son necesarias para que el programa trabaje.
La función de configuración (setup) debe contener la declaración de las variables. Es la primera función a ejecutar en el programa, se ejecuta sólo una vez, y se utiliza para configurar o inicializar pinMode (modo de trabajo de las E/S), configuración de la comunicación en serie y otras.
La función bucle (loop) siguiente contiene el código que se ejecutara continuamente (lectura de entradas, activación de salidas, etc) Esta función es el núcleo de todos los programas de Arduino y la que realiza la mayor parte del trabajo.

setup()

La función setup() se invoca una sola vez cuando el programa empieza. Se utiliza para inicializar los modos de trabajo de los pins, o el puerto serie. Debe ser incluido en un programa aunque no haya declaración que ejecutar. Así mismo se puede utilizar para establecer el estado inicial de las salidas de la placa.
void setup()
{
  pinMode(pin, OUTPUT); // configura el 'pin' como salida
  digitalWrite(pin, HIGH);  // pone el ‘pin’ en estado HIGH
}

loop()

Después de llamar a setup(), la función loop() hace precisamente lo que sugiere su nombre, se ejecuta de forma cíclica, lo que posibilita que el programa esté respondiendo continuamente ante los eventos que se produzcan en la placa.
void loop()
{
digitalWrite(pin, HIGH); // pone en uno (on, 5v) el 'pin'
delay(1000);                // espera un segundo (1000 ms)
digitalWrite(pin, LOW); // pone en cero (off, 0v.) el 'pin'
delay(1000);            
}

funciones

Una función es un bloque de código que tiene un nombre y un conjunto de instrucciones que son ejecutadas cuando se llama a la función. Son funciones setup() y loop() de las que ya se ha hablado. Las funciones de usuario pueden ser escritas para realizar tareas repetitivas y para reducir el tamaño de un programa. Las funciones se declaran asociadas a un tipo de valor “type”. Este valor será el que devolverá la función, por ejemplo 'int' se utilizará cuando la función devuelve un dato numérico de tipo entero. Si la función no devuelve ningún valor entonces se colocará delante la palabra “void”, que significa “función vacía”. Después de declarar el tipo de dato que devuelve la función se debe escribir el nombre de la función y entre paréntesis se escribirán, si es necesario, los parámetros que se deben pasar a la función para que se ejecute.
type nombreFunción(parámetros)
{
instrucción;
}

La función siguiente devuelve un número entero, delayVal() se utiliza para poner un valor de retraso en un programa que lee una variable analógica de un potenciómetro conectado a una entrada de Arduino. Al principio se declara como una variable local, 'v' recoge el valor leído del potenciómetro que estará comprendido entre 0 y 1023, luego se divide el valor por 4 para ajustarlo a un margen comprendido entre 0 y 255, finalmente se devuelve el valor 'v' y se retornaría al programa principal. Esta función cuando se ejecuta devuelve el valor de tipo entero 'v'.
int delayVal()
{
int v;                      // crea una variable temporal 'v'
v= analogRead(pot);      // lee el valor del potenciómetro
v /= 4;                // convierte 0-1023 a 0-255
return v;                // devuelve el valor final
}

{} entre llaves

Las llaves sirven para definir el principio y el final de un bloque de instrucciones. Se utilizan para los bloques de programación setup(), loop(), if.., etc.
type funcion()
{
instrucciones;
}

Una llave de apertura “{“ siempre debe ir seguida de una llave de cierre “}”, si no es así el programa dará errores.
El entorno de programación de Arduino incluye una herramienta de gran utilidad para comprobar el total de llaves. Sólo tienes que hacer click en el punto de inserción de una llave abierta e inmediatamente se marca el correspondiente cierre de ese bloque (llave cerrada).

; punto y coma

El punto y coma “;” se utiliza para separar instrucciones en el lenguaje de programación de Arduino. También se utiliza para separar elementos en una instrucción de tipo “bucle for”.
int x = 13;   /* declara la variable 'x' como tipo entero de valor 13 */

Nota: Olvidaos de poner fin a una línea con un punto y coma o se producirá en un error de compilación. El texto de error puede ser obvio, y se referirá a la falta de una coma, o puede que no. Si se produce un error raro y de difícil detección lo primero que debemos hacer es comprobar que los puntos y comas están colocados al final de las instrucciones.

/*… */ bloque de comentarios

Los bloques de comentarios, o comentarios multi-línea son áreas de texto ignorados por el programa que se utilizan para las descripciones del código o comentarios que ayudan a comprender el programa. Comienzan con / * y terminan con * / y pueden abarcar varias líneas.
/* esto es un bloque de comentario no se debe olvidar
cerrar los comentarios estos deben estar equilibrados */

Debido a que los comentarios son ignorados por el compilador y no ocupan espacio en la memoria de Arduino pueden ser utilizados con generosidad. También pueden utilizarse para "comentar" bloques de código con el propósito de anotar informaciones para depuración y hacerlo mas comprensible para cualquiera.
Nota: Dentro de una misma línea de un bloque de comentarios NO se puede escribir otro bloque de comentarios (usando /*..*/).

// línea de comentarios

Una línea de comentario empieza con // y terminan con la siguiente línea de código. Al igual que los comentarios de bloque, los de línea son ignoradas por el programa y no ocupan espacio en la memoria.
// esto es un comentario

Una línea de comentario se utiliza a menudo después de una instrucción, para proporcionar más información acerca de lo que hace ésta o para recordarla más adelante.

Arduino Mini

Arduino Mini

Arduino Mini delantera sin cabecerasArduino Mini trasero

Visión de conjunto

NOTA: este producto está actualmente retirado y la documentación no se mantendrá al día
La Arduino Mini es una pequeña placa de desarrollo basado originalmente en el ATmega168 , pero ahora suministra con el 328. ( ficha técnica ), destinado a circular por placas universales y cuando el espacio es un bien escaso. Cuenta con 14 pines digitales de entrada / salida (de los cuales 6 se podrán utilizar como salidas PWM), 8 entradas analógicas, y un 16MHz oscilador de cristal. Se puede programar con el adaptador de serie USB u otro USB o RS232 a TTL adaptador serie.
El nuevo Mini (revisión 05) tiene un nuevo paquete para el ATmega328 , que permite a todos los componentes que estar en la parte superior del tablero. También tiene un botón de restauración a bordo. La nueva versión tiene la misma configuración de pines como la revisión 04.
Advertencia : No encienda el Arduino Mini con más de 9 voltios, o conecte la fuente al revés: es probable que acabar con él.

Resumen

microcontroladorATmega328
Tensión de funcionamiento5V
Voltaje de entrada7-9 V
E / S digitales prendedores14 (de los cuales 6 proporcionan salida PWM)
Pines de entrada analógica8 (de las cuales 4 son estallado en los pasadores)
Corriente continua para Pin I / O40 mA
Memoria flash32 KB (de los cuales 2 KB utilizado por el gestor de arranque)
SRAM2 KB
EEPROM1 KB
Velocidad de reloj16 MHz
Longitud30 mm
Anchura18 mm

Programación

La Arduino Mini se puede programar con el software de Arduino ( descarga ). Para más detalles, véase la referencia ytutoriales .
Para programar el Arduino Mini, necesitará un adaptador de serie USB u otro USB o RS232 a TTL adaptador serie. Ver la página en cómo empezar a utilizar el Arduino Mini para obtener instrucciones.
Los ATmega328 en el Arduino Mini viene precargado con un cargador de arranque que le permite cargar nuevo código a ella sin el uso de un sistema de programador en. El gestor de arranque se comunica utilizando el original STK500protocolo ( referencia , archivos de cabecera C ).
También puede pasar por alto el gestor de arranque y programar los ATmega328 con ICSP (In-Circuit Serial Programming); ver la página en bootloading el Mini para obtener información sobre el cableado de una cabecera ICSP para el Mini y el programador para obtener instrucciones sobre el uso de un programador para cargar un boceto.

Entrada y salida

Cada uno de los 14 pines digitales en el Mini se puede utilizar como una entrada o salida. Operan a 5 voltios. Cada pin puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia de pull-up (desconectada por defecto) de 20-50 kOhms. Pins 3, 5, 6, 9, 10, y 11 pueden proporcionar una salida de PWM; para más detalles ver el analogWrite () función.En todo caso, además de la Mini USB (u otro) adaptador está conectado a los pines 0 y 1, interferirá con la comunicación USB, evitando nuevo código se carguen u otra comunicación con el ordenador.
El Mini tiene 8 entradas analógicas, cada uno de los cuales proporcionan 10 bits de resolución (es decir, 1024 valores diferentes). Entradas de 0 a 3 se desglosan en los pasadores; de entrada 4-7 requiere soldadura en los orificios provistos.Por defecto, la medida de las entradas analógicas del suelo a 5 voltios, aunque es posible cambiar el extremo superior de su rango usando el pin AREF y algo de código de bajo nivel.

pinout

Nota: el pinout cambiado desde la versión 03 a la versión 04 del Mini, por favor asegúrese de utilizar el diagrama de la derecha.
Pin de la Arduino Mini 03. (las versiones anteriores son compatibles, pero falta la IO7 encabezado en la parte superior)
Pin de la Arduino Mini 04 y 05. (Tenga en cuenta que el conector de tierra de la izquierda se ha movido hacia abajo un pasador.)

Esquemático

Gerber para los 04 Arduino Mini (archivos de mesa original no se realizaron en Eagle)

Arduino Nano

Arduino Nano

Arduino Nano FrenteArduino Nano trasero

Visión de conjunto

NOTA: este producto está actualmente retirado y la documentación no se mantendrá al día
El Arduino Nano es una pequeña, completa y tablero de usar placa basada en el ATmega328 (Arduino Nano 3.x) oATmega168 (Arduino Nano 2.x). Tiene más o menos la misma funcionalidad de la Arduino Duemilanove, pero en un paquete diferente. Carece de una sola toma de corriente continua, y funciona con un cable USB Mini-B en lugar de una normal. El Nano fue diseñado y está siendo producido por Gravitech.
Inspírate
Descubre algunos proyectos Arduino Nano destacados de Arduino Proyecto Hub , nuestra plataforma tutorial:
  

Esquema y Diseño

Arduino Nano 3.0 ( ATmega328 ): esquemáticas , archivos de Eagle .
Arduino Nano 2.3 ( ATmega168 ): Manual (PDF), archivos de Eagle . Nota: puesto que la versión gratuita de Águila no maneja más de 2 capas, y esta versión del Nano es de 4 capas, se publica aquí sin enrutamiento, por lo que los usuarios pueden abrir y utilizarlo en la versión gratuita de águila.

Presupuesto:

microcontroladorAtmel ATmega168 o ATmega328
Tensión de funcionamiento (nivel lógico)5 V
Voltaje de entrada (recomendado)7-12 V
Voltaje de entrada (límites)6-20 V
E / S digitales prendedores14 (de los cuales 6 proporcionan salida PWM)
Pines de entrada analógica8
Corriente continua para Pin I / O40 mA
Memoria flash16 KB ( ATmega168 ) o 32 KB ( ATmega328 ) de los cuales 2 KB utilizado por el gestor de arranque
SRAM1 KB ( ATmega168 ) o 2 KB ( ATmega328 )
EEPROM512 bytes ( ATmega168 ) o 1 KB ( ATmega328 )
Velocidad de reloj16 MHz
Dimensiones0,73 "x 1,70"
Longitud45 mm
Anchura18 mm
Peso5 g

Poder:

El Arduino Nano puede ser alimentado a través de la conexión USB Mini-B, no regulada 6-20V fuente de alimentación externa (pin 30), o 5V regulada fuente de alimentación externa (pin 27). La fuente de alimentación se selecciona automáticamente a la fuente de voltaje más alto.

Memoria

El ATmega168 tiene 16 KB de memoria flash para almacenar el código (de los cuales se utiliza 2 KB para el gestor de arranque); el ATmega328 tiene 32 KB, (también con 2 KB utilizado por el gestor de arranque). El ATmega168 tiene 1 KB de SRAM y 512 bytes de EEPROM (que pueden ser leídos y escritos con la librería EEPROM ); el ATmega328 tiene 2 KB de SRAM y 1 KB de EEPROM.

Entrada y salida

Cada uno de los 14 pines digitales en el Nano se puede utilizar como una entrada o salida, utilizando pinMode () ,digitalWrite () , y digitalRead () funciones. Operan a 5 voltios. Cada pin puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia de pull-up (desconectada por defecto) de 20-50 kOhms. Además, algunos pines tienen funciones especializadas:
  • De Serie: 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y transmitir datos en serie (TX) TTL. Estos pines están conectados a los pines correspondientes del chip de serie FTDI USB-a-TTL.
  • Las interrupciones externas: 2 y 3. Estos pines pueden ser configurados para desencadenar una interrupción en un valor bajo, un flanco ascendente o descendente, o un cambio en el valor. Ver el attachInterrupt () la función para más detalles.
  • PWM: 3, 5, 6, 9, 10, y 11. proporcionar una salida de PWM de 8 bits con el analogWrite () función.
  • SPI:. 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Estos pines admite la comunicación SPI, que, aunque proporcionada por el hardware subyacente, no está incluido en el lenguaje de Arduino.
  • LED: 13. Hay un LED incorporado conectado al pin digital 13. Cuando el pasador es ALTO, el LED está encendido, cuando el pasador es bajo, es apagado.
El Nano tiene 8 entradas analógicas, cada uno de los cuales proporcionan 10 bits de resolución (es decir, 1024 valores diferentes). Por defecto se miden desde el suelo a 5 voltios, aunque es posible cambiar el extremo superior de su rango mediante el analogReference () función. Pines analógicos 6 y 7 no se pueden utilizar como pines digitales. Además, algunos pines tienen funciones especializadas:
  • 2 C:. A4 (SDA) y A5 (SCL) Apoyar I 2 Comunicación C (TWI) utilizando la librería Wire (documentación en el sitio web de cableado).
Hay un par de patas de la placa:
  • AREF. Voltaje de referencia para las entradas analógicas. Se utiliza con analogReference ().
  • Restablecer. Traiga esta línea baja para reiniciar el microcontrolador. Normalmente se utiliza para añadir un botón de reinicio para escudos que bloquean la una en la mesa.

Comunicación

El Arduino Nano tiene una serie de instalaciones para la comunicación con un ordenador, otro Arduino, u otros microcontroladores. Los ATmega168 y ATmega328 proporcionan UART TTL (5V) de comunicación en serie, que está disponible en los pines digitales 0 (RX) y 1 (TX). Un FTDI FT232RL en los canales de mesa esta comunicación en serie a través de USB y los drivers FTDI (incluido con el software de Arduino) proporcionan un puerto com virtual para el software en el ordenador. El software de Arduino incluye un monitor de serie que permite a los datos de texto simples para ser enviados hacia y desde la placa Arduino. Las RX y TX LED en el tablero parpadean cuando se están transmitiendo datos a través de la conexión USB FTDI chip y al ordenador (pero no para la comunicación en serie en los pines 0 y 1).
Una biblioteca SoftwareSerial permite la comunicación en serie en cualquiera de los pines digitales del Nano.
El ATmega168 y ATmega328 también apoyan I2C (TWI) y SPI. El software de Arduino incluye una biblioteca de alambre para simplificar el uso de la I2C bus; véase la documentación para más detalles. Para utilizar la comunicación SPI, consulte el ATmega168 o ATmega328 hoja de datos.

Programación

El Arduino Nano se puede programar con el software de Arduino ( descarga ). Seleccione "Arduino Diecimila, Duemilanove, o Nano w / ATmega168 " o "Arduino Duemilanove o Nano w / ATmega328 " de la Herramientas> Junta de menú (de acuerdo con el microcontrolador en su tablero). Para más detalles, véase la referencia y tutoriales .
Los ATmega168 o ATmega328 en el Arduino Nano viene precargado con un cargador de arranque que le permite cargar nuevo código a ella sin el uso de un programador de hardware externo. Se comunica usando el original STK500protocolo ( referencia , archivos de cabecera C ).
También puede pasar por alto el gestor de arranque y programar el microcontrolador a través de la (programación serial en circuito) ICSP encabezado utilizando Arduino ISP o similar; ver estas instrucciones para obtener más detalles.

(Software) de reinicio automático

En lugar de requerir una prensa físico del botón de reinicio antes de un proceso de carga, el Arduino Nano está diseñado de una manera que permite que pueda ser restablecido por el software que se ejecuta en un ordenador conectado. Una de las líneas de control de flujo por hardware (DTR) de la FT232RL está conectado a la línea de reposición de losATmega168 o ATmega328 a través de un condensador de 100 nanofaradios. Cuando esta línea se afirma (tomada bajo), la línea de restablecimiento pasa el tiempo suficiente para restablecer el chip. El software de Arduino utiliza esta capacidad que le permite subir el código con sólo pulsar el botón de subida en el entorno Arduino. Esto significa que el gestor de arranque puede tener un tiempo de espera más corto, ya que el descenso de DTR puede ser bien coordinada con el inicio de la subida.
Esta configuración tiene otras implicaciones. Cuando el Nano está conectado ya sea a un ordenador con Mac OS X o Linux, se restablece cada vez que se realiza una conexión a la misma desde el software (a través de USB). Para el siguiente medio segundo o así, el gestor de arranque se está ejecutando en el Nano. Mientras que está programado para ignorar los datos con formato incorrecto (es decir, nada, además de un proceso de carga del nuevo código), es interceptará los primeros bytes de datos enviados a la junta después de abrir una conexión. Si un boceto en ejecución en el tablero recibe la configuración de una sola vez o de otro tipo de datos cuando se inicia por primera vez, asegúrese de que el software con el que se comunica espera un segundo después de abrir la conexión y antes de enviar estos datos.