SlideShare une entreprise Scribd logo
1  sur  68
Télécharger pour lire hors ligne
Integración de proyectos embebidos Utilizando
Arduino, Raspberry PI y Java.
Ing. Carlos Camacho & Ing. Javier Marte
Santiago,República Dominicana, 28/11/2015.
Barcamp.org.do
Los conceptos y juicios de valor emitidos en esta presentación es responsabilidad
personal y no se puede entenderse como una posición oficial de alguna empresa con la
que hemos tenido relación laboral.
Todas las marcas registradas, así como todos los logotipos, imágenes, fotografías,
audio y vídeos mostrados en esta presentación son propiedad de sus respectivos
propietarios.
Su utilización es solamente para fines ilustrativos y no pretendemos dar a entender
cualquier afiliación con esas empresas.
Asuntos Legales
Sobre Carlos Camacho
❖ Ing. Telemático | Magister Tecnología Educativa | Profesor Departamento
Sistema, PUCMM.
❖ Más de 10 años de experiencias en desarrollo de sistemas bajo Java SE y
Java EE.
❖ Fundación Código Libre, Santiago - Miembro Fundador | Coordinador de
Sistemas, Reefer Services, S.A.S | Presidente, AvatharTech E.I.R.L.
❖ Lado oscuro de la fuerza, Nacido en la era Nintendo, Pirata Musical
Comunidades
❖ twitter: @ccamachog
❖ Github: @vacax
❖ LinkedIn: @ccamachog
❖ carlosalfredocamacho@gmail.com / ccamachog@avathatech.com
Sobre Carlos Camacho
❖ Ing. Electrónico | Encargado de Seguridad Electrónica, PUCMM.
❖ Más de 3 años de experiencias en desarrollo e integración de sistemas
embebidos.
Comunidades
❖ LinkedIn: @javiermartemichelen
❖ javier.m.m92@gmail.com / jmarte@avathatech.com
❖ facebook: @javier.martemichelen
● Elección de la placa.
● Protocolo de comunicación.
● Programación en el microprocesador
● Ahorro de energía.
● Integración con el software de alto nivel.
Agenda
● Introducir los conceptos fundamentales de los dispositivos
embebidos.
● Mostrar los criterios técnicos que deben ser evaluados para la
selección de las placas y procesadores.
● Mostrar funcionamiento de los módulos de comunicación Xbee.
● Integración dispositivo electrónico con aplicación web.
Objetivo
Un cliente que maneja carga refrigerada a terceros, necesita demostrar que los productos que el maneja
nunca pierden la cadena de frío, para ello, necesita evidenciar que posee información veraz donde no
intervenga la manipulación humana en los registros de temperatura a la carga que el maneja; para lograr ese
objetivo, necesita incluir en sus procesos un sistema informático que se alimente de sensores electrónicos
que miden temperatura y humedad, permitiendo la generación de reportes, alarmas fuera de rango y
visualizar en tiempo real los valores procesados, logrando demostrar a sus clientes que mantiene en todo
momento la cadena de frío. Los sensores que serán implementados, deben ser de bajo costo, no utilizar
cableado de ningún tipo para la transmisión de la información y autonomía de esos equipos.
El Proyecto
Analizando los requerimientos del cliente, el proyecto debe cumplir los siguientes
puntos:
● Medir Temperatura y Humedad
● Inalámbrico.
● Bajo costo.
● Visualizar la información en una aplicación Web.
● Emisión de Alarmas.
● Colector de información
● Control de evento
● Autónomo
○ Utilizar batería
Problema
● Es un Sistema de computación diseñados para cubrir y dar respuesta a una necesidad específica.
● Tienen una arquitectura semejante a las PC:
○ Microprocesador
○ Memoria
○ Disco duro
○ Entradas / Salidas digitales y analogas.
Sistemas Embebidos
Esquema del proyecto
Dispositivo Maestro
y Coordinador
Dispositivo
Final N1
Dispositivo
Final N2
Dispositivo
Final Nn
Aplicación
Web
Dispositivos Finales
● Sensor de temperatura.
● Sensor de humedad.
● Comunicación inalámbrica.
● Microprocesador.
● Ambiente en que va a funcionar el Hardware o End Point.
● Utiliza Batería para la alimentación.
Sensores
● Un sensor es un dispositivo diseñado para recibir información de una magnitud del exterior y
transformarla en otra magnitud, normalmente eléctrica, que seamos capaces de cuantificar y
manipular.
Sensores de Temperatura y Humedad
Hay muchos tipos de sensores de temperatura y humedad en el mercado. Por ejemplo:
DHT11
Power
Supply
Rango de
Medición
Humedad Error
Máximo
Temperatura
Error Máximo
Resolution
3 V - 5 V 20-90%HR
0-50℃
±5%HR ±2℃ 1
Desventajas
- Error de medición Alto.
- Rango de medición
Limitado.
- I2C
Ventajas
- Un solo dispositivos tenemos
dos unidades distintas de
medición.
Precio US $ 5
Sensor de Temperatura
DS18B20
Power
Supply
Rango de
Medición
Temperatura Error Máximo Resolución
3.0V - 5.5V -55℃ hasta
+125℃
-10℃ hasta 85℃ = ±0.5
-55℃ hasta 125℃ =± 2
Programable
Precio US $ 3.
G
N
D
D
Q
VD
D
Desventajas
- Una sola variable de
medición
Ventajas
- Mayor rango de temperatura
- Menor error.
- Resolución programable.
- Se puede Calibrar.
- One Wire bus.
- Menor Consumo
Sensor de temperatura y humedad
Power Supply Rango de
Medición
Temperatura Error
Máximo
Resolution
3.3V - 5.5 V DC 0 hasta 100 %HR
-40 〜 80 ℃
± 2 % HR
± 0.5 ℃
0.1% RH
± 0.2 ℃
Este dispositivo se ajusta más a nuestro proyecto.
Precio US $ 6.
DHT22/AM2302 Ventajas
- Mayor rango de medición en la Humedad
- Menor error de temperatura y humedad.
- Se puede Calibrar.
- One Wire bus.
- Un solo dispositivo
Desventajas
- Menor rango de
medición en la
temperatura
Comunicación Inalámbrica
Por requerimiento del proyecto, no podemos utilizar cableado para comunicar los equipos, dado el alto
costo que implica contar con las facilidades técnicas ( tuberia, electricidad, redes ) previo al
funcionamiento del proyecto. Por esta razón, se busca un tipo de Dispositivos que tenga las siguientes
características:
1. Autonomía.
2. Bajo consumo.
3. Transmisión de dato a larga distancia.
4. Debe ser compatible la comunicación entre microcontrolador y el dispositivo inalámbrico.
5. Red Mesh o Estrella.
Comunicación Inalámbrica(End Point)
Xbee SB2 Pro
Características
● 3.3v @ 295mA.
● Rango de 1 milla (1.6 Km).
● Comandos AT o API.
● Certificación FCC.
● 250Kbps máxima tasa de datos.
● 6 Pines entrada CAD 10-bit
Precio US $28
Comunicación Inalámbrica(End Point)
Ventajas del Uso del Xbee:
● Gran alcance de transmisión
● Bajo consumo.
● Interfaz serial.
● Fácil de integrar.
● Económico,poderoso y fáciles de usar.
● Autonomía en el enrutamiento.
● Red Mesh o Estrella.
Comunicación Inalámbrica Xbee
Coordinador (administrador de la red)
• Sólo puede existir uno por red.
• Inicia la formación de la red.
• Es el coordinador de PAN (red de área personal).
Router (enrutador)
• Se asocia con el coordinador de la red o con otro router ZigBee.
• Puede actuar como coordinador.
• Es el encargado del enrutamiento de saltos múltiples de los mensajes.
Dispositivo final (End device)
• Elemento básico de la red.
• No realiza tareas de enrutamiento.
Configuración Xbee
Los Xbee deben ser configurados por el usuario antes de ser utilizados. Para esto
se utiliza el software XCTU de Digi International.
Configuración Básica del Xbee
Coordinador.
PAN ID(Personal Area Network) 1234
SCAN Channels 10
Scan Duration 3
Firmware Version:
Configuración Básica del Xbee
End Point.
PAN ID(Personal Area Network) 1234
SCAN Channels 10
Scan Duration 3
Join Notification (1 Enable)
Sleep Mode Cyclic Pin- Wake[5]
Firmware Version:
Configuración Básica del Xbee
Router:
PAN ID(Personal Area Network) 1234
SCAN Channels 10
Scan Duration 3
Join Notification (1 Enable)
Sleep Mode No Sleep
Elección de Microprocesador y placa
Paso 1:
Se debe listar las funciones que va a desempeñar el End point, ya que esto dependerá el nivel
de complejidad que vas a manejar en tu microprocesador. Por ejemplo, para este proyecto
tenemos lo siguiente:
1. Obtener los valores de Temperatura y Humedad.
2. Obtener el valor del voltaje de la batería.
3. Procesar la trama de comunicación hacia el coordinador.
4. Procesar la trama de comunicación del Xbee.
5. Envío de datos al coordinador cada X tiempo.
Elección de la placa (End Point)
Elección de la placa (End Point)
Para elegir el End point tomamos en cuenta lo siguiente:
● Costo de los equipos.
● Características de los microprocesadores.
● Complejidad de las tareas que va a desempeñar el dispositivo.
● Factibilidad.
● Tamaño de las placas.
Elección de la placa (End Point)
Para los End point, elegimos Arduino porque cumple con:
● Bajo Costo.
● Las tareas que van a desempeñar son sencillas.
● Factibilidad en la construcción del PCB.
● Varias opciones y tamaño de placas.
Elección de la placa
Dispositivo Final(End Point)
Paso 2 :
Listar cantidad de pines y tipo de comunicación que vamos a utilizar en
el proyecto. Por ejemplo, para este proyecto tenemos:
Dispositivo Pines a
controlar
Cantidad de Pines a
controlar
Comunicación
DS18B20 DQ | VDD 2 1 One-Wire
Humedad Ve | OUT 2 1 One- wire
Xbee CTS 1 Serial
Batería +Vcc 1 Análogico
Inputs 2 Pines 2 -
Elección Microprocesador y Placa Arduino
Total de Pines a Utilizar:
5 Pines Digitales.
3 Pines Analogicos
Total de Dispositivos a
Utilizar: 5
Dispositivo Final(End Point)
Paso 3 :
Elección de la Placa Arduino, para esto debemos tener en cuenta los siguiente
parámetros:
● Voltaje Operacional.
● Memorias Flash. (Donde se almacena el Sketch)
● Memoria SRAM. (Es de uso Exclusivo para el programa en ejecución).
● Memoria EEPROM.(Utilizada para almacenar información a largo plazo).
● Entrada Analogicas y Digital.
● Velocidad del Microprocesador.
● Interrupciones.
Para esto, observar la siguiente tabla y buscar los parámetros de interés.
Elección Microprocesador y Placa Arduino
Name Processor Operating/Input
Voltage
CPU
Speed
Analo
g
In/Ou
t
Digital
IO/PWM
EEPROM
[KB]
SRAM
[KB]
Flash
[KB]
USB UART
ArduinoBT ATmega328P 5 V / 2.5-12 V 16 MHz 6/0 14/6 1 2 32 - 1
Due ATSAM3X8E 3.3 V / 7-12 V 84 MHz 12/2 54/12 - 96 512 2 Micro 4
Fio ATmega328P 3.3 V / 3.7-7 V 8 MHz 8/0 14/6 1 2 32 Mini 1
Gemma ATtiny85 3.3 V / 4-16 V 8 MHz 1/0 3/2 0.5 0.5 8 Micro 0
Leonardo ATmega32U4 5 V / 7-12 V 16 MHz 12/0 20/7 1 2.5 32 Micro 1
Mega 2560 ATmega2560 5 V / 7-12 V 16 MHz 16/0 54/15 4 8 256 Regular 4
Uno ATmega328P 5 V / 7-12 V 16 MHz 6/0 14/6 1 2 32 Regular 1
Dispositivo Final(End Point)
Elección MicroProcesador y Placa Arduino
Ventajas :
● Cargador de batería.
● Plot para batería incorporado.
● Xbee shield Incorporado.
● Switch On/ OFF.
● Encapsulado pequeño.
● Pines extra para medición de batería y
control de xbee
Arduino Fio (Atmega 328P)
Precio US $23
Dispositivo Final(End Point)
Esquema del Proyecto:
Dispositivo Final(End Point)
Esquema del Proyecto:
Dispositivo Final(End Point)
Selección de la Batería:
Paso 1:
Tabular el consumo promedio de todos los dispositivos.
Dispositivo Consumo Máximo en
modo Activo
Consumo en Modo StandBy o
Sleep
DS18B20 1.5 mA 10 uA
Humedad 1.5 mA 50 uA
Xbee 80 mA 32 uA
Arduino Fio 10 mA 112 uA
Total 93 mA 140 uA
Dispositivo Final(End Point)
Selección de la Batería:
Paso 2:
Ejercicio 1:
¿Cuál sería la capacidad de la batería para una carga constante de 93mA durante un mes?
Duración de la Batería(Hora)=
Capacidad de la Batería para 1 mes (720 horas) será de: 66,960 mAh. No es viable.
Solución para ahorrar energía:
Definir un Ciclo donde tendremos 2 tiempos:
Tiempo activo, este tiempo corresponde al proceso y envío de datos).
Tiempo muerto (sleep o modo ahorro de energía).
Capacidad de la batería (mAh)
Corriente de la carga (mA)
Dispositivo Final(End Point)
Selección de la Batería:
si el ciclo = 2 Minutos
Tiempo Activo = 10 segundos
Tiempo Muerto = 110 segundos
La corriente en Tiempo activo es = 93mA.
La corriente en Tiempo muerto es = 204uA + 5% de la corriente en tiempo activo = 4.854mA.
La corriente total consumida en el ciclo = 93mA + 4.854mA = 97.854mA.
Para tener una referencia, durante un mes vamos a calcular la corriente consumida del dispositivo
tomando en cuenta cada 2 minutos durante 1 mes.
1 Mes = 24horas*30 dias= 720 horas.
(720 horas* 60 minutos) /1 hora = 43,200 minutos.
Cantidad de ciclos de 2 minutos durante 1 mes = = 21,600 ciclos.
La corriente consumida durante un mes completo = 21,600 * 97.854mA= 2,113.6 mA
43,200 minutos
2 minutos
Dispositivo Final(End Point)
Selección de la Batería:
Finalmente, la corriente consumida por el dispositivo final(End Point) en 1 mes = 2,113.6mA
Debemos elegir una batería con un voltaje nominal de 3.7 - 7 voltios y una capacidad por
encima de los 2000 mAh. Por ejemplo, la batería que se muestra es de Lithium ion Polymer,
con un voltaje de 3.7v y una capacidad de 2200mAh
Dispositivo Final(End Point)
Trama de las lecturas de los variables medidas.
Valores en Hexadecimal.
40 40 00 01 01 03 2D 50 1D 25 03 04
Start Delimiter : 40 40
End point ID: 00 01
Frame Type : 01
Voltaje: 3 2D
Signo de temperatura: 50 si es Positiva , 4E si es Negativa
Temperatura: 1D 25
Humedad: 03 04
Comunicación Inalámbrica
Trama de Recepcion de Paquete en el Xbee Coordinador.
Valores en Hexadecimal.
7E 00 18 90 00 13 A2 00 40 B5 A3 09 09 9D 41 40 40 00 01 01 03 2D 50 1D 25 03 04 E7
Start delimiter: 7E
Length: 00 18 (24)
Frame type: 90 (Receive Packet)
64-bit source address: 00 13 A2 00 40 B5 A3 09
16-bit source address: 09 9D
Receive options: 41
RF data: 40 40 00 01 01 03 2D 50 1D 25 03 04
Checksum: E7
Comunicación Inalámbrica
Ejemplo de envio de Paquete desde el End Point.
Valores en Hexadecimal.
7E 00 1A 10 01 00 13 A2 00 40 B5 A2 F8 FF FE 00 00 40 40 00 01 01 03 2D 50 1D 25 03 04 62
Start delimiter: 7E
Length: 00 1A (26)
Frame type: 10 (Transmit Request)
Frame ID : 01 (Habilitar el Request)
64-bit Dest. address: 00 13 A2 00 40 B5 A2 F8
16-bit source address: FF FE
Broadcast radius: 00
Options : 00
RF data: 40 40 00 01 01 03 2D 50 1D 25 03 04
Checksum: 62
Checksum=0xFF-(sumatoria & 0xFF).
Ahorro de Energía (End Point)
¿Como se pudo ahorrar energia via Software?
1. Colocando en modo Sleep el Xbee.
2. Colocando el microprocesador en modo hibernar en sus tiempos muertos.
3. Controlando el paso de corriente a los sensores.
Como colocar en Modo Sleep el Xbee.
~ Pin 9 DTR/sleep RQ Activo Bajo.
Ahorro de Energía (End Point)
¿Como se pudo ahorrar energia via Software?
Se determinó el tiempo muerto del proceso y se colocó cada uno de los dispositivos en el
siguiente modo de operación.
1. Colocando en modo Sleep el Xbee.
2. Colocando el microprocesador en modo ahorro de energía en sus tiempos muertos.
3. Controlando el paso de corriente a los sensores.
Como colocar en Modo Sleep el Xbee.
~ Controlando desde el microprocesador
el Pin 9 DTR/sleep RQ.
Nota: Tener en cuenta que la configuración esté en
Cyclic Pin-Wake
Ahorro de Energía (End Point)
¿Como colocar el Microprocesador en modo de ahorro de energía?
Este Microprocesador tiene disponible seis modos de dormir:
1. Idle
2. ADC Noise Reduction
3. Power-save,
4. Power-down
5. Standby
6. Extended Standby
Para poder salir del Modo de dormir tiene que haber una intervención en el
microprocesador, para esto, generando una interrupción podemos despertar el
microprocesador.
Las interrupciones son eventos especiales que se generan interna o externamente en
el microcontrolador que pausa momentáneamente la ejecución del programa para
realizar una tarea breve, y después volver al punto donde se quedó ejecutando el
programa.
Atmega 328P
Ahorro de Energía (End Point)
La interrupción de Watchdog Timer es la que se utilizó, porque el watchdog timer es un
temporizador de 16 bit que puede ser configurada para generar interrupciones en un
determinado tiempo.
Registro de configuración del Watchdog Timer.
Configuración del Watchdog Timer.
Ahorro de Energía (End Point)
Finalmente el registro del Watchdog timer
WDTCSR = B01100001; // Interrupción cada 8 segundos
Tabla del Preescalador del Watchdog timer
Ahorro de Energía (End Point)
void sleepNow()
{
set_sleep_mode(SLEEP_MODE_PWR_SAVE); // Sleep mode is set here
sleep_enable(); // Habilitando el modo sleep en el registro mcucr.
sleep_mode(); // Aquí el Microprocesador se va a modo Power save
// El programa continúa aquí una vez que se despierte
sleep_disable(); // Lo primero que se hace cuando despierta deshabilitar el
// modo sleep
}
void watchdogEnable() { // Encender la interrupción del watchdog timer cada 8.0s
cli();
MCUSR = 0;
WDTCSR |= B00011000;
//WDTCSR = B01000111; // 2 Second Timeout
//WDTCSR = B01100000; // 4 Second Timeout
WDTCSR = B01100001; // 8 Second Timeout
sei();
}
ISR (WDT_vect) { // Vector interrupción del Watchdog Timer.
cli();
wdt_disable();
sei();
}
Arduino IDE for Visual Studio
Visual Micro es un plugin gratuito de programación de Arduino que se extiende Microsoft Visual Studio
2012 hasta 2015, con un completo entorno de programación compatible con Arduino. IDE de diversos
fabricantes como arduino.cc, arduino.org, intel, chipKIT, son compatibles teensy.
Requerimientos:
● Visual Studio or Atmel Studio.
● Plugins Visual Micro.
● Arduino IDE.
● Solo para Windows.
Ventajas:
● Puedes Debugear tus códigos paso a paso.
● Simplifica la tarea de programar.
● Interfaz más amigable.
Arduino IDE for Atmel Studio
Recomendaciones
1. Familiarizarse y probar con cada unos de los dispositivos.
2. Hacer pruebas de tramas y envío de información en los Xbee con el software XCTU.
3. No hacer mal uso en las declaraciones de las variables.
4. Tomar en cuenta todos los factores a la hora de la elección del microprocesador.
5. Leer las hoja de datos de los dispositivos para conocerlos bien.
6. Lo último que se calcula y se elige es la batería de alimentación.
Costo Total US$77 (Incluyendo PCB y materiales gastables)
● Plataforma:
○ Multiplataforma.
○ Utiliza máquina virtual para su ejecución.
○ Creado por James Gosling
○ Multipropósito, dividida según el uso en:
■ Java SE.
■ Java EE.
■ Java Embedded.
● Números:
○ 5 trillones de SIMS y Smart Cards
○ 3 trillones de dispositivos móviles.
○ 80 millones de TV, incluyendo blu-ray, printers, máquinas bancarias, ebook readers.
Java
Trillones, representa el término inglés de 10^12, http://www.oracle.com/us/technologies/java/embedded/overview/index.html
● Optimizados para trabajar con sistemas embebidos los cuales tienen limitaciones
en cantidad de memoria, procesadores y consumo eléctrico. Dependiendo la
implementación se divide en:
○ Java Embedded → Soluciones para pequeños y grandes equipos embebidos.
○ Java SE Embedded → Implementación de Java SE optimizada para equipos embebidos.
○ Java ME Embedded → Optimizados para equipos pequeños, actualización remota.
○ Java ME Embedded Client → Optimizados con equipos pequeños con limitaciones memoria,
display y alimentación eléctrica.
○ Java Card → Dispositivos de seguridad
○ Java TV → Contenido digital para TV.
Java Embedded
● Recibe la información enviada por los dispositivos finales (End Point).
● Puente o convertidor de protocolo de comunicación ( Xbee a TCP).
● Envía la información recibida al servidor central para su procesamiento.
● Requiere capacidad de procesamiento y memoria moderada para procesar cada
una de la información enviada por los dispositivos finales.
Dispositivo Maestro | Controlador
● Nuestro dispositivo seleccionado es Raspberry PI Modelo B:
○ SoC: Broadcom BCM 2835 (CPU + GPU+ DSP + SDRAM + Puertos USB).
○ CPU: ARM 1176JZF a 700 MHZ.
○ SDRAM: 512MB.
○ Almacenamiento: SD
○ Conectividad: Ethernet R-J45, 10/100.
○ Periféricos bajo nivel: 8 x GPIO, SPI, I2C, UART.
○ Sistemas Operativos: Raspbian, Pidora, entre otros sabores de linux.
Elección del dispositivo maestro
Elección del dispositivo maestro
US$: 45.00
Raspberry PI Zero
US$: 5.00
● Características:
○ SoC: Broadcom BCM 2835 (CPU + GPU+ DSP + SDRAM + Puertos USB).
○ CPU: ARM11 a 1 GHz.
○ SDRAM: 512MB.
○ Almacenamiento: SD
○ 40 pines disponible.
○ Sistemas Operativos: Raspbian.
Raspberry PI Zero
● Raspberry PI permite la instalación de un sistema operativo basado en linux. La
distribución más utilizada es RaspBian.
● Para instalar Java SE Embedded, lo descargamos desde los repositorios:
○ sudo apt-get install oracle-java8-jdk
● Instalar acceso serial Linux - Java - Raspberry Pi:
○ sudo apt-get install librxtx-java
● El poder de cómputo permite considerar el dispositivo como uno de alta
prestaciones para el tipo de aplicaciones que estaremos realizando.
● Una vez en funcionamiento solo hace falta arrancar la aplicación de control.
Raspberry PI & Java
Esquema Raspberry - End Point
Controlador
Raspberry PI
Model B
Base
Datos
(H2)
Arduino
Fio
XBee
Temp /
Hum
XBee
Ethernet
Aplicación Web
End Point
Controlador
Nuestra aplicación en Java realiza las siguiente funciones:
● Leemos la información recibida por el puerto serial que nos proporciona el
XBee.
● La información recibida es parseada acorde al protocolo interno y enviada a la
aplicación central.
○ Puede ser almacena en una base de datos interna permitiendo el envío diferido en caso de
problemas de conexión.
● Recibe confirmación de lectura de servidor central.
Controlador
El proceso de integración con aplicación construidas en plataformas de alto nivel, depende de poder enviar la
información desde los dispositivos embebidos al servidor central para su procesamiento, en el cual debemos
utilizar un medio de comunicación y un protocolo para tales fines. En nuestra arquitectura utilizamos las
siguientes tecnologías:
● Grails (Backend)
● Vaadin (Frontend)
● Mysql (motor de persistencia)
Integración Alto Nivel
● Para el intercambio de información utilizamos JSON, enviando sobre el protocolo
HTTP a la aplicación central.
{"startByte":126,"sourceAddressByte64":[0,19,-94,0,64,-75,-94,-17],"tipoTramaXbee":144,"direccion16":"
46:4c","voltaje":3.45,"temperatura":27.81,"sourceAddressByte16":[70,76],"tipoTrama":1,"checkSum":236,"
rawData":[126,0,24,-112,0,19,-94,0,64,-75,-94,-17,70,76,65,64,64,0,1,1,3,45,80,27,81,3,4,-20],"
direccion64":"0:13:a2:0:40:b5:a2:ef","tamanoTrama":24,"dispositivoId":1,"data":
[64,64,0,1,1,3,45,80,27,81,3,4],"humedad":3.04,"receiveOption":65}
Intercambio de información
App Central
App Central
Demo
Demostración del producto final
Sobre
Demo
¿Preguntas?
Demo
Gracias :-D
Refencia
http://xbee.cl/xbee-pro-63mw-wire-antenna/
http://1.bp.blogspot.com/-5b5WBm45iFM/VI741_YkpTI/AAAAAAAABcw/eONpHusj6bw/s1600/modelos_Arduino_2014.png
https://www.arduino.cc
https://www.maximintegrated.com/en/products/analog/sensors-and-sensor-interface/DS18B20.html
http://plataformaszigbee.blogspot.com/2012/05/practica-1-configuracion-y-conceptos.html
http://www.atmel.com

