lunes, 3 de febrero de 2014

Actividad #1 : Introduccion

Arduino
Es una plataforma electronica abierta para la creacion de prototipos basada en software y hardware flexibles y faciles de usar.



Tipos de Arduino

Arduino Uno
·         Microcontrolador: ATmega328
·         Voltaje de funcionamiento 5V
·         Alimentación: 7-12V
·         Voltaje máximo de entrada 20V
·         Pines digitales I/O 14 (de los cuales 6 dan salida PWM)
·         Corriente DC por I/O Pin 40 mA
·         Corriente DC para el pin 3.3V 50 mA
·         Memoria Flash: 32 KB (ATmega328) y 0.5 KB usados por el bootloader
·         SRAM: 2 KB (ATmega328)
·         EEPROM 1 KB  (ATmega328)
·         Velocidad de reloj          16 MHz

Arduino Leonardo
·         Micro controlado: ATmega32u4
·         Voltaje de operación: 5V
·         Voltaje de entrada: 7-12V
·         Máximo de entrada: 20V
·         Pines digitales I/O 20 (de los cuales 7 dan salida PWM)
·         Pines de entrada analógica12
·         Corriente DC por I/O Pin 40mA
·         Corriente DC para el pin 3.3V 50 mA
·         Memoria Flash:               32 KB
·         SRAM:  3.3 KB
·         EEPROM: 1 KB
·         Velocidad de reloj: 16MHz

Arduino Due
§  Microcontrolador: AT91SAM3X8E
§  Voltaje de operación: 3,3V
§  Voltaje de entrada (recomendado): 7-12V
§  Límites de voltaje: 6-20V
§  Pines I/O: 54 (12 con PWM)
§  Entradas analógicas: 12
§  Salidas analógicas: 2 (DAC)
§  Salida máxima I/O: 130mA
§  Corriente máxima: 800mA
§  SRAM: 96 KB (64 + 32 KB)
§  Memoria para programa: 512 KB
§  Velocidad: 84 MHz

Arduino Yun
§  Procesador: Atheros AR9331
§  Arquitectura: MIPS @400MHz
§  Alimentación: 3.3V
§  Puerto Ethernet: IEEE 802.3 10/100Mbit/s
§  Conexión WiFi: IEEE 802.11b/g/n
§  USB Type-A: 2.0 Host/Device
§  Lector de tarjetas: Micro-SD
§  RAM: 64 MB DDR2
§  Memoria Flash: 32 MB
§  Soporte para PoE tipo 802.3af

Arduino Tre
§  Procesador Texas Instruments Sitara AM335x ARM Cortex-A8 processor corriendo a 1GHz 512Mb de RAM
§  HDMI (HD)
§  audio stereo
§  USB
§  Ethernet
§  tarjeta microSD como almacenamiento externo

Arduino Micro
§  Dimensiones: 48x18mm
§  Peso: 6.5g
§  Microcontrolador: ATmega32u4
§  Funcionamiento: 5V
§  Alimentación recomedada: 7-12V
§  Limites de entrada (max): 6-20V
§  Pines I/O totales: 20
§  Pines PWM: 7
§  Pines analógicos: 12
§  Imax de los pines I/O: 40 mA
§  Corriente máxima del pin 3.3V: 50 mA
§  Memoria flash: 32 KB (4 KB usados por el bootloade)
§  SRAM: 2.5 KB
§  EEPROM: 1 KB
§  Velocidad: 16 MHz

Arduino Robot
§  Microcontrolador: ATmega32u
§  Voltaje de funcionamiento: 5V
§  Pines digitales PWM: 6
§  Pines de entrada analógica: 4
§  Corriente DC por I/O Pin: 40 mA
§  Botones: 5
§  Potenciómetro conectado a una entrada analógica
§  Pantalla LCD color Bajo comunicación SPI
§  Zócalo micro SD para terjetas en formato FAT16
§  Altavoz                de 8 Ohms
§  Brújula digital da la desviación respecto al Norte en grados
§  Memoria Flash 32 KB (ATmega328) 4 KB usados por el bootloader
§  SRAM   2.5 KB (ATmega32u4)
§  EEPROM: 1 KB (ATmega32u4)
§   Velocidad de reloj 16 MHz

Arduino Esplora
§  Microcontrolador: ATmega32u4
§  Alimentación: 5V
§  Memoria Flash: 32 KB (4 KB usados por el bootloader)
§  SRAM: 2.5 KB
§  EEPROM: 1 KBç
§  Velocidad de reloj: 16 MHz

Arduino Mega ADK
§  Microcontrolador: ATmega2560
§  Alimentación: 5V
§  Entrada: 7-12V
§  Límites (max):  5.5-16V
§  Pines digitales: 54 (14 con PWM)
§  Pines analógicos: 16
§  Corriente por pin: 40 mA
§  Corriente sobre pin 3,3V: 50 mA
§  Memroia Flash (programa): 256 KB (8 KB usados para el bootloader)
§  SRAM: 8 KB
§  EEPROM: 4 KB
§  Reloj: 16 MHz

Arduino Ethernet
§  Microcontrolador : ATmega328
§  Voltaje de funcionamiento: 5V
§  Alimentación: 7-12V
§  Voltaje máximo de entrada: 20V
§  Pines digitales I/O 14 (de los cuales 6 dan salida PWM)
§  Pines de entrada analógica 6
§  Corriente DC por I/O Pin 40 mA
§  Corriente DC para el pin 3.3       50 mA
§  Memoria Flash: 32 KB 0.5 KB usados por el bootloader
§  SRAM: 2 KB (ATmega328)
§  EEPROM: 1 KB (ATmega328)
§  Velocidad de reloj          16 MHz

Arduino Mega 2560
§  Microcontrolador: ATmega2560
§  Tensión de alimentación: 5V
§  Tensión de entrada
§  recomendada: 7-12V
§  Límite de entrada: 6-20V
§  Pines digitales: 54 (14 con PWM)
§  Entradas analógicas: 16
§  Corriente máxima por pin: 40 mA
§  Corriente máxima para el pin 3.3V: 50 mA
§  Memoria flash: 256 KB
§  SRAM: 8 KB
§  EEPROM: 4 KB
§  Velocidad de reloj: 16 MHz

Arduino Mini
§  Chip ATmega328 a 16MHz con cristal de cuarzo externo (toleracia: 0.5%)
§  Auto-reset
§  Regulador 5V integrado
§  Max: 150mA por salida
§  Protección de sobrecarga
§  Protección contra inversión de polaridad
§  Entrada DC de 5V hasta 12V
§  LED de power y estado

LiYPad Arduino USB
§  Micro controlador: ATmega328V
§  Tensión de alimentación 2.7-5.5 V
§  Tensión de entrada: 2.7-5.5 V
§  Pines digitales: 14
§  Entradas analógicas: 6
§  Corriente máxima por pin: 40 mA
§  Memorial flash: 16 KB (2 KB para  bootloader)
§  SRAM: 1KB
§  EEPROM: 512 bytes
§  Velocidad de reloj:  8 MHz

LilyPad Arduino
§  Microcontrolador : ATmega168V o ATmega328V
§  Voltaje de funcionamiento 2.7-5.5V
§  Voltaje de entrada 2.7-5.5 V
§  Pines E/S Digitales 14 (de las cuales 6 proporcionan salida PWM)
§  Pines Entradas Analógicas Input
§  Pins 6
§  Intensidad por pin 40 mA
§  Memora Flash  16 KB (de las
§  cuales 2 KB las usa el gestor de arranque(bootloader))
§  SRAM   1 KB
§  EEPROM 512 bytes
§  Velocidad de reloj 8 MHz

Arduino Nano
§  Microcontrolador: ATmega328
§  Voltage de funcionamiento 5V
§  Alimentación : 7-9V
§  Pines digitales I/O 14 (de los cuales 6 dan salida PWM)
§  Pines de entrada analógica 8
§  Corriente DC por I/O Pin 40 mA
§  Corriente DC para el pin 3.3 50 mA
§  Memoria Flash 32 KB (ATmega328)
§  SRAM   2 KB (ATmega328)
§  EEPROM 1 KB (ATmega328)
§  Velocidad de reloj 16 MHz

