arduino -comunicação serial

14
Arduino - Comunicação Serial por Fábio Souza em terça‐feira, 21 de janeiro de 2014. 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 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. A placa Arduino UNO possui um canal de comunicação por hardware, conforme foi exibido no artigo 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 com o computador. A figura a seguir exibe os pinos de comunicação serial na placa Arduino UNO: EMBARCADOS TV Email NEWSLETTER OPORTUNIDADES Desenvolvedor de Programa para CLP na Lean Clean ‐ Sorocaba/SP Analista Programador C/C++ na Global TI ‐ São Paulo/SP 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 ASSINAR Este site foi bloqueado de acord HOME SOBRE CONTEÚDO FÓRUM EVENTOS OPORTUNIDADES COMUNIDADE Junte‐se a Comunidade Embarcados: Realizar Login ou Registrar‐se Pesquisar Ir Contato / Feedback Translate »

Upload: independent

Post on 05-May-2023

2 views

Category:

Documents


0 download

TRANSCRIPT

Arduino - Comunicação Serialpor Fábio Souza em terça‐feira, 21 de janeiro de 2014.

Continuando a serie de artigos introdutórios sobre a plataforma Arduino, neste vamos abordar acomunicação serial. Serão apresentadas as principais funções e alguns exemplos básicos que serão usadoscomo base em nossos projetos. Arduino Comunicação Serial A comunicação serial (UART) na plataforma Arduino é, sem duvida, um poderoso recurso que possibilita acomunicação entre a placa e um computador ou entre a placa e outro dispositivo, como por exemplo ummódulo GPS ou um módulo GSM. É através desse canal que é realizado o upload do código para a placa. A placa Arduino UNO possui um canal de comunicação por hardware, conforme foi exibido no artigopublicado sobre a Arduino UNO. Esse canal está ligado aos pinos digitais 0 (RX) e 1 (TX). Esses mesmos pinosestão ligados ao microcontrolador ATMEGA16U2, responsável pela tradução do sinal para comunicação USBcom o computador. A figura a seguir exibe os pinos de comunicação serial na placa Arduino UNO:

EMBARCADOS TV

Email

NEWSLETTER

OPORTUNIDADES

Desenvolvedor de Programa para CLP naLean Clean ‐ Sorocaba/SP

Analista Programador C/C++ na Global TI ‐São Paulo/SP

Programador na Delta Life ‐ São José dosCampos/SP

Engenheiro de Software Embarcado naTQTVD SOFTWARE LTDA ‐ Rio De Janeiro

Divulgue sua oportunidade

Mais oportunidades

ASSINAR

Este site foi bloqueado de acordo com as diretivas de segurança

HOME SOBRE CONTEÚDO FÓRUM EVENTOS OPORTUNIDADES COMUNIDADE

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

Co

ntato / Feed

back

Translate »

Figura 1 ‐ Pinos para comunicação serial

Deve‐se ficar atento a dispositivos conectados a esses pinos pois podem interferir no upload do seuprograma. Em alguns caso é recomendável desconectar os dispositivos ou shields ligados a esses pinosantes de fazer o upload. O sinal de comunicação na placa Arduino UNO, é um sinal TTL de 5V. Para comunicação com umcomputador ou outro dispositivo que não tenha o mesmo nível de tensão é necessário um conversor denível. Existem várias opções de conversores, como por exemplo TTL/ RS232, TTL/RS485, TTL/USB, entreoutros. A seguir são exibidos alguns modelos de conversores:

Figura 2 ‐ Shields e módulos para comunicação serial

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

ENQUETES REALIZADAS

Simulador de Arduino: Virtual Breadboard

Arduino ‐ Comunicação Serial

Arduino UNO

Comunicação Serial Java + Arduino

Arduino ‐ Entradas Analógicas

POSTS POPULARES

Escolha de Microcontrolador /Microprocessador

Sistema Operacional Embarcado

Linguagem de programação

Tipo de ProcessadorO Novo Embarcados

PARCEIROS

33.409 visualizações

31.245 visualizações

24.882 visualizações

20.927 visualizações

17.058 visualizações

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 ataxa de envio (baud rate). Possui dois campos, um onde pode ser inserido a mensagem a ser enviada eoutro 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 dadosatravés de comunicação serial. Essas funções auxiliam o desenvolvedor em tarefas mais complexas de envioe 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 decomunicação em bits por segundo (baud rate). Possui um segundo parâmetro opcional para a definição daquantidade de bits, paridade e stop bits. Se for omitido esse parâmetro o padrão será 8 bits, sem paridade e1 stop bit. Sintaxe:Serial.begin(speed)Serial.begin(speed, config) Parâmetros:speed: velocidade em bit por segundo (baud rate) ‐ longconfig: configura a quantidade de bits, paridade e stop bits. Os valores válidos são :

