Você está na página 1de 14

Junte‐se a Comunidade Embarcados:  Realizar Login  ou  Registrar‐se Pesquisar   Ir

HOME SOBRE CONTEÚDO FÓRUM EVENTOS OPORTUNIDADES COMUNIDADE            

Arduino - Comunicação Serial


por Fábio Souza em terça‐feira, 21 de janeiro de 2014.

 Contato / Feedback

EMBARCADOS TV

Continuando  a  serie  de  artigos  introdutórios  sobre  a  plataforma  Arduino,  neste  vamos  abordar  a
comunicação serial. Serão apresentadas as principais funções e alguns exemplos básicos que serão usados
como base em nossos projetos.
 
 
Arduino Comunicação Serial
  Este site foi bloqueado de acordo com
A comunicação serial (UART) na plataforma Arduino é, sem duvida, um poderoso recurso que possibilita a
comunicação entre a placa e um computador ou entre a placa e outro dispositivo, como por exemplo um
módulo GPS ou um módulo GSM. É através desse canal  que é realizado o upload do código para a placa. OPORTUNIDADES
 
A  placa  Arduino  UNO  possui  um  canal  de  comunicação  por  hardware,  conforme  foi  exibido  no  artigo
Translate » Desenvolvedor de Programa para CLP na
publicado sobre a Arduino UNO. Esse canal está ligado aos pinos digitais 0 (RX) e 1 (TX). Esses mesmos pinos
estão ligados ao microcontrolador ATMEGA16U2, responsável pela tradução do sinal para comunicação USB Lean Clean ‐ Sorocaba/SP
com o computador. Analista Programador C/C++ na Global TI ‐
  São Paulo/SP
A figura a seguir exibe os pinos de comunicação serial na placa Arduino UNO:
Programador na Delta Life ‐ São José dos
Campos/SP
Engenheiro de Software Embarcado na
TQTVD SOFTWARE LTDA ‐ Rio De Janeiro
Divulgue sua oportunidade
Mais oportunidades

NEWSLETTER

Email ASSINAR
ENQUETES REALIZADAS

Escolha de Microcontrolador /
Microprocessador
Sistema Operacional Embarcado
Linguagem de programação
Tipo de ProcessadorO Novo Embarcados

Figura 1 ‐ Pinos para comunicação serial

 
Deve‐se  ficar  atento  a  dispositivos  conectados  a  esses  pinos  pois  podem  interferir  no  upload  do  seu
programa.  Em  alguns  caso  é  recomendável  desconectar  os  dispositivos  ou  shields  ligados  a  esses  pinos
antes de fazer o upload. POSTS POPULARES
 
O  sinal  de  comunicação  na  placa  Arduino  UNO,  é  um  sinal  TTL  de  5V.  Para  comunicação  com  um
computador  ou  outro  dispositivo  que  não  tenha  o  mesmo  nível  de  tensão  é  necessário  um  conversor  de
Simulador de Arduino: Virtual Breadboard
nível.  Existem  várias  opções  de  conversores,  como  por  exemplo  TTL/  RS232,  TTL/RS485,  TTL/USB,  entre 33.409 visualizações
outros. A seguir são exibidos alguns modelos de conversores:
  Arduino ‐ Comunicação Serial
31.245 visualizações

Arduino UNO
24.882 visualizações

Comunicação Serial Java + Arduino
20.927 visualizações

Arduino ‐ Entradas Analógicas
17.058 visualizações
Figura 2 ‐ Shields e módulos para comunicação serial

  PARCEIROS
 
Terminal Serial
 
Além  do  recurso  de  upload  através  da  comunicações  serial,  a  IDE  trás  um  terminal  serial  que  auxilia  no
recebimento e envio de dados para a placa sem a necessidade de recorrer a uma ferramenta externa. Para
acessar  essa  ferramenta  basta  clicar  no  ícone  Serial  Monitor  ou  acessar  o  menu  Tools>  Serial  Monitor.  É
aberta a janela a seguir:
 
Figura 3 ‐ Terminal para comunicação serial do Arduino

 
 
A ferramenta é bem simples, contendo apenas alguns parâmetros de configuração, onde se pode definir a
taxa  de  envio  (baud  rate).  Possui  dois  campos,  um  onde  pode  ser  inserido  a  mensagem  a  ser  enviada  e
outro maior onde é exibido os caracteres enviados pela placa para o computador.
 
 
Funções da plataforma Arduino
 
