Internet das Coisas: Programação Física com Arduíno - #challengecommunityweek

28/06/2022 14:42

Daniele Araújo

Daniele Araújo

Brasil

QA engineer | Dev back-end em evolução

Internet das Coisas: Programação Física com Arduíno - #challengecommunityweek
  • #Programação para Internet

Qual o conteúdo que você tinha maior dificuldade e hoje, pode se considerar um expert? #challengecommunityweek

Dado o desafio da Community Week “Qual o conteúdo que você tinha maior dificuldade e hoje, pode se considerar um expert?” resolvi falar um pouco sobre minha experiência com a Internet das Coisas e a programação física com o Arduíno. Não me considero uma expert, mas é um assunto em que tive bastante dificuldade no começo, mas hoje é uma das minhas paixões. #challengecommunityweek

Iniciei meu interesse pela área de Internet das Coisas na faculdade com um projeto de iniciação científica, do qual se torno meu projeto de conclusão de curso, o famoso TCC. Desde então tem sido uma área da qual sou entusiasta e amo falar sobre. O início, como quase todo início, não foi fácil, dado que é um paradigma bem diferente do que normalmente é apresentado durante a minha graduação (Analise e Desenvolvimento de Sistemas), mas apesar de tudo, é empolgante o processo de aprendizagem.

Nesse artigo farei uma breve introdução a Internet das Coisas, ao Arduíno e a ferramenta Tinkercad, que será usada para a simulação dos circuitos criados aqui. Depois colocaremos a mão na massa para darmos início no mundo da programação física.

Todos os exemplos de código mostrados foram desenvolvidos por mim no processo de aprendizado e o que me ajudou a fixar meu conhecimento. Deixarei por último algumas recomendações de curso e materiais para consumir, caso haja interesse. Então, vamos lá?

Sumário

1. Internet das Coisas

2. O que é o Arduíno

3. Tinkercad, uma plataforma de simulação

4. O “Hello World” da programação física

5. A Protoboard

6. Blink, um pouco mais a fundo

7. Brincando com o buzzer (fazendo músicas)

8. Conclusão

9. Recomendações

Internet das Coisas

Com um mundo cada vez mais globalizado e a tecnologia se renovando e evoluindo constantemente é comum nos depararmos com novos termos surgindo e tomando espaço. A IoT do inglês Internet of Things, que se traduz como Internet das Coisas, é considerada um novo paradigma tecnológico, uma extensão da internet atual, que possibilita que objetos do cotidiano com capacidade computacional e de comunicação conectar-se à Internet.

Mônica Mancini em seu artigo “Internet das Coisas: História, conceitos, aplicações e desafios” explica que por meio dessa conexão é possível controlar remotamente os objetos, tornando-os provedores de serviços, assim fazendo-os objetos inteligentes. Essa comunicação também viabiliza o registro contínuo de dados sobre o estado desses objetos durante o seu uso, mediante o uso de sensores, permitindo uma resposta aos dados recebidos, o que deixa visível a diferença básica de um objeto inteligente para um objeto qualquer conectado à Internet. 

A aplicabilidade disso abre um mundo de possibilidades, podemos ver exemplos de IoT na saúde, transporte e agricultura, entre muitas outras áreas. Um exemplo disso são pedágios inteligentes, que fazem a cobrança automática com base na implementação utilizando sensores como RFID. Automações residenciais, que podem ajustar a temperatura de um ar-condicionado, por exemplo, com base nos valores capturados da temperatura do ambiente, ou desligar e ligar luzes com base na luminosidade ou horário.

Esses pequenos exemplos nos mostra o mar de possibilidades e é um incentivo para o despertar do interesse na área.

O que é o Arduíno

O Arduíno trata-se de uma plataforma de desenvolvimento de sistemas embarcados de baixo custo aberta e livre. O módulo mais comum é o Uno, baseado no microcontrolador da Atmel (ATmega328), mas podemos encontrar diversas versões dele disponível no mercado. O Arduíno contém também uma IDE, Integrated Development Environment ou Ambiente de Desenvolvimento Integrado, que é responsável pela compilação e upload da solução para a plataforma física.

O Arduíno Uno possui 14 (quatorze) pinos de entrada/saída digital, dos quais 6 (seis) podem ser usadas como PWM (do inglês, Pulse Width Modulation), um cristal oscilador de 16 (dezesseis) MHz, conexão USB, entrada de alimentação, conexão ICSP (do inglês, In-Circuit Serial Programming) e botão de reset, exemplificados na Figura 1. O Arduíno pode comunicar-se facilmente com um computador, permitindo uma codificação versátil e vasta, baseada nas linguagens de programação C/C++, para os mais diversos usos e necessidades.

