18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
Junte-se a Comunidade Embarcados:
LOGIN
REGISTRAR-SE
Comunicao Serial
Java + Arduino
Incio / Arduino, Contedo, Placas, Software /
Comunicao Serial Java + Arduino
Por Klauder Dias | 14/02/2014 | Arduino, Contedo, Placas, Software
Sobre a comunicao Serial Java +
Arduino
Neste artigo demonstrarei como ligar e desligar um led,
atravs de comandos enviados pela porta serial (USB)
utilizando Java e uma placa Arduino.
Para ler outro artigo que aborda a comunicao serial clique
aqui para ler o artigo de Fbio Souza, e caso queira saber
mais sobre programao no arduino clique aqui.
Mas por que utilizar Universal Serial Bus (USB)?
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
Posts
Recentes
Trazendo o
mundo real
para dentro
do processador Condicionamento de
sinais analgicos Parte 3
01/04/2016
Integrando Aplicaes
em Imagens Linux
1/11
18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
A comunicao USB uma tecnologia que tornou mais
simples e rpida a conexo de diversos tipos de aparelhos
(Pendrives,MP3-players,
impressoras,
celulares,
HDs
externos, etc). Alm de facilitar a conexo de diversos
dispositivos, o padro USB oferece:
Plug-and-play: a maioria dos dispositivos so
reconhecidos automaticamente;
Alimentao: os dispositivos no precisam ser ligados a
uma fonte de energia externa, j que a prpria USB
fornece energia. (Lembrado a USB fornece no mximo 5
Volts e 500 mA de corrente);
Mltipla conexo: vrios dispositivos podem ser
conectados atravs de uma nica porta, mas para isso
deve-se utilizar um Hub;
Compatibilidade: so compatveis com a maioria dos
sistemas operacionais disponveis no mercado.
A comunicao entre os sistemas embarcados e os
computadores muitas vezes so realizadas via porta paralela
(DB25) e porta serial (DB-9). A utilizao desses meios de
comunicao pode facilitar uma alterao futura mas, por
outro lado, dependendo do dispositivo, a implementao do
software no computador pode ser complexa e trabalhosa.
Alm do mais, podemos danificar permanentemente a placa
me do computador quando estamos utilizando a porta
paralela e ocorre uma descarga eltrica ou invertermos a
polaridade de um componente.
Esse artigo foi elaborado utilizado o Arduino Mega 2560,
NetBeans 7.4, Windows 7 Professional x64 e Ubuntu 12.04
LTS (x64), estou considerando que as IDE's Arduino 1.0.5 ou
superior e NetBeans 7.4 ou superior j estejam instaladas e
funcionando corretamente.
Obs.: Pode-se utilizar tambm o Arduino Uno, ADK, Pro.
Embarcado
31/03/2016
Editorial:
Maker e o
profissional
30/03/2016
Entendendo
os ns do
ROS
29/03/2016
Socket no
Windows 10
IoT Core
usando Raspberry Pi
2
28/03/2016
Sries
A arte de especificar e
encontrar
componentes (2)
Boas prticas para o
desenvolvimento de
software (3)
Controlador VGA (2)
Device Drivers para
Linux Embarcado (5)
GNU ARM Crosstoolchain (7)
Monitoramento de
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
2/11
18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
gua com IoT (3)
Projetos de
desenvolvimento:
Antes de comear (1)
Shape The World (4)
Sistemas
Operacionais de
Tempo Real (4)
Trazendo o mundo
real para dentro do
processador (3)
ULWOS Multitarefa
no RL78 (3)
Oportunidades
Passo 01: Download dos arquivos
Acesse o site http://jlog.org/rxtx.html e faa download dos
arquivos rxtxSerial.dll,librxtxSerial.so e RXTXcomm.jar.
Obs.: Lembrando de que devemos fazer download dos arquivos
de acordo a arquitetura do sistema operacional 32-bits (x86) ou
64-bits (x64).
Passo 02: Instalao dos arquivos
Windows
Copie o arquivo rxtxSerial.dll para:
C:\Program Files\Java\jdkx.x.x\bin, onde x.x.x a
verso
do
JDK,
por
exemplo
C:\Program
Files\Java\jdk1.6.40\bin;
C:\Program Files\Java\jrex\bin, onde x a verso do
JRE, por exemplo C:\Program Files\Java\jre7\bin;
C:\Windows\System32;
C:\Windows\SysWOW64 (caso sistema operacional 64bits (x64)).
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
Engenheiro e tcnico
eletrnico especialista
em CAN BUS e OBD-II
na CONFIDENCIAL So Paulo/SP
14/04/2016
Programador C
(embarcados) na
DECISION GROUP So Paulo/SP
23/03/2016
Desenvolvedor Linux
na Positivo
Informtica Curitiba/PR
21/03/2016
Engenheiro Eletrnico
para Hardware e
Firmware na Treetech
Sistemas Digitais
Ltda. - Atibaia/SP
09/03/2016
Estgio e Trainee em
3/11
18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
Copie o arquivo RXTXcomm.jar para:
Sistemas Embarcados
C:\Program Files\Java\jre\jrex\lib\ext, onde x a verso
do JRE, por exemplo C:\Program Files\Java\jre7\lib\ext.
Linux
Copie o arquivo librxtxSerial.so para:
Mdicos na Braincare
Desenvolvimento e
Inovao Tecnolgica
- So Carlos/SP
04/03/2016
Mais oportunidades
/usr/lib/, exemplo: cp /home/Usuario/librxtxSerial.so
/usr/lib/.
Divulgue sua
oportunidade
Copie o arquivo RXTXcomm.jar para:
/usr/share/java/,
exemplo.:
/home/Usuario/RXTXcomm.jar /usr/share/java/.
cp
Passo 03: Programa Arduino
Conecte o cabo USB no Arduino e abra a IDE do Arduino,
defina a porta COM (Tools > Serial Port > COM3 ou
/dev/ttyUSB0), digite o cdigo abaixo e depois clique no
upload. Pronto, o programa j foi carregado no arduino.
Obs.: Geralmente utiliza-se a porta COM3 (Windows) e
/dev/ttyUSB0 (Linux), caso aparea outra porta no tem
problema, desde que a porta correta seja informada no
programa em Java.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int ledPin =13; //atribui o pino 13 a varivel ledPin
int dado; //varivel que receber os dados da porta serial
void setup(){
Serial.begin(9600);//frequncia da porta serial
pinMode(ledPin,OUTPUT); //define o pino o ledPin como sada
}
void loop(){
if(Serial.available() > 0){ //verifica se existe comunicao
com a porta serial
dado = Serial.read();//l os dados da porta serial
switch(dado){
case 1:
digitalWrite(ledPin,HIGH); //liga o pino ledPin
break;
case 2:
digitalWrite(ledPin,LOW); //desliga o pino ledPin
break;
}
}
}
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
Mais
Procurados
altera
android
arduino
arduino UNO
ARM
ARM Cortex-M
ARM Cortex-M0+
Atmel
Avanado
Beaglebone Black
diy
Embedded
embedded linux
firmware
fpga
freescale
hardware
hdl
Iniciante
intel
4/11
18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
Passo 04: Programa Java
intel edison
Intermedirio
internet das coisas
Linguagem C
Abra o programa NetBeans 7.4 criei um projeto Aplicao
Java (Arquivo > Novo Projeto > Java > Aplicao Java) e
vamos cham-lo de ComunicacaoSerial.
Renomeie
o
pacote
"comunicacaoserial"
para
"br.com.embarcados.comunicaoserial" e depois apague a
classe ComunicacaoSerial.java que foi gerada.
Feito
isso,
adicione
um
JFrame
no
pacote
br.com.embarcados.comunicaoserial (boto direito em cima
do pacote > Novo > Form Frame), e chame-o de JFInterface.
iot
linux
Linux Embarcado
maker
Microchip
microcontrolador
microcontroladores
pcb
PIC
placa de desenvolvimento
python
rtos
raspberry pi
sbc
sistemas embarcados
software
Texas Instruments
toradex
vhdl
verilog
Yocto
Na Paleta de controle de Swing (lado direito da tela), clique
em cima do boto e arraste para dentro do JFInterface. Aps
esse passo altere o nome da varivel jButtom1 para jBLenOn
e altere o texto do boto para Ligar. Basta clicar com o boto
direito em cima do boto e escolher as opes Editar Texto e
Alterar nome da varivel.
Copie mais 02 botes para o JFInterface e repita o mesmo
processo renomeando-os para ID: jBLenOff, jBClose e Text:
Desligar e Sair.
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
5/11
18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
Acrescente duas classes no projeto "Arduino.java e
ControlePorta.java" (boto direito em cima do pacote > Novo
> Classe Java.
No arquivo Arduino.java realizaremos o envio das
informaes para o Arduino e no arquivo ControlePorta.java
faremos toda a programao para enviar os dados atravs da
porta serial.
Adicione o cdigo abaixo no arquivo ControlePorta.java.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package br.com.embarcados.comunicacaoserial;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.SerialPort;
import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JOptionPane;
public class ControlePorta {
private OutputStream serialOut;
private int taxa;
private String portaCOM;
/**
* Construtor da classe ControlePorta
* @param portaCOM - Porta COM que ser utilizada para enviar os dados para o arduino
* @param taxa - Taxa de transferncia da porta serial geralmente 9600
*/
public ControlePorta(String portaCOM, int taxa) {
this.portaCOM = portaCOM;
this.taxa = taxa;
this.initialize();
}
/**
* Mdoto que verifica se a comunicao com a porta serial est ok
*/
private void initialize() {
try {
//Define uma varivel portId do tipo CommPortIdentifier para realizar a comunicao serial
CommPortIdentifier portId = null;
try {
//Tenta verificar se a porta COM informada existe
portId = CommPortIdentifier.getPortIdentifier(this.portaCOM
}catch (NoSuchPortException npe) {
//Caso a porta COM no exista ser exibido um erro
JOptionPane.showMessageDialog(null, "Porta COM no encontrada."
"Porta COM", JOptionPane.PLAIN_MESSAGE);
}
//Abre a porta COM
SerialPort port = (SerialPort) portId.open("Comunicao serial"
serialOut = port.getOutputStream();
port.setSerialPortParams(this.taxa, //taxa de transferncia da porta serial
SerialPort.DATABITS_8, //taxa de 10 bits 8 (envio)
SerialPort.STOPBITS_1, //taxa de 10 bits 1 (recebimento)
SerialPort.PARITY_NONE); //receber e enviar dados
}catch (Exception e) {
e.printStackTrace();
}
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
6/11
18/04/2016
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
ComunicaoSerialJavaArduinoEmbarcados
/**
* Mtodo que fecha a comunicao com a porta serial
*/
public void close() {
try {
serialOut.close();
}catch (IOException e) {
JOptionPane.showMessageDialog(null, "No foi possvel fechar porta COM."
"Fechar porta COM", JOptionPane.PLAIN_MESSAGE);
}
}
/**
* @param opcao - Valor a ser enviado pela porta serial
*/
public void enviaDados(int opcao){
try {
serialOut.write(opcao);//escreve o valor na porta serial para ser enviado
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "No foi possvel enviar o dado. "
"Enviar dados", JOptionPane.PLAIN_MESSAGE);
}
}
}
Aps adicionar o cdigo acima acontecer vrios erros
conforme a mensagem abaixo.
Esses erros aconteceram porque no adicionamos o arquivo
RXTXcomm.jar no nosso projeto. Para adicion-lo clique com
o boto direito em cima da pasta Biblioteca e escolha
Adicionar JAR/Pasta... e informe o diretrio onde o arquivo
RXTXcomm.jar
(C:\Program
Files\Java\jre7\lib\ext\RXTXcomm.jar, caso esteja utilizando
Windows) ou (/usr/share/java/ RXTXcomm.jar, caso esteja
utilizando Linux).
Limpe e construa o projeto (boto direito em cima do projeto
ComunicacaoSerial > Limpar e Construir) e os problemas
sero corrigidos conforme pode-se ver na imagem abaixo.
Agora adicione o cdigo abaixo no arquivo Arduino.java.
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
7/11
18/04/2016
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
ComunicaoSerialJavaArduinoEmbarcados
package br.com.embarcados.comunicacaoserial;
import javax.swing.JButton;
/**
* @author klauder
*/
public class Arduino {
private ControlePorta arduino;
/**
* Construtor da classe Arduino
*/
public Arduino(){
arduino = new ControlePorta("COM3",9600);//Windows - porta e taxa de transmisso
//arduino = new ControlePorta("/dev/ttyUSB0",9600);//Linux - porta e taxa de transmisso
}
/**
* Envia o comando para a porta serial
* @param button - Boto que clicado na interface Java
*/
public void comunicacaoArduino(JButton button) {
if("Ligar".equals(button.getActionCommand())){
arduino.enviaDados(1);
System.out.println(button.getText());//Imprime o nome do boto pressionado
}
else if("Desligar".equals(button.getActionCommand())){
arduino.enviaDados(2);
System.out.println(button.getText());
}
else{
arduino.close();
System.out.println(button.getText());//Imprime o nome do boto pressionado
}
}
}
Feito isso, falta implementar a ao a ser executada quando
um determinado boto for pressionado.
Abra o arquivo JFInterface.java, clique com o boto direito
em cima do boto Ligar e acione o mtodo MousedClicked.
Ser
um mtodo
dentro da classe
criado
automaticamente
O EMBARCADOS
CONTEDO EVENTOS
JFInterface.java conforme a imagem abaixo.
OPORTUNIDADES
COMUNIDADE
Declare uma varivel do tipo Arduino antes do construtor da
classe JFInterface, conforme a figura abaixo.
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
8/11
18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
Dentro
do
mtodo
jBLedOnMouseClicked
anteriormente
adicione
o
conn.comunicacaoArduino(jBLedOn).
criado
cdigo
Esse comando ir acionar o mtodo comunicacaoArduino(),
passando o boto clicado, que por sua vez ir enviar o dado
pela porta serial.
Gostou? Junte-se comunidade
96
0 para o boto
0
0
Adicione o mesmo
evento
Desligar
e coloque o
Embarcados
cdigo abaixo:
Adicione o mesmo evento para o boto Sair e coloque o
cdigo abaixo:
Passo 05: Executando o programa
Agora basta apenas conectar o seu Arduino porta USB do
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
9/11
18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
seu computador e clicar em Executar o projeto Java. Ao
aparecer a Tela, basta apenas clicar no boto "Ligar" para
ligar, "Desligar" para desligar o Led e Sair para encerrar
aplicao.
Os cdigos fontes utilizados na elaborao desse artigo
esto
disponveis
em:
https://github.com/klauder/ComunicacaoSerial
Espero que tenham gostado e at breve.
Referncias
http://jlog.org/rxtx.html
http://arduino.cc/en/Main/ArduinoBoardMega2560
http://arduino.cc/en/reference/serial
Comunicao Serial Java + Arduino por Klauder Dias. Esta
obra est sob a licena Creative Commons AtribuioCompartilhaIgual 4.0 Internacional.
Sobre o Autor: Klauder Dias
Ps-graduando em Gerenciamento de Projetos.
Graduado em Engenharia de Computao.
Atualmente
trabalha
com
Analista
de
desenvolvimento. Experincia em integrao de
sistemas (hardware/software) utilizando C++ e Java.
Postagens Relacionadas
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
10/11
18/04/2016
ComunicaoSerialJavaArduinoEmbarcados
0Comentrios
Embarcados
Recommend
Compartilhar
Entrar
OrdenarporMelhoravaliado
Startthediscussion
Bethefirsttocomment.
Assinarfeed
AdicioneoDisqusnoseusiteAddDisqusAdd
Privacidade
INSTITUCIONAL
COMUNIDADE
SUPORTE
O Embarcados
Oportunidades
Frum
Os Articulistas
Lojas Online
PUBLICIDADE
ANUNCIE
CONOSCO
Categorias
Pergunta
Seja Colaborador
Sites e Blogs
Eventos
Eventos da
Comunidade
Contato
Enquetes
Tags
Mapa do Site
FIQUE
CONECTADO!
Embarcados - Todos os Direitos Reservados | Desenvolvido por Ames Digital
Este site utiliza cookies. Ao us-lo voc concorda com nossa poltica de
privacidade. Saiba mais.
http://www.embarcados.com.br/comunicacaoserialjavaarduino/
Continuar
11/11