Contenu connexe

Tendances

Introduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaIntroduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salida
Moises Nuñez Silva
 
Arduino: Libro ING Santiago Manzano diseño y proyectos básicos de Arduino
Arduino: Libro ING Santiago Manzano diseño y proyectos básicos de ArduinoArduino: Libro ING Santiago Manzano diseño y proyectos básicos de Arduino
Arduino: Libro ING Santiago Manzano diseño y proyectos básicos de Arduino
SANTIAGO PABLO ALBERTO
 
Arduino(Tipos y su Programacion)
Arduino(Tipos y su Programacion)Arduino(Tipos y su Programacion)
Arduino(Tipos y su Programacion)
Oscar Pastrana
 
Curso de introducción a arduino
Curso de introducción a arduinoCurso de introducción a arduino
Curso de introducción a arduino
3D Print Barcelona
 
Curso introducción a arduino
Curso introducción a arduinoCurso introducción a arduino
Curso introducción a arduino
FabLabLeon
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
Angelik Hdez
 

Tendances (20)

Introduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaIntroduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salida
 
Arduino: Libro ING Santiago Manzano diseño y proyectos básicos de Arduino
Arduino: Libro ING Santiago Manzano diseño y proyectos básicos de ArduinoArduino: Libro ING Santiago Manzano diseño y proyectos básicos de Arduino
Arduino: Libro ING Santiago Manzano diseño y proyectos básicos de Arduino
 
