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 pablo@osl.ull.es Adrián Rodríguez Vargas arodriguez@osl.ull.es 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 - pablo@osl.ull.es - arodriguez@osl.ull.es Oficina de Software Libre - http://osl.ull.es Universidad de La Laguna ¡Gracias por venir! Cursos ISLA: Mayo 2010