AULA 4 - Microcontroladores - Técnico
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.
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.
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.
Nosso primeiro teste de uso do Monitor Serial vai ser um circuito e programação que acionam dois leds, conforme a montagem abaixo:
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:
| Leitura das portas digitais | AULA 4 - Uso da comunicação serial | Leitura e escrita nas portas analógicas>> |
|---|



