Download Taller de Hardware Libre con Arduino - Cursos ISLA

Document related concepts
no text concepts found
Transcript
Taller de Hardware Libre con Arduino
Pablo Suárez Hernández
[email protected]
Adrián Rodríguez Vargas
[email protected]
Oficina de Software Libre - http://osl.ull.es
Universidad de La Laguna
Cursos ISLA: Mayo 2010
Índice
Introducción
Microcontroladores
¿Qué es Arduino?
¿Por qué Arduino?
Versiones de Arduino
¿Qué puedo hacer con Arduino?
Manos a la obra
Requisitos
Instalación del IDE de Arduino
¡A cacharrear!
Índice (II)
Ejercicios:
Control de LED
Sensores digitales
Sensores analógicos
Actuadores
Comunicación con Arduino
Realización de pequeño proyecto
Microcontroladores
Circuito integrado o chip
Bajo coste y consumo energético
Tres unidades:
–
CPU
–
Memoria (RAM y ROM/EPROM/EEPROM/FLASH)
–
E/S
Microcontroladores
Principales Fabricantes:
Intel (8008, 8086)
Microchip (Piccard)
Motorola (68HC11)
Freescale (PowerPC)
Atmel (AVR)
¿Qué es Arduino?
Placa de programable
E/S analógicas y digitales
Conexión RS-232 o USB
Chip Atmega8
Arduino = Intel 286
¿Qué es Arduino?
¿Por qué Arduino?
¡Es libre!
Multiplataforma (Linux, Windows, Mac)
Rápido Prototipado
Bootloader
Extensible
Bajo coste (25 € aprox.)
Abundante documentación
Comunidad
Versiones de Arduino
LilyPad
Nano
Duemilanove
Mini
Mega
Arduino Duemilanove
Características Técnicas:
14 pines E/S digitales
6 pines E/S analógicos
6 pines Salida PWM
16Kb o 32Kb memoria FLASH
1Kb RAM (actualmente 2 Kb)
ATMega168 a 16Mhz
Alimentación USB o Pila 9V
¿Qué hacer con Arduino?
Objetos interactivos
Sensores digitales:
●
Interruptor
●
Termostato
●
Switches (electromagnéticos, de luz)
Sensores analógicos:
●
●
Termistor (temperatura)
LDR (luz)
Actuadores:
●
●
Leds
Motores PaP
Conseguir Arduino
España:
Libelium: www.libelium.com
BricoGeek: www.bricogeek.com
e-lioness: www.e-lioness.com
TuxBrain: www.tuxbrain.com
Cana Kit: www.canakit.es
Electan: www.electan.com
Listado completo (Internacional):
arduino.cc/en/Main/Buy
Primeros pasos
Descargar el software
http://arduino.cc/en/Main/Software
Descomprimir
Abrir IDE de Arduino
Arduino IDE
Compilar
Parar
Nuevo
Abir
Guardar
Subir
Serial Monitor
Estructura
#Definición de variables
void setup(){
#Definición de pines
}
void loop(){
#Lógica de nuestro Arduino
}
HelloLed: Montaje
HelloLed: Código
#Definición de variables
int ledPin =
13;
void setup(){
#Inicializamos el pin13 como salida
pinMode(ledPin, OUTPUT);
}
void loop(){
#Se pone a HIGH (5 v) el pin13
digitalWrite(ledPin, HIGH);
}
BlinkLed
#Definición de variables
int ledPin =
13;
void setup(){
#Inicializamos el pin13 como salida
pinMode(ledPin, OUTPUT);
}
void loop(){
digitalWrite(ledPin, HIGH); #Ponemos a HIGH (5v) el pin13
delay(1000); #Esperamos 1 segundo
digitalWrite(ledPin, LOW); #Ponemos a LOW (0v) el pin13
delay(1000); #Esperamos 1 segundo
}
Pulsador: Montaje
Pulsador: Código
const int ledPin =
13;
const int buttonPin = 2;
void setup(){
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Sensores
Analógicos:
Termistor
LDR
Potenciometro
Salidas Analogicas
Salida Digital: 0 v, 5 v
Salidas Analógicas: valor numérico
Ejemplo Fadding (Fade in - Fade out)
www.arduino.cc/en/Tutorial/Fading
Comunicación I: Serial
Led RGB:
Comunicación I: Serial
Serial.begin(9600);
← Establece comunicación a
9600 bauds
Serial.available();
← Devuelve el número de bytes
por leer
Serial.read();
← Lee un byte del Serial
¿Cómo podemos leer un mensaje de más de 1
byte?
http://arduino.cc/en/Reference/Serial
Comunicación I: Serial
Formas de leer mensajes:
if( Serial.available() ) {
val1 = Serial.read();
while( !Serial.available() );
val2 = Serial.read();
// and so on
}
// protocol is "CCaaaa", two
bytes of command, four bytes
of args
If (Serial.available() >= 6)
{ // command length is 6
bytes
cmd0 = Serial.read();
cmd1 = Serial.read();
arg0 = Serial.read();
arg1 = Serial.read();
// ...etc...
}
http://arduino.cc/en/Reference/Serial
Comunicación I: Serial
Almacenar mensaje en buffer:
const int BUFFER_SIZE = 100;
char buffer[BUFFER_SIZE];
void loop() {
...
memset(buffer, '\0', BUFFER_SIZE);
while (Serial.available() > 0) {
buffer[count] = Serial.read();
count++;
delay(10);
}
...
}
http://arduino.cc/en/Reference/Serial
Comunicación II: Consola
Comunicación desde programa externo:
import serial
print "Conectando a Arduino...",
try:
ser = serial.Serial("/dev/ttyUSB0", 9600)
except:
print "ERROR - No se ha podido conectar"
print "OK"
…
ser.write(input)
← Escribe “input” en el puerto serial.
ser.read(n)
← Lee “n” bytes del puerto serial.
ser.close()
← Cierra la conexión con el puerto serial.
Comunicación III: IR
Comunicación INFRAROJA:
http://tthheessiiss.wordpress.com/2009/08/05/dirt-cheap-wireless/
Motores PaP
¿Qué es un motor PaP?
¿Para qué usarlo?
¿Cómo funcionan?
¿Dónde comprarlos reciclarlos?
Proyectos con motores PaP
●
Brazo robot
●
CNC's
Motores PaP
Motores PaP
●
Librería Stepper.h de Arduino
#include <stepper.h>
miMotor Stepper(steps, pin1, pin2);
miMotor Stepper(steps, pin1, pin2, pin3, pin4)
miMotor.step(100);
●
Ejercicio
Relés
●
¿Para que sirve un relé?
●
¿Cómo funciona?
●
Distintos relés
I2C
Protocolo de Comunicación en Serie
Librería wiring.h:
●
●
●
Permite establecer una comunicación serial
usando 2 pines digitales (SDA, SCL).
El protocolo acepta múltiples dispositivos
conectados al mismo bus. (ADDR).
Modo estandar a 100Kbits por segundo.
Shifting
●
¿Qué es el shifting?
●
Tipos (Shift-in Shift-out)
●
¿Qué puede hacer por mi y cuando?
●
Integrado 74HC595N
●
Ejemplos
●
www.arduino.cc/es/Tutoriales/74HC595
●
www.arduino.cc/en/Tutorial/ShiftIn
Evaluación
Están todos suspendidos, ...
...de momento
Otras herramientas
●
Fritzing (http://fritzing.org)
●
Pure Data (http://puredata.info)
●
Processing (http://processing.org)
Comunidades Arduino
●
Arduino.cc
●
Canarnova:
http://groups.google.com/group/canarnova
Bibliografía
●
Arduino.cc :)
Taller de Hardware Libre con Arduino
Pablo Suárez Hernández
Adrián Rodríguez Vargas
- [email protected]
- [email protected]
Oficina de Software Libre - http://osl.ull.es
Universidad de La Laguna
¡Gracias por venir!
Cursos ISLA: Mayo 2010