SERIAL_5N1SERIAL_6N1SERIAL_7N1SERIAL_8N1 (padrão)SERIAL_5N2SERIAL_6N2SERIAL_7N2SERIAL_8N2SERIAL_5E1SERIAL_6E1SERIAL_7E1SERIAL_8E1SERIAL_5E2SERIAL_6E2SERIAL_7E2SERIAL_8E2SERIAL_5O1SERIAL_6O1

SERIAL_7O1SERIAL_8O1SERIAL_5O2SERIAL_6O2SERIAL_7O2SERIAL_8O2

RetornoEssa 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 loopsonde a leitura dos dados só e realizada quando há dados disponível. A quantidade máxima de bytes nobuffer é 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ãoescritos usando um caractere ASCII para cada dígito. O mesmo ocorre para números flutuante e, porpadrão, são escrito duas casas decimais. Bytes são enviados como caracteres únicos e strings e caracteressã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 osseguintes parâmetros:

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

Para números em ponto flutuante esse parâmetro define a quantidade de casas decimais a serem enviadasapó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 decimaisSerial.println(1.23456, 2)envia "1.23", ou seja, duas casas decimaisSerial.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 fimda 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 caracterepara o computador, onde será exibido o que é digitado na terminal serial.

1234567891011121314

/* echo reenvia para o computador o dado recebido pela serial*/ byte byteRead; void setup() //configura a comunicação seria com baud rate de 9600 Serial.begin(9600); void loop()

Neste exemplo foi utilizada a função Serial.available() para verificar se há dado disponível no buffer daserial. Quando há um byte para leitura, o mesmo é lido pela função Serial.read() e armazenado na variavelbyteRead. 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 auma saída PWM. Este exemplo já vem com a plataforma e pode ser acessado em: File ‐> Examples ‐>04.Communication ‐> Dimmer.

Com este exemplo pode ‐se varia o brilho do LED conectado à saída PWM através de comandos enviadospelo PC. O byte recebido pela serial é atribuído a variável brightness, que na instrução a seguir é passadocomo parâmetro na função analogWrite(), definindo o brilho do LED. Junto com este exemplo é exibido umcó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 decomando enviados pelo computador.

Neste exemplo o estado do LED ligado ao pino 13 é invertido sempre que o Arduino recebe o caractere 'A'.

151617181920

if (Serial.available()) //verifica se tem dados diponível para leitura byteRead = Serial.read(); //le bytwe mais recente no buffer da serial Serial.write(byteRead); //reenvia para o computador o dado recebido

1234567891011121314151617181920212223

/* DimmerDemonstra como enviar dados do computador para controlar a intesindadedo brilho de um led conctado ao pino 9 do arduino.*/ const int ledPin = 9; // the pin that the LED is attached to void setup() Serial.begin(9600); // configura a comunicação serial com 9600 bps pinMode(ledPin, OUTPUT); // configura pino do led como saída void loop() byte brightness; //cria uma variável para armazernar byte recebido if (Serial.available()) //verifica se chegou algum dado na serial brightness = Serial.read();//Lê o byte mais recente disponível na serial analogWrite(ledPin, brightness);//atualiza a saída PWM do LED com valor recebido

1234567891011121314151617181920212223242526

/* * comandos via serial * inverte o estado do led conctado a saída 13 do arduino quando recebe o caracter 'A' pela serial */ const int LED = 13; void setup() Serial.begin(9600); //configura comunicação serial com 9600 bps pinMode(LED,OUTPUT); //configura pino do led como saída void loop() if (Serial.available()) //se byte pronto para leitura switch(Serial.read()) //verifica qual caracter recebido case 'A': //caso 'A' digitalWrite(LED,!digitalRead(LED)); //inverte estado do LED break;

A estrutura desse sketch permite adicionar mais saídas para serem acionadas. Este exemplo pode seraproveitado 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. Muitosdispositivos 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 ocomputador ou mesmo outra placa eletrônica. É uma interface tradicional e bem conhecida e permite queligue, de forma simples diferentes dispositivos. A comunicação serial na plataforma Arduino aliada ao terminal da IDE, se torna uma ótima ferramenta paravisualização de dados e Debug durante o processo de desenvolvimento, já que a plataforma não possui taisferramentas de depuração.

Para aprender mais

