java.ino - plataforma de programação para arduino com java

40
PROGRAMAÇÃO ORIENTADA A OBJETOS PARA ARDUINO USANDO JAVA

Upload: newton-gomes

Post on 12-Apr-2017

101 views

Category:

Devices & Hardware


4 download

TRANSCRIPT

Page 1: Java.ino - Plataforma de Programação para Arduino com Java

JAVA

P R O G R A M A Ç Ã O O R I E N T A D A A O B J E T O S P A R A A R D U I N O U S A N D O J A V A

.INOAu t o r :

F r a n c i s c o New ton Rocha Gome s

O r i e n t ado r :

P r o f . D r . L e ona r do Dan i e l T a v a r e s

MBA EM PROJE TO DE

APL I CAÇÕES JAVA

J unho - 20 1 6

Page 2: Java.ino - Plataforma de Programação para Arduino com Java

T H E L O G OJAVA

.INO

Page 3: Java.ino - Plataforma de Programação para Arduino com Java

JAVA

.INOC O N T E X T U A L I Z A Ç Ã O

Sistemas embarcados (desenvolvimento e evolução)

Internet das Coisas e objetos inteligentes

Protótipos (plataformas de hardware e software)

Microcontroladores, sensores e atuadores

Programação (paradigmas e metodologias)

Page 4: Java.ino - Plataforma de Programação para Arduino com Java

P R O B L E M AA programação utilizada na plataforma Arduino utiliza em sua

essência a metodologia estruturada através de sua linguagem

própria, baseada na linguagem de programação C.

Atualmente os padrões de desenvolvimento utilizados pelas linguagens de programação mais modernas utilizam a

metodologia de programação orientada a objetos, a qual aplica

uma abordagem de alto nível de abstração proporcionando

várias vantagens de seu uso nos ambientes de desenvolvimento

de programas.

JAVA

.INO

Page 5: Java.ino - Plataforma de Programação para Arduino com Java

P R O B L E M A

Como aplicar a metodologia de Programação

Orientada a Objetos em alto nível de abstração

para projetos que utilizam a plataforma de

prototipagem Arduino, com a linguagem de

programação Java ?

JAVA

.INO

Page 6: Java.ino - Plataforma de Programação para Arduino com Java

O B J E T I V O S

O objetivo geral deste trabalho é desenvolver uma plataforma de

software capaz de aplicar a programação orientada a objetos para a

criação de programas na plataforma Arduino, proporcionando uma

evolução na forma de desenvolver projetos que utilizem a abstração de

objetos do mundo real na perspectiva do desenvolvimento de sistemas

embarcados.

Uma arquitetura de componentes foi desenvolvida para alcançar este

objetivo, e assim validar a perspectiva de objetos para programar os

projetos desenvolvidos com a plataforma Arduino.

JAVA

.INO

Page 7: Java.ino - Plataforma de Programação para Arduino com Java

O B J E T I V O S E S P E C Í F I C O S

Apresentar a Programação

Orientada a Objetos como

metodologia de construção de

programas nos ambientes atuais de desenvolvimento;

Apresentar a plataforma Arduino e

sua utilização na construção de

projetos de dispositivos com

controle através de sistema

embarcado;

Projetar e  implementar  a

 programação  dos  componentes de software que

permitam a criação de soluções para a plataforma Arduino com

a metodologia Orientada a

Objetos utilizando a linguagem

de programação Java;

Criar uma prova de conceito

para validar os componentes de

software propostos no

desenvolvimento desta pesquisa.

JAVA

.INO

Page 8: Java.ino - Plataforma de Programação para Arduino com Java

J U S T I F I C A T I V AP R O G R A M A Ç Ã O O R I E N T A D A A O B J E T O S

O paradigma OO (orientado a objetos) permite a resolução de um problema

com a respectiva escrita do programa de computador, considerando

sempre a definição de um modelo de abstração que especifique os objetos

envolvidos e como estes interagem no sentido de obter a solução do

problema.

A metodologia de programação orientada a objetos, ela considera o

aumento do nível de abstração na construção de programas de

computador aproximando a forma como nós vemos o mundo real e suas

relações e associações através de objetos (concretos ou abstratos) para o

mundo da computação através de formas e técnicas especificas de

modelagem de problemas e sua solução implementada.

JAVA

.INO

Page 9: Java.ino - Plataforma de Programação para Arduino com Java

J U S T I F I C A T I V AP R O G R A M A Ç Ã O O R I E N T A D A A O B J E T O S

A POO é uma metodologia de programação ajuda a organizar programas

