Sie sind auf Seite 1von 76

Curso de Robtica Mvil

con Arduino y Android


Andrs S. Vzquez
Ral Fernndez
Francisco Ramos
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Sesin 2 -Taller.

- Programacin de Microcontroladores .
- ENTRADAS/SALIDAS DIGITALES
- COMUNICACIN

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Taller
Parte A. Programacin de
microcontroladores

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Lenguajes de Programacin
de C
ALTO NIVEL (C, Ensamblador (assembler)
PROCESSING, Python)
Requiere compilador Traduccin directa a
lenguaje de mquina.
Cdigo portable Especfico del Hardware
Comprensible. Facilidad para Difcil seguimiento y
trabajar programas grandes, concepcin de programas
operaciones aritmticas y de grandes
formateo de datos.
Los compiladores incluyen Debe manipularse los
funciones para manejo de registros que controlan cada
perifricos. perifrico.
Menos eficiente en velocidad y Puede optimizarse en
en tamao del cdigo. velocidad y tamao.
Se suele utilizar lenguaje de alto nivel,
con rutinas crticas en assembler
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Programacin C
Lenguaje C Lenguaje Assembler
Ej01.C
PC Ej01.ASM

Lenguaje Mquina
compilar ensamblar
Ej01.HEX

desensamblar