Arduino(Tipos y su Programacion)
Arduino(Tipos y su Programacion)Arduino(Tipos y su Programacion)
Arduino(Tipos y su Programacion)
 
Introducción a Arduino
Introducción a ArduinoIntroducción a Arduino
Introducción a Arduino
 
Curso de introducción a arduino
Curso de introducción a arduinoCurso de introducción a arduino
Curso de introducción a arduino
 
Ejercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo SabikaEjercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo Sabika
 
Introducción a arduino
Introducción a arduinoIntroducción a arduino
Introducción a arduino
 
Curso introducción a arduino
Curso introducción a arduinoCurso introducción a arduino
Curso introducción a arduino
 
Arduino
ArduinoArduino
Arduino
 
Taller de introducción a Arduino OSL 2014
Taller de introducción a Arduino OSL 2014Taller de introducción a Arduino OSL 2014
Taller de introducción a Arduino OSL 2014
 
Vehiculo controlado por app y Arduino
Vehiculo controlado por app y ArduinoVehiculo controlado por app y Arduino
Vehiculo controlado por app y Arduino
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
 
ARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libreARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libre
 
Proyecto Arduino y Proteus
Proyecto Arduino y ProteusProyecto Arduino y Proteus
Proyecto Arduino y Proteus
 