Arduino Pro Mini
§  Chip ATmega328 a 8MHz con cristal de cuarzo externo (toleracia: 0.5%)
§  Auto-reset
§  Alimentación: 3.3V a 12V
§  Max: 150mA por salida
§  Protección de sobrecarga
§  Protección contra inversión de polaridad
§  LED de power y estado


Arduino Pro
§  Microcontrolador ATmega328 con cristal de 16MHz.
§  Pines laterales de conexión del UART
§  Regulador 5V incorporado
§  Protegido contra inversión de polaridad
§  Alimentación: DC de 5V a 12V
§  Protección en caso de cortocircuito
§  Conmutador de ON/OFF


Arduino Fio
§  ATmega328V a 8MHz
§  Incluye el Arduino Bootloader
§  Zócalo para XBee (módulo xbee no incluido)
§  Compatible con baterías de Litio Polímeto
§  Cargador LiPo MAX1555 integrado
§  botón de RESET
§  Interruptor On/Off integrado
§  Indicadores LED: Status/Charge/RSSI

Arduino GSM Shield
§  Alimentación: 5V (suministrados desde la placa Arduino)
§  Conectividad: Redes GSM y GPRS
§  Funcionalidades: SMS, llamadas telefónicas, datos GPRS
§  Conexión Arduino con Softserial
§  Conector de antena SMA hembra
§  Incluye una tarjeta SIM de Movistar/Bluevia

Arduino WifiShield
§  Trabaja a 5V (suministrados por Arduino)
§  Conexión 802.11b/g
§  Seguridad WEP y WPA2
§  Comunicación con Arduino por SPI
§  Zócalo micro SD
§  Pines ICSP
§  Conector Mini-USB para actualizar el firmware WiFi

Arduino Wireless SD Shield
La placa Arduino se comunica con la micro-SD utilizando el bus SPI. Esto se encuentra en los pines digitales 11, 12 y 13 en el modelo UNO y en los pines 50, 51 y 52 del modelo MEGA. En ambas placas el pin 4 para la micro-SD.

Arduino Motor Shield
Sencillo control de los motores DC con un pin digital para el sentido de giro, un pin PWM para la velocidad, un pin digital para el freno (desconectable) y un pin analógico para leer el consumo del motor (desconectable).

Arduino Proto Shield
Shield con pistas de cobre y agujeros soldables para que montes tus prototipos y los acoples directamente a tu Arduino UNO o Mega ADK como si de un Shield comercial se tratara.
Cuenta con espacios para 2 LEDs, un pulsador, un IC de 16 patillas, un IC SMD de 14 patillas y una amplia zona para soldar componentes.



Modulos



Modulo 4D.- Permitte conectar pantallas con tecnologia 4D al arduino por medio del puerto serial.

Modulo GPS/GPRS/GSM.- Basado en un modulo cuatribandaSIM908, incorpora un receptor GPS y conectividad via GSM para comunicación.
Modulo GSM.- Capaz de enviar y recibir SMS, realizar y recibir llamadas de voz y datos por medio de una tarjeta SIM de cualquier operador de telefonía.
Modulo TFT Touch.- Con una pantalla tactil de 2.8 pulgadas, puede ser utilizado para proyectos que requieran de salida gráfica.
Modulo Solar Charger.- Permite alimentar al Arduino con una bateria y recargarla al mismo tiempo con un panel solar.
Modulo MP3.- Permite convertir al Arduino en un completo reproductor de archivos MP3 y cuenta con un zocalo para tarjetas microSD.
Modulo WiFi SD.- Permite la conectividad inalambrica y dispone de un zocalo para tarjetas MicroSD.
 Modulo USB.- Añade un puerto USB para poder tener conectividad al Arduino con cualquier dispositivo USB.
Modulo Ethernet.- Permite conectar el Arduino a una red cableada a traves de un puerto ethernet.

