16
UNIVERSIDAD NACIONAL DE LA MATANZA DEPARTAMENTO DE INGENIERIA E INVESTIGACIONES TECNOLÓGICAS INGENIERIA EN INFORMATICA Sistemas Operativos Avanzados Internet of Things Sistemas Embebidos Desarrollo en Android Alumnos: Alonso, Rodolfo Badalic, Nadia Gallo, Miguel Pignataro, Leonardo 2016 1er Cuatrimestre

Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

UNIVERSIDAD NACIONAL DE LA MATANZA

DEPARTAMENTO DE INGENIERIA

E INVESTIGACIONES TECNOLÓGICAS

INGENIERIA EN INFORMATICA

Sistemas Operativos Avanzados

Internet of Things Sistemas Embebidos Desarrollo en Android

Alumnos:

Alonso, Rodolfo Badalic, Nadia Gallo, Miguel Pignataro, Leonardo

2016 1er Cuatrimestre

Page 2: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Índice

Objetivo del TP

Descripción del Entorno de Desarrollo

Diseño e Implementación

Page 3: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Objetivo del TP

Implementar los conocimientos obtenidos sobre IOT (Internet de las cosas) a lo largo de la cursada Utilizando como soporte de Hardware la placa INTEL GALILEO (Sistema Embebido). Desarrollando en nuestro caso particular un Sistema de Difusor de Bebidas o Coctelera a la que denominamos “CHOBORRABOT”. Para la parte de Android desarrollar un soft para Manejo de la Coctelera en forma Remota. Con diferentes funcionalidades.

Page 4: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Descripción del Entorno de Desarrollo

Sistema Embebido: Software Utilizado:

Drivers puerto COM

IDE Arduino Versión 1.6.8

Firmware placa Intel Galileo Hardware utilizado:

Notebook Asus (Miguel) ASUS con Windows 7 64bit - Dual Core - 3 GB

Notebook (Leonardo) DELL con Windows 7 64bit – i5 – 8 GB

Placa Intel Galileo Gen 2 (Comprada por el Grupo)

Cable micro USB

Cable de red Patch-cord 1

Tarjeta MicroSD

Tarjeta WIFI PCI-EXPRESS de una notebook dell inspiron 1525

Relay

Resistencias

Cables

Buzzer

Led

Tira de Led Lenguaje de programación utilizado:

Procesing (Arduino)

Desarrollo Android:

Software utilizado:

IDE Android Studio

Hardware utilizado (Galileo/Arduino/Ambas, Celulares):

Arduino Clon (Para pruebas al no poder juntarnos a diario) Tablet Tab 4 samsung Celulares Samsung S3, Prime. PC i7-i5 8 GB

Sensores en la aplicación android:

Vibrador (Actuador) Sensor RGB (Actuador) Acelerómetro Giroscopio GPS (conexión mediante Internet, teniendo en cuenta que en el LAB no hay señal

de satélite)

Page 5: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Reproductor de Musica/Sonidos Pantalla Touch

Lenguaje de programación utilizado:

Java

VERSION MINIMA PARA EL USO DE LA APLICACIÓN ANDROID:

API Level: 14

A partir de Android 4.0 (ICE_CREAM_SANDWICH) y superiores

Page 6: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Diseño e Implementación:

Sistema Embebido:

Nuestro proyecto consiste en generar un SE que prepare bebidas-tragos mezclando contenidos de diferentes botellas.

Para ello nos basamos en el video:

https://www.youtube.com/watch?v=ky-9az7xluA

Creamos un Logo para nuestro Proyecto:

Se armó la protoboard con los componentes que utilizamos y que se detallan en la siguiente URL. En la misma también esta embebido el código que estuvimos utilizando para realizar las pruebas. El cual se estuvo ejecutando desde el IDE Arduino mediante cable USB-microUSB.

https://123d.circuits.io/circuits/2040745-choborra-bot