complexos através do uso de encapsulamento, herança e polimorfismo.

Aplicamos a abordagem OO no desenvolvimento deste trabalho, de tal

forma a proporcionar uma maior abstração e produtividade no

desenvolvimento de programas para a plataforma Arduino.

JAVA

.INO

Page 10: Java.ino - Plataforma de Programação para Arduino com Java

J U S T I F I C A T I V A

P L A T A F O R M A D E P R O T O T I P A G E M A R D U I N O

Depois que o Arduino começou a se popularizar, ficou notório uma grande

quantidade de experimentadores, "hobbistas” e hackers de todo tipo que

passavam a utilizá-lo na criação de projetos maravilhosos e malucos. O

hardware Arduino foi um sucesso, visto a ampla possibilidade de aplicações.

Banzi (2011)

JAVA

.INO

Page 11: Java.ino - Plataforma de Programação para Arduino com Java

L I N G U A G E N S D E P R O G R A M A Ç Ã O

Page 12: Java.ino - Plataforma de Programação para Arduino com Java

L I N G U A G E N S D E P R O G R A M A Ç Ã O

Page 13: Java.ino - Plataforma de Programação para Arduino com Java

M E T O D O L O G I A

Revisão da literatura relativa aos conceitos e tecnologias abordadas na

construção da arquitetura de componentes proposta.

 Conceitos e princípios da metodologia orientada a objetos

 Conceitos de sistemas embarcados e a plataforma Arduino

 Características da linguagem Java e suas aplicações 

Modelagem da solução da arquitetura a ser desenvolvida para atender ao

propósito da pesquisa. Os modelos foram criados através da linguagem

UML, utilizando o diagrama de classes que representa as abstrações de

componentes utilizados nas camadas de software do projeto.

JAVA

.INO

Page 14: Java.ino - Plataforma de Programação para Arduino com Java

M E T O D O L O G I AA proposta foi implementada na plataforma Arduino (modelo Arduino Uno),

onde foram analisadas suas características para aplicação na proposta de

arquitetura, e feita uma comparação com outras configurações disponíveis.

A arquitetura de componentes teve sua descrição detalhada textualmente

e na forma de diagramas e desenhos ilustrativos, facilitando a apresentação

dos componentes de hardware e software de forma a sintetizar o

funcionamento esperado do conjunto 

Desenvolver uma PoC (Prova de Conceito) para validação da pesquisa

através da implementação de forma parcial da arquitetura projetada, e a

apresentação de dois projetos simples que utilizaram de forma

experimental a arquitetura implementada na PoC.

JAVA

.INO

Page 15: Java.ino - Plataforma de Programação para Arduino com Java

O projeto foi batizado como Java.ino (Java

com Arduino) que propõe uma arquitetura

de desenvolvimento em alto nível de

abstração, utilizando os conceitos e

princípios da POO (Programação Orientada

a Objetos) em Java, composta

essencialmente de uma solução de

Software implementada com a linguagem C

(linguagem do Arduino) e a linguagem

Java. 

JAVA

.INO

A N Á L I S E D O S R E S U L T A D O S

Page 16: Java.ino - Plataforma de Programação para Arduino com Java

Apresentação da arquitetura composta de

componentes de software em computadores

(pcs ou smartphones) conectados com a

plataforma Arduino através de um meio de

comunicação estabelecido (Serial, Ethernet,

Wifi, Bluetooth), de tal forma que estes

computadores possa comandar instruções

para o controle das portas de comunicação

externas digitais e analógicas do Arduino, as

quais estariam conectadas a circuitos que

controlam a utilização de sensores para

captação de estímulos, bem como de

atuadores para execução de alguma ação

dentro do sistema, seja de natureza lógica

JAVA

.INO

A N Á L I S E D O S R E S U L T A D O S

Page 17: Java.ino - Plataforma de Programação para Arduino com Java

E S Q U E M A D E C O M P O N E N T E S E N V O L V I D O S N A

A R Q U I T E T U R A P R O P O S T A

JAVA

.INO

A N Á L I S E D O S R E S U L T A D O S

Page 18: Java.ino - Plataforma de Programação para Arduino com Java

A solução implementada utiliza um

protocolo de comunicação, que permite as

operações básicas serem realizadas no

microcontrolador da plataforma Arduino

através das diversas portas de

comunicação da placa (analógicas e

digitais), sendo para leitura e/ou escrita.

JAVA

.INO

A N Á L I S E D O S R E S U L T A D O S

Page 19: Java.ino - Plataforma de Programação para Arduino com Java