O Arduíno simula as saídas analógicas por meio do PWM, que trata-se de técnica de variação de comprimento da onda e podemos identificar essa saída por meio do indicador na placa, que é o caractere “~” na frente do número da placa. Na Figura 2 podemos elucidar a simulação dessa técnica. O entendimento disso é importante, pois todas as saídas do Arduíno são digitais, ou seja, retornam 0 e 1 e a utilização de componentes analógicos com o Arduíno é por meio dessa técnica. 

Figura 1. O Arduíno. Fonte: Professora Keila https://www.professorakeila.com.br/

Figura 2. Comprimento de onda PWM. Fonte: https://www.arduino.cc/en/Tutorial/Foundations/PWM

Eduardo de Castro Quintino nos mostra as funcionalidades da IDE Arduíno em seu artigo “O que é IDE Arduíno”, em um breve resumo, explicando a Figura 3, vamos as funcionalidades:

Verificar - Responsável por validar a sintaxe do seu código, ele compila e verifica erros de escrita. Importante ressaltar que erros de lógica não serão identificados durante esse processo.

Carregar - O seu código também será verificado/compilado. Mas nesse caso, se houver um Arduíno conectado via USB e setado na ferramenta ele fará o upload do código para a plataforma, que ao final estará com a programação desenvolvida.

Novo - Abre um novo sketch em branco para criação de um novo código.

Abrir - Abre um sketch que pode ser dos seus arquivos ou um dos exemplos que já estão na IDE do Arduíno ou nas bibliotecas instaladas.

Salvar - Salva as alterações feitas no sketch.

Monitor Serial - Pode-se imaginar como um console. Quando executamos um código em Java, por exemplo, conseguimos utilizar um console para imprimir valores, que usamos normalmente para depuramos códigos, com o Arduíno não é diferente, por meio do Monitor Serial fazemos um elo entre o computador e o Arduíno e então podemos imprimir valores enviados pelo Arduíno.

Figura 3. Arduíno IDE. Fonte: https://www.filipeflop.com/blog/o-que-e-ide-arduino/

Tinkercad, uma plataforma de simulação

O Tinkercad é um programa de modelagem que roda sobre a plataforma WEB e é online e gratuito. Ele possuí integrado em suas funcionalidades um simulador de circuitos que possibilita que você aprenda programação física sem a necessidade de possuir os componentes, o que facilita a vida, né?

Como mostrado na Figura 4 a plataforma possui uma seção para a codificação, uma lista de componentes e um botão para iniciar uma simulação. Então possui as funcionalidades essenciais que vimos na plataforma de desenvolvimento do Arduíno. Então iremos utilizá-la durante os exemplos, para tornar o aprendizado acessível.

Figura 4. Página de Circuito do Tinkercad. Fonte: Próprio Autor.

O “Hello World” da programação física

Como falado anteriormente, a linguagem suportada pelo Arduíno é o C/C++, então vamos entender um pouco como funciona a programação dentro da plataforma Arduíno.

Todo programa para Arduíno possuem duas funções, a setup() e a loop(). A função setup() é responsável por inicializar variáveis, constantes e/ou componentes. Códigos que precisam ser inicializados uma única vez são atribuídas a essa função. Já a função loop() é responsável pela lógica do seu circuito e, como o próprio nome sugere, é executada em um loop, que gera a rotina do seu sistema.

O “Hello World” da programação física é conhecida como “Blink” e nele usamos o LED embutido do próprio Arduíno para piscas constantemente. Por padrão todo Arduíno vem com o LED embutido na porta 13, então no código abaixo setamos com a função pinMode a porta 13 como uma saída, que é definida pela palavra reservada “OUTPUT” na função setup(). Já na função loop() inserimos a lógica da rotina, onde pela palavra reservada “HIGH” definimos que o LED será ligado e pela palavra reservada “LOW” desligamos o LED, tudo isso por meio da função digitalWrite(), onde informamos por parâmetro a porta que utilizaremos, que foi setada anteriormente como saída, e a ação tomada, que será ligar ou desligar. Entre cada interação damos um delay de 1 milissegundo com a função delay(), que recebe como parâmetro o valor em milissegundo que desejamos esperar.

Todas as funções utilizadas nesse código são nativas da plataforma Arduíno.

void setup() {
  pinMode(13, OUTPUT); // Pino do LED
}
  
void loop(){
  digitalWrite(13, HIGH); // Liga o LED
  delay(1000); // Espera por 1 segundo
  digitalWrite(13, LOW); // Desliga o LED
  delay(1000); // Espera por 1 segundo
}

Para visualizar a sumulação, acesse: https://www.tinkercad.com/things/60l2T0i28ff

Figura 5. Passo a passo para a simulação. Fonte: Próprio Autor.

A Protoboard

A protoboard é uma matriz de contato que é utilizada para montagem de circuitos eletrônicos. O intuito dela é facilitar a criação de protótipos e organização de circuitos. Como mostrado na Figura 6 ela possui barramentos verticais, que são utilizados para fazer conexões entre componentes e barramentos horizontais, que são utilizados para a alimentação dos componentes, possuindo o polo positivo e negativo.