A  plataforma  Arduino  possui  em  sua  biblioteca  uma  variedade  de  funções  para  manipulação  de  dados
através de comunicação serial. Essas funções auxiliam o desenvolvedor em tarefas mais complexas de envio
e recebimento de dados. 
 
 
Funções mais usadas com a placa Arduino UNO
 

Serial.begin()

 
É a primeira função a ser utilizada quando vai trabalhar com a comunicação serial. Ela configura a taxa de
comunicação em bits por segundo (baud rate). Possui um segundo parâmetro opcional para a definição da
quantidade de bits, paridade e stop bits. Se for omitido esse parâmetro o padrão será 8 bits, sem paridade e
1 stop bit.
 
Sintaxe:
Serial.begin(speed)
Serial.begin(speed, config)
 
Parâmetros:
speed: velocidade em bit por segundo (baud rate) ‐ long
config: configura a quantidade de bits, paridade e stop bits. Os valores válidos são :

SERIAL_5N1
SERIAL_6N1
SERIAL_7N1
SERIAL_8N1 (padrão)
SERIAL_5N2
SERIAL_6N2
SERIAL_7N2
SERIAL_8N2
SERIAL_5E1
SERIAL_6E1
SERIAL_7E1
SERIAL_8E1
SERIAL_5E2
SERIAL_6E2
SERIAL_7E2
SERIAL_8E2
SERIAL_5O1
SERIAL_6O1
SERIAL_7O1
SERIAL_8O1
SERIAL_5O2
SERIAL_6O2
SERIAL_7O2
SERIAL_8O2

 Retorno
Essa função não retorna nada.
 
 

Serial.available()

 
Retorna a quantidades de bytes disponíveis para leitura no buffer de leitura. Essa função auxilia em loops
onde  a  leitura  dos  dados  só  e  realizada  quando  há  dados  disponível.  A  quantidade  máxima  de  bytes  no
buffer é 64.
 
Sintaxe:
Serial.available();
 
Parâmetros:
Não passa nenhum parâmetro.
 
Retorno:
(int) ‐ quantidade de bytes disponíveis para leitura
 

Serial.read()

 
Lê o byte mais recente apontado no buffer de entrada da serial.
 
Sintaxe:
Serial.read();
 
Parâmetros:
Não passa nenhum parâmetro.
 
Retorno:
(int) ‐ O primeiro byte disponível no buffer da serial. Retorna ‐1 caso n tenha dado disponível.
 

Serial.print()

 
Escreve  na  serial  texto  em  formato    ASCII.  Essa  função  tem  muitas  possibilidades.  Números  inteiros  são
escritos  usando  um  caractere  ASCII  para  cada  dígito.  O  mesmo  ocorre  para  números  flutuante  e,  por
padrão, são escrito duas casas decimais. Bytes são enviados como caracteres únicos e strings e caracteres
são enviados como escritos.
 
Vejamos alguns exemplos:
 
Serial.print ( 123 ); // Envia "123"
Serial.print ( 1.234567 ); // Envia "1.23"
Serial.print ( 'N' ); // Envia "N".
Serial.print ( "Hello world" ); // Envia "Hello world".
 
Obs.: caracteres são enviados com aspas simples e strings com aspas duplas.
 
Um segundo parâmetro opcional define a base numérica para formatar o valor enviado. São aceitos os
seguintes parâmetros:
 

BIN ‐ binário, base 2
OCT ‐ octal, base 8
HEX ‐ hexadecimal, base 16
DEC ‐ decimal, base 10

 
Para números em ponto flutuante esse parâmetro define a quantidade de casas decimais a serem enviadas
após o ponto. Exemplos:
 
Serial.print(78, BIN) envia em binário "1001110"
Serial.print(78, OCT) envia emr octal "116"
Serial.print(78, DEC) envia em  decimal "78"
Serial.print(78, HEX) envia em hexadecimal  "4E"
Serial.println(1.23456, 0) envia apenas "1", sem casas decimais
Serial.println(1.23456, 2)envia "1.23", ou seja, duas casas decimais
Serial.println(1.23456, 4) envia  "1.2346", ou seja, 4 casas decimais

 
Sintaxe:
Serial.print(val)
Serial.print(val, format)
 
Parâmetros:
val:valor para ser escrito na serial ‐ qualquer tipo de dado.
format: base numérica para tipos inteiros ou a quantidade de casas decimais para números flutuantes.
 
