AULA 4 - Microcontroladores - Técnico

De IFSC
Revisão de 15h41min de 22 de outubro de 2015 por imported>Fargoud (→‎Comunicação Serial)
Ir para navegação Ir para pesquisar

Comunicação Serial

Apesar do Arduino ser gravado via porta USB, a comunicação se dá como serial padrão (USART). O ATmega328 permite comunicação serial no padrão UART TTL (5 V), que está disponível nos pinos digitais 0 (RX) e 1 (TX). Um chip FTDI FT232RL na placa encaminha esta comunicação serial através da USB e os drivers FTDI (incluído no software do Arduino) fornecem uma porta virtual para o software no computador.

O software Arduino inclui um Monitor Serial que permite que dados simples de texto sejam enviados e recebidos à placa Arduino.

Os LEDs RX e TX da placa piscam quando os dados estão sendo transferidos ao computador pelo chip FTDI e há conexão USB (mas não quando há comunicação serial pelos pinos 0 e 1).

A biblioteca SoftwareSerial permite comunicação serial por quaisquer dos pinos digitais do Uno.

O ATmega328 também oferece suporte aos padrões de comunicação I2C (TWI) e SPI.

O software do Arduino inclui uma biblioteca Wire para simplificar o uso do barramento I2C.

Para usar a comunicação SPI, veja o manual do ATmega328.

Assim, no Arduino existe uma parte do hardware especifica para a conversão Serial/USB.

Disso resulta a criação de uma porta COM virtual no computador para a comunicação com o Arduino.

Comunser.jpg

Como a comunicação é a serial padrão, é fácil trocar informações entre o computador e o Arduino.

Existe uma ferramenta própria na IDE do Arduino para a comunicação serial.

Monitorserial.jpg

A biblioteca Serial() do Wiring tem todas as funções necessárias para se implementar comunicação serial entre o Arduino e o PC.

A porta serial te permite ler e escrever facilmente dados de e para dispositivos externos.

Isto permite a duas máquinas se comunicarem através de portas seriais de 8 pinos, dos PCs, ou emulads através de um adaptador serial.

Velocidades típicas de comunicação são: 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 e 115200 BPS.

Apenas uma aplicação pode utilizar a porta serial, a cada vez.


As funções mais utilizadas são:

  • begin() Abre a porta serial para leitura ou escrita.
  • read() Retorna um número entre 0 e 255 para o próximo byte que está esperando no buffer. Retorna -1 se não há nenhum byte, embora isto possa ser evitado pelo uso da função available(), que informa se há dado disponível
  • write() Escreve um byte na porta serial.
  • print() Escreve dados (int, float, byte, char, char[], números nas bases (DEC, BIN, OCT or HEX) ou textos na porta serial.
  • println() O mesmo que a função print(), exceto que acrescenta uma linha nova ao final da chamada.
  • available() Retorna o número de bytes disponíveis.
  • peek() Investiga o próximo byte de dados no buffer da porta serial. Não o recupera do buffer. Retorna -1 se não há dado disponível.
  • flush() Descarrega o buffer da porta serial.
  • end() Fecha a porta serial.

EXEMPLO 1: enviando estado de chave para Monitor Serial

void setup(){ //Inicia a comunicação serial a 9600 bauds Serial.begin(9600); } void loop(){ // Envia a string “Aprendendo a programar no arduino” para a console Serial.print(“Aprendendo a programar no arduino”); } Agora acesse a serial monitor c


EXEMPLO 2: acionando leds a partir do Monitor Serial

Nosso primeiro teste de uso do Monitor Serial vai ser um circuito e programação que acionam dois leds, conforme a montagem abaixo:

Circserial1.jpg

Agora, abra a IDE do Arduino e escreva/compile/carregue a seguinte programação:


 char c;
 void setup(){
   pinMode(2,OUTPUT);
   pinMode(3,OUTPUT);
   Serial.begin(9600);
 }
 void loop()
 {
   if (Serial.available()>0)
   {
     c = Serial.read() - '0';
     Serial.flush();
     digitalWrite(c,!digitalRead(c));
   }
 }


Conecte o Arduino no PC, selecione a versão do seu Arduino (UNO, Duemilanove, etc) e porta (COMx, ttyUSBx, ttyACMx) e clique em UPLOAD. Abra o Serial Monitor e selecione 9600 no baud.

Ao digitar o número 2 no Serial Monitor, irá acender o LED conectado na porta digital 2 do Arduino, e ao digitar novamente o número 2, o LED apagará. Agora se digitar o número 3, irá acender o LED da porta digital 3 e se digitar novamente o número 3, o LED apagará.

E é isso! Bem simples! :)


No segundo teste, vamos acionar, acender e apagar, o led do pino 13 através de comandos de teclado do PC, na interface Serial Monitor, do Arduino.

A programação também é simples e bem interessante:


Progserial.jpg

<< Página do curso

Leitura das portas digitais AULA 4 - Uso da comunicação serial Leitura e escrita nas portas analógicas>>