En la Simulación falta la implementación del buzzer y los led.

Nota: En la página no había componentes como los que usaremos, como por ejemplo una bomba para succión de agua de 12 v. Se trató de armar lo mejor posible para que se pueda dejar una documentación acorde. Igualmente adjuntamos una imagen con algunas aclaraciones sobre componentes. Para ayuda de la conexión entre diferentes voltajes utilizamos:

https://youtu.be/AK-u71Lk5VI

Page 7: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Algunas Fotos de los avances que realizábamos:

Page 8: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Se armó una 2da bomba, osea un 2do circuito utilizando la misma protoboard, para de esta manera tener 2 botellas y poder realizar una mezcla en la presentacion del TP.

Se confecciono una carcaza en fibrofacil donde se coloco el boton, led de encendido, led de procesamiento, buzzer y tira de led para iluminacion.

Con el codigo arduino (procesing) no se tuvo problemas se utilizo el manejo de las bombas por tiempo.

Video Presentación del Sistema Embebido (Trabajo Practico 1):

https://youtu.be/gBhbsMA8JV4

Page 9: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Para la 2da parte del proyecto se implementó un “scheduler”, para lo cual se implementó código nativo ARDUINO utilizando una librería denominada “TASKSCHEDULER”

Teniendo en cuentas las limitaciones que podría haber con arduino en cuanto al manejo de "hilos", la librería es muy interesante que pueda ayudar a realizar tareas en forma cooperativas.

http://playground.arduino.cc/Code/TaskScheduler

En nuestro caso tiene que haber 3 task una que atienda los procesos online y otra los offline (shedules) y por último la que atienda los pedidos en Persona oprimiendo el botón de la coctelera.

Cuando se tuvo el código .ino corriendo en una ARDUINO con las librerías de "taskscheduler", se probó directo en la galileo y NO FUNCIONO! Puesto que no son compatibles

NOTA: DE TODAS FORMAS A PEDIDO DE LA CATEDRA, ADJUNTAMOS EL CODIGO FUENTE PARA VER LA UTILIZACION DE LA LIBRERÍA.

El archivo se denomina: proyecto_bar_tasksheduler_arduino.RAR

Entonces se siguió con la idea de hacerlo en processing y se reacondiciono el código para que maneje THREADS POSIX.

Estructura del Código y Funcionamiento General:

Mediante el uso de la librería “Standard C++” para Arduino (https://github.com/maniacbug/StandardCplusplus), se pudo hacer uso de funciones y métodos en C/C++ para llevar a cabo nuestros objetivos en la placa galileo.

Se hicieron uso de hilos POSIX para el implementar el webserver que atiende las peticiones online, offline.

Se hizo uso de estructuras de datos dinámicas, como es el caso de Vectores de C++ para el manejo en memoria de la agenda de pedidos.

Se hizo uso de las librerías de C para lectura y escritura de archivos.

El código se encuentra estructurado en un archivo .ino principal donde se contiene la lógica del sistema, seguido de dos archivos .h donde se encuentran clases, funciones y métodos indispensables para el correcto funcionamiento.

El funcionamiento del sistema se basa en disparar tres hilos, uno encargado del webserver para peticiones online, un segundo hilo para agendar pedidos, y un tercer hilo para las peticiones que se realizan en persona presionando el botón que se encuentra en la parte delantera de la máquina. Mediante el uso de semáforos para lograr mutua exclusión de la región crítica y el uso de estados internos fue posible realizar la sincronización en caso de peticiones múltiples.

Page 10: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Desarrollo Android:

Objetivo de la aplicación:

Poder controlar el bar desde una app para celular con las siguientes caracteristicas:

Geolocalización que indique el lugar en el que me encuentro con el celular Encender agitando el dispositivo (shake-it). Encender con botón en pantalla del dispositivo. Mostrar por pantalla el proceso. Utilización de sensor notificación rgb para indicación de estado proceso

(dependiendo del dispositivo) Utilización de sonidos para indicación de estado proceso Intensidades de mezclas bebidas Programar una bebida para un dia y hora determinado. (scheduler) Input de ip de webserver y puerto Utilización de servicio de vibración para cuando se muestra un msje toast o ocurre

algún error (en caso de tenerlo habilitado en el disp.).

Implementación:

Validaciones: o Ingreso de Parámetros utilizando Expresiones Regulares, patrones de formato para IP, PUERTO, CADENAS VACIAS y USER TWITTER. o Estado de Webserver (ONLINE-OFFLINE), utilizando sockets. o Estado Activo de WIFI en Dispositivo. o Fecha Valida para la Agenda de Pedidos.

Comunicación con el Sistema Embebido: Se utilizara pasaje de mensajes GET HTTP, pensando en que el bar podría estar en un futuro conectado a internet no solo en una red LAN. Estructura de envió de Parámetros: http:\\192.168.0.115:1234\?PLANIF=0&MAX=1 http:\\192.168.0.115:1234\?PLANIF=1&MED=1&FECHA=20/6/2016&HORA=22:11&USUARIO=@usertwiter

Interface de Usuario (Activities):

1. Activity Splash con presentación del producto "choborraBOT".

Utilizando básicamente una barra de progreso.

Page 11: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Splash Activity

2. Activity para ingreso de datos IP y Puerto con sus respectivas validaciones

incluyendo si el WEBSERVER está ONLINE. Utilización de Intents para pasaje de datos entre actividades. La activity cuenta con un MENU, el cual tiene las siguientes opciones: android:title="Habilitar Debug" android:orderInCategory="1" /> <item android:id="@+id/acele" android:title="Prueba Acelerometro" android:orderInCategory="2" /> <item android:id="@+id/action_settings" android:title="Configuracion" android:orderInCategory="3" /> <item android:id="@+id/acercade" android:title="Acerca De..." android:orderInCategory="100" El modo debug es para evitar las validaciones y pasar al activity principal, era para más comodidad de prueba sin tener que andar comentando el código. Prueba de Acelerómetro quedo como prueba de como funciona el sensor al mover el celular, solo también a modo de prueba para saber si el disp. Cuenta con el sensor. Configuración, deriva en la parte de “settings” del SO Android. Acerca De, abre la actividad relacionada.

Page 12: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Main Activity

3. Activity Principal para selección de intensidad del trago, la cual se compone de

4 situaciones de acuerdo a nuestro trabajo y BEBIDAS presentadas. Para el caso del FERNET con COLA / LIMA (no utilizamos la marca… por las dudas)

MAXIMA INTENSIDAD MEDIA INTENSIDAD MINIMA INTENSIDAD SOLO GASEOSA (sin fernet)

En todos los casos están controlados por TIEMPO del lado de la placa. Para iniciar el pedido SE DEBE SELECCIONAR una INTENSIDAD. Para el PEDIDO de dan dos situaciones que definimos como: 1. Modo Schedule u OFFILINE: Es usado para la agenda de pedidos si por

ejemplo uno no está en la casa y desea que al llegar tenga su bebida preparada. Se da habilitando la Planificación de pedido (SI), se deberá seleccionar la fecha, hora y el agregado opcional de un usuario TWITER para que se le avise cuando se procesó su pedido. Luego presionando el botón de envío, Esto tendrá sus validaciones correspondientes sobre la fecha y hora sino el proceso no se procesa. Habiendo elegido la intensidad previamente

2. Modo ONLINE: Planificación de pedido (NO), y solo presionando el botón de envío. Habiendo elegido la intensidad previamente. Método SIMILAR al presionar el BOTON de la máquina para tal fin. Utilización de servicio de geo localización actual, implementando el uso de sensores para tal fin. Solo se informa la ciudad donde está el dispositivo y usuario. Como una mejora (como ciclo de mejora), se podría sugerir de acuerdo a la distancia de ubicación de la máquina y el usuario la mejor fecha y hora para la realización del agendado de un pedido.

Utilización de acelerómetro para manejo de shake it para largar un proceso, emulando el oprimir el botón de envío de pedido.

Page 13: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Utilización de acelerómetro para la selección de intensidad en forma interactiva (botón), mostrando el uso del sensor en cuestión, cambiando de color la pantalla de acuerdo al movimiento indicando la intensidad seleccionada, para enviar la selección se debe presionar el retorno

Principal Activity

seleccionInteractiva (sensorselect) Activity

Page 14: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

4. Activity “Acerca de” para aviso de derechos sobre el código de desarrollo y las personas que lo hicieron posible.

About Activity

Estructura del código, aspecto y funcionamiento General:

o Manejo de Hilos AsyncTask de Android, utilizado para el manejo de Sockets y el proceso de envío GET al webserver.

o Utilización de Hilo convencionales para “refresh” de la UI, por ejemplo en la ubicación de geo localización.

o Geo localización, esto está establecido como un "service" en background que

cada cierto tiempo actualiza los parametros teniendo en cuenta coordenadas GPS o por NETWORK (GPS_PROVIDER y NETWORK_PROVIDER). Se dejo las dos opciones igualmente se nos dijo que en el lab solo serviria la utilizacion por RED ya que GPS no esta disponible en el radio de la Universidad. Se utilizo LocationListener.

o Agregado de Permisos necesarios en el Manifiest.

<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Page 15: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

o Utilización de mensajes Toats como así también dialogs en android para el muestro tipo “pop ups”. Se generó una clase InterfaceDialogs.

o Implementación de Sensor RGB para notificacion de proceso en curso y terminado. Utilizando NOTIFICATION_SERVICE.

o Implementación de acelerómetro (Sensor.TYPE_ACCELEROMETER) para

emular un “shake-it” movement y enviar el pedido. Utilizando SensorEventListener en una clase ShakeEventListener, en la cual se genera una interface.

o Uso de OnClickListener para el manejo de eventos, por ejemplo para Botones

u otras VIEWS como RadioButtons. o Implementación de Servicio de MediaPlayer para la reproducción de sonidos

interactivos al momento de PROCESAMIENTO de un envío de pedido y como aviso de notificación al terminar el mismo.

o Utilización de Context.CONNECTIVITY_SERVICE en las validaciones para

estado de WIFI habilitado. o Manejo de Ciclo de Vida de las activities. o Utilizacion de LOG como debugger mediante logcat. Ejemplo:

Log.d("enviaDatosGalileo","COMIENZA!");

o Implementación de acelerómetro para seleccionar intensidad de forma interactiva. Utilizando la clase DRAW se confecciona una especie de “brújula” para definir la dirección resultante al mover el dispositivo. El mismo utiliza el eje “x” moviendo desde el centro hacia la izquierda o a la deracha. (desestima el uso de z e y). Utiliza mediante un intent pero que este espera un “retorno” por parte de una activity lanzada.

Ejemplo: startActivityForResult(i, request_code); @Override protected void onActivityResult

Parte del desarrollo de Android se realizó haciendo pruebas con la placa arduino clon, del

kit que se adquirió.

Page 16: Sistemas Operativos Avanzados Internet of Things Sistemas ...so-unlam.com.ar/soa/iot-2016-c1-choborra-bot.pdf · android:name="android.permission.ACCESS_COARSE_LOCATION" /> o Utilización

Soporte de estudio:

La biblia: http://es.stackoverflow.com/ http://androidsourcecode.blogspot.com.ar/ http://www.hermosaprogramacion.com/ https://developer.android.com/index.html?hl=es https://sekthdroid.wordpress.com Conocimientos anteriores adquiridos en sistemas operativos, Programacion

Avanzada.