O protocolo implementado foi denominado

JIP (Java.ino Protocol), que possui um

padrão de comandos definidos por um

analisador léxico que divide uma estrutura

de comando para um formato genérico de

comunicação, possível de ser

implementado através de comunicação

Serial, comunicação de Ethernet,

comunicação Bluetooth ou comunicação

Wifi, sem prejuízo algum ao

reconhecimento da semântica aplicada.

JAVA

.INO

A N Á L I S E D O S R E S U L T A D O S

Page 20: Java.ino - Plataforma de Programação para Arduino com Java

M O D E L O D E C O M P O N E N T E S D A A R Q U I T E T U R A D O P R O J E T O J A V A . I N O

Page 21: Java.ino - Plataforma de Programação para Arduino com Java

J I P – J A V A . I N O P R O T O C O L

Page 22: Java.ino - Plataforma de Programação para Arduino com Java

J I P – J A V A . I N O P R O T O C O L

Page 23: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

Implementação utilizando uma única forma de comunicação (Serial); Implementação parcial do Protocolo de Comunicação (JIP); Solução conectando um computador pessoal (PC) a uma placa Arduino Uno; Aplicação da arquitetura proposta para um Projeto de Led Piscante; Aplicação da arquitetura proposta para um Projeto de Semáforo de Trânsito.

JAVA

.INO

E S C O P O D O D E S E N V O L V I M E N T O D A P O C

Page 24: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

Page 25: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

Page 26: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

Page 27: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

JAVA

.INO

I M P L E M E N T A Ç Ã O D A P R O V A D E C O N C E I T O U T I L I Z A N D O A P L A T A F O R M A

Page 28: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

JAVA

.INO

I M P L E M E N T A Ç Ã O D A P R O V A D E C O N C E I T O U T I L I Z A N D O A P L A T A F O R M A

Page 29: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

JAVA

.INO

I M P L E M E N T A Ç Ã O D A P R O V A D E C O N C E I T O U T I L I Z A N D O A P L A T A F O R M A

Page 30: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

JAVA

.INO

I M P L E M E N T A Ç Ã O D A P R O V A D E C O N C E I T O U T I L I Z A N D O A P L A T A F O R M A

Page 31: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

JAVA

.INO

I M P L E M E N T A Ç Ã O D A P R O V A D E C O N C E I T O U T I L I Z A N D O A P L A T A F O R M A

Page 32: Java.ino - Plataforma de Programação para Arduino com Java

ANÁLISE DOS RESULTADOS

JAVA

.INO

JAVA

.INO

I M P L E M E N T A Ç Ã O D A P R O V A D E C O N C E I T O U T I L I Z A N D O A P L A T A F O R M A

Page 33: Java.ino - Plataforma de Programação para Arduino com Java

Maior flexibilidade, escalabilidade e manutenibilidade

oferecida pelo código gerado utilizando POO, em

comparação ao modelo estruturado utilizado pela

linguagem nativa do Arduino.

Aplicação da perspectiva de objetos na modelagem

de soluções na programação de sistemas

embarcados.

Demonstrou-se o poder da abstração quando

aplicamos os conceitos e princípios da orientação a

objetos na programação de soluções de componentes

de software.

CONCLUSÃO JAVA

.INOO D E S E N V O L V I M E N T O D O T R A B A L H O R E A L I Z A D O A T R A V É S D A A R Q U I T E T U R A P R O P O S T A E A P O C A P R E S E N T O U O S S E G U I N T E S R E S U L T A D O S :

Page 34: Java.ino - Plataforma de Programação para Arduino com Java

Possibilidade de programar projetos no Arduino

através de uma abstração completa da estrutura de

hardware utilizando um modelo de classes e

componentes.

Criação de operações do microcontrolador e o

controle das portas de comunicação utilizadas para a

conexão de sensores e/ou atuadores, através de

objetos instanciados com comportamento definido

pelos conceitos da orientação a objetos.

CONCLUSÃO JAVA

.INOO D E S E N V O L V I M E N T O D O T R A B A L H O R E A L I Z A D O A T R A V É S D A A R Q U I T E T U R A P R O P O S T A E A P O C A P R E S E N T O U O S S E G U I N T E S R E S U L T A D O S :

Page 35: Java.ino - Plataforma de Programação para Arduino com Java

 Permitiu a independência do desenvolvimento e a

divisão de responsabilidades proporcionada pela

abstração do hardware através de um modelo de

classes, otimizando a divisão de tarefas e a alocação

dos recursos em um projeto de sistema embarcado no

Arduino.