Arduino ‐ Primeiros PassosArduino ‐ O documentárioPlacas Arduino ‐ trajetória até o UNOArduino UNOArduino ‐ Entradas/Saídas digitaisArduino ‐ Entradas AnalógicasArduino ‐ Saídas PWMArduino ‐ Comunicação SerialArduino ‐ ArduBlockArduino no Proteus 8.1Simulador de Arduino: Virtual BreadboardArduino LeonardoArduino MEGA 2560Acionamento de uma lâmpada com ArduinoArduino ‐ Controle de uma lâmpada com LDRPlaca Arduino da Robocore ‐ BlackBoardCriando suas próprias bibliotecas para ArduinoArduino UNO ‐ Taxa de amostragem do conversor A/DArduino UNO ‐ Sensor de temperatura internoMedindo o nível de água com ArduinoComunicação Serial com C# e Arduino ‐ Parte 1Comunicação Serial com C# e Arduino ‐ Parte 2Arduino: Expandindo os I/Os ‐ Parte 1Arduino EsploraArduino ‐ Teclado touch capacitivoArduino ‐ Interface com acelerômetro e giroscópioArduino: RS‐232/RS‐485 ‐ HardwareTrinket ‐ Uma pequena poderosa placa compatível com ArduinoNova Arduino Zero Pro ‐ Disponível no site arduino.orgEmbrio: Uma ferramenta de programação visual para ArduinoComunicação serial com Arduino utilizando Qt5 Console ApplicationUtilizando microcontroladores para controle de conversores DC‐DC personalizados, parte IIMóveis de escritório + IoT ‐ Uma impressora de recibo com NFC e WifiLightBlue Bean ‐ Placa compatível com ArduinoBR‐Arduino.org: Sua nova fonte de conhecimento sobre ArduinoShield Arduino YÚNArduino YúnNovo Shield Arduino Wi‐Fi com controlador AtmelPython + Arduino ‐ Comunicação SerialArduino vs Raspberry Pi: entenda as diferençasPapilio ‐ Arduino + FPGAIntel Galileo Gen 2 ‐ Placa ArduinoArduino TRE Developer Edition ‐ Lançamento!Novo Arduino ‐ Arduino Zero lançadoIntel Galileo ‐ Placa ArduinoArduino TREArduino DueComunicação Serial Java + ArduinoUDOO ‐ Arduino, Linux e Android em uma mesma placa

Tweetar 0

Licença Creative Commons

Arduino ‐ Comunicação Serial por Fábio Souza. Esta obra está sob a licença Creative CommonsAtribuição‐CompartilhaIgual 4.0 Internacional.

POSTS SIMILARES

Arquitetura de software emcamadas para iniciantes

veja+

Esta publicação tem como objetivomostrar a quem está iniciando no mundodos sistemas embarcados (sobretudoquem está iniciando em sistemasembarcados bare‐metal) o que é...

Apresentando aSTM32F429IDiscovery

veja+

Em uma parceria firmada entre aSTMicroelectronics e o Embarcados,recebemos algumas placas para arealização de reviews e, posteriormente,apresentar exemplos, guias e tutoriais. Euma...

Microcontroladores TexasInstruments TIVA TM4C123x- Workshop Grátis

veja+

No Youtube pode‐se acessar umworkshop grátis do TM4C123x, feito pelaprópria Texas Instruments. Confira: ...

COMENTÁRIOS

45 Comentários Embarcados Entrar1

Compartilhar⤤ Ordenar por Melhor avaliado

Participe da discussão...

• Responder •

Marcio Oliveira • 20 dias atrás

Boa Tarde Fabio...

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

Obs: a balança recebe e envia pela sua entrada serial...

• Responder •

Fabio_Souza_Embarcados • 20 dias atrásMod > Marcio Oliveira

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 protocolode comunicação e quais são os comandos para envio e recebimento de dados.

É bem tranquilo.

Abraços

• Responder •

João Carlos Ornellas • 2 meses atrás

Parabéns pelo post. Me ajudou muito.

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

Obrigado João.

Recommend

Compartilhar ›

Compartilhar ›

Compartilhar ›

Fábio SouzaEngenheiro eletricista com experiência no desenvolvimento de hardware e firmware parasistemas embarcados. Atua com desenvolvimento de projetos eletrônicos, consultoria etreinamentos na área de sistemas embarcados.

• Responder •

Obrigado João.Caso tenha alguma sugestão de proximo post sobre o tema, fique a vontade paraescrever aqui. Abraços

• Responder •

Wellington Araújo • 2 meses atrás

Olá,

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

obrigado

• Responder •

