Comunicação Serial 1

Documentos relacionados
Depois de configurada nossa comunicação serial podemos enviar vários comandos para comunicação entre o computador e o Arduino:

Programação do Arduino. Parte 1. IDE Wiring

Plano de Aula. 1 o semestre. Aula número 012 Periféricos Comunicação Serial. Conhecer os princípios de comunicação serial

OFICINA Uso da plataforma Arduino no Ensino de Ciências

Introdução do Arduino para aquisição de dados e controle de instrumentos

INTRODUÇÃO A PLATAFORMA ARDUINO. TÁSSIO JOSÉ GONÇALVES GOMES

Arduino - Primeiros Passos

Missão: Arduino. 3 de Março. Organização

MINICURSO ARDUINO BÁSICO

Projeto 01. Adriano Joaquim de Oliveira Cruz Instituto de Matemática UFRJ 2015 Adriano Cruz. 30 de agosto de 2015

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Por Fernando Koyanagi

Minicurso de Arduino

Programação em Linguagem C

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Curso: Tecnologias educacionais de baixo custo. Conector Ciência:

MINICURSO - PLATAFORMA ARDUINO Eixo de Informação e Comunicação Gil Eduardo de Andrade

MOBILIDADE SUSTENTÁVEL. Luís Martins Duarte Abreu

AULA 6 - INTRODUÇÃO AO ARDUINO Revisão de Eletrônica Digital e introdução aos Sistemas Computacionais.

Internet das Coisas Ferramentas Para Prototipação. João Bosco Teixeira Junior >

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Introdução ao Arduino

KIT INICIANTE V7 PARA ARDUINO

Ficha 3. Exercícios de preparação da actividade 3

Comunicação entre PC e Arduino

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO PROJETO SCATMAN S DIMMER

Disciplina: Laboratório de Fis26

Vetores, Matrizes e String

Arduino. Gilmar Aquino

Kit controle remoto IR acionando 3 Led com Arduino

Programação Básica em Arduino Aula 4

Curso de Arduino. Quais seus principais componentes?

Curso de Básico Arduino! Ministrado por: Wellington Cássio Faria Contato:

Arduino como ferramenta de aquisição de Dados

introdução Olá, Após alimentar você deve enviar comandos AT para verificar que o modulo está funcionando e comunicando via serial.

Arquitetura do Microcontrolador Atmega 328

Arduino. Introdução aos Componentes Básicos. Leonardo Mauro P. Moraes. Universidade Federal de Mato Grosso do Sul - UFMS.

FACENS Engenharia Mecatrônica Sistemas de Computação Professor Machado. Arduino

Robótica com Arduino

Por Fernando Koyanagi 1

ARDUINO BÁSICO Lição III

CAPÍTULO VI DECODIFICAÇÃO DE I/O E MEMÓRIA ENTREGA 22/05/2017 (valor 0.2: 0.1 Organização e 0.1 solução) Material para prova P2

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Microcontroladores PROF. ME. HÉLIO ESPERIDIÃO

Oficina de Programação utilizando a plataforma Arduino

Este tutorial mostra como utilizar as ferramentas Send Mail e Web Commands.

ALGORITMOS, ARQUITETURA E ARDUINO

Podem ser substituídos pelo módulo P7-Sensor de Luminosidade da GBK Robotics.

LED RGB, PWM, Comunicação Serial, Acelerômetro

Por Fernando Koyanagi

Curso introdutório de microcontroladores - Plataforma Arduino

- Tarefas Práticas de Programação usando Arduino - Imagem do Robô com Legendas

MODULO PR-7SEG-4 Experiência 01:

Redes Industriais. Carlos Roberto da Silva Filho, M. Eng.

Programação em Linguagem C

Copyright 2014 VW Soluções

Arduino: primeiros passos para aprender e configurar.

Laboratório Bluetooth

RESULTAR EM "CHOQUE ELÉTRICO", FOGO, ENTRE OUTROS.

Kit Teclado TS 4x4 v1..0 Manual do usuário

