Publicidad
Publicidad

Más contenido relacionado

Publicidad

Seminario de arduino DeustoTech

  1. Seminario de Arduino Juan José Echevarría, Adolfo García
  2. Índice  ¿Qué es Arduino?  Historia  Placas  Configuración  Programación  Interacción pines digitales/analógicos  Acceso a memoria  Timers  Interrupciones  UART/SPI/I2C  Sleep/Power  Ejercicios Seminario Arduino
  3. ¿Qué es Arduino?  Plataforma Electrónica  Software/Lenguaje de Programación  Sistema Open Source  USO FÁCIL E INTUITIVO www.arduino.cc Seminario Arduino
  4. ¿Cómo surge Arduino?  2005 ->Instituto de Diseño Interactivo Ivrea (Italia)  David Cuartielles y Massimo Banzi  Problemas existentes  Limitación tecnológica  Usuario no experto  Plataformas existentes ->complejas, especializadas o cerradas  Limitación económica  Solución  Plataforma OpenSource  ¡¡¡La comunidad Arduino tiene más de 120 mil usuarios!!!! Seminario Arduino
  5. ¿Por qué usar Arduino?  Sencilla Programación  Rápido Prototipado  Grabación mediante USB  Gran extensibilidad todo tipo de sensórica y comunicaciones. “SHIELDS”  SHIELD: Módulo extra para añadir funciones:  Ethernet, Wifi, Zigbee, GPRS,… Seminario Arduino
  6. Placas: Arduino Uno  uC ATmega 328 a 16MHz  Flash 32KB  RAM 2KB  EEPROM 1KB  5 entradas Analógicas [0-5V]  14 Pines E/S Digitales  6 PWM  Puerto serie (0,1)  I2C (4,5)  SPI (10, 11, 12, 13) Seminario Arduino
  7. Placas: Arduino Mega2560  uC ATmega 2560 a 16MHz  Flash 256KB  RAM 8KB  EEPROM 4KB  15 entradas Analógicas [0-5V]  54 Pines E/S Digitales  14 PWM  4 Puertos series (0-1,19-18,17-16,15- 14)  I2C (20,21)  SPI (50,51,52,53) Seminario Arduino
  8. Placas: Arduino Fio y Nano  Fio  Orientado a aplicaciones inalámbricas  Atmega328P a 8MHz  14 Entradas/Salidas digitales  6 PWM  Pines de alimentación de 3.3V  Conector para baterías  Conector para módulos xbee  Nano  Idénticas características que Duemilanove  Alimentación a través de mini-USB  Pensado para aplicaciones embebidas Seminario Arduino
  9. Placas: Arduino LilyPad y Seeeduino Film Seminario Arduino
  10. Shields Arduino Ethernet XBEE Wifi Relés Seminario Arduino
  11. Características entorno Arduino  Basado en C/C++  Librerías-> programación por objetos (C++)  Serial.begin(9600);  Servo servo1;  Librerías familia AVR  Entorno propio de desarrollo Seminario Arduino
  12. Arduino IDE: configuración  Descargar la última publicación de la página web -> www.arduino.cc  Descomprimir fichero  Conectar Arduino mediante USB  Si los drivers no se instalan automáticamente, instalar manualmente en …/arduino/drivers  Ejecutar aplicación  Seleccionar el puerto serie  Seleccionar la placa Arduino en uso Seminario Arduino
  13. Arduino IDE Seminario Arduino
  14. Programación  Estructura:  setup( )  Al inicio de un programa  Inicia variables, configura los pins, librerías, ...  loop()  Función principal del programa  Bucle infinito  Estructuras de control, operadores, tipos de datos…  C/C++  Constantes propias  HIGH/LOW  INPUT/OUTPUT Seminario Arduino
  15. Funciones E/S  Funciones E/S digitales:  pinMode(pin, modo); Inicialización  digitalWrite(pin, estado); Activación de una salida  Val=digitalRead(pin); Lectura de una entrada  Funciones E/S analógicas y PWM:  analogWrite(pin, valor); Salida en PWM  Val=analogRead(pin); Entrada  Val= map(Val,init,fin,init2,fin2) Mapear valor  Función espera:  delay(ms) Retraso en milisegundos Seminario Arduino
  16. Ejemplo Seminario Arduino
  17. UART  Arduino Uno  Serial: Pines 0 (Rx) y 1 (Tx) -> compartido con USB  Arduino Mega  Serial: Pines 0 (Rx) y 1 (Tx) -> compartido con USB  Serial1: Pines 19 (Rx) y 18 (Tx)  Serial2: Pines 17 (Rx) y 16 (Tx)  Serial3: Pines 15 (Rx) y 14 (Tx)  Funciones  byte=Serial.read(); Recepción serie  Serial.print(a)/Serial.println(a); Imprimir en pantalla  Serial.write(a); Envío de un dato  Serial.begin(baudios); Inicialización serie  num=Serial.available(); Comprobar si hay datos  Serial.end(); Seminario Arduino
  18. Ejemplo Seminario Arduino
  19. Interrupciones  Externas  Arduino Uno  0 (pin digital 2)  1 (pin digital 3)  Arduino Mega  0 (pin digital 2)  1 (pin digital 3)  2 (pin digital 21)  3 (pin digital 20)  4 (pin digital 19)  5 (pin digital 18) Seminario Arduino
  20. Interrupciones  Externas  attachInterrupt(interrupción, función, modo)  interrupción-> número interrupción  0 o 1 -> Arduino Uno  0 a 5 -> Arduino Mega  función-> función a la que se salta cuando ocurre  modo-> cuándo ocurre  LOW-> pin está a valor bajo (LOW)  CHANGE-> pin cambia de valor  RISING-> pin pasa de valor bajo (LOW) a alto (HIGH)  FALLING-> pin cambie de valor alto (HIGH) a bajo (LOW) Seminario Arduino
  21. Ejemplo Seminario Arduino
  22. Timers  Librerías  Timer1 -> http://www.arduino.cc/playground/Code/Timer1  Descargar y copiar librería al directorio „/arduino- 1.0/libraries/‟  Incluirla en la clase principal (.ino)  #include <TimerOne.h>  Uso básico  Timer1.initialize(periodo);//iniciar timer con tiempo en ms  Timer1.attachInterrupt(función,periodo);//llamada a interrupción al desbordarse el timer (periodo opcional)  Precisión  Timer1->16 bits (65536) y el preescaler /256 (16MHz/256) =65536/62500 = 1.048576s Seminario Arduino
  23. PROGMEM  Utilizar memoria flash para almacenar y leer variables  No se pueden grabar datos durante ejecución, sólo lectura  Incluir en cabecera  #include <avr/pgmspace.h>  Guardar datos en memoria  char array[] PROGMEM={“hola”};  Leer (byte a byte en un bucle)  char=pgm_read_byte(&array[pos]); Seminario Arduino
  24. EEPROM  Escribir/leer en memoria EEPROM  Arduino Uno-> 1kB  Arduino Mega-> 4kB  #include <EEPROM.h>  EEPROM.write(dirección, valor);//valor de 0 a 255  Dirección de 0-1023: Arduino Uno  Dirección de 0-4095: Arduino Mega  EEPROM.read(dirección);//lee un byte de una posición  100.000 ciclos lectura/escritura  Permite uso durante ejecución Seminario Arduino
  25. SPI  Arduino como maestro  Arduino Uno  10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)  Arduino Mega  50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS)  Funciones  #include <SPI.h>  SPI.begin();//Iniciar librería SPI  SPI.transfer(byte);//Envía/recibe un byte vía SPI  SPI.setClockDivider(divisor);//Divisor de reloj relativo al reloj del sistema Seminario Arduino
  26. SPI  SPI.setDataMode(modo);//polaridad y fase Modo Polaridad Fase reloj reloj SPI_MODE 0 0 0 SPI_MODE 0 1 1 SPI_MODE 1 0 2 SPI_MODE 1 1  SPI.setBitOrder(orden);//orden bits 3  LSBFIRST  MSBFIRST  SPI.end(); Seminario Arduino
  27. Wire  Comunicación I2C  Arduino Uno  A4 (SDA) y A5 (SCL)  Arduino Mega  20 (SDA) and 21 (SCL)  Funciones  Wire.begin(dirección);//unirse bus I2C->dirección esclavo 7 bits opcional, si no se especifica es maestro  Wire.beginTransmission(dirección);//empezar a comunicarse con esclavo  Wire.write(val);//datos a enviar Seminario Arduino
  28. Wire  Wire.endTransmission();//fin Retorno Significado 0 Éxito 1 Datos no entran en búfer de tx 2 NACK en tx. de la dirección 3 NACK en tx. de los datos 4 Otro  Wire.requestFrom(dirección,cantidad);//pedir datos al esclavo  Wire.available();//cantidad de datos  Wire.read();//leer un byte  Interrupciones de servicio Seminario Arduino
  29. Ejemplo Seminario Arduino
  30. Otras librerías  Comunicación con módulos XBee  http://code.google.com/p/xbee-arduino/  Twitter  http://arduino.cc/playground/Code/TwitterLibrary  Servos  http://arduino.cc/en/Reference/Servo  NewSoftSerial  http://arduiniana.org/libraries/newsoftserial/  Sleep (AVR)  http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html  http://donalmorrissey.blogspot.com/2010/04/putting-arduino-diecimila-to- sleep-part.html  Power (AVR)  http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html Seminario Arduino
  31. PREGUNTAS
  32. PAUSA Seminario Arduino
  33. Shield desarrollada  Conexiones  LDR: pin A0  Led rojo: pin 3  Led amarillo: pin 5  Led verde: pin 6  Pulsador 1: pin 4  Pulsador 2: pin 7  RFID: pin RX  Jumper desconectado para grabación  Jumper conectado para ejecución No conectar el jumper en los pines superiores Seminario Arduino
  34. Ejercicios  Desarrollar una aplicación que obtenga datos de un sensor de luz (LDR) y active un led proporcionalmente al reducir la iluminación.  Desarrollar una aplicación que lea 2 tarjetas RFID, de forma que al pasar una de ellas encienda los leds, y al pasar la otra los apague. Seminario Arduino
Publicidad