Funciones

Los programas de arduino tienen los mismo componentes que un lenguaje de programación convencional y moderno, tales como control de flujo, ciclos, comentarios, operadores aritméticos y operadores lógicos, e incluso operadores binarios.
Para iniciar un programa en arduino se utiliza la función setup(), la cual se utiliza para iniciar variables, establecer estados de los pines etc.. Cabe mencionar que dicha función solo se ejecuta una vez.
Después de declarar la funcion setup() se utiliza la función loop() para controlar la placa.
Al igual que en los lenguajes de programación de alto nivel, arduino te permite utilizar estructuras de control.

En el caso de la sintaxis usada en arduino, la encontramos muy parecida a los lenguajes de alto nivel, utilizando:

● punto y coma “;” para finalizar instrucciones
● los braces “{}”
● #define para definir nombres de constantes, y por último
● #include para incluir librerías externas.
También encontramos el operador de puntero (referencia y dereferencia).

Podemos usar constantes, que facilitan la lectura del codigo.
Se pueden dividir las constantes en grupos:
● Las que definen niveles lógicos (true and false)
● Las que definen los niveles de los pines (HIGH y LOW)
● Las que definen los pines digitales (INPUT y OUTPUT)






Encontramos que utiliza tipos de datos primitivos necesarios para realizar operaciones básicas en nuestro programa. Algo interesante que encontramos es que a diferencia de Java y C++, entre algunos otros lenguajes de alto nivel, en arduino se implementa el tipo de dato:
Word
El cual almacena sin signo 16 bits, desde 0 a 65535. Igual como un entero sin signo.
Ejemplo: word w = 10000; 

Como programadores sabemos que difícilmente nuestros tipos de datos siempre serán compatibles con las operaciones que nos toque realizar en tiempo de ejecución, por lo que necesitamos que el lenguaje nos de la libertad de convertir nuestros tipos de datos, para ello arduino nos brinda funciones de conversión (to cast) tales como:
  • ·        char()
  • ·        byte()
  • ·        int()
  • ·        word()
  • ·        long()
  • ·        float()

Estas funciones reciben como parámetro un valor de cualquier tipo y lo convierten a su respectivo.
También nos brinda definir el alcance de variables y calificadores, para determinar el acceso de los métodos a las variables y como el compilador las tratará, aquí podemos encontrar cosas diferentes a lo convencional (const, static, scope variables for each method or function) como:
·        volatile
Este es un calificador para indicar que su valor puede cambiar por algo más allá del control del código de la sección en la que aparece.
Una de las utilidades de arduino es el operador sizeof() que nos permite obtener el numero de bytes que ocupa una variable o un arreglo.
Revisando la documentación oficial nos encontramos que contiene funciones básicas de entrada y de salida (Input and Output) tanto digital y análogo.              
Enseguida explicaremos algunas de estas funciones.
-En el caso de las funciones de I/O digital tenemos
pinMode(): Que nos permite configurar un pin, para que se comporte como entrada o salida.
digitalWrite(): Escribe un valor hacia un pin digital (HIGH o LOW)
digitalRead(): Lee el valor de un pin digital.

-En el caso de las funciones de I/O análogo encontramos la función analogReference() que configura el voltaje de referencia utilizado por la entrada analógica. Tenemos tres opciones:
DEFAULT: Valor por defecto (5volts en placas de 5V y 3.3volts en placas de 3.3V)
INTERNAL
● EXTERNAL

Tambien encontramos funciones avanzadas de Entrada y Salida como son:
Tone(): Genera una onda cuadrada de la frecuencia especificada.

NoTone(): Detiene la señal de la onda cuadrada. En caso de que no se genere ningun sonido, esta función no tiene efecto.

shiftOut(): Desplaza un byte de datos bit a bit. Empieza desde el bit mas significante o el menos significante.

shiftIn(): Desplaza un byte de datos un bit a la vez.

pulseIn(): Lee un pulso en un pin.


Nos encontramos también que contiene funciones para medir el tiempo y usar funciones matemáticas tales como trigonométricas y funciones básicas como min(), max(), abs(), entre otras.