Introducción a Arduino
Introducción a ArduinoIntroducción a Arduino
Introducción a Arduino
 
Workshop iniciacion arduino d2
Workshop iniciacion arduino d2Workshop iniciacion arduino d2
Workshop iniciacion arduino d2
 
Manual arduino programació
Manual arduino programacióManual arduino programació
Manual arduino programació
 
Interfaz visual basic 6 y arduino
Interfaz visual basic 6 y arduinoInterfaz visual basic 6 y arduino
Interfaz visual basic 6 y arduino
 
Seminario de arduino DeustoTech
Seminario de arduino DeustoTechSeminario de arduino DeustoTech
Seminario de arduino DeustoTech
 
Iniciacion arduino
Iniciacion arduinoIniciacion arduino
Iniciacion arduino
 

Similaire à Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspberry PI y Java

Portafolio de servicio ELECTRIC
Portafolio de servicio ELECTRICPortafolio de servicio ELECTRIC
Portafolio de servicio ELECTRIC
Carlos Ramos Hoyos
 
Factores a considerar resuelto
Factores a considerar   resueltoFactores a considerar   resuelto
Factores a considerar resuelto
Alberto Vargas
 
381429156-PLC-DVP-Fundamentals-RevB.pdf
381429156-PLC-DVP-Fundamentals-RevB.pdf381429156-PLC-DVP-Fundamentals-RevB.pdf
381429156-PLC-DVP-Fundamentals-RevB.pdf
elkinmeza1
 