phfbertoleti • 2 meses atrás> Wellington Araújo

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 prastring 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 acasovocê declarasse o array de char com 3 posições somente, o sprintf iria colocar naposição de memória seguinte o \0, o que é a famosa "invasão de memória". istopode trazer problemas sérios, como travamentos (intermitentes ou não) outravamento do firmware mesmo.

A vantagem deste tipo de solução em relação a do Fabio é ganho de performance ecódigo mais enxuto.

• Responder •

Fabio_Souza_Embarcados • 2 meses atrásMod > Wellington Araújo

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 •

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

Boa Tarde!

Eu estou desenvolvendo um projeto, e fico recebendo dados via serial do arduino parademonstrar 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 enão consegui encontrar nada em relação a isso. Alguém já passou pelo mesmo problemaou sabe o que pode ser feito?

Obrigado,Luiz.

• Responder •

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

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

Abraços

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

• Responder •

• Responder •

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

> Fabio_Souza_Embarcados

Oi Fabio, o arduino é original, em relação a cargas, eu estou controlandouma placa de relés e em um deles há um motor de compressor ligado. Masnão sei se isso afetaria a comunicação.Obrigado, por responder.

• Responder •

Fabio_Souza_Embarcados • 2 meses atrás

Mod > Luiz Antônio Zanlorensi Junior

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

• Responder •

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

> Fabio_Souza_Embarcados

Opa Blz, vou testar sim. Posto aqui quando resolver.Abraço

1

• Responder •

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

> Luiz Antônio Zanlorensi Junior

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

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

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

Abraço.

• Responder •

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 girapara trás. Acredito que isso possa ser feito com comunicação serial do mouse com oArduino, para identificar qual o botão que está sendo pressionado, mas não estou sabendofazer o programa... Poderiam me dar alguma direção?

Obrigado

• Responder •

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

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

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

Olá, FabioObrigado pela sua resposta.Mas segui os passos do artigo para testar a comunicação com o mouse enão funcionou. Nada é impresso no monitor serial. É possível que sejaproblema do mouse, que estava há bastante tempo sem uso, mas aceitariaqualquer outra sugestão...

Valeu!

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

• Responder •

Valeu!

• Responder •

Fabio_Souza_Embarcados • 2 meses atrás

Mod > Paulo Germano S. Scherer

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

Abraços

• Responder •

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 osdados, tendo em vista que não quero usar um módulo ethernet para essa função e simfazer via serial ou USB. Teria como me auxiliar?

Meu email é: [email protected]

Agradeço desde já!

• Responder •

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 natela do pc.Os dados são de 3 sensores de temperatura e gostaria de mandar via tx/rx doarduino e não USB.Como faço para cada dado do sensor seja enviado ? exemplo sensor 1 mediu 70 , osensor 2 mediu 120 e mando para o pc.Obrigado Daniel

• Responder •

Fabio_Souza_Embarcados • 4 meses atrásMod > Daniel Godoy

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

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

Abraços.

• Responder •

Janderson Alexandre • 8 meses atrás

olá Fábio estou fazendo um elevador de 3 andares com red­swith como referência desensor nos andares a porta serial bluetooth liga o motor o sensor desliga a partir dai nãoconsigo religar o motor pela serial.Se puder me ajudar ficarei muito agradecido.

• Responder •

Fabio_Souza_Embarcados • 8 meses atrásMod > Janderson Alexandre

Olá Janderson, quais os comandos que você envia pela serial, e como estáestruturado seu programa?

• Responder •

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 •

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

Olá Alex, a maneira mais simples é você formatar os dados e depois copiar ecolocar no Excel por exemplo. Outra forma seria a utilização de um programa emuma linguagem mais alto nivel como C#, JAVA, Python, VB.. e integrar com umbanco de dados como por exemplo o MySQL. Abraços

Alexandre Fontana • 10 meses atrás

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

• Responder •

Fabio, como eu faria para ler um conjunto de 10 números que chegaram pela serial edepois separar os outros 10 e depois outros 7 ? Saberia me informar ? Ou como procuraressas informações ? Obrigado, abraço.

• Responder •

Fabio_Souza_Embarcados • 10 meses atrásMod > Alexandre Fontana

Olá Alexandre, Você pode enviar os números com separadores, e depois recortarestes 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 •

Luciano Santos • 9 meses atrás> Fabio_Souza_Embarcados

Por favor, teria um exemplo de como varrer a string para separar aspalavras? Obrigado!

• Responder •

Fabio_Souza_Embarcados • 9 meses atrásMod > Luciano Santos

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 •

Luciano Santos • 9 meses atrás

ver mais

> Fabio_Souza_Embarcados

Oi Fabio!

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