Retorno:
size_t (long): retorna a quantidade de bytes escritos
 
 

Serial.println()

 
Funciona praticamente igual a função Serial.print(), a única diferença é que esta função acrescenta ao fim
da mensagem o caractere de retorno de carro (ASCII 13 ou ‘\r’) e o caractere de nova linha(ASCII 10 ou ‘\n’).
A sintaxe, os parâmetros e o retorno são os mesmos da função Serial.print().
 
 

Serial.write()

 
Escreve um byte na porta serial.
 
Sintaxe:
 Serial.write(val)
Serial.write(str)
Serial.write(buf, len)
 
Parâmetros:
val: um valor para ser enviado como um único byte.
str: uma string para ser enviada como uma sequência de bytes.
buf: um array para ser enviado como uma serie de bytes.
len: o tamanho do buffer a ser enviado.
 
Retorno:
(byte) ‐ Retorna a quantidade de bytes escritos na serial. A leitura desse numero é opcional.
 
 
Manipulação de dados através da comunicação serial
 
Exemplos:
 

Echo

 
No Sketch a seguir é exibido como receber um caractere do computador e enviar este mesmo caractere
para o computador, onde será exibido o que é digitado na terminal serial.
 
1 /*
2   echo
3   reenvia para o computador o dado recebido pela serial
4 */
5  
6 byte byteRead;
7  
8 void setup() {                
9 //configura a comunicação seria com baud rate de 9600
10   Serial.begin(9600);
11 }
12  
13 void loop() {
14   
15   if (Serial.available())  //verifica se tem dados diponível para leitura
16   {
17     byteRead = Serial.read(); //le bytwe mais recente no buffer da serial
18     Serial.write(byteRead);   //reenvia para o computador o dado recebido
19   }
20 }

 
Neste exemplo foi utilizada a função Serial.available() para verificar se há dado disponível no buffer da
serial. Quando há um byte para leitura, o mesmo é lido pela função Serial.read() e armazenado na variavel
byteRead. A próxima função, Serial.write(), imprime de volta o dado recebido para o computador.
 

Dimmer

 
Este exemplo demonstra como enviar dados do computador para controlar o brilho de um LED conectado a
uma  saída  PWM.  Este  exemplo  já  vem  com  a  plataforma  e  pode  ser  acessado  em:  File  ‐>  Examples  ‐>
04.Communication ‐> Dimmer.
 
1 /*
2 Dimmer
3 Demonstra como enviar dados do computador para controlar a intesindade
4 do brilho de um led conctado ao pino 9 do arduino.
5 */
6  
7 const int ledPin = 9;      // the pin that the LED is attached to
8  
9 void setup()
10 {
11   Serial.begin(9600); // configura a comunicação serial com 9600 bps
12   pinMode(ledPin, OUTPUT);  // configura pino do led como saída
13 }
14  
15 void loop() {
16   byte brightness;  //cria uma variável para armazernar byte recebido
17  
18   if (Serial.available()) //verifica se chegou algum dado na serial
19   {
20     brightness = Serial.read();//Lê o byte mais recente disponível na serial
21     analogWrite(ledPin, brightness);//atualiza a saída PWM do LED com valor recebido
22   }
23 }

 
Com este exemplo pode ‐se  varia o brilho do LED conectado à saída PWM através de comandos enviados
pelo PC. O byte recebido pela serial é atribuído a variável brightness, que na instrução a seguir é passado
como parâmetro na função analogWrite(), definindo o brilho do LED. Junto com este exemplo é exibido um
código em processing para variação do brilho através do clique do mouse no PC.
 

Liga/Desliga LED 

 
Este  exemplo  exibe  como  ligar  e  desligar  um  LED  conectado  as  saída  digital  da  Arduino  UNO  através  de
comando enviados pelo computador.
 
1 /*
2 * comandos via serial
3 * inverte o estado do led conctado a saída 13 do arduino quando recebe o caracter 'A' pela serial
4 */
5  
6 const int LED = 13;
7  
8 void setup() {
9   Serial.begin(9600);    //configura comunicação serial com 9600 bps
10   pinMode(LED,OUTPUT);   //configura pino do led como saída
11 }
12  
13 void loop() {
14    if (Serial.available()) //se byte pronto para leitura
15    {
16     
17     switch(Serial.read())      //verifica qual caracter recebido
18     {
19       case 'A':                  //caso 'A'
20       
21         digitalWrite(LED,!digitalRead(LED)); //inverte estado do LED
22         
23       break;
24     }
25   }
26 }

 
Neste exemplo o estado do LED ligado ao pino 13 é invertido sempre que o Arduino recebe o caractere 'A'.
A  estrutura  desse  sketch  permite  adicionar  mais  saídas  para  serem  acionadas.  Este  exemplo  pode  ser
aproveitado para uma aplicação gráfica no PC para controlar cargas automação residencial, por exemplo.
 
 
Conclusão sobre comunicação serial na plataforma Arduino
 
