Franzininho C0: Comunicação serial no Arduino

Este post faz parte da série Franzininho C0 com Arduino

Introdução

A Franzininho C0 é uma placa de desenvolvimento de hardware de código aberto, baseada no Microcontrolador STM32C0, um Arm Cortex M0+ da STMicroelectronics. Para programá-la no Arduino utilizamos o pacote STM32duino.

Na documentação da ST, os pinos dos microcontroladores STM32 são identificados por nomes como PA1, PA2, PB6, entre outros (como pode ser visto no pinout da Franzininho C0 abaixo). Embora o pacote aceite as identificações do tipo PA1 como “nomes” dos pinos, esta não é a identificação usual do ambiente Arduino.

Por isso, neste artigo veremos como reconfigurar os pinos da comunicação serial no Ambiente Arduino.

Pinout da Franzininho C0

Para definir os pinos utilizados, precisamos consultar o pinout da placa:

Acesse a documentação completa em: https://docs.franzininho.com.br/docs/franzininho-c0/franzininho-c0-board

Comunicação Serial – Interface Serial Assíncrona (UART)

O UART (Universal Asynchronous Receiver/Transmitter) é um protocolo de comunicação serial muito utilizado para a transmissão de dados entre dispositivos. Aqui o termo “universal” é usado, pois esse protocolo permite que seja feita uma configuração para suportar uma variedade de taxas de transmissão, tamanhos de pacotes de dados e outras características.

Na comunicação UART, um dos dispositivos atua como transmissor, enviando dados através do pino TX (transmissor), enquanto o outro dispositivo age como receptor, recebendo dados pelo pino RX (Receptor). Além disso, a comunicação UART é “assíncrona”, pois não necessita de um sinal de clock compartilhado entre o transmissor e o receptor.

O microcontrolador na Franzininho C0 possui duas interfaces seriais assíncronas (uart1 e uart2). No ambiente Arduino, as UARTs são acessadas através de objetos com nomes como Serial, Serial1 e Serial2.

Como mostra o pinout, a Franzininho C0 tem os pinos PA9 e PA10 conectados ao conversor serial USB CH340, para fornecer comunicação serial com um micro usb através de um cabo USB. Para utilizar a placa no Arduino selecionamos a opção “Generic STM32C0” que define um objeto Serial associado à interface uart1, usando os pinos PA0 e PA1. 

No entanto, para usar o objeto Serial para comunicação via USB é preciso reconfigurar os pinos através dos métodos setRx e setTx antes de chamar o método begin.

Código

Para reconfigurar os pinos RX e TX utilizamos o código abaixo. Este código foi desenvolvido com base no trabalho de Daniel Quadros e está disponível no Github da Franzininho:

void setup() {
  // Conecta a UART aos pinos ligados à USB
  Serial.setRx(PA_10_R);
  Serial.setTx(PA_9_R);
  // Inicia a serial
  Serial.begin(115200);
  delay(3000);
}

void loop() {
  Serial.println("Ola, Franzininho C0!");
  delay(1000);
}

Obs1.: Os nomes especiais para os pinos PA9 e PA10 se devem ao fato destes pinos compartilharem os mesmos pinos físicos que PA11 e PA12.

Obs2.: Antes da IDE iniciar o carregamento do programa, a Franzininho C0 deve executar o bootloader, caso contrário ocorrerá um erro.

Explicação do Código

Para esse código funcionar é importante verificar no menu “Tools” se a opção “U(S)ART Support” está configurada para “Enabled (generic Serial)”. 

Dessa forma, no setup, altere os pinos RX e TX para PA_10_R e PA_9_R, respectivamente, usando setRx e setTx. Em seguida, defina o baud rate como 115200. É importante que a velocidade no Serial Monitor também esteja configurada para 115200 baud, caso contrário, ele pode exibir caracteres aleatórios ao invés das informações que você deseja mostrar:

void setup() {
  // Conecta a UART aos pinos ligados à USB
  Serial.setRx(PA_10_R);
  Serial.setTx(PA_9_R);
  // Inicia a serial
  Serial.begin(115200);
}

No loop, insira Serial.println(“Ola, Franzininho C0!”) para imprimir no monitor serial, usando os pinos corretos de RX e TX da Franzininho C0. Isso ocorrerá a cada 1 segundo, graças ao delay(1000), e incluirá uma quebra de linha.

void loop() {
  Serial.println("Ola, Franzininho C0!");
  delay(1000);
}

Executando o código, o monitor serial vai exibir a cada 1 segundo:

Conclusão

Neste tutorial abordamos o funcionamento do protocolo de comunicação serial UART. Especificamente no contexto do Arduino e da Franzininho C0, destacamos a necessidade de configurar adequadamente os pinos RX e TX, juntamente com a taxa de baud, para assegurar uma comunicação eficaz. Também ressaltamos a importância de alinhar a configuração do Serial Monitor com as configurações de baud rate do código, a fim de evitar a exibição de caracteres incorretos.

Ao seguir esses procedimentos e adotar boas práticas, torna-se mais simples desenvolver projetos que necessitem da comunicação serial, garantindo uma troca de dados confiável e eficiente entre os dispositivos envolvidos.

Desafio

Contagem Serial de 0 a 1000

Objetivo: Altere o programa para enviar continuamente uma contagem de 0 a 1000.

Boa sorte!

Franzininho C0 com Arduino

Controle de intensidade de um LED com PWM no Arduino usando a Franzininho C0 Franzininho C0: Conexão de display OLED SSD1306 via I2C usando Arduino IDE
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Software » Franzininho C0: Comunicação serial no Arduino

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: