workshop mbed

Download Workshop mbed

If you can't read please download the document

Upload: vankiet

Post on 11-Feb-2017

227 views

Category:

Documents


1 download

TRANSCRIPT

  • Introduccion Conociendo la planta Programacion del mbed

    Workshop mbed

    Ariel Burman Ernesto CorbelliniSebastian Garca Marra Tomas Gonzalez

    Club de Robotica, Laboratorio Abierto (LABI)Departamento de Electronica, Facultad de Ingeniera

    Universidad de Buenos Aires

    15 de agosto de 2012

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Agenda

    1 IntroduccionObjetivosPresentando el mbedHerramientas

    2 Conociendo la plantambed Carmbed Mote

    3 Programacion del mbedPrimeros PasosTimers y PWMPuerto SerieActuadores y sensoresA trabajar

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Objetivos

    Aprender

    Que es el mbed, que C usa.Como se programa, como es laAPI.Como se usa la interfaz web.

    Hacer

    Programar el mbed.Manejar motores de CC conPWM.Usar sensores opticos infrarrojos.Usar un acelerometro.Utilizar la comunicacion porpuerto serie.Manejar el robot (autito) con uncontrol remoto.Correr una carrera!

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Que es el mbed?

    mbed.org dice:

    mbed es una herramienta para prototipado rapido conmicrocontroladores.

    Tambien es una biblioteca de alto nivel

    Tambien es un compilador web

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Quien hace la magia?

    Cortex-M3: Core ARM del C. poderoso el chiquitn

    32 bits, compite en el segmento de 16 bits.Pipeline de 3 etapas con prediccion de salto.Set de instrucciones de 16 bits, Thumb-2.Arquitectura Harvard. 3 buses: Data, Codigo,Perifericos.Controlador de interrupciones avanzado (NVIC).Orientado a bajo consumo.

    LPC1768: C que se usa en el mbed.

    64kB SRAM, 512kB Flash. 100MHzEthernet 10/100, interfaz RMII.USB Host, device, OTG.CAN, SPI, I2C, I2S, USARTsADC 12 bits, DAC 10 bits.U$S 5.62 comprando 5000 (Digikey)

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    mbed NXP LPC1768

    96MHz, 32KB RAM, 512KB FLASH

    Ethernet, USB Host/Device, 2xSPI, 2xI2C,3xUART, 2xCAN, 6xPWM, 6xADC, GPIO

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    mbed NXP LPC11U24

    48MHz, 8KB RAM, 32KB FLASH

    USB Device, 2xSPI, I2C , UART, 6xADC, GPIO

    Alimentacion opcional de 2.4-3.3V (pensado para bateras)

    U$S 2.06 comprando 5000 (Digikey)

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Como se usa el mbed?

    Programacion por USB drag n drop

    Bilioteca de alto nivel C/C++

    Compilador web

    Lo mas importante

    http://mbed.org

    Donde encontramos:

    Handbook: Referencia de la biblioteca de mbed.

    Cookbook: Muchos ejemplos de proyectos.

    Notebook: Notas de los usuarios.

    Compiler: La interfaz web al compilador.

    Club de Robotica - FIUBA Workshop mbed

    http://mbed.org

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Conociendo la interfaz

    1 Usuarios registrados.Nombre de usuario:

    cdrfiuba_XX

    Clave:cdrfiuba_XX

    2 Entrar al compilador.

    Con el numero indicado en elpapel que les repartimos.

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Conociendo la interfaz

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Conociendo la interfaz

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Objetivos Presentando el mbed Herramientas

    Alternativas

    Solemos querer herramientas off line.

    gcc4mbed: Modificaciones a la biblioteca de mbed para que sepueda compilar con GCC.

    El compilador ahora permite exportar el codigo a un toolchainlocal (IAR o GCC)

    libmanyuc: Una biblioteca de alto nivel, libre, portada al mbed.

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed mbed Car mbed Mote

    Agenda

    1 IntroduccionObjetivosPresentando el mbedHerramientas

    2 Conociendo la plantambed Carmbed Mote

    3 Programacion del mbedPrimeros PasosTimers y PWMPuerto SerieActuadores y sensoresA trabajar

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed mbed Car mbed Mote

    El mbed Car - top

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed mbed Car mbed Mote

    El mbed Car - adaptado

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed mbed Car mbed Mote

    El mbed Car - bottom

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed mbed Car mbed Mote

    El mbed Mote

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Agenda

    1 IntroduccionObjetivosPresentando el mbedHerramientas

    2 Conociendo la plantambed Carmbed Mote

    3 Programacion del mbedPrimeros PasosTimers y PWMPuerto SerieActuadores y sensoresA trabajar

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Nuestro primer codigo

    Vamos a prender un led Creamos un programa nuevo.1 #include "mbed.h"

    2

    3 DigitalOut myled(LED1); //variable global

    4 int main() {

    5

    6 while(1) {

    7 myled = 1; // prende el led;

    8 wait(0.5); // el intervalo de tiempo

    9 myled = 0; // se indica en segundos

    10 wait(0.5);

    11 }

    12 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Usando libmanyuc

    Si usamos libmanyuc en lugar de mbed.h nos quedara:

    1 #include "libmanyuc.h"

    2

    3 int main() {

    4

    5 Pin led(LED1);

    6

    7 while(1) {

    8 led = 1; // prende el led;

    9 Delay(0.5); // el intervalo de tiempo

    10 led = 0; // se indica en segundos

    11 Delay(0.5);

    12 }

    13 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Nuestro primer codigo

    Muy facil . . . ahora usemos un boton para prender el led..

    1 DigitalOut myled(LED4); // 4 Leds incluidos en el mbed

    2 DigitalIn boton(p20); // boton der. del mbed Mote

    3 // o p17 del mbed Car

    4 int main() {

    5 myled = 1; // prende el led;

    6 boton.mode(PullUp); //

    7 while(1) {

    8 if (boton == 0) {

    9 wait(0.01); //debounce.

    10 if (boton == 0) {

    11 myled = !myled; // invierte el estado del led

    12 }

    13 ....

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Complicandola un poco

    Dimmer para los leds.

    PWM: Pulse Width Modulation,modulacion de ancho depulso.

    Ticker: Interfaz usada para definirun evento que se repite aintervalos regulares detiempo.

    Vss

    Vmed

    D.T (1-D).T

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Complicandola un poco

    Dimmer para los leds.

    1 PwmOut led1(LED1);

    2 Ticker evento;

    3

    4 void dimmer() {

    5 led1 = led1 + 0.1; // aumenta el ancho del pulso

    6 }

    7

    8 int main () {

    9 //llama a dimmer cada 500ms

    10 evento.attach(&dimmer, 0.5);

    11 while (1);

    12 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Hola mundo!

    Todos lo estabamos esperando...1 Serial pc(USBTX, USBRX); // tx, rx

    2 DigitalOut led(LED1);

    3

    4 int main () {

    5 char c;

    6

    7 pc.baud(9600); // velocidad en bps

    8 pc.format(8,Serial::None,1); // 8 bits, sin paridad, 1 bit de stop

    9

    10 while(1) {

    11 if (pc.readable()) {

    12 c = pc.getc(); // lee un caracter de la UART

    13 if (c == p) pc.printf("Hello World!\n");

    14 }

    15 led = !led;

    16 wait(0.25);

    17 }

    18 }Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Chat

    1 Serial pcCom(USBTX, USBRX);

    2 Serial DispCom(p13, p14); // p9,p10 o p13,p14 o p28,p27

    3 DigitalOut Led(LED1);

    4 DigitalOut pc_activity(LED1);

    5 DigitalOut Disp_activity(LED2);

    6

    7 void DispComRXh(void) {

    8 while(DispCom.readable()) {

    9 pcCom.putc(DispCom.getc());

    10 pc_activity = !pc_activity;

    11 }

    12 }

    13 void pcComRXh(void) {

    14 while(pcCom.readable()) {

    15 DispCom.putc(pcCom.getc());

    16 Disp_activity = !Disp_activity;

    17 }

    18 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Chat

    1 int main() {

    2 // Configuracion serial del dispositivo

    3 DispCom.baud(9600); //default

    4 DispCom.format(8, Serial::None, 1); //default

    5 DispCom.attach(&DispComRXh, Serial::RxIrq);

    6 // Config serial de la pc

    7 pcCom.baud(9600);//default

    8 pcCom.format(8, Serial::None, 1);//default

    9 pcCom.attach(&pcComRXh, Serial::RxIrq);

    10 while(1) {

    11 Led=!Led;

    12 wait(0.25);

    13 }

    14 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Sensores - CNY70

    La salida del sensor es un valor analogico0 3,3V , conectado al AD del mbed. UsandoAnalogIn::read() se ve como un valor floatentre 0 y 1.

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Sensores - CNY70

    Leyendo los sensores

    1 AnalogIn sensor(p19);

    2 DigitalOut ledsensor(p10);

    3 PwmOut ledazul (LED1);

    4

    5 int main() {

    6 ledsensor = 1;

    7 float aux;

    8 while(1) {

    9 aux = sensor.read(); //devuelve un numero entre 0 y 1

    10 ledazul = aux;

    11 wait(0.1);

    12 }

    13 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Sensores - CNY70 Y como veo la lnea?

    (Lnea Negra)Alineado Desviado a izq. Desviado a der.

    Desviandose a izq. Desviandose a der.

    ~1~0 ~0~1 ~1

    ~1 ~1

    ~1

    ~0.5 ~0.5

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Puente H - L298

    Para manejar los motores de CC usamos un IC (L298) que tiene 2puentes H.

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Puente H - L298 (cont)

    El puente H nos permite cambiar el sentido y velocidad de giro delos motores.En el grafico se ve que se puede cambiar el sentido de circulacionde la corriente. Como variamos la velocidad?

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Puente H - L298 (cont)

    Pero en realidad, no lo vamos a usar as. Uso de los puentes Hintegrados en el L298.

    EN IN1 IN2 Motor0 X X Libre

    1 0 0 Frenado

    1 1 0 Adelante

    1 0 1 Atras

    1 1 1 Frenado

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    En movimiento!

    Controlando los motores.

    1 DigitalOut InA1(p21); // In1 motor A

    2 DigitalOut InA2(p22); // In2 motor A

    3 DigitalOut EnA(p23); // Enable motor A

    4

    5 int main() {

    6 IntA1 = 1; // configuramos motor A

    7 IntA2 = 0; // en un sentido

    8 EnA = 1; // habilitamos motor A

    9 while(1);

    10 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Usando el acelerometro

    Inicializacion.

    1 const int addr = 0x3A;

    2 I2C i2c(p28, p27);

    3

    4 Accelerometer::Accelerometer() {

    5 i2c.frequency(100000); // freq de i2c 100KHz

    6 wait(0.02); // El acelerometro tarda 20ms en arrancar

    7

    8 // Inicializacion del acelerometro

    9 char cmd[2];

    10 cmd[0] = 0x16; // registro 16h, Mode Control

    11 cmd[1] = 0x05; // 2g + Measurement Mode

    12 i2c.write(addr, cmd, 2);

    13 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Usando el acelerometro

    Leemos los ejes.

    1 const char REG_X8 = 0x06;

    2 const char REG_Y8 = 0x07;

    3 const char REG_Z8 = 0x08;

    4

    5 char Accelerometer::readAccel8(char registro) {

    6 char data, reg;

    7 reg = registro;

    8 i2c.write(addr, &reg, 1);

    9 wait(0.004);

    10 i2c.read(addr,&data,1);

    11 return data;

    12 }

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    A trabajar...

    Con todo lo que ya vimos, ahora solo necesitan saber dondeesta conectada cada cosa :)

    Robot (Autito)Funcion PinName Funcion PinName Funcion PinName

    Led Sensor Izq p10 PH1 IN1 p22 Farol Izq. p20Sensor Izq p19 PH1 IN2 p21 Farol Der. p30

    Led Sensor Der p9 PH1 EN p23 Serie TX p13Sensor Der p18 PH2 IN1 p25 Serie RX p14

    Boton p17 PH2 IN2 p24 Serie Rst p8PH2 EN p26

    Control RemotoFuncion PinName Funcion PinName Funcion PinName

    Acel. SCL p27 Boton Izq. p19 Serie TX p13Acel. SDA p28 Boton Der. p20 Serie RX p14Acel. Int. 1 p9 Acel. Int. 2 p10 Serie Rst p8

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    Ejercicios

    Mejorar el dimmer para que se prenda y apague en formacontinua.

    (Mbed Car) Enviar la lectura de las entradas analogicas de lossensores, por puerto serie.

    (Mbed Mote) Enviar la informacion de la lectura delacelerometro por puerto serie.

    Club de Robotica - FIUBA Workshop mbed

  • Introduccion Conociendo la planta Programacion del mbed Primeros Pasos Timers y PWM Puerto Serie Actuadores y sensores A trabajar

    The End

    Muchas Gracias.

    Club de Robotica - FIUBA Workshop mbed

    IntroduccinConociendo la plantaProgramacin del mbed