mbed Connect Asia 2016 Securing IoT with the ARM mbed ecosystem
Workshop mbed
Transcript of Workshop mbed
-
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, ®, 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