Seminario de arduino DeustoTech
-
Upload
adolfo-garcia -
Category
Education
-
view
3.767 -
download
3
description
Transcript of Seminario de arduino DeustoTech
![Page 1: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/1.jpg)
Seminario de Arduino
Juan José Echevarría, Adolfo García
![Page 2: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/2.jpg)
Seminario Arduino
Í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
![Page 3: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/3.jpg)
Seminario Arduino
¿Qué es Arduino?
Plataforma Electrónica
Software/Lenguaje de Programación
Sistema Open Source
USO FÁCIL E INTUITIVO
www.arduino.cc
![Page 4: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/4.jpg)
¿Cómo surge Arduino?
Seminario 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!!!!
![Page 5: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/5.jpg)
Seminario Arduino
¿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,…
![Page 6: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/6.jpg)
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
![Page 7: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/7.jpg)
Seminario Arduino
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)
![Page 8: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/8.jpg)
Seminario Arduino
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
![Page 9: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/9.jpg)
Seminario Arduino
Placas: Arduino LilyPad y Seeeduino Film
![Page 10: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/10.jpg)
Seminario Arduino
Shields Arduino
Ethernet XBEE
Wifi Relés
![Page 11: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/11.jpg)
Seminario Arduino
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
![Page 12: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/12.jpg)
Seminario Arduino
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
![Page 13: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/13.jpg)
Seminario Arduino
Arduino IDE
![Page 14: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/14.jpg)
Seminario Arduino
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
![Page 15: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/15.jpg)
Seminario Arduino
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
![Page 16: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/16.jpg)
Seminario Arduino
Ejemplo
![Page 17: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/17.jpg)
Seminario Arduino
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();
![Page 18: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/18.jpg)
Seminario Arduino
Ejemplo
![Page 19: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/19.jpg)
Seminario Arduino
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)
![Page 20: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/20.jpg)
Seminario Arduino
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)
![Page 21: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/21.jpg)
Seminario Arduino
Ejemplo
![Page 22: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/22.jpg)
Seminario Arduino
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
![Page 23: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/23.jpg)
Seminario Arduino
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]);
![Page 24: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/24.jpg)
Seminario Arduino
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
![Page 25: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/25.jpg)
Seminario Arduino
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
![Page 26: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/26.jpg)
Seminario Arduino
SPI SPI.setDataMode(modo);//polaridad y fase
SPI.setBitOrder(orden);//orden bits LSBFIRST MSBFIRST
SPI.end();
Modo Polaridad reloj
Fase reloj
SPI_MODE0
0 0
SPI_MODE1
0 1
SPI_MODE2
1 0
SPI_MODE3
1 1
![Page 27: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/27.jpg)
Seminario Arduino
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
![Page 28: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/28.jpg)
Seminario Arduino
Wire Wire.endTransmission();//fin
Wire.requestFrom(dirección,cantidad);//pedir datos al esclavo Wire.available();//cantidad de datos Wire.read();//leer un byte
Interrupciones de servicio
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
![Page 29: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/29.jpg)
Seminario Arduino
Ejemplo
![Page 30: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/30.jpg)
Seminario Arduino
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-sle
ep-part.html
Power (AVR) http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html
![Page 31: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/31.jpg)
PREGUNTAS
![Page 32: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/32.jpg)
Seminario Arduino
PAUSA
![Page 33: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/33.jpg)
Seminario Arduino
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
![Page 34: Seminario de arduino DeustoTech](https://reader036.fdocuments.mx/reader036/viewer/2022070304/54d1fa354a79596d078b4592/html5/thumbnails/34.jpg)
Seminario Arduino
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.