Dominar a comunicação serial na plataforma Arduino é essencial para o desenvolvedor de projetos. Muitos
dispositivos e módulos possuem uma interface de comunicação, seja para configuração ou para comandos. 
 
O uso de uma comunicação serial permite também o controle ou monitoramento de sistemas utilizando o
computador ou mesmo outra placa eletrônica. É uma interface tradicional e bem conhecida e permite que
ligue, de forma simples diferentes dispositivos.
 
A comunicação serial na plataforma Arduino aliada ao terminal da IDE, se torna uma ótima ferramenta para
visualização de dados e Debug durante o processo de desenvolvimento, já que a plataforma não possui tais
ferramentas de depuração.
 
 

Para aprender mais

 
Arduino ‐ Primeiros Passos
Arduino ‐ O documentário
Placas Arduino ‐ trajetória até o UNO
Arduino UNO
Arduino ‐ Entradas/Saídas digitais
Arduino ‐ Entradas Analógicas
Arduino ‐ Saídas PWM
Arduino ‐ Comunicação Serial
Arduino ‐ ArduBlock
Arduino no Proteus 8.1
Simulador de Arduino: Virtual Breadboard
Arduino Leonardo
Arduino MEGA 2560
Acionamento de uma lâmpada com Arduino
Arduino ‐ Controle de uma lâmpada com LDR
Placa Arduino da Robocore ‐ BlackBoard
Criando suas próprias bibliotecas para Arduino
Arduino UNO ‐ Taxa de amostragem do conversor A/D
Arduino UNO ‐ Sensor de temperatura interno
Medindo o nível de água com Arduino
Comunicação Serial com C# e Arduino ‐ Parte 1
Comunicação Serial com C# e Arduino ‐ Parte 2
Arduino: Expandindo os I/Os ‐ Parte 1
Arduino Esplora
Arduino ‐ Teclado touch capacitivo
Arduino ‐ Interface com acelerômetro e giroscópio
Arduino: RS‐232/RS‐485 ‐ Hardware
Trinket ‐ Uma pequena poderosa placa compatível com Arduino
Nova Arduino Zero Pro ‐ Disponível no site arduino.org
Embrio: Uma ferramenta de programação visual para Arduino
Comunicação serial com Arduino utilizando Qt5 Console Application
Utilizando microcontroladores para controle de conversores DC‐DC personalizados, parte II
Móveis de escritório + IoT ‐ Uma impressora de recibo com NFC e Wifi
LightBlue Bean ‐ Placa compatível com Arduino
BR‐Arduino.org: Sua nova fonte de conhecimento sobre Arduino
Shield Arduino YÚN
Arduino Yún
Novo Shield Arduino Wi‐Fi com controlador Atmel
Python + Arduino ‐ Comunicação Serial
Arduino vs Raspberry Pi: entenda as diferenças
Papilio ‐ Arduino + FPGA
Intel Galileo Gen 2 ‐ Placa Arduino
Arduino TRE Developer Edition ‐ Lançamento!
Novo Arduino ‐ Arduino Zero lançado
Intel Galileo ‐ Placa Arduino
Arduino TRE
Arduino Due
Comunicação Serial Java + Arduino
UDOO ‐ Arduino, Linux e Android em uma mesma placa
 
Licença Creative Commons
Arduino ‐ Comunicação Serial por Fábio Souza. Esta obra está sob a licença Creative Commons
Atribuição‐CompartilhaIgual 4.0 Internacional.

Fábio Souza
Engenheiro eletricista com experiência no desenvolvimento de hardware e firmware para
sistemas embarcados. Atua com desenvolvimento de projetos eletrônicos, consultoria e
treinamentos na área de sistemas embarcados.

Tweetar 0

POSTS SIMILARES

Arquitetura de software em Apresentando a Microcontroladores Texas


