Framework Arduino Básico Aula 01: Introdução e Conceitos

Clique para ampliar
Arduino Uno Rev3 Fonte: https://store.arduino.cc/


Introdução

    Segundo o site oficial do projeto (https://www.arduino.cc/), Arduino é uma plataforma eletrônica de código aberto baseado em hardware e software. Essa definição genérica tenta explicar que o projeto tem dois componentes básicos:

  • O hardware, que é uma placa que leva o nome de Arduino
  • E o Software que é um Ambiente de Desenvolvimento chamado de Arduino IDE.

A Placa Arduino

    Como placa, o Arduino é um termo genérico que engloba diferentes modelos de placas de prototipagem que em comum, tem a utilização de um microprocessador da família ATmega para controlar portas analógicas e digitais que permitem a entrada e saída de dados de sensores e atuadores. 

    A título de exemplo, temos o Arduino UNO Rev 3 (imagem acima) que utiliza o microprocessador ATmega328P, opera em 5V, dispõe de 14 pinos para entrada/saída digital, dos quais 6 podem ser utilizados como pwm, mais 6 pinos para entrada analógica. 

    Por essas características é muito utilizada para fins educacionais e profissionais, em automação e robótica. As placas originais podem ser adquiridas no site oficial do projeto, mas por questões de custo, na maioria da vezes adquire-se um clone de fabricantes diversos, uma vez que o projeto é open source.

A Arduino IDE

    Seja uma placa original ou um clone, para programá-la a maioria dos estudantes conecta a placa em um computador através de um cabo USB Tipo B e usa a plataforma Arduino IDE para escrever programas que chamamos de sketchs, compilar o código e fazer o upload do sketch para a placa.

    A linguagem utilizada é o C++ porem em um framework adaptado às necessidades específicas de sistemas embarcados. Por exemplo, não teremos um cout ou um printf() para saída de dados padrão em tela, porque a saída de dados será de outra forma.

    Também não teremos a estrutura de programa padrão com um main() iniciando o código. Ao invés disso encontraremos um modelo pré-definido apresentando a seguinte estrutura:

void setup() {

}

void loop() {

}

    Por apresentar esse modelo dizemos que a linguagem do Arduino é um framework em C++ e não uma linguagem de programação propriamente dita. 

    Quanto a Arduino IDE ela pode ser baixada de https://www.arduino.cc/en/software, sendo disponibilizada tanto para Windows, Linux ou Mac. No entanto, para o nosso microcurso, utilizaremos simuladores online que dispensam a instalação da IDE e a aquisição de placas ou componentes.

Utilizando o Wokwi

    Wokwi é uma plataforma online que permite simular o funcionamento de placas Arduino Uno, com a inclusão de sensores e componentes básicos. Utilizaremos ele para os nossos exemplos. É recomendável que o estudantes faça seu login com um conta Google para salvar seus projetos.

    Para abrir o Wokwi com um novo projeto inicial de Arduino Uno utilize esse link: https://wokwi.com/projects/new/arduino-uno. Com ele você abrirá uma tela com a estrutura básica de um Sketch:

Tela inicial do Wokwi para projeto com Arduino Uno
Tela inicial do Wokwi para projeto com Arduino Uno

Entendendo a estrutura do framework

   Ao iniciar um novo Sketch seja na Arduino IDE ou no Wokwi com link que recomendámos, encontraremos duas funções: setup() e loop()

    Na função setup() geralmente configuramos dispositivos que serão utilizados pelo programa, como leds, sensores e a saída padrão chamada de monitor serial. Já a função loop é onde colocaremos a instruções do programa propriamente dito, que serão executadas em looping pelo sistema.

    Fora dessas funções, devemos utilizar a região inicial do Sketch para importar bibliotecas, quando necessárias, definir constantes que forem utilizadas e iniciar variáveis. Sendo assim, de forma simplificada e genérica temos a seguinte estrutura prática no framework:

// importação de bibliotecas
// definição de constantes
// inicialização variáveis

void setup() {
  // inicilização de dispositivos
}
void loop() {
  // código principal que rodará em looping 
}

    A título de exemplo faremos um "Olá Mundo!" para ser copiado e colado Wokwi, do lado esquerdo da tela conforme a figura abaixo:

  1. #define mensagem "Ola mundo!"
  2. void setup() {
  3.   Serial.begin(9600);
  4.   Serial.print(mensagem);
  5. }

  6. void loop() {

  7. }

Região da tela do Wokwi onde se cola o sketch
Região da tela do Wokwi onde se cola o sketch

        Nesse exemplo estamos definindo a constante mensagem para ser a string "Ola mundo!". Se você tentou colocar acento no olá viu que não foi possível. Por enquanto esqueça acentos e caracteres latinos como ç nas suas mensagens no Arduino.

    Mais abaixo, na linha 3 do setup() estamos inicializando e configuramos a saída padrão que é o monitor serial com a instrução Serial.begin(9600); Veja que esse monitor não estará no Arduino. Estará no seu computador. Por isso é necessário configurar  a taxa de transmissão de dados entre eles. No caso estamos ajustando para 9600 bits por segundo.

    Na linha de baixo estamos apenas imprimindo no monitor serial a constante mensagem com a função print() que usa como parâmetro a constante. Para executar o seu Sketch, no lado direito da tela temos um botão verde para "start simulation". Após executar e visualizar o resultado na parte inferior do lado direito, use o botão stop para interromper.

Botão Start e Stop para iniciar e parar a simulação
Botão Start e Stop para iniciar e parar a simulação


Tela do monitor serial. Em destaque o botão lixeira para limpar as mensagens
Tela do monitor serial. Em destaque o botão lixeira para limpar as mensagens

    Repare que não coloquei nada na função loop(), pois ela executaria um looping infinito que só seria interrompido com o botão stop ou por código. A título de exemplo substitua o seu Sketch pelo código abaixo e dê um start na simulação. Para interromper utilize o botão stop.

  1. #define mensagem "Ola mundo!"
  2. int contador=1;
  3. void setup() {
  4.   Serial.begin(9600);
  5.   
  6. }

  7. void loop() {
  8.   Serial.print(mensagem);
  9.   Serial.println(contador);
  10.   contador++;
  11. }

    Nesse exemplo incluímos na linha 2 uma variável inteiro chamada contador e inicializamos ela com 1 e na linha 10 estamos imprimindo seu valor no monitor serial, sendo que mais abaixo estamos incrementado o seu valor em uma unidade (linha 11). 

    Repare que desta vez, ao invés da função print() eu estou usando println() que faz com que a próxima impressão no monitor seja na linha debaixo.

    No entanto as mensagens estão sendo executadas na função loop(), por isso ficam em um looping infinito só sendo interrompidas pelo stop. A razão de uma função em looping é porque, geralmente, um sistema embarcado ficará executando uma operação ininterruptamente até ser desligado.

    Para finalizar, estando logado com uma conta Google, clique no botão SAVE e guarde o seu projeto com um nome. Ele ficará armazenado online, podendo ser acessado através do menu no canto superior direito da tela, na opção MY PROJECTS.

Tela de salvamento no Wokwi
Tela de salvamento no Wokwi

Opções do menu no canto superior direito da tela
Opções do menu no canto superior direito da tela

    Tome cuidado para não salvar projetos com dados sensíveis, pois eles ficam públicos para todos os usuários. Na próxima aula iniciaremos o uso de componentes.

    Link para o projeto no Wokwi: https://wokwi.com/projects/411673169364218881


Próxima Aula                                                                                                                        Aula Anterior

Referências

ARDUINO DOCS. Arduino Documentation. Disponível em: <https://docs.arduino.cc/> Acesso em 05 ago. 2024.

OLIVEIRA, Cláudio Luis Vieira et al. Aprenda Arduino: Uma abordagem prática. Duque de Caixas: Katzen Editora, 2018. 181p. Disponível em: <https://www.fatecjd.edu.br/fatecino/material/ebook-aprenda-arduino.pdf> Acesso em 05 ago. 2024.

OLIVEIRA, Cláudio Luis Vieira. Arduino Descomplicado - Como Elaborar Projetos de Eletrônica. São Paulo: Editora Érica, 2015. 287p. 

TINKERCAD. Centro de Aprendizagem. Disponível em: <https://www.tinkercad.com/learn> Acesso em 05 ago. 2024.

WOKWI. Referência do wokwi-arduino-uno. Disponível em: <https://docs.arduino.cc/> Acesso em 05 ago. 2024.