Algo muy interesante que encontramos en las funciones fué:
interrupts() y noInterrupts()
Las cuales son funciones útiles ya que podemos llamar noInterrupts() para ejecutar sin ser interrumpidas nuestras líneas de código dentro de una determinada sección hasta que se indiqué un interrupt(). Se realiza un proceso crítico y tal como en los sistemas operativos comunes, realizan adquisición de locks para realizar un proceso crítico y soltarlo hasta que termine. Lo cual podemos utilizar para evitar deadlocks.


Ejemplos Basicos

Código mínimo necesario para comenzar a compilar en un boceto de arduino:
- setup () method
- loop ()method
Setup () method: es llamada cuando se inicia la estructura de un programa de arduino, se usa para iniciar variables, modes, pin, empezar a utilizar las librerías, etc. La función setup solo se ejecutara una vez, después de cada arranque o reinicio de la placa de arduino.
Despues de creada la función setup, la función loop realiza lo que su nombre indica, loops de forma consecutica lo que permite al programa cambiar y responder mientras se ejecuta. La seecion del código se utiliza para controlar activamente la placa del arduino.
Código necesario para comenzar una estructura de programa de arduino o sketch
void setup() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly: 
}

Blink
Este ejemplo muestra los comandos necesarios para encender o apagar un led.
Lo primero que se debe de hacer es inicializar el pin 13 como un pin de salida con la línea:
Void setup () {
pinMode(13, OUTPUT);
}
En el main loop se enciende el led con la línea:
Void loop () {
digitalWrite(13, HIGH);
}
y para apagar con la línea:
digitalWrite(13, LOW);
Digital Read Serial
Muestra como supervisar el estado de un switch mediante la comunicación en serie entre su arduino y el ordenador atraves de USB.
La primer cosa que hay que hacer es el setup () function es comenzar la comunicaciones en serie  9600 bits de datos por segundo con la línea:
Serial.begin(9600);
Después inicializar el pin digital 2, el pin leerá la salida del botón como una entrada:
pinMode(2,INPUT);
Ahora que su configuración se ha completado, Se trata de una entrada digital, lo que significa que el interruptor sólo puede estar en cualquiera de los dos en estado activo ( visto por el Arduino como un " 1 " , o HIGH ) o un estado de apagado ( visto por el Arduino como un " 0 " , o BAJO ) , sin nada en medio.
Lo primero que hay que hacer en el bucle principal del programa es establecer una variable para contener la información que viene de su conmutador. Dado que la información que viene del interruptor será un " 1 " o un "0 " , se puede utilizar un tipo de datos int :
int sensorValue = digitalRead ( 2 );
Una vez que el Arduino ha leído la entrada , hacer que imprima esta información a la computadora como un valor decimal. Usted puede hacer esto con el comando
 Serial.println () en la última línea de código:
Serial.println ( sensorValue );
Fading
La función analogWrite () que va a utilizar en el main loop  de su código requiere dos argumentos: uno que cuenta la función a que pin va escribir, y uno que indica cuál es el valor de PWM para escribir.
El valor PWM se ajusta mediante una variable llamada brightness. Cada vez a través del bucle, aumenta por el valor de la variable fadeAmount .
/*
 Fade
 
 This example shows how to fade an LED on pin 9
 using the analogWrite() function.
 
 This example code is in the public domain.
 */


int led = 9;           // the pin that the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup()  { 
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
} 

// the loop routine runs over and over again forever:
void loop()  { 
  // set the brightness of pin 9:
  analogWrite(led, brightness);    

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade: 
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
  }     
  // wait for 30 milliseconds to see the dimming effect    
  delay(30);                            
}
Pin();
Configura el pin especificado a comportarse ya sea como una entrada o una salida.
void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

Tutoriales

Link : http://arduino.cc/es/Tutorial/HomePage

Referencias

http://www.bricogeek.com/shop/53-shields-arduino
http://arduino.cc/en/Main/Products

0 comentarios:

Publicar un comentario