No entanto, este trabalho limitou-se à codificação

parcial da proposta de componentes possíveis de

implementação, deixando uma margem de evolução

bastante extensa e aberta para novos trabalhos com

base na estrutura arquitetural definida.

CONCLUSÃO JAVA

.INOO D E S E N V O L V I M E N T O D O T R A B A L H O R E A L I Z A D O A T R A V É S D A A R Q U I T E T U R A P R O P O S T A E A P O C A P R E S E N T O U O S S E G U I N T E S R E S U L T A D O S :

Page 36: Java.ino - Plataforma de Programação para Arduino com Java

CONCLUSÃO JAVA

.INO

A A R Q U I T E T U R A D E S E N V O L V I D A P R O P Õ E U M A

N O V A A L T E R N A T I V A P A R A D E S E N V O L V E R

P R O J E T O S D E D I S P O S I T I V O S E M B A R C A D O S

Q U E S E J A M   P R O T O T I P A D O S A T R A V É S D A

P L A T A F O R M A A R D U I N O , U T I L I Z A N D O

U M A   L I N G U A G E M D E P R O G R A M A Ç Ã O D E

G R A N D E P E N E T R A Ç Ã O N O M E R C A D O E

B A S T A N T E D I F U N D I D A N O S M E I O S

E M P R E S A R I A L E A C A D Ê M I C O .

( L I N G U A G E M D E P R O G R A M A Ç Ã O J A V A )

Page 37: Java.ino - Plataforma de Programação para Arduino com Java

REFERÊNCIASARDUINO. Site oficial da plataforma Arduino. Disponível em:

<http://www.arduino.cc>. Acesso em: 03/04/2016.

BANZI, Massimo. Getting Started with Arduino - 2 ed. Sebastopol,

CA: O'Reilly, 2011.

BENTES, Leandro Maurício A. Sistema de Segurança Veicular

com uso de GPS baseado em Arduino. Trabalho de Conclusão de

Curso (Graduação em Engenharia de Computação). Manaus:

Universidade do Estado do Amazonas, 2013.

BORATTI, Isaias Camilo. Programação Orientada a Objetos em

Java. Florianópolis: Visual Books, 2007.

CORREIA, Nuno. Internet das Coisas com SAP HANA. Lisboa: Ui5

Community Network.

DEITEL, Paul J.; DEITEL, Harvey M. Java como programar – 8 ed.

São Paulo: Pearson Prentice Hall, 2010. 

GAMMA, Erich; HELM, Richard; JOHNSON, Ralph; VLISSIDES,

John. Padrões de Projeto: Soluções reutilizáveis de software

orientado a objetos. Porto Alegre: Bookman, 2000.

Page 38: Java.ino - Plataforma de Programação para Arduino com Java

REFERÊNCIASJANDL Jr., Peter. Java Guia do Programador - 2 ed. São Paulo:

Novatec Editora, 2013.

LEITE, Mario; RAHAL Jr., Nelson Abu Sanra. Programação

Orientada ao Objeto: uma abordagem didática. Agosto, 2002.

Disponível em:

<http://www.ccuec.unicamp.br/revista/navegacao/infotec.html

>. Acesso em: 04/02/2016. 

McROBERTS, Michael. Arduino Básico. São Paulo: Novatec, 2011.

MONK, Simon. 30 Arduino Projects for the Evil Genius. New York:

McGraw-Hill, 2010.

PRESSMAN, Roger S. Engenharia de Software: Uma abordagem

profissional. 7 ed. Porto Alegre: McGraw-Hill (Bookman), 2011.

SCHILDT, Herbert. Java: A Referência Completa - 8 ed. Rio de

Janeiro: Alta Books, 2014.

Page 39: Java.ino - Plataforma de Programação para Arduino com Java

REFERÊNCIASSILVEIRA, Paulo; SILVEIRA, Guilherme; LOPES, Sérgio; MOREIRA,

Guilherme; STEPPAT, Nico; KUNG, Fabio. Introdução à

Arquitetura e Design de Software: Uma visão sobre a plataforma

Java. Rio de Janeiro: Elsevier, 2012.

SOMMERVILLE, Ian. Engenharia de Software. 9 ed. São Paulo:

Pearson Prentice Hall, 2011.

Page 40: Java.ino - Plataforma de Programação para Arduino com Java

O B R I G A D O !F r a n c i s c o New ton ROcha Gome s

Ana l i s t a de S i s t ema s , MBA .

new t ongome s .ne t@gma i l . c om

JAVA

.INO

Interessados em contribuir no projeto pode contactar-nos.