grabar leer
Grabador
ISP

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Processing
El lenguaje de programacin de Arduino est
basado en C, pero influenciado por el lenguaje
Processing (http://processing.org/)
Una gua completa de programacin con Arduino
puede encontrarse en:
http://www.arduino.cc/playground/uploads/Main/arduino_no
tebook_v1-1.pdf
http://www.uco.es/aulasoftwarelibre/wp-
content/uploads/2010/05/Arduino_user_manual_es.pdf
Se pueden usar otros lenguajes como C, Phython,
Java o Scratch muy extendido en docencia por su
sencillez.

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Estructura general de un
programa
Reset
CONFIGURACIN
Elegir los pines E/S de acuerdo a un esquema y
los perifricos a utilizar en la aplicacin
Inicializa E/S Configuracin
y activa
(timers, puerto serie etc).
perifricos
Escribir los registros de activacin y
configuracin de E/S y perifricos
Inicializa
INICIALIZACIN perifricos Inicializacin
Poner los perifricos y las E/S en un estado
inicial adecuado (ej. las salidas en 0)
CICLO DE SCAN Ciclo principal Ciclo de scan
El programa principal, que por lo general se
ejecuta cclicamente.
Terminar?

Fin
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Estructura de un programa

Declaracin de
variables
Funcin setup
Inicializar variables
PinModes
Configurar/inicializar
comunicacin serie
Funcin loop
Instrucciones a repetir
continuamente por el
micro
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Elementos de un
programa
Sentencias: Siempre finalizadas por ;
int x=13;
Comentarios
// comenta una lnea
/* comenta un
parrafo */
Llaves {} delimitan bloques (funciones, if, for, etc)
Funciones
tipo nombreFuncion(parametros)
{
instrucciones;
}

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Elementos de un
programa
Variables
Todas las variables necesitan ser declaradas. Se
puede asignar un valor al mismo tiempo que se
declaran.

int inputVariable=0; //declaro y asigno valor

inputVariable=2; //asigno valor (declarada antes)

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Elementos de un
programa
mbito de una variable
global: Necesita ser declarada antes del setup
local: Declarada en un bloque solo puede ser vista por el
bloque y sus sub-bloques (si se declara en un sub-bloque
no ser vista en resto del bloque)

int value; // visible por cualquier funcion


void setup() { int i;
for (i=0; i<20; i++){
value=i;
}
}
void loop() { int i=value; }

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Tipos de datos
bsicos
boolean:
TRUE (1) o FALSE (0)
byte
Valor numerico de 8 bits sin puntos decimales.
Rango: [0, 255]: byte variable = 34;
int
Valores enteros de 16 bits. Rango: [-32768, 32767]
long
Valores enteros de 32 bits. Rango: [-2146483648,
2146483647]
char: un solo carcter
char miinicial =F;

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Tipos de datos
bsicos
float
Valores en punto flotante (con decimales). 32
bits. Rango: [-3.4028235E+38 a 3.4028235E+38
float pi = 3.1415;

Arrays
Vector de valores
int miarray[] = {valor0,valor2,valor3..};
int miarrayb[2];
miarray[1]=10;
miarray[0]=miarray[1];

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Operadores
Operadores aritmticos: + - * /
x = y+ 3*z/2;

Asignaciones compuestas
x++; // lo mismo que x = x +1;
x*=y // lo mismo que x = x*y;

Comparacin
x==y; // es x igual que y?
x!=y; // es x distinto que y?
x>y; // es x mayor que y?
x<=y; // es x menor o igual que y?

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Operadores y
constantes
Operadores lgicos
&& (AND), || (OR) y ! (NOT)
if ((x>0 && x<6) || (!(x<9)))
Constantes
TRUE valor distinto de 0 / FALSE valor igual a 0
HIGH / LOW. Niveles de tensin de un pin. Usados en L/E
de pines. HIGH nivel logico 1, ON o 5 V. LOW es nivel
logico 0, OFF o 0 V.
digitalWrite(13,HIGH)
INPUT / OUTPUT constantes usadas con pinMode() para
definir un pin digital como entrada o salida
pinMode(13, OUTPUT)

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Control de flujo
for (iniciacin; condicin; expresin) {
sentencias;
}
for(int i=0; i<20; i++)
{
f = f*i;
} if .. else
while (condicin) { if (value == 10) {
sentencias; hazAlgo;
}
}
else {
hazOtraCosa;
}
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Control de flujo
do ... while
Como while, excepto que el cdigo se ejecuta justo antes
que la condicin sea evaluada. Se usa cuando se quiera
correr el cdigo del bloque al menos una vez antes de
comprobar las condiciones.
Ejemplo:
do {
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,HIGH);
delay(100);
sensorValue = analogRead(1);
} while (sensorValue < 512);

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Control de tiempo
delay(ms)
Pausa el programa un tiempo especificado en
milisegundos
millis()
Devuelve en milisegundos el tiempo que se lleva
ejecutando el programa actual. La variable de
salida es un long. Este reloj se desborda (y
vuelve a inicializarse) cada 9 horas
value = millis();

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
E/S digital
PINES: Lineas de entrada/salida de los puertos. Ejemplo AT328

1. E/S Digitales

2. Comunicacin
Serie y Memorias

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
E/S digital
- Lectura/escritura de puertos clsica (ensamblador):configurar el
puerto (escribir sobre un registro de configuracion) y acceder a una
direccin de memoria donde se mapea el contenido del puerto
1. E/S Digitales
- Ejemplo programacin ensamblador con PIC
2. Comunicacin
Serie y Memorias

Pero en Arduino todo es mucho ms sencillo.el compilador ya tiene


mapeada las direcciones de los pines y facilita su configuracin:
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
E/S digital
Los pines (0-13) se pueden utilizar como entradas y
salidas digitales
1. E/S Digitales INPUT. Estado de alta impedancia
2. Comunicacin
Serie y Memorias
OUTPUT. Estado de baja impedancia
Primero se configuran los pines en el setup por
medio de:
pinMode: configura un pin de entrada (INPUT) o salida
(OUTPUT)
pinMode(numero_pin, OUTPUT);

digitalRead(pin). Lee un pin digital devolviendo


como resultado un HIGH o un LOW
value = digitalRead(pin)

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Ejemplo Salida digital
Ejemplo de encender el led 13
Ejemplo de que parpadee

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Ejemplo E/S Digital
digitalWrite(pin, value). Activa o desactiva una salida digital.

1. E/S Digitales int led = 13; //conecta led al pin 13


2. Comunicacin int pin = 7; // conecta pushbutton al pin 7
Serie y Memorias
int value = 0; // variable para almacenar el valor leido
void setup()
{
pinMode(led, OUTPUT); //ajusta el pin 13 como salida
pinMode(pin, INPUT); // ajusta el pin 7 como entrada
}
Nota: Los pines digitales 0 y 1 pueden
void loop() ser utilizados como salidas o entradas
{ siempre que NO se estn utilizando
value = digitalRead(pin); para la comunicacin serial
digitalWrite (led, value);
}
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
E/S digital
Coger un cablecito y probar el cdigo
anterior
1 Conectar pin7 a 5v
2 Se enciende?
3 Desconectar
4 Se apaga?
Funciona bien??
DIOS! ESTA ROTO

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
NO TA ROTO!!
Los pines de entrada por defecto estn
en estado de alta impedancia
Es decir, demandan poca corriente del
circuito que muestrean.
Esto los hace bueno para utilizarlos
con seales procedentes de sensores
AH! Pero esto implica que son muy
susceptibles al ruido elctrico!!
COMPORTAMIENTO ERRTICO!
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Y eso como yo lo arreglo??

FORZAR EL ESTADO DE UNA ENTRADA: Es decir, en vez de


dejar el cable suelto, lo que implica indeterminacin,
tenerlo conectado siempre a masa (0) o a +5v (1)
1. E/S Digitales

2. Comunicacin
Eso se denomina resistencia pull-down o pull-up
Serie y Memorias

En alto cuando se En bajo cuando se


presiona el botn presiona el botn
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Profe, no tengo resistencias

A) Pues cmprate una de 100ohm y