Mundo Arduino: Vamos começar a programar?

MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL RV1

LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) SÃO CAETANO DO SUL - SP - CEP:

Cerne Tecnologia e Treinamento

MÓDULO SERIAL - BLUETOOTH

Plataforma Arduino, um universo de possibilidades

Introdução a Engenharia Elétrica

Discentes: Weverton Lima e Juliete Souza Disciplina: Sistemas Embarcados Professor Orientador: Ilton Barbacena

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Tutorial Proteus 02. Como simular o Arduino no Proteus ISIS utilizando a biblioteca "Emulater" por João Vitor

Sistemas de Controle 2

Informações do produto...2. Características Gerais...3. Entradas e Saídas...7. Comunicação Funções Diagnóstico Precauções...

Introdução ao Arduino ESCOLA DE ARTES VISUAIS DO PARQUE LAGE. Núcleo de Arte e Tecnologia. julio lucio martin. Aula 01

Conhecendo o ARDUINO LEGENDA

Projeto No. 2 Potenciômetro

EXERCÍCIOS 2 Prof. Adilson Gonzaga

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB

Princípios de Desenvolvimento de Algoritmos MAC122

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

// Arduino {? } Mais o que é?..

GUIA DE CONFIGURAÇÃO CONVERSOR SERIAL-IP HARDWARE 334 a 343 / FIRMWARE 1.100b

Introdução à Computação MAC0110

TERMÔMETRO COM O LM35 Parte I

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Modem MIN-410 Criando o aplicativo Hello World, executando com debug, subindo para o modem e habilitando comandos AT dentro do aplicativo

Oficina de Introdução ao Arduino

Disciplina de Algoritmos e Programação

Robótica com Arduino Professor: Paulo Marcos Trentin

WiFiShield. Introdução

O que você pode fazer com o Arduino

ANEXO I. O Ambiente de desenvolvimento MpLab IDE v6.62

Por Fernando Koyanagi 1

Minicurso Básico de Arduino.

MINICURSO ARDUINO AVANÇADO

2a Prova de ELT024 Programação para Sistemas Embarcados Prof. Rodrigo Maximiano Antunes de Almeida

Over the Air OTA. Por Fernando Koyanagi

Versão mar/ Copyright, ROGERCOM

Sistemas Embarcados:

ROBÓTICA 1 INTRODUÇÃO A PROGRAMAÇÃO NO ARDUINO

3. Linguagem de Programação C

Transcrição:

Curso Técnico em Automação Industrial Disciplina: Programação aplicada a Microcontroladores Professor: Marcelo Cendron Comunicação Serial 1 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 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: 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. 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 nível. Existem várias opções de conversores, como por 1 Retirado de: https://www.embarcados.com.br/arduino-comunicacao-serial/

exemplo TTL/ RS232, TTL/RS485, TTL/USB, entre outros. 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 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. Serial.begin(speed) Serial.begin(speed, config) 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. Serial.available(); 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. Retorno: Serial.read(); Não passa nenhum parâmetro. (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 Serial.print(val) Serial.print(val, format) 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() Retorno: Escreve um byte na porta serial. Serial.write(val) Serial.write(str) Serial.write(buf, len) 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. (byte) - Retorna a quantidade de bytes escritos na serial. A leitura desse numero é opcional. Exemplos de manipulação de dados através da comunicação serial 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 3 4 5 6 7 8 9 /* echo reenvia para o computador o dado recebido pela serial */ byte byteread; void setup() //configura a comunicação seria com baud rate de 9600

10 11 12 13 14 15 16 17 18 19 20 Serial.begin(9600); void loop() 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 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 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /* Dimmer Demonstra como enviar dados do computador para controlar a intesindade do 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

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 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /* * 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); pinmode(led,output); //configura comunicação serial com 9600 bps //configura pino do led como saída void loop() if (Serial.available()) //se byte pronto para leitura switch(serial.read()) case 'A': //verifica qual caracter recebido //caso 'A' digitalwrite(led,!digitalread(led)); //inverte estado do LED break; 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.