camadas para iniciantes STM32F429IDiscovery Instruments TIVA TM4C123x
Esta publicação tem como objetivo Em uma parceria firmada entre a - Workshop Grátis
mostrar a quem está iniciando no mundo STMicroelectronics e o Embarcados,   No Youtube pode‐se acessar um
dos sistemas embarcados (sobretudo recebemos algumas placas para a workshop grátis do TM4C123x, feito pela
quem está iniciando em sistemas realização de reviews e, posteriormente, própria Texas Instruments. Confira:            
embarcados bare‐metal) o que é...  apresentar exemplos, guias e tutoriais. E        ... 
veja+ uma...  veja+
veja+

COMENTÁRIOS

45 Comentários Embarcados 
1  Entrar

  Recommend ⤤ Compartilhar Ordenar por Melhor avaliado

Participe da discussão...

Marcio Oliveira  •  20 dias atrás
Boa Tarde Fabio...

Estou envolvido em um projeto, onde preciso acionar uma balança via serial para ela pesar
determinado material e receber via serial a leitura... Tem algum jeito?

Obs: a balança recebe e envia pela sua entrada serial...
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Marcio Oliveira   •   20 dias atrás

Opa Marcio, tem sim!

Primeiro tem ver qual o meio fisico da comunicação, RS232, RS485, USB etc

A partir disso você prepara o hardware do Arduino para comunicação.

Depois é necessário ter o manual da impressora para ver se tem algum protocolo
de comunicação e quais são os comandos para envio e recebimento de dados.

É bem tranquilo.

Abraços
△  ▽ • Responder • Compartilhar › 

João Carlos Ornellas  •  2 meses atrás
Parabéns pelo post. Me ajudou muito.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > João Carlos Ornellas  •   2 meses atrás


Obrigado João.
Caso tenha alguma sugestão de proximo post sobre o tema, fique a vontade para
escrever aqui. Abraços
△  ▽ • Responder • Compartilhar › 

Wellington Araújo  •  2 meses atrás
Olá,

estou realizando uma comunicação serial com o arduino e gostaria que ele enviasse
sempre 3 digitos. Por exemplo, se o arduino captar o valor '104' deve enviar '104', e se
captar '72' deve enviar '072'. É possível?

obrigado
△  ▽ • Responder • Compartilhar › 

phfbertoleti > Wellington Araújo  •  2 meses atrás
Wellington, o que o Fabio disse resolve a questão. Outra alternativa seria:

1­ Criar um array de char tamanho 4 (4 bytes): char MsgParaTransmitir[4];
2­ Formatar esse array usando sprintf:
sprintf(MsgParaTransmitir,"%03d",VariavelComvalorNumerico);
//VariavelComvalorNumerico corresponte a variável que você quer converter pra
string e enviar

Este tipo de formatação ("%03d") garante que o numero terá sempre três digitos.
3­ Enviar os 3 primeiros bytes da string com a função Serial.write:
Serial.write(MsgParaTransmitir,3);

O porque de declarar a variável com 4 posições pra colocar somente 3 caracteres
é que a função sprintf coloca sempre \0 (0x00) no último byte. Se por um acaso
você declarasse o array de char com 3 posições somente, o sprintf iria colocar na
posição de memória seguinte o \0, o que é a famosa "invasão de memória". isto
pode trazer problemas sérios, como travamentos (intermitentes ou não) ou
travamento do firmware mesmo.

A vantagem deste tipo de solução em relação a do Fabio é ganho de performance e
código mais enxuto.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Wellington Araújo   •   2 meses atrás

Olá Wellington,

Você pode enviar um digito por vez, por exemplo:
Serial.print(valor/100);
Serial.print((valor%100)/10);
Serial.print(valor%10);

Abraços
△  ▽ • Responder • Compartilhar › 

Luiz Antônio Zanlorensi Junior  •  2 meses atrás
Boa Tarde!

Eu estou desenvolvendo um projeto, e fico recebendo dados via serial do arduino para
demonstrar em uma interface no computador. O problema é que após um período
(aproximadamente umas 5 horas), o arduino simplesmente para de enviar os dados,
porém continua executando as funções que foram programadas corretamente. Procurei e
não consegui encontrar nada em relação a isso. Alguém já passou pelo mesmo problema
ou sabe o que pode ser feito?

Obrigado,
Luiz.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Luiz Antônio Zanlorensi Junior  •   2 meses atrás

Olá Luiz, pensando que seja um problema de hw, o conversor serial/USB pode
estar travando. Seu arduino é original? Há acionamento de cargas indutivas no
projeto?