1. E/S Digitales
otra de 10K
2. Comunicacin
Serie y Memorias B) No te compres ninguna! Utiliza las
PULL-UP que integra el chip de Atmel.

pinMode(pin, INPUT); // pone el pin como entrada


digitalWrite(pin, HIGH); // activa la resistencia pullup

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
E/S digital
Coger un cablecito y probar el cdigo anterior
1 Conectar pin7 a masa
2 Se apaga?
3 Desconectar
4 Se enciende?
Funciona bien??
DIOSSS! Que alivio!

Nota: el 13 mejor no activar la pull-up, mejor aun,


no utilizarlo como entrada digital
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Ejemplo E/S digitales

/*
1. E/S Digitales EJEMPLO ENTRADAS SALIDAS DIGITALES
2. Comunicacin
2 EJEMPLO DEL TALLER
Serie y Memorias PARPADEA SI ACTIVA EL PIN, O FIJO CON EL PIN X
*/

boolean encendido=false;

void setup() {

pinMode(13, OUTPUT);
pinMode(7,INPUT);// switch izquierda como entrada
digitalWrite(7,HIGH);
pinMode(6, INPUT); // switch derecha como entrada
digitalWrite(6,HIGH);
}

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Ejemplo con entrada digital y
funciones
void loop() {

if(digitalRead(7)==0){
encendido=true;
1. E/S Digitales
}
2. Comunicacin if(digitalRead(6)==0){
Serie y Memorias
encendido=false;
}
parpadeo();
}

void parpadeo(){
if(encendido){
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}else{
digitalWrite(13, HIGH);
}
}
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacion serie

1. E/S Digitales

2. Comunicacin
Serie y Memorias

El ATMEL trae un UART, que


es capaz de controlar una
comunicacin serie.

Los pines 0 y 1
corresponden a las lneas de
entrada y salida del puerto
serie a la UART.

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Conversor USB-Serial
El arduino UNO incorpora un conversor
de puerto serie a USB basado en un
Microcontrolador ATMEGAU28

OTRO MICRO!!

Flash (Kbytes): 8 Kbytes


Pin Count: 32
Max. Operating Freq. (MHz):16 MHz
CPU: 8-bit AVR
Max I/O Pins: 22
Ext Interrupts: 20
USB Transceiver:1

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Conversor USB-Serial
La ZUM-BT lleva un integrado
especfico (no es un micro) para la
conversin

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Y por qu?
Porque el protocolo USB y el Serie son
muy diferentes

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Interfaz Serie de Arduino
1. Existe una libreria de arduino SoftwareSerial.h que
implementa todas las operaciones (lectura, escritura) sobre el
puerto serie.
1. E/S Digitales

2. Comunicacin
2. En el siguiente ejemplo se lee del puerto serie (que a su vez
Serie y Memorias llega del conversor usb) y se reenva lo leido (se escribe en
el puerto) que a su vez pasa al usb
#include <SoftwareSerial.h>
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(19200);
Serial.println("Hola, soy tu robot loro!");
}

void loop() // run over and over


{
if (Serial.available())
Serial.write(Serial.read());
}

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Nos comunicamos con el PC

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacin entre robots

Comunicacin por Infrarrojos


HOLA!
HOLA!

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacin Infrarrojos

Vamos a utilizar el sensor de


infrarrojos como emisor
Conectamos al pin 3, con 2 cables, el
mdulo de infrarrojos
3

g
v
s

gnd
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacin por Infrarrojos

Algunos conceptos para


