Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sistemas Empotrados
para IoT
Temario
• Sistemas empotrados: HW y SW
• Placa basada en micro ARM Cortex M4
• Librerías ARM CMSIS
• Sistemas operativos de tiempo real, ChibiOS
• Ambiente de desarrollo de SW basado en eclipse
• Comunicaciones, protocolos y stack TCP/IP
• Conceptos de IoT
• Protocolo MQTT para IoT
1
12/3/2015
Programa (Día 1)
Hora Tema
9:00 Presentación general, temario y programa
9:10 Sistemas empotrados
9:20 Placa de desarrollo Lanin basada en micro ARM Cortex M4
9:50 Sistemas operativo embebidos y ChibiOS
10:20 Ejemplo práctico 1: Presentación de herramientas, SDK, librerías
CMSIS. Manejo básico de HW (GPIO)
12:20 Almuerzo
13:00 Detalles de uso de RTOS (Mensajes, etc)
13:30 Ejemplo práctico 2: Uso de RTOS
15:30 Conceptos de IoT
16:00 Fin de día 1
Programa (Día 2)
Hora Tema
9:00 Comunicaciones, stack TCP/IP y LwIP
9:20 Integración a RTOS
9:30 Ejemplo práctico 3: Servidor web embebido
11:00 Protocolos de comunicaciones para IoT: MQTT y COAP
11:20 Detalles de protocolo MQTT
11:50 Presentación de hardware utilizado (placa WiFi) y librerías Emtech
para acceso WiFi y MQTT
12:20 Almuerzo
13:00 Ejemplo práctico 3: Librería para uso de Wifi y MQTT.
Herramientas mosquito y paho. Suscripción a un Topic en MQTT
14:30 Ejemplo práctico 4: Publicación en un Topic en MQTT
15:00 Ejemplo práctico 5: Escenario de uso de MQTT con diversos
Topics, publicaciones y suscriptores.
16:00+ Fin día 2
2
12/3/2015
¿Qué es un Sistema
empotrado?
• Un sistema electrónico
diseñado para realizar
determinadas funciones.
• El hardware y software
optimizados parra resolver un
problema en concreto
3
12/3/2015
Interfaz con el
Alimentación
usuario
CPU
Comunicaciones Entrada/Salida
Placa Lanín
4
12/3/2015
¿Que es ARM?
5
12/3/2015
6
12/3/2015
Cortex-M
7
12/3/2015
4 LEDs y
2 Pulsadores
8
12/3/2015
Conexión USB
host
Conexión RS 485
9
12/3/2015
Zócalo para
memoria µSD
Alta capacidad de
almacenamiento tanto
para guardar datos de
adquisiciones como
para almacenamiento
de paginas web,
archivos de audio, etc.
Conexión USB
device
10
12/3/2015
Ethernet
Ethernet 10/100Mbps
para implementación
de stack TPC/IP
Headers
Pines de uso general,
compatibles con placas
DTR desarrolladas por
Emtech S.A.
Implementa algunas
líneas del periférico
FSMC para control de
memoria Nand-Flash,
Muxed-Nor-Ram o
LCD
11
12/3/2015
DTRs
DTRs
12
12/3/2015
Alimentación
Externa o USB,
selección mediante
jumper
Serial/USB
y
JTAG/USB
Mediante un chip de
FTDI se implementa la
conversión de UART1 a
USB para uso general y
de JTAG a USB para
programador/depurador
on-board.
13
12/3/2015
JTAG
Adicionalmente se
dispone del conector
para utilizar un
programador/depurador
externo.
Diseño de aplicaciones
Electrodomésticos
Aplicaciones
Juguetes
Comunicaciones
Automatización
Vehículos
Robótica
14
12/3/2015
Aplicaciones
15
12/3/2015
Método de Programación
Bare metal
16
12/3/2015
CMSIS
17
12/3/2015
CMSIS: Ejemplo
CMSIS: Ejemplo
18
12/3/2015
CMSIS: Ejemplo
• La inicialización de cualquier periférico en los
cortex M4 consta de cuatro pasos básicos:
• Programación del reloj: En MCUs de muy bajo
consumo, generalmente los periféricos tienen
su señal de reloj inhabilitada.
• Programación de configuraciones: Los pines del
MCU son compartidos entre periféricos, salvo
muy contadas excepciones.
Método de Programación
19
12/3/2015
¿Qué es un Sistema
Operativo?
Es un conjunto de programas
que se encargan de crear el
vínculo entre los recursos
materiales, el usuario y las
aplicaciones.
Interfaz
con el
Usuario
Sensores Tarea
Reloj
Tarea SO
Actuadores
Tarea
20
12/3/2015
Características de un RTOS
21
12/3/2015
Kernel Scheduler
T1 T2 Tn
Mensajes Eventos
Colas Semáforos
Son específicos para correr en HW con recursos limitados como RAM o ROM.
+ de 80
vendedores
de RTOs
22
12/3/2015
ChibiOS - Características
ChibiOS - Componentes
Port Layer
Platform Layer
Board Initialization
23
12/3/2015
Kernel
Port Layer
24
12/3/2015
Arquitectura HAL
25
12/3/2015
Dependencias
26
12/3/2015
Externs
Entorno de
desarrollo
27
12/3/2015
Entorno de desarrollo
Porque Eclipse?
• Código abierto
• Interfaz amigable
• Existen diferentes plugins que
incrementan sus capacidades
28
12/3/2015
Emtech SDK
29
12/3/2015
30
12/3/2015
Creación de threads
31
12/3/2015
Ejemplos practicos
En este caso, se reservan 128 bytes de la pila para uso del thread
32
12/3/2015
Waiting
Deblock Block
Preempt
Ready Running
Assign
33
12/3/2015
Toma el recurso 1,
ejecuta la tarea.
Libera el recurso 2
Toma el recurso 2
Libera el recurso 1
34
12/3/2015
Espera mensaje
indefinidamente.
Envía mensaje al
presionar un botón.
35
12/3/2015
Stack TCP/IP
36
12/3/2015
Stack TPC/IP
• El stack TCP/IP puede describirse por analogía con
el modelo OSI (Open System Interconnection)
Stack TCP/IP
37
12/3/2015
Stack LWIP
• Stack TCP/IP diseñado para sistemas
embebidos
• Desarrollado y mantenido por una red
mundial de desarrolladores
• El enfoque de lwIP es reducir el uso de
memoria RAM sin dejar
de tener una conexión
TCP a gran escala
38
12/3/2015
Inicializamos el stack.
Atiende la solicitud
39
12/3/2015
40
12/3/2015
IoT
41
12/3/2015
42
12/3/2015
• Protocolo de publicación/subscripción
• Comunica sensores y servidor
• Recomendable para grandes redes con pequeños
dispositivos monitorizados en la nube
• Utiliza TCP
MQTT
Publicador Suscriptor
Servidor
(Fuente) Topic = com/emtech/lanin/leds
(Receptor)
Sub(topic)
Pub(topic, data)
Pub(topic, data)
43
12/3/2015
Wifi - ESP8266
• Soporta wireless 802,11 b/g/n standards
• Soporta tres modos: STA, AP y STA + AP
• Incluye stack protocolo TCP/IP
• Interface de comunicación por UART o GPIO
• Permite actualizar el firmware
ESP8266 - MQTT
44
12/3/2015
Ejemplo de aplicación
Parámetros para
configurar y trabajar con
el modulo wifi
Inicializa periféricos y
buffers
Inicializa mqtt
mqtt - Subscripción
Inicializa el módulo y se
conecta al broker
45
12/3/2015
mqtt - Subscripción
mqtt - Publicación
Si se detecta pulsación se
publica cambio
Se envía ping
46
12/3/2015
Mqtt - Publicación
Cada 2s se envía
temperatura del
microcontrolador
Se envía ping
Referencias
• http://www.arm.com/
• http://cmsis.arm.com/
• http://www.chibios.org/
• http://lwip.wikia.com/wiki/LwIP_Wiki
• http://mqtt.org/
• http://www.esp8266.com/
• Basic Concepts for Real Time Operating Systems by Mats
Pettersson, IAR Systems
• Desarrollo con microcontroladores ARM. Sergio Caprile.
47
12/3/2015
Preguntas?
Gracias
Escuchamos Sugerencias…..
48