Abraços
△  ▽ • Responder • Compartilhar › 

Luiz Antônio Zanlorensi Junior > Fabio_Souza_Embarcados
•   2 meses atrás

Oi Fabio, o arduino é original, em relação a cargas, eu estou controlando
uma placa de relés e em um deles há um motor de compressor ligado. Mas
não sei se isso afetaria a comunicação.
Obrigado, por responder.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Luiz Antônio Zanlorensi Junior


•   2 meses atrás

Eu já tive alguns problemas com acionamento de cargas indutivas.
Em alguns casos optei por RS232 ou RS485. Faça alguns testes de
acionamento e verifique a alimentação e sinais com um
osciloscópio. Talvez você possa encontrar uma fonte de ruído.
Abraços
△  ▽ • Responder • Compartilhar › 

Luiz Antônio Zanlorensi Junior > Fabio_Souza_Embarcados
•   2 meses atrás

Opa Blz, vou testar sim. Posto aqui quando resolver.
Abraço
1 △   ▽ • Responder • Compartilhar › 

Luiz Antônio Zanlorensi Junior > Luiz Antônio Zanlorensi Junior
•   2 meses atrás

Boa Tarde Fabio, muito obrigado pela ajuda, realmente o problema
era com ruídos (EMI), e vi que colocando um filtro snubber ou
retirando o motor AC da placa de relés resolve o problema.

Segue um link, caso alguém tenha o mesmo problema, de como
criar e calcular os componentes para um snubber:

http://www.ehow.com.br/projeta...

Abraço.
△  ▽ • Responder • Compartilhar › 

Paulo Germano S. Scherer  •  3 meses atrás
Olá, boa noite!
Gostaria de controlar um motor DC utilizando o Arduino e um mouse PS/2. Por exemplo:
clique do botão direito faz o motor girar para frente; clique do botão esquerdo, motor gira
para trás. Acredito que isso possa ser feito com comunicação serial do mouse com o
Arduino, para identificar qual o botão que está sendo pressionado, mas não estou sabendo
fazer o programa... Poderiam me dar alguma direção?

Obrigado
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Paulo Germano S. Scherer  •   3 meses atrás

Olá Paulo,

Você pode usar a PS2 mouse interface for Arduino:
http://playground.arduino.cc/C...

Esse artigo é bem legal: https://docs.google.com/docume...

Você também precisará de um driver para o motor e inserir a lógica de controle.

Abraços
△  ▽ • Responder • Compartilhar › 

Paulo Germano S. Scherer > Fabio_Souza_Embarcados  •  2 meses atrás
Olá, Fabio
Obrigado pela sua resposta.
Mas segui os passos do artigo para testar a comunicação com o mouse e
não funcionou. Nada é impresso no monitor serial. É possível que seja
problema do mouse, que estava há bastante tempo sem uso, mas aceitaria
qualquer outra sugestão...
Valeu!
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Paulo Germano S. Scherer


•   2 meses atrás

Como você disse pode ser problema com o mouse ou com a ligação
do mesmo. Da um conferida nos sinais elétricos.

Abraços
△  ▽ • Responder • Compartilhar › 

Cesar Augusto Santos  •  4 meses atrás
Boa noite, Fabio.

Minha dúvida é parecida com a do colega Daniel.

Estou montando um estacionamento sensorial, porém, estou com dificuldades de enviar os
dados, tendo em vista que não quero usar um módulo ethernet para essa função e sim
fazer via serial ou USB. Teria como me auxiliar?

Meu email é: cescabral@hotmail.com

Agradeço desde já!
△  ▽ • Responder • Compartilhar › 

Daniel Godoy  •  4 meses atrás
Olá Fabio, muito bom seu artigo!
Estou fazendo um projeto que preciso receber os dados do arduino via serial e exibir na
tela do pc.Os dados são de 3 sensores de temperatura e gostaria de mandar via tx/rx do
arduino e não USB.
Como faço para cada dado do sensor seja enviado ? exemplo sensor 1 mediu 70 , o
sensor 2 mediu 120 e mando para o pc.
Obrigado Daniel
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Daniel Godoy  •   4 meses atrás

Você pode usar a comunicação Serial e mandar um pacote com as informações
dos sensores, por exemplo: #valorSensor1;valorSensor2;valorSensor3$.

Na aplicação do computador você separa as informações enviadas no pacote.