entender mejor como funciona
una comunicacin por
infrarrojos
El emisor transmite la seal
modulada en una frecuencia
determinada para evitar
interferencias naturales
Normalmente se usa 38khz
ya que no hay seales
naturales a esa frecuencia
Cada sistema tiene su
protocolo de comunicacin y
sus posibles mensajes que
deben ser decodificados por
un controlador

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Cmo le digo hola al robot?
Enva un 0x2F5C por el infrarrojo
Traducido en tiempos entre escalones en el
protocolo del robot es:
3050, 1900, 600, 400, 550, 450, 550, 900, 550,
950, 500, 450, 550, 450, 550, 450, 500, 500, 500,
950, 500, 500, 500, 500, 500, 450, 500, 500, 500,
500, 500, 950, 500, 500, 500, 500, 500, 450, 550,
450, 500, 500, 500, 500, 500, 450, 500, 500, 500,
500, 500, 450, 500, 500, 500, 1000, 500, 950,
500, 500, 500, 500, 500, 450, 550, 450, 500};

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacin Infrarrojos
Descargamos la librera de
Infrarrojos:
http://github.com/shirriff/Arduino-
IRremote)
(pulsamos a download ZIP)
Creamos la carpeta IRremote en el
directorio library de arduino
Descomprimimos el archivo y su
contenido lo copiamos en una
carpeta IRremote
En el ID de arduino aadimos la
librera

MS EN:
http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Cdigo hola infrarrojos

#include <IRremote.h> // Librera https://github.com/shirriff/Arduino-IRremote


// El pin definido por defecto en la librera para enviar cdigos IR es el 3
unsigned int hola[68]={3050, 1900, 600, 850, 650, 850, 600, 350, 650, 850, 600, 850, 650, 350,
600, 400, 600, 350, 650, 850, 600, 850, 650, 850, 600, 850, 650, 850, 600, 850, 650, 350,
600, 400, 600, 350, 600, 400, 600, 400, 550, 450, 500, 450, 500, 500, 500, 500, 450, 550,
450, 500, 450, 550, 400, 1050, 450, 1050, 400, 600, 400, 550, 400, 600, 400, 600, 350};
IRsend irsend;
void setup()
{
}
void loop() {
irsend.sendRaw(hola,68,38);
delay(1500);

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Ms Infrarrojos
Quieres controlar toda tu casa
(TV,DVD,ECT..) desde tu robot??

http://robotstyles.blogspot.com.es/2014/12/usa-tu-sensor-ir-
siguelineas-como-un.html

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacin Infrarrojos
(recepcin)
Se debe utilizar un receptor a 38khz
Conectamos al pin 11, con 3 cables, el
mdulo de infrarrojos

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacin Infrarrojos
Ejemplo: Muestra por el puerto serie lo
que recibe por el infrarrojo
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
}
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacin Infrarrojos

Enciende
#include <IRremote.h>
int led = 13;
int RECV_PIN = 11;
o apaga IRrecv irrecv(RECV_PIN);
decode_results results;
un led void setup()
{
pulsando pinMode(led, OUTPUT);
Serial.begin(9600);
el botn 1 }
irrecv.enableIRIn(); // Start the receiver

y2 void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if(results.value==16738455)
digitalWrite(led, HIGH);
if(results.value==16750695)
digitalWrite(led, LOW);
irrecv.resume(); // Receive the next value
}
}

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Comunicacin BLUETOOTH

Nuestro Robot trae un mdulo