Por exemplo:

char dados[]="11997306000","[email protected]","AnselmoSantos","Luciano Santos","1000","Entrada Num.1","09/11/2014 09:47PM";

/* Retorno do GET */

HTTP/1.1 200 OKDate: Sun, 09 Nov 2014 23:47:38 GMTServer: ApacheKeep­Alive: timeout=5, max=100Connection: Keep­AliveTransfer­Encoding: chunked

• Responder •

Fabio_Souza_Embarcados • 8 meses atrásMod > Luciano Santos

Olá Luciano,

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

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

Abraço

• Responder •

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" algunssímbolos, igual aqueles que você faz quando pressiona "alt + teclado numérico". Essestais símbolos estão em qual forma numérica? Obrigado!

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

• Responder •

Fabio_Souza_Embarcados • 10 meses atrásMod > rpa 007

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

• Responder •

Alexandre Fontana • um ano atrás

Fabio parabéns pelo seu post. Gostaria de saber como posso fazer a leitura de um oumais potenciômetros pela porta serial e ao mesmo tempo enviar dados pela serial para umou mais servos motor ? O servo não tem relação com o potenciômetro. Agradeço aatenção. Obrigado.

• Responder •

Fabio_Souza_Embarcados • um ano atrásMod > Alexandre Fontana

Olá Alexandre, você pode enviar todos os valores dos potenciometros e usar umseparador de string, por exemplo: ',' e a aplicação no PC se encarrega de separaros dados. Para leitura dos comandos dos servos você pode ficar esperando achegada de um comando através do Serial.available() e atuar os servos conformeo dado que chegar. abraços

• Responder •

Eitor • um ano atrás

Ola! Eu tenho uma duvida. Vamos supor que eu tenha 2 arduinos, um que eu receba oscomandos em geral, e outro q eu tenha algumas lampadas conectados a ele, porem euquero 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 •

Fabio_Souza_Embarcados • um ano atrásMod > Eitor

Sim você pode enviar os comandos de um arduino para o outro através dacomunicaçã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 •

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" emqualquer 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 peloarduino, esta funcionado certinho, porem os dados que consigo pelo leitor aparecem no"serial monitor" do arduino, queria que estes dados fossem recebidos em qualquer lugarque receba texto.

Vlw.

• Responder •

Fabio_Souza_Embarcados • um ano atrásMod > Renato Lemos

Você precisará que seu arduino Funcione como um dispositivo HID, acredito quecom o Arduino Leonardo você consiga fazer isso. Ele tem que funcionar como sefosse um teclado ou um mouse. Ainda não sei como fazer, vou dar umapesquisada. Abraços

• Responder •

Renato Lemos • um ano atrás> Fabio_Souza_Embarcados

Pensei nisto mesmo, mas infelizmente só possuo o Arduino UNO e oArduino RFBee.Como não conheço muito sobre comunicação serial, achei que seria maissimples, tipo um comando "serial.print" que já mandasse o dado para a áreade transferência do windows.Estou pesquisando também, qualquer novidade posto aqui e obrigado pelaatenção.

Vlw.

Gabriel • um ano atrás

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Links

SobreEventosVídeosDownloadsLoginContato

Comunidade

Seja ColaboradorOportunidadesSites e Blogs

Publicidade

Anuncie Conosco

Fique por dentro

Registre‐seNewsletter

• Responder •

Gabriel • um ano atrás

Como faço pra receber dois dados do arduino?

• Responder •

Fabio_Souza_Embarcados • um ano atrásMod > Gabriel

Olá Gabriel, quais são os dados que você quer receber? Você precisa que oarduino envie dois dados de uma só vez? É isso? Onde você irá receber e exibirestes dados?

• Responder •

Erica • um ano atrás

Olá, Se eu quiser apenas ler a serial de um arduino sem ter instalado a IDE (com um outroprograma de leitura serial) é necessário instalar apenas o driver para o reconhecimento doarduino?Obrigada

• Responder •

Fabio_Souza_Embarcados • um ano atrásMod > Erica

Olá Erica,

Isso mesmo você precisa instalar o diver para reconhecimento da placa em seuSO e depois fazer a comunicação com outra aplicação com as devidasconfiguraçõ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 •

Erica • um ano atrás> Fabio_Souza_Embarcados

Muito Obrigada...Ajudou bastante :)

• Responder •

Fabio_Souza_Embarcados • um ano atrásMod > Erica

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

Abraços

Assinar feed Adicione o Disqus no seu sited Privacidadeὑ

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Compartilhar ›

Desenvolvido por Embarcados ‐ Todos os Direitos Reservados®