Abraços.
△  ▽ • Responder • Compartilhar › 

Janderson Alexandre  •  8 meses atrás
olá Fábio estou fazendo um elevador de 3 andares com red­swith como referência de
sensor nos andares a porta serial bluetooth liga o motor o sensor desliga a partir dai não
consigo religar o motor pela serial.Se puder me ajudar ficarei muito agradecido.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Janderson Alexandre   •   8 meses atrás

Olá Janderson, quais os comandos que você envia pela serial, e como está
estruturado seu programa?
△  ▽ • Responder • Compartilhar › 

alex sandro monteiro lopes de  •  9 meses atrás
Olá sou Alex, primeiramente parabéns Fábio.
Gostaria de saber se há a possibilidade de após ler os dados serial eu conseguiria salva­
los em um banco de dados?
Obrigado desde já
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > alex sandro monteiro lopes de   •   9 meses atrás

Olá Alex, a maneira mais simples é você formatar os dados e depois copiar e
colocar no Excel por exemplo. Outra forma seria a utilização de um programa em
uma linguagem mais alto nivel como C#, JAVA, Python, VB.. e integrar com um
banco de dados como por exemplo o MySQL. Abraços
△  ▽ • Responder • Compartilhar › 

Alexandre Fontana  •  10 meses atrás
Fabio, como eu faria para ler um conjunto de 10 números que chegaram pela serial e
depois separar os outros 10 e depois outros 7 ? Saberia me informar ? Ou como procurar
essas informações ? Obrigado, abraço.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Alexandre Fontana   •   10 meses atrás

Olá Alexandre, Você pode enviar os números com separadores, e depois recortar
estes números da string de recepção. Por exemplo: 125,25,96,1023,456,1,...
Depois você faz pode varrer a string separando os números entre cada separador.
Abraço
△  ▽ • Responder • Compartilhar › 

Luciano Santos > Fabio_Souza_Embarcados  •  9 meses atrás
Por favor, teria um exemplo de como varrer a string para separar as
palavras? 
Obrigado!
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Luciano Santos  •   9 meses atrás

Olá Luciano,

teria um exemplo de String com as palavras a serem separadas?
Faço o exemplo em cima de sua necessidade.

Abraço
△  ▽ • Responder • Compartilhar › 

Luciano Santos > Fabio_Souza_Embarcados  •  9 meses atrás
Oi Fabio!

Após o envio de um GET que faço a uma página em PHP, gostaria
de pegar os dados que retornam depois do cabeçalho HTTP e
colocar cada um em um array. Seria possível? Obrigado desde já!

Por exemplo:

char dados[]={"11997306000","email@gmail.com","Anselmo
Santos","Luciano Santos","1000","Entrada Num.1","09/11/2014 09:47
PM"};

/* Retorno do GET */

HTTP/1.1 200 OK
Date: Sun, 09 Nov 2014 23:47:38 GMT
Server: Apache
Keep­Alive: timeout=5, max=100
Connection: Keep­Alive
Transfer­Encoding: chunked
ver mais

△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Luciano Santos  •   8 meses atrás

Olá Luciano,

Você pode utilizar nesse caso os métodos do objeto String. no caso
você precisa achar o ponto onde iniciará a captura e depois utilizar o
método substring. confira esse exemplo:

http://arduino.cc/en/Tutorial/...

Abraço
△  ▽ • Responder • Compartilhar › 

rpa 007  •  10 meses atrás
Olá Fábio! Excelente explicação.

Porém, estou com uma dúvida. Estou tendo como resultado de um "Serial.println" alguns
símbolos, igual aqueles que você faz quando pressiona "alt + teclado numérico". Esses
tais símbolos estão em qual forma numérica? Obrigado!
△  ▽ • Responder • Compartilhar › 
Fabio_Souza_Embarcados  Mod   > rpa 007   •   10 meses atrás

Olá rpa, verifique a taxa de comunicação da comunicação serial, você pode está
com problema de baud rate. Abraços
△  ▽ • Responder • Compartilhar › 

Alexandre Fontana  •  um ano atrás
Fabio parabéns pelo seu post. Gostaria de saber como posso fazer a leitura de um ou
mais potenciômetros pela porta serial e ao mesmo tempo enviar dados pela serial para um
ou mais servos motor ? O servo não tem relação com o potenciômetro. Agradeço a
atenção. Obrigado.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Alexandre Fontana   •   um ano atrás

Olá Alexandre, você pode enviar todos os valores dos potenciometros e usar um
separador de string, por exemplo: ',' e a aplicação no PC se encarrega de separar
os dados. Para leitura dos comandos dos servos você pode ficar esperando a
chegada de um comando através do Serial.available() e atuar os servos conforme
o dado que chegar. abraços
△  ▽ • Responder • Compartilhar › 

Eitor  •  um ano atrás
Ola! Eu tenho uma duvida. Vamos supor que eu tenha 2 arduinos, um que eu receba os
comandos em geral, e outro q eu tenha algumas lampadas conectados a ele, porem eu
quero acender as lampadas do arduino 2 através de comandos enviados pelo arduino 1.
Seria possível fazer isso usando envio de dados pela serial ou existe uma outra forma?
Obrigado.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Eitor  •   um ano atrás

Sim você pode enviar os comandos de um arduino para o outro através da
comunicação serial. Só tem que ficar atento a distância entre os arduinos. Você
pode usar algum padrão o padrão RS232 ou RS485 para interface entre as placas.
abraços
△  ▽ • Responder • Compartilhar › 

Renato Lemos  •  um ano atrás
Fabio, primeiramente obrigado pelo tópico, muito bem explicado as funções.
Agora preciso de uma ajuda, como faço para o dado que eu leia na serial seja "colado" em
qualquer caixa de texto, como o bloco de notas por exemplo.
a situação completa é a seguinte, estou lendo um leitor de código de barras PS/2 pelo
arduino, esta funcionado certinho, porem os dados que consigo pelo leitor aparecem no
"serial monitor" do arduino, queria que estes dados fossem recebidos em qualquer lugar
que receba texto.

Vlw.
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Renato Lemos  •   um ano atrás

Você precisará que seu arduino Funcione como um dispositivo HID, acredito que
com o Arduino Leonardo você consiga fazer isso. Ele tem que funcionar como se
fosse um teclado ou um mouse. Ainda não sei como fazer, vou dar uma
pesquisada. Abraços
△  ▽ • Responder • Compartilhar › 

Renato Lemos > Fabio_Souza_Embarcados  •  um ano atrás
Pensei nisto mesmo, mas infelizmente só possuo o Arduino UNO e o
Arduino RFBee.
Como não conheço muito sobre comunicação serial, achei que seria mais
simples, tipo um comando "serial.print" que já mandasse o dado para a área
de transferência do windows.
Estou pesquisando também, qualquer novidade posto aqui e obrigado pela
atenção.

Vlw.
△  ▽ • Responder • Compartilhar › 
Gabriel  •  um ano atrás
Como faço pra receber dois dados do arduino?
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Gabriel   •   um ano atrás

Olá Gabriel, quais são os dados que você quer receber? Você precisa que o
arduino envie dois dados de uma só vez? É isso? Onde você irá receber e exibir
estes dados?
△  ▽ • Responder • Compartilhar › 

Erica  •  um ano atrás
Olá, 
Se eu quiser apenas ler a serial de um arduino sem ter instalado a IDE (com um outro
programa de leitura serial) é necessário instalar apenas o driver para o reconhecimento do
arduino?
Obrigada
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Erica   •   um ano atrás

Olá Erica,

Isso mesmo você precisa instalar o diver para reconhecimento da placa em seu
SO e depois fazer a comunicação com outra aplicação com as devidas
configurações da comunicação serial.

Veja esse artigos, onde são feitas comunicações usando JAVA e C#:

http://www.embarcados.com.br/c...

http://www.embarcados.com.br/c...

Qualquer dúvida entre em contato,

Abraços
△  ▽ • Responder • Compartilhar › 

Erica > Fabio_Souza_Embarcados  •  um ano atrás
Muito Obrigada...
Ajudou bastante :)
△  ▽ • Responder • Compartilhar › 

Fabio_Souza_Embarcados  Mod   > Erica   •   um ano atrás

Por nada. Depois conte para nós os resultados.

Abraços
△  ▽ • Responder • Compartilhar › 

✉ Assinar feed d Adicione o Disqus no seu site ὑ Privacidade

Links Comunidade Publicidade Fique por dentro

Sobre Seja Colaborador Anuncie Conosco Registre‐se


Eventos Oportunidades Newsletter
Vídeos Sites e Blogs
Downloads
Login
Contato

Embarcados ‐ Todos os Direitos Reservados® Desenvolvido por