BC417 que convierte la seal
serie en bluetooth
Esto nos va a permitir
conectarlo a un PC o a un
dispositivo mvil, como por
ejemplo ANDROID

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Configuracin Bluetooth
La placa ZUM BT-328 est provista de mdulo Bluetooth y conexin
puerto serie mediante USB (multiplexada) directamente al mdulo
UART del microcontrolador ATmega. El mdulo Bluetooth viene con
una configuracin de fbrica, pero su reconfiguracin esta disponible
para el usuario a travs de tres conmutadores.
Conmutador 1: marcado con una P de
Power, apaga y enciende el mdulo
Bluetooth.
Conmutador 2 y 3: Marcados como AT.
Cuando estn conectados, crean una
derivacin entre el puerto serie del USB y el
puerto serie del mdulo Bluetooth,
permitiendo el acceso directo a la
Para su uso normal, :
configuracin del Bluetooth desde el USB. -
Conmutador 1: ON
Conmutador 2: OFF -Ver ms en: http://diwo.bq.com/zum-bt-
Conmutador 3: OFF 328-configuracion-del-bluetooth-mediante-
comandos-at/#sthash.V59NI6yF.dpuf
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Configuracin Bluetooth
Todas las placas vienen con el mismo nombre debemos cambiarles
el nombre para poder saber cual es el nuestro. Esto se hace
programando el mdulo mediante comandos AT
Pon todos los conmutadores en ON y conecta la placa al ordenador mediante el
cable USB.
Dentro de la IDE de Arduino, abre un Monitor Serial a una velocidad de
comunicacin de 19200 baudios y en el modo Ambos NL & CR (nueva lnea y
retorno de carro).
(actualizacin para la nueva zumbt): 19200 baudios y en el modo retorno de carro.
Comprueba la comunicacin con el mdulo Bluetooth enviando por la lnea de
comandos, el texto AT. El mdulo Bluetooth debera responder con un OK.
(actualizacin para la nueva zumbt): devolver: Hello! I'm the ZUM Bluetooth
module!.
Si quieres cambiar el nombre de tu mdulo Bluetooth, el que muestra a otros
dispositivos, enva comando AT+NAME#### donde #### es el nombre que quieras.
(actualizacin para la nueva zumbt) AT+NAME=#### donde #### es el nombre que
quieras.
- Mas en: http://diwo.bq.com/zum-bt-328-configuracion-del-bluetooth-
mediante-comandos-at/#sthash.V59NI6yF.dpuf

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
BLUETOOTH- Configuracin (si
tenemos el mdulo externo)

Primero debemos
const int LED_PIN = 13;
int randomValue = 0;
// 1000 ms of no data transmission required before and after the escape
configurar nuestro sequence
int cmdDelay = 1000;
modulo. Pasos // Change these two paramaters to anything you want
int pin = 4444;
char* name = "Robot_ASVAZQUEZ";
1 Abrimos el programa
void setup()
configuracin_bluetooth_ {

croma2014 pinMode(LED_PIN, OUTPUT);


// Turn on LED to signal programming start
digitalWrite(LED_PIN, HIGH);
2 Cambiamos el nombre de Serial.begin(9600);
delay(cmdDelay);
nuestro bluetooth (por Serial.print("AT");
delay(cmdDelay);
ejemplo robot_paquito) y Serial.print("AT+PIN");
Serial.print(pin);
el pin number. delay(cmdDelay);
Serial.print("AT+NAME");
3 Subimos el programa a Serial.print(name);
delay(cmdDelay);
nuestro arduino con el // Turn off LED to signal programming end
digitalWrite(LED_PIN, LOW);
bluetooth desconectado }

// This part is not doing anything useful