Manual completo de CPLD
Manual completo de CPLDManual completo de CPLD
Manual completo de CPLD
Adan Aguirre
 

Similaire à Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspberry PI y Java (20)

Sensores y electrónica de soporte
Sensores y electrónica de soporteSensores y electrónica de soporte
Sensores y electrónica de soporte
 
Portafolio de servicio ELECTRIC
Portafolio de servicio ELECTRICPortafolio de servicio ELECTRIC
Portafolio de servicio ELECTRIC
 
Factores a considerar resuelto
Factores a considerar   resueltoFactores a considerar   resuelto
Factores a considerar resuelto
 
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
 
PLC Programador Logico Programable
PLC Programador Logico ProgramablePLC Programador Logico Programable
PLC Programador Logico Programable
 
Seguidor de linea con arduino
Seguidor de linea con arduinoSeguidor de linea con arduino
Seguidor de linea con arduino
 
uControl Nº _ 02-.pdf
uControl Nº _ 02-.pdfuControl Nº _ 02-.pdf
uControl Nº _ 02-.pdf
 
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
 
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
 
381429156-PLC-DVP-Fundamentals-RevB.pdf
381429156-PLC-DVP-Fundamentals-RevB.pdf381429156-PLC-DVP-Fundamentals-RevB.pdf
381429156-PLC-DVP-Fundamentals-RevB.pdf
 
Fundamentos de programacion robotica con Arduino
Fundamentos de programacion robotica con ArduinoFundamentos de programacion robotica con Arduino
Fundamentos de programacion robotica con Arduino
 
2014 ii c02t-estacion meteorologica
2014 ii c02t-estacion meteorologica2014 ii c02t-estacion meteorologica
2014 ii c02t-estacion meteorologica
 
Manual completo de CPLD
Manual completo de CPLDManual completo de CPLD
Manual completo de CPLD
 
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
 
Netduino
NetduinoNetduino
Netduino
 
Presentacionarduino
PresentacionarduinoPresentacionarduino
Presentacionarduino
 
dispositivos de un computador
dispositivos de un computadordispositivos de un computador
dispositivos de un computador
 
dispositivos de un computador
dispositivos de un computadordispositivos de un computador
dispositivos de un computador
 
Diapositiva de Estudio: ppt - IoT Fácil con ESP8266.pdf
Diapositiva de Estudio: ppt - IoT Fácil con ESP8266.pdfDiapositiva de Estudio: ppt - IoT Fácil con ESP8266.pdf
Diapositiva de Estudio: ppt - IoT Fácil con ESP8266.pdf
 
Comunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PCComunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PC
 

Plus de Carlos Camacho

Plus de Carlos Camacho (7)

Java Day RD 2018 - MQTT utilizando Java
Java Day RD 2018 - MQTT utilizando JavaJava Day RD 2018 - MQTT utilizando Java
Java Day RD 2018 - MQTT utilizando Java
 
Barcamp 2017 decodificando el aire con software defined radio
Barcamp 2017   decodificando el aire con  software defined radioBarcamp 2017   decodificando el aire con  software defined radio
Barcamp 2017 decodificando el aire con software defined radio
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014
 