void loop() {
if (Serial.available()) {
Serial.read();
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I VzquezrandomValue
Real UCLM = random(10,20);
BLUETOOTH- Configuracin (si
tenemos el mdulo externo)

3 Desconectamos el cable
usb del arduino
4 Conectamos el USB
5 Alimentamos el Arduino
con las pilas
6 Le damos al reset
6 Esperamos a que el led
del arduino se apague
7 Buscamos el dispositivo
bluetooth con nuestro
dispositivo ANDROID y lo
vinculamos (habr que
ponerle el nmero pin)
8 Listo para ser usado!

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Parte 2. Amplicacin
del Micro(cerebro) del
Robot

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Solucin:
Arduino + Android=
Potencia de los procesadores mviles de
ltima generacin
Sensores de las tablets y smartphones
(acelerometros, giroscopos, GPS,
camaras)
Conexin a internet

+ =

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Programacin de
dispositivos mviles
Apple
iOS SDK
Windows
Visual Studio
Android
App Inventor Para nios (bloques)
Protocoder No tan para nios (jscript)
Developers Toolkit

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
APP INVENTOR

App Inventor

Robban Andersson
Otros lenguajes

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
APPINVENTOR
Programacin sencilla de dispositivos mviles...
Hasta un nio sabra!
Gratis. Basado en 3 componentes:
Un progama web bajo servicio google en el lado del
computador para realizar la programacin(HACE FALTA
UNA CUENTA GOOGLE)
Una aplicacin en el dispositivo android para la
comunicacin con el PC
Un simulador en el caso de no disponer de dispositivo
android
Multitud de tutoriales:
http://appinventor.mit.edu/explore/ai2/tutorials.html
https://sites.google.com/site/appinventormegusta/presentac
iones-google-docs
Y muchos ms!
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
(NO)Instalacin
(LADO PC)
Accede a la pgina de appinventor
http://appinventor.mit.edu/

Pulsar
(pedir
entrar
con una
cuenta
google)

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
(NO)Instalacin
(LADO PC)
Explica
como
configurar
el
dispositivo
android

Explica
como
configurar
un
simulador
(en el caso
de no tener
dispositivo
android)
CRoMA 2010 por Francisco Ramos
CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
(NO) Instalacin
(lado PC)

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Instalacin
(lado Android)

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Instalacin
(lado Android)

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Mis Proyectos (My Projects)
En esta herramienta podemos realizar un
seguimiento de nuestros proyectos.

Accedemos a Mis
Proyectos cuando
iniciamos el servicio
por primera vez o
desde el botn My
Projects

Para crear un
nuevo proyecto

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Diseador (Designer)
La herramienta de diseo nos permite
seleccionar los componentes de la App y
definir el entorno de usuario de la misma.

Selecciona los
componentes en la
paleta y
arrstralos al
visor para
incluirlos en tu
App

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Diseador (Designer)
La herramienta de diseo nos permite
seleccionar los componentes de la App y
definir el entorno de usuario de la misma.

Dispn los
componentes en el
visor para
establecer el
aspecto de tu App

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Diseador (Designer)
La herramienta de diseo nos permite
seleccionar los componentes de la App y
definir el entorno de usuario de la misma.

A medida que
incorpores
componentes a la
App se irn
aadiendo a la
lista de
componentes

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Diseador (Designer)
La herramienta de diseo nos permite
seleccionar los componentes de la App y
definir el entorno de usuario de la misma.

En el panel media
aadimos imgenes,
sonidos o vdeos a
nuestra App

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Diseador (Designer)
La herramienta de diseo nos permite
seleccionar los componentes de la App y
definir el entorno de usuario de la misma.

Selecciona un
componente en la lista
de componentes para
cambiar sus propiedades
en el panel de
propiedades

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Diseador (Designer)
La herramienta de diseo nos permite
seleccionar los componentes de la App y
definir el entorno de usuario de la misma.

Para pasar al
editor de
bloques

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Editor de Bloques (Blocks)
El comportamiento de la App se programa mediante
bloques o piezas en el editor de bloques.

Encaja las piezas


como en un puzle para
establecer el
comportamiento de la
app

Arrastra los
bloques para
utilizarlos en el
programa

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Editor de Bloques (Blocks)
El comportamiento de la App se programa mediante
bloques o piezas en el editor de bloques.

Aqu se encuentran los


bloques de uso general

Aqu estn los bloques


correspondientes a los
componentes incluidos
en la app

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
Hola gatito . En clase

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
BLUETOOTH- AppInventor
Crearemos una APP con los
siguientes componentes: LED_CROMA_2015.aia
- 3 botones
- 1 cliente blutooth

El botn 1 activar el cliente


bluetooth
El botn 2 mandar un
mesaje al robot para
encender el led
El botn 2 mandar un
mesaje al robot para
apagar el led

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
BLUETOOTH- AppInventor

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
BLUETOOTH- AppInventor_Arduino

/*
conexion con appinventor. LED_CROMA_2016.aia
Hacemos un */
#include <SoftwareSerial.h>
programita en char comando;
int led = 13;
Arduino que est
a la escucha del void setup()
{
puerto serie. // Open serial communications and wait for port to open:
Serial.begin(19200);
pinMode(led, OUTPUT);
Si recibe un 1 }
void loop() // run over and over
enciende el led {
if (Serial.available())
{
Si recibe un 0 lo comando=Serial.read();
//Segn el dato recibido
apaga switch (comando){
case '1':
digitalWrite(led, HIGH);
break;
case '0':
digitalWrite(led, LOW);
break;
}
}
}

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM
TAREA
(Si da tiempo en clase) Dile al robot
que diga hola al humanoide
En casa: Une el programa de enviar
por IR con el programa de recibir por
bluetooth para cambiar de canal de la
tele con el mvil

CRoMA 2010 por Francisco Ramos


CRoMA y Andrs
3D 2016 S.Ciudad
E.T.S.I.I Vzquez
Real UCLM

Das könnte Ihnen auch gefallen