Introducción a java EE 7
Introducción a java EE 7Introducción a java EE 7
Introducción a java EE 7
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 

Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspberry PI y Java

  • 1. Integración de proyectos embebidos Utilizando Arduino, Raspberry PI y Java. Ing. Carlos Camacho & Ing. Javier Marte Santiago,República Dominicana, 28/11/2015. Barcamp.org.do
  • 2. Los conceptos y juicios de valor emitidos en esta presentación es responsabilidad personal y no se puede entenderse como una posición oficial de alguna empresa con la que hemos tenido relación laboral. Todas las marcas registradas, así como todos los logotipos, imágenes, fotografías, audio y vídeos mostrados en esta presentación son propiedad de sus respectivos propietarios. Su utilización es solamente para fines ilustrativos y no pretendemos dar a entender cualquier afiliación con esas empresas. Asuntos Legales
  • 3. Sobre Carlos Camacho ❖ Ing. Telemático | Magister Tecnología Educativa | Profesor Departamento Sistema, PUCMM. ❖ Más de 10 años de experiencias en desarrollo de sistemas bajo Java SE y Java EE. ❖ Fundación Código Libre, Santiago - Miembro Fundador | Coordinador de Sistemas, Reefer Services, S.A.S | Presidente, AvatharTech E.I.R.L. ❖ Lado oscuro de la fuerza, Nacido en la era Nintendo, Pirata Musical Comunidades ❖ twitter: @ccamachog ❖ Github: @vacax ❖ LinkedIn: @ccamachog ❖ carlosalfredocamacho@gmail.com / ccamachog@avathatech.com
  • 4. Sobre Carlos Camacho ❖ Ing. Electrónico | Encargado de Seguridad Electrónica, PUCMM. ❖ Más de 3 años de experiencias en desarrollo e integración de sistemas embebidos. Comunidades ❖ LinkedIn: @javiermartemichelen ❖ javier.m.m92@gmail.com / jmarte@avathatech.com ❖ facebook: @javier.martemichelen
  • 5. ● Elección de la placa. ● Protocolo de comunicación. ● Programación en el microprocesador ● Ahorro de energía. ● Integración con el software de alto nivel. Agenda
  • 6. ● Introducir los conceptos fundamentales de los dispositivos embebidos. ● Mostrar los criterios técnicos que deben ser evaluados para la selección de las placas y procesadores. ● Mostrar funcionamiento de los módulos de comunicación Xbee. ● Integración dispositivo electrónico con aplicación web. Objetivo
  • 7. Un cliente que maneja carga refrigerada a terceros, necesita demostrar que los productos que el maneja nunca pierden la cadena de frío, para ello, necesita evidenciar que posee información veraz donde no intervenga la manipulación humana en los registros de temperatura a la carga que el maneja; para lograr ese objetivo, necesita incluir en sus procesos un sistema informático que se alimente de sensores electrónicos que miden temperatura y humedad, permitiendo la generación de reportes, alarmas fuera de rango y visualizar en tiempo real los valores procesados, logrando demostrar a sus clientes que mantiene en todo momento la cadena de frío. Los sensores que serán implementados, deben ser de bajo costo, no utilizar cableado de ningún tipo para la transmisión de la información y autonomía de esos equipos. El Proyecto
  • 8. Analizando los requerimientos del cliente, el proyecto debe cumplir los siguientes puntos: ● Medir Temperatura y Humedad ● Inalámbrico. ● Bajo costo. ● Visualizar la información en una aplicación Web. ● Emisión de Alarmas. ● Colector de información ● Control de evento ● Autónomo ○ Utilizar batería Problema
  • 9. ● Es un Sistema de computación diseñados para cubrir y dar respuesta a una necesidad específica. ● Tienen una arquitectura semejante a las PC: ○ Microprocesador ○ Memoria ○ Disco duro ○ Entradas / Salidas digitales y analogas. Sistemas Embebidos
  • 10. Esquema del proyecto Dispositivo Maestro y Coordinador Dispositivo Final N1 Dispositivo Final N2 Dispositivo Final Nn Aplicación Web
  • 11. Dispositivos Finales ● Sensor de temperatura. ● Sensor de humedad. ● Comunicación inalámbrica. ● Microprocesador. ● Ambiente en que va a funcionar el Hardware o End Point. ● Utiliza Batería para la alimentación.
  • 12. Sensores ● Un sensor es un dispositivo diseñado para recibir información de una magnitud del exterior y transformarla en otra magnitud, normalmente eléctrica, que seamos capaces de cuantificar y manipular.
  • 13. Sensores de Temperatura y Humedad Hay muchos tipos de sensores de temperatura y humedad en el mercado. Por ejemplo: DHT11 Power Supply Rango de Medición Humedad Error Máximo Temperatura Error Máximo Resolution 3 V - 5 V 20-90%HR 0-50℃ ±5%HR ±2℃ 1 Desventajas - Error de medición Alto. - Rango de medición Limitado. - I2C Ventajas - Un solo dispositivos tenemos dos unidades distintas de medición. Precio US $ 5
  • 14. Sensor de Temperatura DS18B20 Power Supply Rango de Medición Temperatura Error Máximo Resolución 3.0V - 5.5V -55℃ hasta +125℃ -10℃ hasta 85℃ = ±0.5 -55℃ hasta 125℃ =± 2 Programable Precio US $ 3. G N D D Q VD D Desventajas - Una sola variable de medición Ventajas - Mayor rango de temperatura - Menor error. - Resolución programable. - Se puede Calibrar. - One Wire bus. - Menor Consumo
  • 15. Sensor de temperatura y humedad Power Supply Rango de Medición Temperatura Error Máximo Resolution 3.3V - 5.5 V DC 0 hasta 100 %HR -40 〜 80 ℃ ± 2 % HR ± 0.5 ℃ 0.1% RH ± 0.2 ℃ Este dispositivo se ajusta más a nuestro proyecto. Precio US $ 6. DHT22/AM2302 Ventajas - Mayor rango de medición en la Humedad - Menor error de temperatura y humedad. - Se puede Calibrar. - One Wire bus. - Un solo dispositivo Desventajas - Menor rango de medición en la temperatura
  • 16. Comunicación Inalámbrica Por requerimiento del proyecto, no podemos utilizar cableado para comunicar los equipos, dado el alto costo que implica contar con las facilidades técnicas ( tuberia, electricidad, redes ) previo al funcionamiento del proyecto. Por esta razón, se busca un tipo de Dispositivos que tenga las siguientes características: 1. Autonomía. 2. Bajo consumo. 3. Transmisión de dato a larga distancia. 4. Debe ser compatible la comunicación entre microcontrolador y el dispositivo inalámbrico. 5. Red Mesh o Estrella.
  • 17. Comunicación Inalámbrica(End Point) Xbee SB2 Pro Características ● 3.3v @ 295mA. ● Rango de 1 milla (1.6 Km). ● Comandos AT o API. ● Certificación FCC. ● 250Kbps máxima tasa de datos. ● 6 Pines entrada CAD 10-bit Precio US $28
  • 18. Comunicación Inalámbrica(End Point) Ventajas del Uso del Xbee: ● Gran alcance de transmisión ● Bajo consumo. ● Interfaz serial. ● Fácil de integrar. ● Económico,poderoso y fáciles de usar. ● Autonomía en el enrutamiento. ● Red Mesh o Estrella.
  • 19. Comunicación Inalámbrica Xbee Coordinador (administrador de la red) • Sólo puede existir uno por red. • Inicia la formación de la red. • Es el coordinador de PAN (red de área personal). Router (enrutador) • Se asocia con el coordinador de la red o con otro router ZigBee. • Puede actuar como coordinador. • Es el encargado del enrutamiento de saltos múltiples de los mensajes. Dispositivo final (End device) • Elemento básico de la red. • No realiza tareas de enrutamiento.
  • 20. Configuración Xbee Los Xbee deben ser configurados por el usuario antes de ser utilizados. Para esto se utiliza el software XCTU de Digi International.
  • 21. Configuración Básica del Xbee Coordinador. PAN ID(Personal Area Network) 1234 SCAN Channels 10 Scan Duration 3 Firmware Version:
  • 22. Configuración Básica del Xbee End Point. PAN ID(Personal Area Network) 1234 SCAN Channels 10 Scan Duration 3 Join Notification (1 Enable) Sleep Mode Cyclic Pin- Wake[5] Firmware Version:
  • 23. Configuración Básica del Xbee Router: PAN ID(Personal Area Network) 1234 SCAN Channels 10 Scan Duration 3 Join Notification (1 Enable) Sleep Mode No Sleep
  • 24. Elección de Microprocesador y placa Paso 1: Se debe listar las funciones que va a desempeñar el End point, ya que esto dependerá el nivel de complejidad que vas a manejar en tu microprocesador. Por ejemplo, para este proyecto tenemos lo siguiente: 1. Obtener los valores de Temperatura y Humedad. 2. Obtener el valor del voltaje de la batería. 3. Procesar la trama de comunicación hacia el coordinador. 4. Procesar la trama de comunicación del Xbee. 5. Envío de datos al coordinador cada X tiempo.
  • 25. Elección de la placa (End Point)
  • 26. Elección de la placa (End Point) Para elegir el End point tomamos en cuenta lo siguiente: ● Costo de los equipos. ● Características de los microprocesadores. ● Complejidad de las tareas que va a desempeñar el dispositivo. ● Factibilidad. ● Tamaño de las placas.
  • 27. Elección de la placa (End Point) Para los End point, elegimos Arduino porque cumple con: ● Bajo Costo. ● Las tareas que van a desempeñar son sencillas. ● Factibilidad en la construcción del PCB. ● Varias opciones y tamaño de placas.
  • 29. Dispositivo Final(End Point) Paso 2 : Listar cantidad de pines y tipo de comunicación que vamos a utilizar en el proyecto. Por ejemplo, para este proyecto tenemos: Dispositivo Pines a controlar Cantidad de Pines a controlar Comunicación DS18B20 DQ | VDD 2 1 One-Wire Humedad Ve | OUT 2 1 One- wire Xbee CTS 1 Serial Batería +Vcc 1 Análogico Inputs 2 Pines 2 - Elección Microprocesador y Placa Arduino Total de Pines a Utilizar: 5 Pines Digitales. 3 Pines Analogicos Total de Dispositivos a Utilizar: 5
  • 30. Dispositivo Final(End Point) Paso 3 : Elección de la Placa Arduino, para esto debemos tener en cuenta los siguiente parámetros: ● Voltaje Operacional. ● Memorias Flash. (Donde se almacena el Sketch) ● Memoria SRAM. (Es de uso Exclusivo para el programa en ejecución). ● Memoria EEPROM.(Utilizada para almacenar información a largo plazo). ● Entrada Analogicas y Digital. ● Velocidad del Microprocesador. ● Interrupciones. Para esto, observar la siguiente tabla y buscar los parámetros de interés. Elección Microprocesador y Placa Arduino
  • 31. Name Processor Operating/Input Voltage CPU Speed Analo g In/Ou t Digital IO/PWM EEPROM [KB] SRAM [KB] Flash [KB] USB UART ArduinoBT ATmega328P 5 V / 2.5-12 V 16 MHz 6/0 14/6 1 2 32 - 1 Due ATSAM3X8E 3.3 V / 7-12 V 84 MHz 12/2 54/12 - 96 512 2 Micro 4 Fio ATmega328P 3.3 V / 3.7-7 V 8 MHz 8/0 14/6 1 2 32 Mini 1 Gemma ATtiny85 3.3 V / 4-16 V 8 MHz 1/0 3/2 0.5 0.5 8 Micro 0 Leonardo ATmega32U4 5 V / 7-12 V 16 MHz 12/0 20/7 1 2.5 32 Micro 1 Mega 2560 ATmega2560 5 V / 7-12 V 16 MHz 16/0 54/15 4 8 256 Regular 4 Uno ATmega328P 5 V / 7-12 V 16 MHz 6/0 14/6 1 2 32 Regular 1
  • 32. Dispositivo Final(End Point) Elección MicroProcesador y Placa Arduino Ventajas : ● Cargador de batería. ● Plot para batería incorporado. ● Xbee shield Incorporado. ● Switch On/ OFF. ● Encapsulado pequeño. ● Pines extra para medición de batería y control de xbee Arduino Fio (Atmega 328P) Precio US $23
  • 35. Dispositivo Final(End Point) Selección de la Batería: Paso 1: Tabular el consumo promedio de todos los dispositivos. Dispositivo Consumo Máximo en modo Activo Consumo en Modo StandBy o Sleep DS18B20 1.5 mA 10 uA Humedad 1.5 mA 50 uA Xbee 80 mA 32 uA Arduino Fio 10 mA 112 uA Total 93 mA 140 uA
  • 36. Dispositivo Final(End Point) Selección de la Batería: Paso 2: Ejercicio 1: ¿Cuál sería la capacidad de la batería para una carga constante de 93mA durante un mes? Duración de la Batería(Hora)= Capacidad de la Batería para 1 mes (720 horas) será de: 66,960 mAh. No es viable. Solución para ahorrar energía: Definir un Ciclo donde tendremos 2 tiempos: Tiempo activo, este tiempo corresponde al proceso y envío de datos). Tiempo muerto (sleep o modo ahorro de energía). Capacidad de la batería (mAh) Corriente de la carga (mA)
  • 37. Dispositivo Final(End Point) Selección de la Batería: si el ciclo = 2 Minutos Tiempo Activo = 10 segundos Tiempo Muerto = 110 segundos La corriente en Tiempo activo es = 93mA. La corriente en Tiempo muerto es = 204uA + 5% de la corriente en tiempo activo = 4.854mA. La corriente total consumida en el ciclo = 93mA + 4.854mA = 97.854mA. Para tener una referencia, durante un mes vamos a calcular la corriente consumida del dispositivo tomando en cuenta cada 2 minutos durante 1 mes. 1 Mes = 24horas*30 dias= 720 horas. (720 horas* 60 minutos) /1 hora = 43,200 minutos. Cantidad de ciclos de 2 minutos durante 1 mes = = 21,600 ciclos. La corriente consumida durante un mes completo = 21,600 * 97.854mA= 2,113.6 mA 43,200 minutos 2 minutos
  • 38. Dispositivo Final(End Point) Selección de la Batería: Finalmente, la corriente consumida por el dispositivo final(End Point) en 1 mes = 2,113.6mA Debemos elegir una batería con un voltaje nominal de 3.7 - 7 voltios y una capacidad por encima de los 2000 mAh. Por ejemplo, la batería que se muestra es de Lithium ion Polymer, con un voltaje de 3.7v y una capacidad de 2200mAh
  • 39. Dispositivo Final(End Point) Trama de las lecturas de los variables medidas. Valores en Hexadecimal. 40 40 00 01 01 03 2D 50 1D 25 03 04 Start Delimiter : 40 40 End point ID: 00 01 Frame Type : 01 Voltaje: 3 2D Signo de temperatura: 50 si es Positiva , 4E si es Negativa Temperatura: 1D 25 Humedad: 03 04
  • 40. Comunicación Inalámbrica Trama de Recepcion de Paquete en el Xbee Coordinador. Valores en Hexadecimal. 7E 00 18 90 00 13 A2 00 40 B5 A3 09 09 9D 41 40 40 00 01 01 03 2D 50 1D 25 03 04 E7 Start delimiter: 7E Length: 00 18 (24) Frame type: 90 (Receive Packet) 64-bit source address: 00 13 A2 00 40 B5 A3 09 16-bit source address: 09 9D Receive options: 41 RF data: 40 40 00 01 01 03 2D 50 1D 25 03 04 Checksum: E7
  • 41. Comunicación Inalámbrica Ejemplo de envio de Paquete desde el End Point. Valores en Hexadecimal. 7E 00 1A 10 01 00 13 A2 00 40 B5 A2 F8 FF FE 00 00 40 40 00 01 01 03 2D 50 1D 25 03 04 62 Start delimiter: 7E Length: 00 1A (26) Frame type: 10 (Transmit Request) Frame ID : 01 (Habilitar el Request) 64-bit Dest. address: 00 13 A2 00 40 B5 A2 F8 16-bit source address: FF FE Broadcast radius: 00 Options : 00 RF data: 40 40 00 01 01 03 2D 50 1D 25 03 04 Checksum: 62 Checksum=0xFF-(sumatoria & 0xFF).
  • 42. Ahorro de Energía (End Point) ¿Como se pudo ahorrar energia via Software? 1. Colocando en modo Sleep el Xbee. 2. Colocando el microprocesador en modo hibernar en sus tiempos muertos. 3. Controlando el paso de corriente a los sensores. Como colocar en Modo Sleep el Xbee. ~ Pin 9 DTR/sleep RQ Activo Bajo.
  • 43. Ahorro de Energía (End Point) ¿Como se pudo ahorrar energia via Software? Se determinó el tiempo muerto del proceso y se colocó cada uno de los dispositivos en el siguiente modo de operación. 1. Colocando en modo Sleep el Xbee. 2. Colocando el microprocesador en modo ahorro de energía en sus tiempos muertos. 3. Controlando el paso de corriente a los sensores. Como colocar en Modo Sleep el Xbee. ~ Controlando desde el microprocesador el Pin 9 DTR/sleep RQ. Nota: Tener en cuenta que la configuración esté en Cyclic Pin-Wake
  • 44. Ahorro de Energía (End Point) ¿Como colocar el Microprocesador en modo de ahorro de energía? Este Microprocesador tiene disponible seis modos de dormir: 1. Idle 2. ADC Noise Reduction 3. Power-save, 4. Power-down 5. Standby 6. Extended Standby Para poder salir del Modo de dormir tiene que haber una intervención en el microprocesador, para esto, generando una interrupción podemos despertar el microprocesador. Las interrupciones son eventos especiales que se generan interna o externamente en el microcontrolador que pausa momentáneamente la ejecución del programa para realizar una tarea breve, y después volver al punto donde se quedó ejecutando el programa. Atmega 328P
  • 45. Ahorro de Energía (End Point) La interrupción de Watchdog Timer es la que se utilizó, porque el watchdog timer es un temporizador de 16 bit que puede ser configurada para generar interrupciones en un determinado tiempo. Registro de configuración del Watchdog Timer. Configuración del Watchdog Timer.
  • 46. Ahorro de Energía (End Point) Finalmente el registro del Watchdog timer WDTCSR = B01100001; // Interrupción cada 8 segundos Tabla del Preescalador del Watchdog timer
  • 47. Ahorro de Energía (End Point) void sleepNow() { set_sleep_mode(SLEEP_MODE_PWR_SAVE); // Sleep mode is set here sleep_enable(); // Habilitando el modo sleep en el registro mcucr. sleep_mode(); // Aquí el Microprocesador se va a modo Power save // El programa continúa aquí una vez que se despierte sleep_disable(); // Lo primero que se hace cuando despierta deshabilitar el // modo sleep } void watchdogEnable() { // Encender la interrupción del watchdog timer cada 8.0s cli(); MCUSR = 0; WDTCSR |= B00011000; //WDTCSR = B01000111; // 2 Second Timeout //WDTCSR = B01100000; // 4 Second Timeout WDTCSR = B01100001; // 8 Second Timeout sei(); } ISR (WDT_vect) { // Vector interrupción del Watchdog Timer. cli(); wdt_disable(); sei(); }
  • 48. Arduino IDE for Visual Studio Visual Micro es un plugin gratuito de programación de Arduino que se extiende Microsoft Visual Studio 2012 hasta 2015, con un completo entorno de programación compatible con Arduino. IDE de diversos fabricantes como arduino.cc, arduino.org, intel, chipKIT, son compatibles teensy. Requerimientos: ● Visual Studio or Atmel Studio. ● Plugins Visual Micro. ● Arduino IDE. ● Solo para Windows. Ventajas: ● Puedes Debugear tus códigos paso a paso. ● Simplifica la tarea de programar. ● Interfaz más amigable.
  • 49. Arduino IDE for Atmel Studio
  • 50. Recomendaciones 1. Familiarizarse y probar con cada unos de los dispositivos. 2. Hacer pruebas de tramas y envío de información en los Xbee con el software XCTU. 3. No hacer mal uso en las declaraciones de las variables. 4. Tomar en cuenta todos los factores a la hora de la elección del microprocesador. 5. Leer las hoja de datos de los dispositivos para conocerlos bien. 6. Lo último que se calcula y se elige es la batería de alimentación. Costo Total US$77 (Incluyendo PCB y materiales gastables)
  • 51. ● Plataforma: ○ Multiplataforma. ○ Utiliza máquina virtual para su ejecución. ○ Creado por James Gosling ○ Multipropósito, dividida según el uso en: ■ Java SE. ■ Java EE. ■ Java Embedded. ● Números: ○ 5 trillones de SIMS y Smart Cards ○ 3 trillones de dispositivos móviles. ○ 80 millones de TV, incluyendo blu-ray, printers, máquinas bancarias, ebook readers. Java Trillones, representa el término inglés de 10^12, http://www.oracle.com/us/technologies/java/embedded/overview/index.html
  • 52. ● Optimizados para trabajar con sistemas embebidos los cuales tienen limitaciones en cantidad de memoria, procesadores y consumo eléctrico. Dependiendo la implementación se divide en: ○ Java Embedded → Soluciones para pequeños y grandes equipos embebidos. ○ Java SE Embedded → Implementación de Java SE optimizada para equipos embebidos. ○ Java ME Embedded → Optimizados para equipos pequeños, actualización remota. ○ Java ME Embedded Client → Optimizados con equipos pequeños con limitaciones memoria, display y alimentación eléctrica. ○ Java Card → Dispositivos de seguridad ○ Java TV → Contenido digital para TV. Java Embedded
  • 53. ● Recibe la información enviada por los dispositivos finales (End Point). ● Puente o convertidor de protocolo de comunicación ( Xbee a TCP). ● Envía la información recibida al servidor central para su procesamiento. ● Requiere capacidad de procesamiento y memoria moderada para procesar cada una de la información enviada por los dispositivos finales. Dispositivo Maestro | Controlador
  • 54. ● Nuestro dispositivo seleccionado es Raspberry PI Modelo B: ○ SoC: Broadcom BCM 2835 (CPU + GPU+ DSP + SDRAM + Puertos USB). ○ CPU: ARM 1176JZF a 700 MHZ. ○ SDRAM: 512MB. ○ Almacenamiento: SD ○ Conectividad: Ethernet R-J45, 10/100. ○ Periféricos bajo nivel: 8 x GPIO, SPI, I2C, UART. ○ Sistemas Operativos: Raspbian, Pidora, entre otros sabores de linux. Elección del dispositivo maestro
  • 55. Elección del dispositivo maestro US$: 45.00
  • 57. ● Características: ○ SoC: Broadcom BCM 2835 (CPU + GPU+ DSP + SDRAM + Puertos USB). ○ CPU: ARM11 a 1 GHz. ○ SDRAM: 512MB. ○ Almacenamiento: SD ○ 40 pines disponible. ○ Sistemas Operativos: Raspbian. Raspberry PI Zero
  • 58. ● Raspberry PI permite la instalación de un sistema operativo basado en linux. La distribución más utilizada es RaspBian. ● Para instalar Java SE Embedded, lo descargamos desde los repositorios: ○ sudo apt-get install oracle-java8-jdk ● Instalar acceso serial Linux - Java - Raspberry Pi: ○ sudo apt-get install librxtx-java ● El poder de cómputo permite considerar el dispositivo como uno de alta prestaciones para el tipo de aplicaciones que estaremos realizando. ● Una vez en funcionamiento solo hace falta arrancar la aplicación de control. Raspberry PI & Java
  • 59. Esquema Raspberry - End Point Controlador Raspberry PI Model B Base Datos (H2) Arduino Fio XBee Temp / Hum XBee Ethernet Aplicación Web End Point Controlador
  • 60. Nuestra aplicación en Java realiza las siguiente funciones: ● Leemos la información recibida por el puerto serial que nos proporciona el XBee. ● La información recibida es parseada acorde al protocolo interno y enviada a la aplicación central. ○ Puede ser almacena en una base de datos interna permitiendo el envío diferido en caso de problemas de conexión. ● Recibe confirmación de lectura de servidor central. Controlador
  • 61. El proceso de integración con aplicación construidas en plataformas de alto nivel, depende de poder enviar la información desde los dispositivos embebidos al servidor central para su procesamiento, en el cual debemos utilizar un medio de comunicación y un protocolo para tales fines. En nuestra arquitectura utilizamos las siguientes tecnologías: ● Grails (Backend) ● Vaadin (Frontend) ● Mysql (motor de persistencia) Integración Alto Nivel
  • 62. ● Para el intercambio de información utilizamos JSON, enviando sobre el protocolo HTTP a la aplicación central. {"startByte":126,"sourceAddressByte64":[0,19,-94,0,64,-75,-94,-17],"tipoTramaXbee":144,"direccion16":" 46:4c","voltaje":3.45,"temperatura":27.81,"sourceAddressByte16":[70,76],"tipoTrama":1,"checkSum":236," rawData":[126,0,24,-112,0,19,-94,0,64,-75,-94,-17,70,76,65,64,64,0,1,1,3,45,80,27,81,3,4,-20]," direccion64":"0:13:a2:0:40:b5:a2:ef","tamanoTrama":24,"dispositivoId":1,"data": [64,64,0,1,1,3,45,80,27,81,3,4],"humedad":3.04,"receiveOption":65} Intercambio de información